diff --git a/.changeset/afraid-numbers-invite.md b/.changeset/afraid-numbers-invite.md new file mode 100644 index 0000000000..ee81341d3a --- /dev/null +++ b/.changeset/afraid-numbers-invite.md @@ -0,0 +1,15 @@ +--- +'@backstage/repo-tools': minor +--- + +Updates the OpenAPI client template to support the new format for identifying plugin ID. You should now use `info.title` like so, + +```diff +info: ++ title: yourPluginId +- title: @internal/plugin-*-backend + +servers: + - / +- - yourPluginId +``` diff --git a/.changeset/angry-phones-arrive.md b/.changeset/angry-phones-arrive.md new file mode 100644 index 0000000000..2afcd240a9 --- /dev/null +++ b/.changeset/angry-phones-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': minor +--- + +Add support for `oneOf` in client generated by `schema openapi generate-client`. diff --git a/.changeset/beige-apples-press.md b/.changeset/beige-apples-press.md new file mode 100644 index 0000000000..56c46db830 --- /dev/null +++ b/.changeset/beige-apples-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops': patch +--- + +Added alpha support for the New Frontend System (Declarative Integration) diff --git a/.changeset/blue-keys-do.md b/.changeset/blue-keys-do.md new file mode 100644 index 0000000000..c933bac0f2 --- /dev/null +++ b/.changeset/blue-keys-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': minor +--- + +**BREAKING**: Replace default plugin extension and plugin ids to be `app` instead of `root`. diff --git a/.changeset/brave-jobs-invite.md b/.changeset/brave-jobs-invite.md new file mode 100644 index 0000000000..402c5cebe7 --- /dev/null +++ b/.changeset/brave-jobs-invite.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Added a new `LegacyRootDatabaseService` interface that can be used to avoid direct dependencies on the `DatabaseManager`. diff --git a/.changeset/breezy-cobras-sin.md b/.changeset/breezy-cobras-sin.md new file mode 100644 index 0000000000..93b296c455 --- /dev/null +++ b/.changeset/breezy-cobras-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': minor +--- + +**BREAKING**: Removed the experimental `createExtensionTree` API. diff --git a/.changeset/brown-items-hammer.md b/.changeset/brown-items-hammer.md new file mode 100644 index 0000000000..fa023a026b --- /dev/null +++ b/.changeset/brown-items-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-okta-provider': patch +--- + +Added missing `additionalScopes` option to configuration schema. diff --git a/.changeset/brown-peaches-hunt.md b/.changeset/brown-peaches-hunt.md new file mode 100644 index 0000000000..fc10acc211 --- /dev/null +++ b/.changeset/brown-peaches-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Fix a bug with S3 Fetch that caused all objects to be flattened within a single folder on the local file system. diff --git a/.changeset/calm-cups-rule.md b/.changeset/calm-cups-rule.md new file mode 100644 index 0000000000..48cb8a2012 --- /dev/null +++ b/.changeset/calm-cups-rule.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +--- + +Fix wrong `alpha` support in dynamic plugins support: the `alpha` sub-package should not be required for the dynamic plugins to be loaded under the new backend system. diff --git a/.changeset/calm-items-double.md b/.changeset/calm-items-double.md new file mode 100644 index 0000000000..3db8ad57d9 --- /dev/null +++ b/.changeset/calm-items-double.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': minor +--- + +Allow to force the creation of a pull request from a forked repository diff --git a/.changeset/calm-onions-exercise.md b/.changeset/calm-onions-exercise.md new file mode 100644 index 0000000000..f1c58a173f --- /dev/null +++ b/.changeset/calm-onions-exercise.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. diff --git a/.changeset/chilled-chefs-notice.md b/.changeset/chilled-chefs-notice.md new file mode 100644 index 0000000000..a12babb2a4 --- /dev/null +++ b/.changeset/chilled-chefs-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +Make `containerRunner` argument optional diff --git a/.changeset/chilled-ways-wave.md b/.changeset/chilled-ways-wave.md new file mode 100644 index 0000000000..68e4d1eb7d --- /dev/null +++ b/.changeset/chilled-ways-wave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +fix for: converting circular structure to JSON error diff --git a/.changeset/chilly-seahorses-bake.md b/.changeset/chilly-seahorses-bake.md new file mode 100644 index 0000000000..8ab80cf93e --- /dev/null +++ b/.changeset/chilly-seahorses-bake.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-compat-api': patch +--- + +The backwards compatibility provider will now use the new `ComponentsApi` and `IconsApi` when implementing the old `AppContext`. diff --git a/.changeset/clever-chicken-jog.md b/.changeset/clever-chicken-jog.md new file mode 100644 index 0000000000..de65947105 --- /dev/null +++ b/.changeset/clever-chicken-jog.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Added support for server side text filtering to paginated entity requests. diff --git a/.changeset/clever-steaks-hope.md b/.changeset/clever-steaks-hope.md new file mode 100644 index 0000000000..94c6e8ee29 --- /dev/null +++ b/.changeset/clever-steaks-hope.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-unprocessed': patch +--- + +Explicitly only depend on the `use` method from the `HttpRouterService`. diff --git a/.changeset/cold-cheetahs-pull.md b/.changeset/cold-cheetahs-pull.md new file mode 100644 index 0000000000..140a564e4f --- /dev/null +++ b/.changeset/cold-cheetahs-pull.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': minor +'@backstage/plugin-scaffolder-backend': patch +--- + +New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + +Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` +and replaces its actions related to Bitbucket Server. + +- `publish:bitbucketServer` +- `publish:bitbucketServer:pull-request` diff --git a/.changeset/cold-cooks-care.md b/.changeset/cold-cooks-care.md new file mode 100644 index 0000000000..56c41a55e9 --- /dev/null +++ b/.changeset/cold-cooks-care.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog': patch +--- + +Change default icon for unknown entities to nothing instead of the help icon. diff --git a/.changeset/cool-islands-impress.md b/.changeset/cool-islands-impress.md new file mode 100644 index 0000000000..df6df1ada2 --- /dev/null +++ b/.changeset/cool-islands-impress.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites': patch +--- + +Updated README diff --git a/.changeset/cool-walls-applaud.md b/.changeset/cool-walls-applaud.md new file mode 100644 index 0000000000..d548b926fb --- /dev/null +++ b/.changeset/cool-walls-applaud.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Updated README to list AsyncApi v3 as supported diff --git a/.changeset/create-app-1706621803.md b/.changeset/create-app-1706621803.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1706621803.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/curvy-icons-peel.md b/.changeset/curvy-icons-peel.md new file mode 100644 index 0000000000..bbadcb0a55 --- /dev/null +++ b/.changeset/curvy-icons-peel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges-backend': patch +--- + +Updating the `authorization` middleware to call the Catalog to check that the requesting user has permission to see the Entity before generating the UUID. diff --git a/.changeset/curvy-ladybugs-impress.md b/.changeset/curvy-ladybugs-impress.md new file mode 100644 index 0000000000..ab799e4888 --- /dev/null +++ b/.changeset/curvy-ladybugs-impress.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr': patch +--- + +Updated README diff --git a/.changeset/cyan-bats-lick.md b/.changeset/cyan-bats-lick.md new file mode 100644 index 0000000000..0683d806b0 --- /dev/null +++ b/.changeset/cyan-bats-lick.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +--- + +Added a note about Service Principles diff --git a/.changeset/cyan-ducks-sin.md b/.changeset/cyan-ducks-sin.md new file mode 100644 index 0000000000..4b69fabcc2 --- /dev/null +++ b/.changeset/cyan-ducks-sin.md @@ -0,0 +1,8 @@ +--- +'@backstage/backend-common': minor +--- + +**BREAKING**: `A gitilesBaseUrl` must be provided for the Gerrit integration to work. +You can disable this check by setting `DISABLE_GERRIT_GITILES_REQUIREMENT=1` but +this will be removed in a future release. If you are not able to use the Gitiles +Gerrit plugin, please open an issue towards `https://github.com/backstage/backstage` diff --git a/.changeset/cyan-icons-rest.md b/.changeset/cyan-icons-rest.md new file mode 100644 index 0000000000..3092c1bc90 --- /dev/null +++ b/.changeset/cyan-icons-rest.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-explore-backend': patch +--- + +Add support for the new backend system. + +A new backend plugin for the explore backend +was added and exported as `default`. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-explore-backend')); +``` diff --git a/.changeset/dirty-cheetahs-shave.md b/.changeset/dirty-cheetahs-shave.md new file mode 100644 index 0000000000..1691adec2d --- /dev/null +++ b/.changeset/dirty-cheetahs-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Support additional algorithms in the `/.well-known/openid-configuration` endpoint. diff --git a/.changeset/dirty-mirrors-retire.md b/.changeset/dirty-mirrors-retire.md new file mode 100644 index 0000000000..cb0bcd66a8 --- /dev/null +++ b/.changeset/dirty-mirrors-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-compat-api': patch +--- + +Updated dependency `@oriflame/backstage-plugin-score-card` to `^0.8.0`. diff --git a/.changeset/dirty-plums-fix.md b/.changeset/dirty-plums-fix.md new file mode 100644 index 0000000000..fb0655377c --- /dev/null +++ b/.changeset/dirty-plums-fix.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +--- + +Add support for the new backend system. + +A new backend module for the tech-insights backend +was added and exported as `default`. + +The module will register the `JsonRulesEngineFactCheckerFactory` +as `FactCheckerFactory`, loading checks from the config. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); +``` diff --git a/.changeset/dry-lizards-taste.md b/.changeset/dry-lizards-taste.md new file mode 100644 index 0000000000..90e4c9f659 --- /dev/null +++ b/.changeset/dry-lizards-taste.md @@ -0,0 +1,6 @@ +--- +'@backstage/app-defaults': patch +'@backstage/plugin-catalog': patch +--- + +Change default icon for `kind:resource` to the storage icon. diff --git a/.changeset/dry-lobsters-flash.md b/.changeset/dry-lobsters-flash.md new file mode 100644 index 0000000000..9815bf62f4 --- /dev/null +++ b/.changeset/dry-lobsters-flash.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +Added `IconsApi` implementation and the ability to configure icons through the `icons` option for `createApp` and `createSpecializedApp`. This is not a long-term solution as icons should be installable via extensions instead. This is just a stop-gap to make sure there is feature parity with the existing frontend system. diff --git a/.changeset/dry-vans-kiss.md b/.changeset/dry-vans-kiss.md new file mode 100644 index 0000000000..5d11df989c --- /dev/null +++ b/.changeset/dry-vans-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Simple typo fix in the fetch:template action example on the word 'skeleton'. diff --git a/.changeset/dull-dolphins-explain.md b/.changeset/dull-dolphins-explain.md new file mode 100644 index 0000000000..d8864e72e8 --- /dev/null +++ b/.changeset/dull-dolphins-explain.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-aws': patch +--- + +The default EKS cluster entity transformer now sets the new +`kubernetes.io/x-k8s-aws-id` annotation. diff --git a/.changeset/dull-fireants-repeat.md b/.changeset/dull-fireants-repeat.md new file mode 100644 index 0000000000..4e849bfbaf --- /dev/null +++ b/.changeset/dull-fireants-repeat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Use the externalized `auth-backend-module-microsoft-provider` again. diff --git a/.changeset/eight-hounds-dream.md b/.changeset/eight-hounds-dream.md new file mode 100644 index 0000000000..8bf945d684 --- /dev/null +++ b/.changeset/eight-hounds-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr': patch +--- + +Fix alignment of text in `AdrSearchResultListItem`. Update size and font to match other `SearchResultListItem`. diff --git a/.changeset/eight-pumas-rule.md b/.changeset/eight-pumas-rule.md new file mode 100644 index 0000000000..166ebd8bd3 --- /dev/null +++ b/.changeset/eight-pumas-rule.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-kubernetes-react': minor +--- + +**BREAKING** The `PodScope`, `PodAndErrors`, and `PodExecTerminalProps` types no +longer have a `clusterName` field; instead they now have the field `cluster` +which contains the full `ClusterAttributes`. diff --git a/.changeset/eleven-walls-relate.md b/.changeset/eleven-walls-relate.md new file mode 100644 index 0000000000..43c1d5dea9 --- /dev/null +++ b/.changeset/eleven-walls-relate.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-oidc-provider': patch +--- + +Fixed a bug where the OIDC authenticator did not properly persist granted OAuth scopes. diff --git a/.changeset/empty-ligers-hang.md b/.changeset/empty-ligers-hang.md new file mode 100644 index 0000000000..c17609712a --- /dev/null +++ b/.changeset/empty-ligers-hang.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Overflowing labels in OwnerPicker (Catalog) are now truncated. Hovering over them shows the full label diff --git a/.changeset/fair-mirrors-hammer.md b/.changeset/fair-mirrors-hammer.md new file mode 100644 index 0000000000..3884835d11 --- /dev/null +++ b/.changeset/fair-mirrors-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-graph': patch +--- + +use `CatalogClient.getEntitiesByRefs()` to reduce the number of backend requests from plugin `catalog-graph` diff --git a/.changeset/famous-houses-thank.md b/.changeset/famous-houses-thank.md new file mode 100644 index 0000000000..8fa0eb2d75 --- /dev/null +++ b/.changeset/famous-houses-thank.md @@ -0,0 +1,7 @@ +--- +'@backstage/frontend-test-utils': patch +'@backstage/frontend-app-api': patch +'@backstage/core-compat-api': patch +--- + +Updates to use the new `RouteResolutionsApi`. diff --git a/.changeset/famous-zoos-remain.md b/.changeset/famous-zoos-remain.md new file mode 100644 index 0000000000..be4147c21e --- /dev/null +++ b/.changeset/famous-zoos-remain.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-airbrake': patch +--- + +Updated New Backend System instructions to use default import diff --git a/.changeset/fast-jeans-walk.md b/.changeset/fast-jeans-walk.md new file mode 100644 index 0000000000..f733c9f464 --- /dev/null +++ b/.changeset/fast-jeans-walk.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': minor +'@backstage/plugin-scaffolder': minor +--- + +Remove the old legacy exports from `/alpha` diff --git a/.changeset/fast-onions-own.md b/.changeset/fast-onions-own.md new file mode 100644 index 0000000000..6977b035bc --- /dev/null +++ b/.changeset/fast-onions-own.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +`FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. diff --git a/.changeset/fifty-adults-watch.md b/.changeset/fifty-adults-watch.md new file mode 100644 index 0000000000..8bff1c28cd --- /dev/null +++ b/.changeset/fifty-adults-watch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools': patch +--- + +Refactored code to improve accessibility by moving elements outside the `ul` tag and placing them appropriately. Also adjusted theme to offer better contrast. diff --git a/.changeset/fifty-files-argue.md b/.changeset/fifty-files-argue.md new file mode 100644 index 0000000000..b80b2989af --- /dev/null +++ b/.changeset/fifty-files-argue.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-test-utils': minor +'@backstage/backend-common': minor +--- + +drop databases after unit tests if the database instance is not running in docker diff --git a/.changeset/five-hornets-wash.md b/.changeset/five-hornets-wash.md new file mode 100644 index 0000000000..c29debb518 --- /dev/null +++ b/.changeset/five-hornets-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Fix some deprecations and misplaced `await` usage. diff --git a/.changeset/flat-roses-happen.md b/.changeset/flat-roses-happen.md new file mode 100644 index 0000000000..e20e063b4f --- /dev/null +++ b/.changeset/flat-roses-happen.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket': minor +--- + +Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into +`@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and +`@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + +`@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. + +Please use any of the two replacements depending on your needs. + +```diff +- backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); ++ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); ++ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); +``` diff --git a/.changeset/flat-wasps-fold.md b/.changeset/flat-wasps-fold.md new file mode 100644 index 0000000000..653dc0d78f --- /dev/null +++ b/.changeset/flat-wasps-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': patch +--- + +Added initial `IconsApi` definition. diff --git a/.changeset/fluffy-jeans-eat.md b/.changeset/fluffy-jeans-eat.md new file mode 100644 index 0000000000..8935c33937 --- /dev/null +++ b/.changeset/fluffy-jeans-eat.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added check for the `repository` field in the `repo fix` command. diff --git a/.changeset/forty-beers-sniff.md b/.changeset/forty-beers-sniff.md new file mode 100644 index 0000000000..130726f94f --- /dev/null +++ b/.changeset/forty-beers-sniff.md @@ -0,0 +1,22 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-catalog-graph': patch +--- + +Added possibility to show arrow heads for graph edges for better understandability. + +In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component +(typically in `packages/app/src/App.tsx`): + +```diff +- ++ +``` + +In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components +(typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + +```diff +- ++ +``` diff --git a/.changeset/forty-cars-scream.md b/.changeset/forty-cars-scream.md new file mode 100644 index 0000000000..284acc3c44 --- /dev/null +++ b/.changeset/forty-cars-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Allow defining default output text to be shown diff --git a/.changeset/forty-eagles-kick.md b/.changeset/forty-eagles-kick.md new file mode 100644 index 0000000000..4d701a729b --- /dev/null +++ b/.changeset/forty-eagles-kick.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +Pod dialogs display cluster title when specified. diff --git a/.changeset/four-mugs-try.md b/.changeset/four-mugs-try.md new file mode 100644 index 0000000000..11fdf783d4 --- /dev/null +++ b/.changeset/four-mugs-try.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': minor +--- + +**BREAKING**: Removed the `SidebarIntro` component as it was providing instructions for features that do not exist, along with `IntroCard`. If you were relying on this component and want to keep using it you can refer to the original implementations of [`SidebarIntro`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L149) and [`IntroCard`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L100). diff --git a/.changeset/four-walls-perform.md b/.changeset/four-walls-perform.md new file mode 100644 index 0000000000..5275da7b79 --- /dev/null +++ b/.changeset/four-walls-perform.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. diff --git a/.changeset/fresh-gifts-smile.md b/.changeset/fresh-gifts-smile.md new file mode 100644 index 0000000000..446e9f3c54 --- /dev/null +++ b/.changeset/fresh-gifts-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Fixed the value label text color in dark mode for the TextSize addon. diff --git a/.changeset/fresh-paws-raise.md b/.changeset/fresh-paws-raise.md new file mode 100644 index 0000000000..61712db1e8 --- /dev/null +++ b/.changeset/fresh-paws-raise.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +The `ErrorPanel` component will display the `title` field (when specified) for +clusters with errors. diff --git a/.changeset/friendly-cheetahs-rescue.md b/.changeset/friendly-cheetahs-rescue.md new file mode 100644 index 0000000000..4f54a022af --- /dev/null +++ b/.changeset/friendly-cheetahs-rescue.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Fixed an issue where a misleading error message would be logged when an +unsupported service locator method was specified. diff --git a/.changeset/friendly-terms-love.md b/.changeset/friendly-terms-love.md new file mode 100644 index 0000000000..18fc399740 --- /dev/null +++ b/.changeset/friendly-terms-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Introduced `knip` to the `knip-reports` command, which generates a `knip-report.md` file for your packages with dependency warnings, if any. diff --git a/.changeset/funny-buttons-sip.md b/.changeset/funny-buttons-sip.md new file mode 100644 index 0000000000..c455b8a31b --- /dev/null +++ b/.changeset/funny-buttons-sip.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Move the `NODE_OPTIONS` messaging for `--no-node-snapshot` to the `SecureTemplater` in order to get better messaging at runtime diff --git a/.changeset/funny-meals-tease.md b/.changeset/funny-meals-tease.md new file mode 100644 index 0000000000..3dce739952 --- /dev/null +++ b/.changeset/funny-meals-tease.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': minor +--- + +support oidc customization diff --git a/.changeset/funny-timers-visit.md b/.changeset/funny-timers-visit.md new file mode 100644 index 0000000000..3d802328b5 --- /dev/null +++ b/.changeset/funny-timers-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +Fix broken XtermJS CSS import diff --git a/.changeset/fuzzy-comics-collect.md b/.changeset/fuzzy-comics-collect.md new file mode 100644 index 0000000000..5ce6b3c967 --- /dev/null +++ b/.changeset/fuzzy-comics-collect.md @@ -0,0 +1,27 @@ +--- +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +--- + +Support loading `TechInsightsJsonRuleCheck` instances from config. + +Uses the check `id` as key. + +Example: + +```yaml title="app-config.yaml" +techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true +``` diff --git a/.changeset/fuzzy-turtles-camp.md b/.changeset/fuzzy-turtles-camp.md new file mode 100644 index 0000000000..ca1767bd30 --- /dev/null +++ b/.changeset/fuzzy-turtles-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli-node': patch +--- + +Added `repository` field to `BackstagePackageJson` type. diff --git a/.changeset/giant-suits-switch.md b/.changeset/giant-suits-switch.md new file mode 100644 index 0000000000..77d0e62c73 --- /dev/null +++ b/.changeset/giant-suits-switch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +--- + +Fixed bug with `extractPartsFromAsset` that resulted in a leading `.` being removed from the path in an otherwise valid path (ex. `.assets/image.png`). The leading `.` will now only be moved for paths beginning with `./`. diff --git a/.changeset/good-lemons-lick.md b/.changeset/good-lemons-lick.md new file mode 100644 index 0000000000..3fde0c7d84 --- /dev/null +++ b/.changeset/good-lemons-lick.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend-module-sentry': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +Exporting a default module for the new Backend System diff --git a/.changeset/gorgeous-bobcats-press.md b/.changeset/gorgeous-bobcats-press.md new file mode 100644 index 0000000000..6193918cb7 --- /dev/null +++ b/.changeset/gorgeous-bobcats-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Include the extension point ID and the module ID in the backend init error message. diff --git a/.changeset/gorgeous-pumas-draw.md b/.changeset/gorgeous-pumas-draw.md new file mode 100644 index 0000000000..2e94c61c63 --- /dev/null +++ b/.changeset/gorgeous-pumas-draw.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-analytics-module-newrelic-browser': minor +'@backstage/plugin-analytics-module-ga4': minor +'@backstage/plugin-analytics-module-ga': minor +'@backstage/core-compat-api': minor +--- + +Add support to the new analytics api. diff --git a/.changeset/gorgeous-ways-applaud.md b/.changeset/gorgeous-ways-applaud.md new file mode 100644 index 0000000000..4b28e2e656 --- /dev/null +++ b/.changeset/gorgeous-ways-applaud.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-signals': patch +--- + +Fix disconnect loop on server start diff --git a/.changeset/great-rats-collect.md b/.changeset/great-rats-collect.md new file mode 100644 index 0000000000..24b01c0fe3 --- /dev/null +++ b/.changeset/great-rats-collect.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-kubernetes-backend': minor +--- + +**BREAKING** The backend will fail to start if two clusters in the app-config +have the same name. The requirement for unique names has been declared in the +docs for some time, but is now enforced. diff --git a/.changeset/green-dogs-fold.md b/.changeset/green-dogs-fold.md new file mode 100644 index 0000000000..c23f7c2a29 --- /dev/null +++ b/.changeset/green-dogs-fold.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-node': patch +--- + +Add support for the new backend system. + +A new backend plugin for the tech-insights backend +was added and exported as `default`. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend')); +``` diff --git a/.changeset/green-flies-draw.md b/.changeset/green-flies-draw.md new file mode 100644 index 0000000000..6b967feceb --- /dev/null +++ b/.changeset/green-flies-draw.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Upgrade jest diff --git a/.changeset/grumpy-poets-study.md b/.changeset/grumpy-poets-study.md new file mode 100644 index 0000000000..9925f2f87a --- /dev/null +++ b/.changeset/grumpy-poets-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Added basic support for the new frontend system, exported from the `/alpha` subpath. diff --git a/.changeset/happy-peas-hunt.md b/.changeset/happy-peas-hunt.md new file mode 100644 index 0000000000..8fbac9c33a --- /dev/null +++ b/.changeset/happy-peas-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +The `/clusters` API now surfaces cluster titles. diff --git a/.changeset/healthy-bees-deliver.md b/.changeset/healthy-bees-deliver.md new file mode 100644 index 0000000000..80da17dc0b --- /dev/null +++ b/.changeset/healthy-bees-deliver.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-common': patch +--- + +The `ClusterAttributes` type now includes the cluster title. diff --git a/.changeset/healthy-goats-jump.md b/.changeset/healthy-goats-jump.md new file mode 100644 index 0000000000..e5b43d3f8c --- /dev/null +++ b/.changeset/healthy-goats-jump.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-kubernetes-react': patch +--- + +The `ErrorReporting` component's cluster column now displays cluster titles when +specified. diff --git a/.changeset/hip-ears-add.md b/.changeset/hip-ears-add.md new file mode 100644 index 0000000000..1e7f656507 --- /dev/null +++ b/.changeset/hip-ears-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +The auth backend will now refuse to issue user tokens are excessively large. diff --git a/.changeset/honest-pets-judge.md b/.changeset/honest-pets-judge.md new file mode 100644 index 0000000000..468fc1b6d5 --- /dev/null +++ b/.changeset/honest-pets-judge.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-notifications-backend': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications': patch +--- + +Add support for signal type in notifications diff --git a/.changeset/hot-horses-matter.md b/.changeset/hot-horses-matter.md new file mode 100644 index 0000000000..1b544c0854 --- /dev/null +++ b/.changeset/hot-horses-matter.md @@ -0,0 +1,108 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-events-backend-module-bitbucket-cloud': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-catalog-backend-module-unprocessed': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend-module-sentry': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-catalog-backend-module-puppetdb': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend-module-openapi': patch +'@backstage/plugin-search-backend-module-techdocs': patch +'@backstage/plugin-events-backend-module-aws-sqs': patch +'@backstage/plugin-search-backend-module-catalog': patch +'@backstage/plugin-search-backend-module-explore': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-events-backend-module-gerrit': patch +'@backstage/plugin-events-backend-module-github': patch +'@backstage/plugin-events-backend-module-gitlab': patch +'@backstage/plugin-events-backend-module-azure': patch +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/backend-plugin-api': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/backend-dev-utils': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/backend-defaults': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/backend-app-api': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/backend-common': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-graphql-voyager': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/backend-tasks': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-octopus-deploy': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/app-defaults': patch +'@backstage/core-app-api': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-nomad-backend': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-xcmetrics': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-linguist': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-nomad': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-home': patch +--- + +Use `--cwd` as the first `yarn` argument diff --git a/.changeset/hot-paws-tap.md b/.changeset/hot-paws-tap.md new file mode 100644 index 0000000000..30d8b396ba --- /dev/null +++ b/.changeset/hot-paws-tap.md @@ -0,0 +1,7 @@ +--- +'@backstage/catalog-model': patch +'@backstage/test-utils': patch +'@backstage/plugin-explore': patch +--- + +Fix wording in API reference diff --git a/.changeset/hot-pillows-poke.md b/.changeset/hot-pillows-poke.md new file mode 100644 index 0000000000..8060e7121f --- /dev/null +++ b/.changeset/hot-pillows-poke.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-user-settings': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-search': patch +--- + +Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. diff --git a/.changeset/hot-tips-doubt.md b/.changeset/hot-tips-doubt.md new file mode 100644 index 0000000000..464ddec302 --- /dev/null +++ b/.changeset/hot-tips-doubt.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-openapi-utils': patch +--- + +Internal updates due to `json-schema-to-ts` diff --git a/.changeset/hungry-days-remain.md b/.changeset/hungry-days-remain.md new file mode 100644 index 0000000000..b0c3642a35 --- /dev/null +++ b/.changeset/hungry-days-remain.md @@ -0,0 +1,5 @@ +--- +'@backstage/theme': patch +--- + +Fixed missing extra variables like `applyDarkStyles` in Mui V5 theme after calling `createUnifiedThemeFromV4` function diff --git a/.changeset/hungry-lions-sit.md b/.changeset/hungry-lions-sit.md new file mode 100644 index 0000000000..b283cc976f --- /dev/null +++ b/.changeset/hungry-lions-sit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Use the Gitbeaker library for `gitlab:projectAccessToken:create` action, enabling the `expiresAt` option diff --git a/.changeset/khaki-seahorses-joke.md b/.changeset/khaki-seahorses-joke.md new file mode 100644 index 0000000000..9382d6f108 --- /dev/null +++ b/.changeset/khaki-seahorses-joke.md @@ -0,0 +1,6 @@ +--- +'@backstage/integration-aws-node': patch +'@backstage/integration': patch +--- + +All single-line secrets read from config will now have both leading and trailing whitespace trimmed. This is done to ensure that the secrets are always valid HTTP header values, since many fetch implementations will include the header value itself when an error is thrown due to invalid header values. diff --git a/.changeset/kind-clouds-fly.md b/.changeset/kind-clouds-fly.md new file mode 100644 index 0000000000..22aa7cda33 --- /dev/null +++ b/.changeset/kind-clouds-fly.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-node': patch +--- + +Enabled a way to include custom auth metadata info on the clusters endpoint. If you want to implement a Kubernetes auth strategy which requires surfacing custom auth metadata to the frontend, use the new presentAuthMetadata method on the AuthenticationStrategy interface. diff --git a/.changeset/kind-wombats-draw.md b/.changeset/kind-wombats-draw.md new file mode 100644 index 0000000000..29a0e9da3c --- /dev/null +++ b/.changeset/kind-wombats-draw.md @@ -0,0 +1,11 @@ +--- +'@backstage/core-plugin-api': minor +'@backstage/app-defaults': minor +'@backstage/core-app-api': minor +'@backstage/frontend-plugin-api': patch +--- + +Added a utility API for VMware Cloud auth; the API ref is available in the +`@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the +implementation is in `@backstage/core-app-api` and a factory has been added to +`@backstage/app-defaults`. diff --git a/.changeset/large-frogs-grab.md b/.changeset/large-frogs-grab.md new file mode 100644 index 0000000000..2d36de3407 --- /dev/null +++ b/.changeset/large-frogs-grab.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Adding `supportedSubmitMethods` prop to `api-docs` to pass to the Swagger UI. This allows users to specify which HTTP methods they wish to allow end-users to make requests through the `Try It Out` button on the Swagger UI. diff --git a/.changeset/large-moons-speak.md b/.changeset/large-moons-speak.md new file mode 100644 index 0000000000..efd94c5df3 --- /dev/null +++ b/.changeset/large-moons-speak.md @@ -0,0 +1,6 @@ +--- +'@backstage/catalog-client': minor +'@backstage/plugin-catalog-backend': minor +--- + +Add API to get location by entity diff --git a/.changeset/large-tables-wonder.md b/.changeset/large-tables-wonder.md new file mode 100644 index 0000000000..9c10f172a1 --- /dev/null +++ b/.changeset/large-tables-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Add experimental support for an optional `public` app entry point that lets users sign-in before being able to access the full app. diff --git a/.changeset/late-poets-love.md b/.changeset/late-poets-love.md new file mode 100644 index 0000000000..03b975b2b5 --- /dev/null +++ b/.changeset/late-poets-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Allow the `createConfigSecretEnumerator` to take an optional `schema` argument with an already-loaded global configuration schema. diff --git a/.changeset/lazy-dolls-roll.md b/.changeset/lazy-dolls-roll.md new file mode 100644 index 0000000000..da375727cc --- /dev/null +++ b/.changeset/lazy-dolls-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-tasks': patch +--- + +The `TaskScheduler.fromConfig` method now accepts the `LegacyRootDatabaseService` interface rather than the full `DatabaseManager` implementation. diff --git a/.changeset/lemon-cameras-remember.md b/.changeset/lemon-cameras-remember.md new file mode 100644 index 0000000000..29cd88602f --- /dev/null +++ b/.changeset/lemon-cameras-remember.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Migrated oidc auth provider to new `@backstage/plugin-auth-backend-module-oidc-provider` module package. diff --git a/.changeset/long-stingrays-look.md b/.changeset/long-stingrays-look.md new file mode 100644 index 0000000000..f1df12169e --- /dev/null +++ b/.changeset/long-stingrays-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Updated the paginated catalog table to support server side text filtering. diff --git a/.changeset/long-suns-bow.md b/.changeset/long-suns-bow.md new file mode 100644 index 0000000000..81fafa8dae --- /dev/null +++ b/.changeset/long-suns-bow.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-search-backend': minor +'@backstage/plugin-todo-backend': patch +--- + +Updates the OpenAPI spec to use plugin as `info.title` instead of package name. diff --git a/.changeset/long-wasps-wait.md b/.changeset/long-wasps-wait.md new file mode 100644 index 0000000000..f027fb97ce --- /dev/null +++ b/.changeset/long-wasps-wait.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Make schema processing gracefully handle an empty config. diff --git a/.changeset/loud-walls-compare.md b/.changeset/loud-walls-compare.md new file mode 100644 index 0000000000..495ad933d9 --- /dev/null +++ b/.changeset/loud-walls-compare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fixed inconsistencies in icons used for System and Template diff --git a/.changeset/lovely-bugs-prove.md b/.changeset/lovely-bugs-prove.md new file mode 100644 index 0000000000..de55f329bb --- /dev/null +++ b/.changeset/lovely-bugs-prove.md @@ -0,0 +1,19 @@ +--- +'@backstage/repo-tools': minor +--- + +**BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. + +The following commands now live under the `package` namespace, + +- `schema openapi generate` is now `package schema openapi generate --server` +- `schema openapi generate-client` is now `package schema openapi generate --client-package` +- `schema openapi init` is now `package schema openapi init` + +And these commands live under the new `repo` namespace, + +- `schema openapi lint` is now `repo schema openapi lint` +- `schema openapi test` is now `repo schema openapi test` +- `schema openapi verify` is now `repo schema openapi verify` + +The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. diff --git a/.changeset/lovely-starfishes-remain.md b/.changeset/lovely-starfishes-remain.md new file mode 100644 index 0000000000..c57bfa0aaa --- /dev/null +++ b/.changeset/lovely-starfishes-remain.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Removed alpha symbol from Task List header diff --git a/.changeset/lucky-bugs-bow.md b/.changeset/lucky-bugs-bow.md new file mode 100644 index 0000000000..ee17883408 --- /dev/null +++ b/.changeset/lucky-bugs-bow.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. diff --git a/.changeset/many-pugs-change.md b/.changeset/many-pugs-change.md new file mode 100644 index 0000000000..318c571891 --- /dev/null +++ b/.changeset/many-pugs-change.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +The purpose of this patch is to add a new login method which is `googleServiceAccount` configuring the kubernetes properties in the app-config.yaml file with authProvider key diff --git a/.changeset/mean-apes-wait.md b/.changeset/mean-apes-wait.md new file mode 100644 index 0000000000..838f1f2286 --- /dev/null +++ b/.changeset/mean-apes-wait.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Added `validateLocationsExist` to the config diff --git a/.changeset/metal-clocks-suffer.md b/.changeset/metal-clocks-suffer.md new file mode 100644 index 0000000000..c459be9fa5 --- /dev/null +++ b/.changeset/metal-clocks-suffer.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitea': minor +'@backstage/plugin-scaffolder-backend': minor +--- + +Created a gitea module for the scaffolder. This module provides a new action "publish:gitea" able to create a gitea repository owned by an organization. See: https://gitea.com/api/swagger#/organization/createOrgRepo diff --git a/.changeset/metal-elephants-sit.md b/.changeset/metal-elephants-sit.md new file mode 100644 index 0000000000..093936da3b --- /dev/null +++ b/.changeset/metal-elephants-sit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Introduced a new `MultiEntityPicker` field that supports selecting multiple Entities diff --git a/.changeset/metal-students-drive.md b/.changeset/metal-students-drive.md new file mode 100644 index 0000000000..04f338c64e --- /dev/null +++ b/.changeset/metal-students-drive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-validation': patch +--- + +Improves UX of the EntityValidationPage: Moves the validate button below the EntityTextArea which is actually validated, the location TextField can now be hidden to prevent confusion about what is validated and additional content can be added to the top of the validation page. diff --git a/.changeset/mighty-steaks-shave.md b/.changeset/mighty-steaks-shave.md new file mode 100644 index 0000000000..b85447e5c0 --- /dev/null +++ b/.changeset/mighty-steaks-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped TypeScript to version `5.3`. diff --git a/.changeset/mighty-tomatoes-visit.md b/.changeset/mighty-tomatoes-visit.md new file mode 100644 index 0000000000..beb37d02ed --- /dev/null +++ b/.changeset/mighty-tomatoes-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +adds a x-goog-api-client header to existing API requests in this plugin to clearly identify API requests from this GKE plugin. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GKE plugin and `libName` represent the current Google API used at backstage. diff --git a/.changeset/mighty-toys-laugh.md b/.changeset/mighty-toys-laugh.md new file mode 100644 index 0000000000..ad48e84565 --- /dev/null +++ b/.changeset/mighty-toys-laugh.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Add support to `configSchema` option on the `createEntityCardExtension` factory function. diff --git a/.changeset/modern-peaches-clean.md b/.changeset/modern-peaches-clean.md new file mode 100644 index 0000000000..13dbb75183 --- /dev/null +++ b/.changeset/modern-peaches-clean.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Updated the default app index template at `packages/app/public/index.html` to have a fallback value for the `app.title` config. diff --git a/.changeset/nasty-days-jog.md b/.changeset/nasty-days-jog.md new file mode 100644 index 0000000000..09454609b2 --- /dev/null +++ b/.changeset/nasty-days-jog.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-aws-alb-provider': patch +--- + +Refactored to use the `jose` library for JWT handling. diff --git a/.changeset/nasty-shirts-look.md b/.changeset/nasty-shirts-look.md new file mode 100644 index 0000000000..32213ee219 --- /dev/null +++ b/.changeset/nasty-shirts-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. diff --git a/.changeset/nasty-suns-speak.md b/.changeset/nasty-suns-speak.md new file mode 100644 index 0000000000..2c5fff25a1 --- /dev/null +++ b/.changeset/nasty-suns-speak.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Add an internal limiter on concurrency when launching processes diff --git a/.changeset/neat-eels-greet.md b/.changeset/neat-eels-greet.md new file mode 100644 index 0000000000..5ba4777934 --- /dev/null +++ b/.changeset/neat-eels-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-graph': minor +--- + +Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. diff --git a/.changeset/neat-hotels-wink.md b/.changeset/neat-hotels-wink.md new file mode 100644 index 0000000000..fca82e38fa --- /dev/null +++ b/.changeset/neat-hotels-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +Added the option to provide custom `groupTransformer`, `userTransformer` and `groupNameTransformer` to allow custom transformations of groups and users diff --git a/.changeset/neat-kiwis-joke.md b/.changeset/neat-kiwis-joke.md new file mode 100644 index 0000000000..852ec1d430 --- /dev/null +++ b/.changeset/neat-kiwis-joke.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Add a User-Agent header for calls towards Google Cloud Storage. diff --git a/.changeset/new-plants-rhyme.md b/.changeset/new-plants-rhyme.md new file mode 100644 index 0000000000..c901754069 --- /dev/null +++ b/.changeset/new-plants-rhyme.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Responses from the `/api/kubernetes/services/:serviceId` endpoint now include the cluster title. diff --git a/.changeset/nice-carrots-dream.md b/.changeset/nice-carrots-dream.md new file mode 100644 index 0000000000..3b57dfd9e0 --- /dev/null +++ b/.changeset/nice-carrots-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Decreased number of teams fetched by GraphQL Query responsible for fetching Teams and Members in organization, due to timeouts when running against big organizations diff --git a/.changeset/nine-bulldogs-camp.md b/.changeset/nine-bulldogs-camp.md new file mode 100644 index 0000000000..b6612b9948 --- /dev/null +++ b/.changeset/nine-bulldogs-camp.md @@ -0,0 +1,8 @@ +--- +'@backstage/catalog-client': minor +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-search-backend': minor +'@backstage/plugin-todo-backend': patch +--- + +Updates the OpenAPI specification title to plugin ID instead of package name. diff --git a/.changeset/nine-olives-swim.md b/.changeset/nine-olives-swim.md new file mode 100644 index 0000000000..40852c08c2 --- /dev/null +++ b/.changeset/nine-olives-swim.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-node': minor +--- + +Added functions to clone a repo, create a branch, add files and push and commit to the branch. This allows for files to be added to the a PR for use in the bitbucket pull request action for issue #21762 diff --git a/.changeset/ninety-hats-kiss.md b/.changeset/ninety-hats-kiss.md new file mode 100644 index 0000000000..ff5ec770f7 --- /dev/null +++ b/.changeset/ninety-hats-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-playlist': patch +--- + +Conditionally render playlist description only when it's non-empty diff --git a/.changeset/ninety-rules-sneeze.md b/.changeset/ninety-rules-sneeze.md new file mode 100644 index 0000000000..bea9d00f7e --- /dev/null +++ b/.changeset/ninety-rules-sneeze.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Minor performance improvement for `queryEntities` when the limit is 0. diff --git a/.changeset/odd-beds-confess.md b/.changeset/odd-beds-confess.md new file mode 100644 index 0000000000..5a766beb9d --- /dev/null +++ b/.changeset/odd-beds-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Replace uses of deprecated types with replacements internally. diff --git a/.changeset/old-papayas-shave.md b/.changeset/old-papayas-shave.md new file mode 100644 index 0000000000..1372b9ce85 --- /dev/null +++ b/.changeset/old-papayas-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +Wrap the root element with the analytics context to ensure it always exists for all extensions. diff --git a/.changeset/old-students-smoke.md b/.changeset/old-students-smoke.md new file mode 100644 index 0000000000..8e072c5203 --- /dev/null +++ b/.changeset/old-students-smoke.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-oidc-provider': minor +--- + +Created new `@backstage/plugin-auth-backend-module-oidc-provider` module package to house oidc auth provider migration. diff --git a/.changeset/olive-boats-agree.md b/.changeset/olive-boats-agree.md new file mode 100644 index 0000000000..e489476bcc --- /dev/null +++ b/.changeset/olive-boats-agree.md @@ -0,0 +1,93 @@ +--- +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/frontend-app-api': patch +'@backstage/frontend-plugin-api': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-entity-feedback': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-github-issues': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-graphql-voyager': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kubernetes-cluster': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-linguist': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-nomad': patch +'@backstage/plugin-octopus-deploy': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-playlist': patch +'@backstage/plugin-puppetdb': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search-react': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-stackstorm': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-xcmetrics': patch +'@backstage/test-utils': patch +'@backstage/theme': patch +--- + +Widen `@types/react` dependency range to include version 18. diff --git a/.changeset/olive-experts-fold.md b/.changeset/olive-experts-fold.md new file mode 100644 index 0000000000..29b9bfc28f --- /dev/null +++ b/.changeset/olive-experts-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Rollback the change for wildcard discovery, this fixes a bug with the `AzureUrlReader` not working with wildcard paths diff --git a/.changeset/olive-singers-accept.md b/.changeset/olive-singers-accept.md new file mode 100644 index 0000000000..7e8cf7ae8d --- /dev/null +++ b/.changeset/olive-singers-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-compat-api': patch +--- + +Added `convertLegacyRouteRefs` for bulk conversion of plugin routes. diff --git a/.changeset/orange-gorillas-clean.md b/.changeset/orange-gorillas-clean.md new file mode 100644 index 0000000000..d346adce6c --- /dev/null +++ b/.changeset/orange-gorillas-clean.md @@ -0,0 +1,26 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-node': patch +--- + +Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + +Original exports are marked as deprecated and re-export the moved types. + +Please replace uses like + +```ts +import { + FactRetrieverRegistry, + PersistenceContext, +} from '@backstage/plugin-tech-insights-backend'; +``` + +with + +```ts +import { + FactRetrieverRegistry, + PersistenceContext, +} from '@backstage/plugin-tech-insights-node'; +``` diff --git a/.changeset/orange-suns-yell.md b/.changeset/orange-suns-yell.md new file mode 100644 index 0000000000..f7314411eb --- /dev/null +++ b/.changeset/orange-suns-yell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Add entity warning components to the default entity overview page. diff --git a/.changeset/orange-walls-complain.md b/.changeset/orange-walls-complain.md new file mode 100644 index 0000000000..477d42d913 --- /dev/null +++ b/.changeset/orange-walls-complain.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Add line clamping to `CatalogSearchResultListItem` diff --git a/.changeset/perfect-colts-hammer.md b/.changeset/perfect-colts-hammer.md new file mode 100644 index 0000000000..616bcbda6f --- /dev/null +++ b/.changeset/perfect-colts-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Organized imports in plugin.ts diff --git a/.changeset/polite-meals-hug.md b/.changeset/polite-meals-hug.md new file mode 100644 index 0000000000..664f450c6d --- /dev/null +++ b/.changeset/polite-meals-hug.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow': patch +--- + +Fixes a bug that made the API return questions not related to the tags provided diff --git a/.changeset/poor-jeans-rescue.md b/.changeset/poor-jeans-rescue.md new file mode 100644 index 0000000000..e44b9c6bc6 --- /dev/null +++ b/.changeset/poor-jeans-rescue.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Make `http://localhost:3000` the default base URL for serving locally, and `/` the default public path for built apps. The app build no longer requires any configuration values to be present. diff --git a/.changeset/poor-points-do.md b/.changeset/poor-points-do.md new file mode 100644 index 0000000000..198ef24c83 --- /dev/null +++ b/.changeset/poor-points-do.md @@ -0,0 +1,46 @@ +--- +'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-permission-backend-module-allow-all-policy': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-backstage-openapi': patch +'@backstage/plugin-auth-backend-module-atlassian-provider': patch +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +'@backstage/plugin-auth-backend-module-pinniped-provider': patch +'@backstage/plugin-auth-backend-module-github-provider': patch +'@backstage/plugin-auth-backend-module-gitlab-provider': patch +'@backstage/plugin-auth-backend-module-oauth2-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-auth-backend-module-oidc-provider': patch +'@backstage/plugin-auth-backend-module-okta-provider': patch +'@backstage/plugin-catalog-backend-module-github-org': patch +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-notifications-backend': patch +'@backstage/frontend-test-utils': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications-node': patch +'@backstage/frontend-app-api': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/e2e-test-utils': patch +'@backstage/plugin-kubernetes-node': patch +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-app-visualizer': patch +'@backstage/plugin-notifications': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-vault-node': patch +'@backstage/plugin-app-node': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-signals': patch +--- + +Added or fixed the `repository` field in `package.json`. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..80baf3d416 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,507 @@ +{ + "mode": "exit", + "tag": "next", + "initialVersions": { + "example-app": "0.2.91", + "@backstage/app-defaults": "1.4.7", + "example-app-next": "0.0.5", + "app-next-example-plugin": "0.0.5", + "example-backend": "0.2.91", + "@backstage/backend-app-api": "0.5.10", + "@backstage/backend-common": "0.20.1", + "@backstage/backend-defaults": "0.2.9", + "@backstage/backend-dev-utils": "0.1.3", + "@backstage/backend-dynamic-feature-service": "0.1.0", + "example-backend-next": "0.0.19", + "@backstage/backend-openapi-utils": "0.1.2", + "@backstage/backend-plugin-api": "0.6.9", + "@backstage/backend-tasks": "0.5.14", + "@backstage/backend-test-utils": "0.2.10", + "@backstage/catalog-client": "1.5.2", + "@backstage/catalog-model": "1.4.3", + "@backstage/cli": "0.25.1", + "@backstage/cli-common": "0.1.13", + "@backstage/cli-node": "0.2.2", + "@backstage/codemods": "0.1.46", + "@backstage/config": "1.1.1", + "@backstage/config-loader": "1.6.1", + "@backstage/core-app-api": "1.11.3", + "@backstage/core-compat-api": "0.1.1", + "@backstage/core-components": "0.13.10", + "@backstage/core-plugin-api": "1.8.2", + "@backstage/create-app": "0.5.9", + "@backstage/dev-utils": "1.0.26", + "e2e-test": "0.2.11", + "@backstage/e2e-test-utils": "0.1.0", + "@backstage/errors": "1.2.3", + "@backstage/eslint-plugin": "0.1.4", + "@backstage/frontend-app-api": "0.5.0", + "@backstage/frontend-plugin-api": "0.5.0", + "@backstage/frontend-test-utils": "0.1.1", + "@backstage/integration": "1.8.0", + "@backstage/integration-aws-node": "0.1.8", + "@backstage/integration-react": "1.1.23", + "@backstage/release-manifests": "0.0.11", + "@backstage/repo-tools": "0.5.2", + "@techdocs/cli": "1.8.1", + "techdocs-cli-embedded-app": "0.2.90", + "@backstage/test-utils": "1.4.7", + "@backstage/theme": "0.5.0", + "@backstage/types": "1.1.1", + "@backstage/version-bridge": "1.0.7", + "@backstage/plugin-adr": "0.6.12", + "@backstage/plugin-adr-backend": "0.4.6", + "@backstage/plugin-adr-common": "0.2.19", + "@backstage/plugin-airbrake": "0.3.29", + "@backstage/plugin-airbrake-backend": "0.3.6", + "@backstage/plugin-allure": "0.1.45", + "@backstage/plugin-analytics-module-ga": "0.1.37", + "@backstage/plugin-analytics-module-ga4": "0.1.8", + "@backstage/plugin-analytics-module-newrelic-browser": "0.0.6", + "@backstage/plugin-apache-airflow": "0.2.19", + "@backstage/plugin-api-docs": "0.10.3", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.5", + "@backstage/plugin-apollo-explorer": "0.1.19", + "@backstage/plugin-app-backend": "0.3.57", + "@backstage/plugin-app-node": "0.1.9", + "@backstage/plugin-app-visualizer": "0.1.0", + "@backstage/plugin-auth-backend": "0.20.3", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.1.1", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-github-provider": "0.1.6", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.6", + "@backstage/plugin-auth-backend-module-google-provider": "0.1.6", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.4", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.1.6", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.1", + "@backstage/plugin-auth-backend-module-okta-provider": "0.0.2", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.1.1", + "@backstage/plugin-auth-node": "0.4.3", + "@backstage/plugin-azure-devops": "0.3.11", + "@backstage/plugin-azure-devops-backend": "0.5.1", + "@backstage/plugin-azure-devops-common": "0.3.2", + "@backstage/plugin-azure-sites": "0.1.18", + "@backstage/plugin-azure-sites-backend": "0.1.19", + "@backstage/plugin-azure-sites-common": "0.1.1", + "@backstage/plugin-badges": "0.2.53", + "@backstage/plugin-badges-backend": "0.3.6", + "@backstage/plugin-bazaar": "0.2.21", + "@backstage/plugin-bazaar-backend": "0.3.7", + "@backstage/plugin-bitbucket-cloud-common": "0.2.15", + "@backstage/plugin-bitrise": "0.1.56", + "@backstage/plugin-catalog": "1.16.1", + "@backstage/plugin-catalog-backend": "1.16.1", + "@backstage/plugin-catalog-backend-module-aws": "0.3.3", + "@backstage/plugin-catalog-backend-module-azure": "0.1.28", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.1.2", + "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.24", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.24", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.22", + "@backstage/plugin-catalog-backend-module-gcp": "0.1.9", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.25", + "@backstage/plugin-catalog-backend-module-github": "0.4.7", + "@backstage/plugin-catalog-backend-module-github-org": "0.1.3", + "@backstage/plugin-catalog-backend-module-gitlab": "0.3.6", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.13", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.24", + "@backstage/plugin-catalog-backend-module-msgraph": "0.5.16", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.26", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.14", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.6", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.3.6", + "@backstage/plugin-catalog-common": "1.0.20", + "@backstage/plugin-catalog-graph": "0.3.3", + "@backstage/plugin-catalog-import": "0.10.5", + "@backstage/plugin-catalog-node": "1.6.1", + "@backstage/plugin-catalog-react": "1.9.3", + "@backstage/plugin-catalog-unprocessed-entities": "0.1.7", + "@backstage/plugin-cicd-statistics": "0.1.31", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.25", + "@backstage/plugin-circleci": "0.3.29", + "@backstage/plugin-cloudbuild": "0.3.29", + "@backstage/plugin-code-climate": "0.1.29", + "@backstage/plugin-code-coverage": "0.2.22", + "@backstage/plugin-code-coverage-backend": "0.2.23", + "@backstage/plugin-codescene": "0.1.21", + "@backstage/plugin-config-schema": "0.1.49", + "@backstage/plugin-cost-insights": "0.12.18", + "@backstage/plugin-cost-insights-common": "0.1.2", + "@backstage/plugin-devtools": "0.1.8", + "@backstage/plugin-devtools-backend": "0.2.6", + "@backstage/plugin-devtools-common": "0.1.8", + "@backstage/plugin-dynatrace": "8.0.3", + "@backstage/plugin-entity-feedback": "0.2.12", + "@backstage/plugin-entity-feedback-backend": "0.2.6", + "@backstage/plugin-entity-feedback-common": "0.1.3", + "@backstage/plugin-entity-validation": "0.1.14", + "@backstage/plugin-events-backend": "0.2.18", + "@backstage/plugin-events-backend-module-aws-sqs": "0.2.12", + "@backstage/plugin-events-backend-module-azure": "0.1.19", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.19", + "@backstage/plugin-events-backend-module-gerrit": "0.1.19", + "@backstage/plugin-events-backend-module-github": "0.1.19", + "@backstage/plugin-events-backend-module-gitlab": "0.1.19", + "@backstage/plugin-events-backend-test-utils": "0.1.19", + "@backstage/plugin-events-node": "0.2.18", + "@internal/plugin-todo-list": "1.0.21", + "@internal/plugin-todo-list-backend": "1.0.21", + "@internal/plugin-todo-list-common": "1.0.17", + "@backstage/plugin-explore": "0.4.15", + "@backstage/plugin-explore-backend": "0.0.19", + "@backstage/plugin-explore-common": "0.0.2", + "@backstage/plugin-explore-react": "0.0.35", + "@backstage/plugin-firehydrant": "0.2.13", + "@backstage/plugin-fossa": "0.2.61", + "@backstage/plugin-gcalendar": "0.3.22", + "@backstage/plugin-gcp-projects": "0.3.45", + "@backstage/plugin-git-release-manager": "0.3.41", + "@backstage/plugin-github-actions": "0.6.10", + "@backstage/plugin-github-deployments": "0.1.60", + "@backstage/plugin-github-issues": "0.2.18", + "@backstage/plugin-github-pull-requests-board": "0.1.23", + "@backstage/plugin-gitops-profiles": "0.3.44", + "@backstage/plugin-gocd": "0.1.35", + "@backstage/plugin-graphiql": "0.3.2", + "@backstage/plugin-graphql-voyager": "0.1.11", + "@backstage/plugin-home": "0.6.1", + "@backstage/plugin-home-react": "0.1.7", + "@backstage/plugin-ilert": "0.2.18", + "@backstage/plugin-jenkins": "0.9.4", + "@backstage/plugin-jenkins-backend": "0.3.3", + "@backstage/plugin-jenkins-common": "0.1.23", + "@backstage/plugin-kafka": "0.3.29", + "@backstage/plugin-kafka-backend": "0.3.7", + "@backstage/plugin-kubernetes": "0.11.4", + "@backstage/plugin-kubernetes-backend": "0.14.1", + "@backstage/plugin-kubernetes-cluster": "0.0.5", + "@backstage/plugin-kubernetes-common": "0.7.3", + "@backstage/plugin-kubernetes-node": "0.1.3", + "@backstage/plugin-kubernetes-react": "0.2.1", + "@backstage/plugin-lighthouse": "0.4.14", + "@backstage/plugin-lighthouse-backend": "0.4.1", + "@backstage/plugin-lighthouse-common": "0.1.4", + "@backstage/plugin-linguist": "0.1.14", + "@backstage/plugin-linguist-backend": "0.5.6", + "@backstage/plugin-linguist-common": "0.1.2", + "@backstage/plugin-microsoft-calendar": "0.1.11", + "@backstage/plugin-newrelic": "0.3.44", + "@backstage/plugin-newrelic-dashboard": "0.3.4", + "@backstage/plugin-nomad": "0.1.10", + "@backstage/plugin-nomad-backend": "0.1.11", + "@backstage/plugin-octopus-deploy": "0.2.11", + "@backstage/plugin-opencost": "0.2.4", + "@backstage/plugin-org": "0.6.19", + "@backstage/plugin-org-react": "0.1.18", + "@backstage/plugin-pagerduty": "0.7.1", + "@backstage/plugin-periskop": "0.1.27", + "@backstage/plugin-periskop-backend": "0.2.7", + "@backstage/plugin-permission-backend": "0.5.32", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.6", + "@backstage/plugin-permission-common": "0.7.12", + "@backstage/plugin-permission-node": "0.7.20", + "@backstage/plugin-permission-react": "0.4.19", + "@backstage/plugin-playlist": "0.2.3", + "@backstage/plugin-playlist-backend": "0.3.13", + "@backstage/plugin-playlist-common": "0.1.14", + "@backstage/plugin-proxy-backend": "0.4.7", + "@backstage/plugin-puppetdb": "0.1.12", + "@backstage/plugin-rollbar": "0.4.29", + "@backstage/plugin-rollbar-backend": "0.1.54", + "@backstage/plugin-scaffolder": "1.17.1", + "@backstage/plugin-scaffolder-backend": "1.20.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.1.1", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.1.1", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.10", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.33", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.1", + "@backstage/plugin-scaffolder-backend-module-github": "0.1.1", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.12", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.26", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.17", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.30", + "@backstage/plugin-scaffolder-common": "1.4.5", + "@backstage/plugin-scaffolder-node": "0.2.10", + "@backstage/plugin-scaffolder-react": "1.7.1", + "@backstage/plugin-search": "1.4.5", + "@backstage/plugin-search-backend": "1.4.9", + "@backstage/plugin-search-backend-module-catalog": "0.1.13", + "@backstage/plugin-search-backend-module-elasticsearch": "1.3.12", + "@backstage/plugin-search-backend-module-explore": "0.1.13", + "@backstage/plugin-search-backend-module-pg": "0.5.18", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.1.2", + "@backstage/plugin-search-backend-module-techdocs": "0.1.13", + "@backstage/plugin-search-backend-node": "1.2.13", + "@backstage/plugin-search-common": "1.2.10", + "@backstage/plugin-search-react": "1.7.5", + "@backstage/plugin-sentry": "0.5.14", + "@backstage/plugin-shortcuts": "0.3.18", + "@backstage/plugin-sonarqube": "0.7.11", + "@backstage/plugin-sonarqube-backend": "0.2.11", + "@backstage/plugin-sonarqube-react": "0.1.12", + "@backstage/plugin-splunk-on-call": "0.4.18", + "@backstage/plugin-stack-overflow": "0.1.24", + "@backstage/plugin-stack-overflow-backend": "0.2.13", + "@backstage/plugin-stackstorm": "0.1.10", + "@backstage/plugin-tech-insights": "0.3.21", + "@backstage/plugin-tech-insights-backend": "0.5.23", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.41", + "@backstage/plugin-tech-insights-common": "0.2.12", + "@backstage/plugin-tech-insights-node": "0.4.15", + "@backstage/plugin-tech-radar": "0.6.12", + "@backstage/plugin-techdocs": "1.9.3", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.26", + "@backstage/plugin-techdocs-backend": "1.9.2", + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.4", + "@backstage/plugin-techdocs-node": "1.11.1", + "@backstage/plugin-techdocs-react": "1.1.15", + "@backstage/plugin-todo": "0.2.33", + "@backstage/plugin-todo-backend": "0.3.7", + "@backstage/plugin-user-settings": "0.8.0", + "@backstage/plugin-user-settings-backend": "0.2.8", + "@backstage/plugin-vault": "0.1.24", + "@backstage/plugin-vault-backend": "0.4.2", + "@backstage/plugin-vault-node": "0.1.2", + "@backstage/plugin-xcmetrics": "0.2.47", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.0.0", + "@backstage/plugin-signals": "0.0.0", + "@backstage/plugin-signals-backend": "0.0.0", + "@backstage/plugin-signals-node": "0.0.0", + "@backstage/plugin-signals-react": "0.0.0", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.0.0", + "@backstage/plugin-notifications": "0.0.0", + "@backstage/plugin-notifications-backend": "0.0.0", + "@backstage/plugin-notifications-common": "0.0.0", + "@backstage/plugin-notifications-node": "0.0.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.0.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.0.0" + }, + "changesets": [ + "afraid-numbers-invite", + "angry-phones-arrive", + "beige-apples-press", + "blue-keys-do", + "brave-jobs-invite", + "breezy-cobras-sin", + "brown-items-hammer", + "brown-peaches-hunt", + "calm-cups-rule", + "calm-items-double", + "calm-onions-exercise", + "chilled-chefs-notice", + "chilled-ways-wave", + "chilly-seahorses-bake", + "cold-cheetahs-pull", + "cold-cooks-care", + "cool-islands-impress", + "cool-walls-applaud", + "create-app-1706621803", + "curvy-icons-peel", + "curvy-ladybugs-impress", + "cyan-bats-lick", + "cyan-ducks-sin", + "cyan-icons-rest", + "dirty-cheetahs-shave", + "dirty-mirrors-retire", + "dirty-plums-fix", + "dry-lizards-taste", + "dry-lobsters-flash", + "dry-vans-kiss", + "dull-dolphins-explain", + "dull-fireants-repeat", + "eight-hounds-dream", + "eight-pumas-rule", + "eleven-walls-relate", + "empty-ligers-hang", + "fair-mirrors-hammer", + "famous-houses-thank", + "fast-jeans-walk", + "fast-onions-own", + "fifty-adults-watch", + "fifty-files-argue", + "flat-roses-happen", + "flat-wasps-fold", + "fluffy-jeans-eat", + "forty-beers-sniff", + "forty-cars-scream", + "forty-eagles-kick", + "four-mugs-try", + "four-walls-perform", + "fresh-gifts-smile", + "fresh-paws-raise", + "friendly-cheetahs-rescue", + "friendly-terms-love", + "funny-buttons-sip", + "funny-timers-visit", + "fuzzy-comics-collect", + "fuzzy-turtles-camp", + "giant-suits-switch", + "good-lemons-lick", + "gorgeous-bobcats-press", + "gorgeous-pumas-draw", + "gorgeous-ways-applaud", + "great-rats-collect", + "green-dogs-fold", + "green-flies-draw", + "grumpy-poets-study", + "happy-peas-hunt", + "healthy-bees-deliver", + "healthy-goats-jump", + "hip-ears-add", + "hot-horses-matter", + "hot-paws-tap", + "hot-pillows-poke", + "hot-tips-doubt", + "hungry-days-remain", + "hungry-lions-sit", + "khaki-seahorses-joke", + "kind-clouds-fly", + "kind-wombats-draw", + "large-frogs-grab", + "large-moons-speak", + "large-tables-wonder", + "late-poets-love", + "lazy-dolls-roll", + "lemon-cameras-remember", + "long-suns-bow", + "long-wasps-wait", + "loud-walls-compare", + "lovely-bugs-prove", + "lovely-starfishes-remain", + "lucky-bugs-bow", + "many-pugs-change", + "mean-apes-wait", + "metal-elephants-sit", + "metal-students-drive", + "mighty-steaks-shave", + "mighty-tomatoes-visit", + "mighty-toys-laugh", + "modern-peaches-clean", + "nasty-days-jog", + "nasty-shirts-look", + "neat-eels-greet", + "neat-hotels-wink", + "neat-kiwis-joke", + "new-plants-rhyme", + "nice-carrots-dream", + "nine-bulldogs-camp", + "nine-olives-swim", + "ninety-hats-kiss", + "ninety-rules-sneeze", + "old-papayas-shave", + "old-students-smoke", + "olive-boats-agree", + "olive-experts-fold", + "olive-singers-accept", + "orange-gorillas-clean", + "orange-suns-yell", + "orange-walls-complain", + "perfect-colts-hammer", + "polite-meals-hug", + "poor-jeans-rescue", + "poor-points-do", + "quick-gifts-leave", + "quick-penguins-refuse", + "quick-ties-stare", + "quiet-donkeys-punch", + "rare-seals-thank", + "real-eggs-sip", + "real-grapes-sing", + "red-bottles-swim", + "red-eggs-serve", + "renovate-235713b", + "renovate-2d87790", + "renovate-47c1714", + "renovate-4b698fb", + "renovate-5f8d1ca", + "renovate-95b717a", + "renovate-97e6aa5", + "renovate-b35b354", + "renovate-c392808", + "renovate-d7337c1", + "renovate-f253121", + "renovate-f4b1d70", + "renovate-f58dd5c", + "renovate-f92a114", + "renovate-fb2e0b9", + "rich-bees-fry", + "rotten-lemons-cry", + "selfish-mails-scream", + "serious-carpets-learn", + "serious-dryers-grin", + "seven-dots-serve", + "seven-plums-return", + "shaggy-trainers-rule", + "shaggy-windows-cross", + "sharp-pandas-hunt", + "shiny-apes-glow", + "shiny-clocks-greet", + "shiny-poets-tease", + "short-cherries-mix", + "shy-carrots-decide", + "silent-hotels-knock", + "silent-poets-grab", + "silent-waves-pretend", + "silver-crabs-exercise", + "six-emus-buy", + "six-jobs-sin", + "six-melons-end", + "sixty-bags-fry", + "sixty-shoes-prove", + "slimy-rats-fly", + "smart-numbers-call", + "soft-balloons-relax", + "soft-beans-tease", + "sour-ligers-hunt", + "sour-rivers-fry", + "spicy-bobcats-return", + "spotty-jokes-unite", + "spotty-kids-pay", + "spotty-phones-attend", + "strange-parents-hammer", + "strong-lobsters-hide", + "strong-news-develop", + "sweet-ravens-glow", + "swift-pumpkins-shake", + "tall-frogs-clap", + "tall-tools-compare", + "tame-numbers-smile", + "tame-rockets-sin", + "tasty-feet-cheat", + "tasty-oranges-rescue", + "ten-numbers-happen", + "ten-planets-guess", + "ten-trainers-cough", + "tender-flowers-collect", + "thin-turtles-float", + "thirty-dolls-admire", + "tidy-cooks-mix", + "tidy-cooks-mixed", + "tidy-peaches-nail", + "tiny-donuts-drive", + "tiny-kiwis-know", + "tough-drinks-scream", + "twelve-hounds-know", + "twelve-pens-rescue", + "twelve-shirts-buy", + "twelve-weeks-march", + "twenty-taxis-mate", + "two-coats-smile", + "two-geese-explain", + "two-singers-learn", + "unlucky-pens-search", + "unlucky-wasps-tan", + "warm-maps-scream", + "weak-news-jam", + "wet-emus-work", + "wet-lions-crash", + "wicked-ants-reflect", + "wicked-dolphins-wash", + "wicked-elephants-scream", + "wild-owls-doubt", + "wise-flies-laugh", + "wise-papayas-cough", + "young-ladybugs-decide", + "young-rules-repeat" + ] +} diff --git a/.changeset/purple-camels-applaud.md b/.changeset/purple-camels-applaud.md new file mode 100644 index 0000000000..4f6858922a --- /dev/null +++ b/.changeset/purple-camels-applaud.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Fixed a bug where `fullTextFilter` wasn't preserved correctly in the cursor. diff --git a/.changeset/quick-gifts-leave.md b/.changeset/quick-gifts-leave.md new file mode 100644 index 0000000000..2f5f2a4635 --- /dev/null +++ b/.changeset/quick-gifts-leave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +The `Cluster` component now renders the cluster's title, if specified. diff --git a/.changeset/quick-penguins-refuse.md b/.changeset/quick-penguins-refuse.md new file mode 100644 index 0000000000..5d3165114b --- /dev/null +++ b/.changeset/quick-penguins-refuse.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages diff --git a/.changeset/quick-ties-stare.md b/.changeset/quick-ties-stare.md new file mode 100644 index 0000000000..19eb50feed --- /dev/null +++ b/.changeset/quick-ties-stare.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-plugin-api': patch +'@backstage/backend-common': patch +--- + +Support `token` in `readTree`, `readUrl` and `search` diff --git a/.changeset/quiet-donkeys-punch.md b/.changeset/quiet-donkeys-punch.md new file mode 100644 index 0000000000..a375ed148c --- /dev/null +++ b/.changeset/quiet-donkeys-punch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +Extracted common dialog component. diff --git a/.changeset/rare-seals-thank.md b/.changeset/rare-seals-thank.md new file mode 100644 index 0000000000..345c1c91b4 --- /dev/null +++ b/.changeset/rare-seals-thank.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': patch +--- + +Added `RouteResolutionsApi` as a replacement for the routing context. diff --git a/.changeset/real-eggs-sip.md b/.changeset/real-eggs-sip.md new file mode 100644 index 0000000000..ca23d792f8 --- /dev/null +++ b/.changeset/real-eggs-sip.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-signals': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-signals-node': patch +--- + +Add support to subscribe and publish messages through signals plugins diff --git a/.changeset/real-grapes-sing.md b/.changeset/real-grapes-sing.md new file mode 100644 index 0000000000..484fc7969a --- /dev/null +++ b/.changeset/real-grapes-sing.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-components': patch +'@backstage/app-defaults': minor +'@backstage/plugin-playlist': patch +'@backstage/plugin-scaffolder': minor +--- + +Added stack trace display to `ErrorPage` and updated existing refs diff --git a/.changeset/red-bottles-swim.md b/.changeset/red-bottles-swim.md new file mode 100644 index 0000000000..eebdc85298 --- /dev/null +++ b/.changeset/red-bottles-swim.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +--- + +The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` +were refactored to use the `jose` library. diff --git a/.changeset/red-eggs-serve.md b/.changeset/red-eggs-serve.md new file mode 100644 index 0000000000..1b2c9b3b07 --- /dev/null +++ b/.changeset/red-eggs-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-app-backend': patch +--- + +Support injecting config multiple times in a single bundle diff --git a/.changeset/renovate-05666d4.md b/.changeset/renovate-05666d4.md new file mode 100644 index 0000000000..3e8a997820 --- /dev/null +++ b/.changeset/renovate-05666d4.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `vite-plugin-node-polyfills` to `^0.21.0`. diff --git a/.changeset/renovate-151b8b9.md b/.changeset/renovate-151b8b9.md new file mode 100644 index 0000000000..1702b28596 --- /dev/null +++ b/.changeset/renovate-151b8b9.md @@ -0,0 +1,36 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/backend-test-utils': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/backend-app-api': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/backend-common': patch +'@backstage/e2e-test-utils': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder-node': patch +'@backstage/config-loader': patch +'@techdocs/cli': patch +'@backstage/plugin-techdocs-node': patch +'@backstage/plugin-auth-backend': patch +'@backstage/create-app': patch +'@backstage/repo-tools': patch +'@backstage/plugin-app-backend': patch +'@backstage/cli-node': patch +'@backstage/plugin-app-node': patch +'@backstage/cli': patch +--- + +Updated dependency `fs-extra` to `^11.2.0`. +Updated dependency `@types/fs-extra` to `^11.0.0`. diff --git a/.changeset/renovate-235713b.md b/.changeset/renovate-235713b.md new file mode 100644 index 0000000000..148062dadb --- /dev/null +++ b/.changeset/renovate-235713b.md @@ -0,0 +1,11 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Updated dependency `@react-hookz/web` to `^24.0.0`. diff --git a/.changeset/renovate-2d87790.md b/.changeset/renovate-2d87790.md new file mode 100644 index 0000000000..5230172e2b --- /dev/null +++ b/.changeset/renovate-2d87790.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.17.0`. +Updated dependency `@rjsf/core` to `5.17.0`. +Updated dependency `@rjsf/material-ui` to `5.17.0`. +Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. diff --git a/.changeset/renovate-3365c7c.md b/.changeset/renovate-3365c7c.md new file mode 100644 index 0000000000..193ba2b702 --- /dev/null +++ b/.changeset/renovate-3365c7c.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `esbuild-loader` to `^4.0.0`. diff --git a/.changeset/renovate-47c1714.md b/.changeset/renovate-47c1714.md new file mode 100644 index 0000000000..4544d36713 --- /dev/null +++ b/.changeset/renovate-47c1714.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.16.1`. +Updated dependency `@rjsf/core` to `5.16.1`. +Updated dependency `@rjsf/material-ui` to `5.16.1`. +Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. diff --git a/.changeset/renovate-49df276.md b/.changeset/renovate-49df276.md new file mode 100644 index 0000000000..942ead5597 --- /dev/null +++ b/.changeset/renovate-49df276.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `eslint-config-prettier` to `^9.0.0`. diff --git a/.changeset/renovate-4b0ba1e.md b/.changeset/renovate-4b0ba1e.md new file mode 100644 index 0000000000..54dcd58187 --- /dev/null +++ b/.changeset/renovate-4b0ba1e.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Updated dependency `typescript-json-schema` to `^0.63.0`. diff --git a/.changeset/renovate-4b698fb.md b/.changeset/renovate-4b698fb.md new file mode 100644 index 0000000000..220aa5c848 --- /dev/null +++ b/.changeset/renovate-4b698fb.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `vite-plugin-node-polyfills` to `^0.19.0`. diff --git a/.changeset/renovate-5bd1178.md b/.changeset/renovate-5bd1178.md new file mode 100644 index 0000000000..200c66c3fe --- /dev/null +++ b/.changeset/renovate-5bd1178.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-common': patch +'@techdocs/cli': patch +'@backstage/plugin-techdocs-backend': patch +--- + +Updated dependency `dockerode` to `^4.0.0`. diff --git a/.changeset/renovate-5f8d1ca.md b/.changeset/renovate-5f8d1ca.md new file mode 100644 index 0000000000..03f8d4b961 --- /dev/null +++ b/.changeset/renovate-5f8d1ca.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-oidc-provider': patch +--- + +Updated dependency `passport` to `^0.7.0`. diff --git a/.changeset/renovate-635e66d.md b/.changeset/renovate-635e66d.md new file mode 100644 index 0000000000..2b5b6ad983 --- /dev/null +++ b/.changeset/renovate-635e66d.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `eslint-webpack-plugin` to `^4.0.0`. diff --git a/.changeset/renovate-786f04b.md b/.changeset/renovate-786f04b.md new file mode 100644 index 0000000000..c5f9b9b891 --- /dev/null +++ b/.changeset/renovate-786f04b.md @@ -0,0 +1,9 @@ +--- +'@backstage/cli': patch +'@backstage/codemods': patch +'@backstage/create-app': patch +'@backstage/repo-tools': patch +'@techdocs/cli': patch +--- + +Updated dependency `commander` to `^12.0.0`. diff --git a/.changeset/renovate-95b717a.md b/.changeset/renovate-95b717a.md new file mode 100644 index 0000000000..59beab8d04 --- /dev/null +++ b/.changeset/renovate-95b717a.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bitbucket-cloud-common': patch +--- + +Updated dependency `ts-morph` to `^21.0.0`. diff --git a/.changeset/renovate-97e6aa5.md b/.changeset/renovate-97e6aa5.md new file mode 100644 index 0000000000..51f4edccd2 --- /dev/null +++ b/.changeset/renovate-97e6aa5.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-opencost': patch +--- + +Updated dependency `date-fns` to `^3.0.0`. diff --git a/.changeset/renovate-b35b354.md b/.changeset/renovate-b35b354.md new file mode 100644 index 0000000000..750ef50a74 --- /dev/null +++ b/.changeset/renovate-b35b354.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-tasks': patch +--- + +Updated dependency `cron` to `^3.0.0`. diff --git a/.changeset/renovate-c392808.md b/.changeset/renovate-c392808.md new file mode 100644 index 0000000000..4d7f660d34 --- /dev/null +++ b/.changeset/renovate-c392808.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-techdocs': patch +--- + +Updated dependency `dompurify` to `^3.0.0`. +Updated dependency `@types/dompurify` to `^3.0.0`. diff --git a/.changeset/renovate-d7337c1.md b/.changeset/renovate-d7337c1.md new file mode 100644 index 0000000000..dabbee8a44 --- /dev/null +++ b/.changeset/renovate-d7337c1.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `fork-ts-checker-webpack-plugin` to `^9.0.0`. diff --git a/.changeset/renovate-f253121.md b/.changeset/renovate-f253121.md new file mode 100644 index 0000000000..42899973fd --- /dev/null +++ b/.changeset/renovate-f253121.md @@ -0,0 +1,16 @@ +--- +'@backstage/backend-common': patch +'@backstage/cli': patch +'@backstage/integration': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-techdocs-node': patch +'@backstage/plugin-techdocs': patch +--- + +Updated dependency `git-url-parse` to `^14.0.0`. diff --git a/.changeset/renovate-f4b1d70.md b/.changeset/renovate-f4b1d70.md new file mode 100644 index 0000000000..7b07ee8364 --- /dev/null +++ b/.changeset/renovate-f4b1d70.md @@ -0,0 +1,6 @@ +--- +'@backstage/cli': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Updated dependency `esbuild` to `^0.20.0`. diff --git a/.changeset/renovate-f58dd5c.md b/.changeset/renovate-f58dd5c.md new file mode 100644 index 0000000000..8a226034ea --- /dev/null +++ b/.changeset/renovate-f58dd5c.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Updated dependency `graphiql` to `3.1.0`. diff --git a/.changeset/renovate-f92a114.md b/.changeset/renovate-f92a114.md new file mode 100644 index 0000000000..6ca0ea33d8 --- /dev/null +++ b/.changeset/renovate-f92a114.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependency `eslint-plugin-deprecation` to `^2.0.0`. diff --git a/.changeset/renovate-fb2e0b9.md b/.changeset/renovate-fb2e0b9.md new file mode 100644 index 0000000000..39277aaa2a --- /dev/null +++ b/.changeset/renovate-fb2e0b9.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Updated dependency `@asyncapi/react-component` to `1.2.13`. diff --git a/.changeset/rich-bees-fry.md b/.changeset/rich-bees-fry.md new file mode 100644 index 0000000000..281719340b --- /dev/null +++ b/.changeset/rich-bees-fry.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-app-backend': patch +'@backstage/plugin-app-node': patch +--- + +Allow the `app-backend` plugin to use a global configuration schema provided externally through an extension. diff --git a/.changeset/rotten-lemons-cry.md b/.changeset/rotten-lemons-cry.md new file mode 100644 index 0000000000..2bcc4c2ea7 --- /dev/null +++ b/.changeset/rotten-lemons-cry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +--- + +Added the possibility to use custom scopes for performing login with Microsoft EntraID. diff --git a/.changeset/selfish-mails-scream.md b/.changeset/selfish-mails-scream.md new file mode 100644 index 0000000000..7d1149f27a --- /dev/null +++ b/.changeset/selfish-mails-scream.md @@ -0,0 +1,5 @@ +--- +'@techdocs/cli': patch +--- + +fix: mkdocs parameter casing diff --git a/.changeset/serious-carpets-learn.md b/.changeset/serious-carpets-learn.md new file mode 100644 index 0000000000..1f13420976 --- /dev/null +++ b/.changeset/serious-carpets-learn.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-common': minor +'@backstage/plugin-scaffolder-react': minor +'@backstage/plugin-scaffolder-node': minor +'@backstage/plugin-scaffolder': patch +--- + +Introduced the first version of recoverable tasks. diff --git a/.changeset/serious-dryers-grin.md b/.changeset/serious-dryers-grin.md new file mode 100644 index 0000000000..24d17f4959 --- /dev/null +++ b/.changeset/serious-dryers-grin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fix entity content extension filtering. diff --git a/.changeset/seven-dots-serve.md b/.changeset/seven-dots-serve.md new file mode 100644 index 0000000000..80919b5d28 --- /dev/null +++ b/.changeset/seven-dots-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Exported `CatalogTable.defaultColumnsFunc` for defining the columns in `` of some Kinds while using the default columns for the others. diff --git a/.changeset/seven-plums-return.md b/.changeset/seven-plums-return.md new file mode 100644 index 0000000000..71016577b1 --- /dev/null +++ b/.changeset/seven-plums-return.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-common': patch +--- + +Clusters configured with the `aws` authentication strategy can now customize the +`x-k8s-aws-id` header value used to generate tokens. This value can be specified +specified via the `kubernetes.io/x-k8s-aws-id` parameter (in +`metadata.annotations` for clusters in the catalog, or the `authMetadata` block +on clusters in the app-config). This is particularly helpful when a Backstage +instance contains multiple AWS clusters with the same name in different regions +-- using this new parameter, the clusters can be given different logical names +to distinguish them but still use the same ID for the purposes of generating +tokens. diff --git a/.changeset/shaggy-trainers-rule.md b/.changeset/shaggy-trainers-rule.md new file mode 100644 index 0000000000..4140a400e1 --- /dev/null +++ b/.changeset/shaggy-trainers-rule.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-plugin-api': patch +--- + +Throw a more specific exception `NotImplementedError` when an API implementation cannot be found. diff --git a/.changeset/shaggy-windows-cross.md b/.changeset/shaggy-windows-cross.md new file mode 100644 index 0000000000..185c6d59ef --- /dev/null +++ b/.changeset/shaggy-windows-cross.md @@ -0,0 +1,7 @@ +--- +'@backstage/app-defaults': patch +'@backstage/core-app-api': patch +'@backstage/test-utils': patch +--- + +Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. diff --git a/.changeset/sharp-pandas-hunt.md b/.changeset/sharp-pandas-hunt.md new file mode 100644 index 0000000000..1c69c02a0b --- /dev/null +++ b/.changeset/sharp-pandas-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bitrise': patch +--- + +Update README diff --git a/.changeset/shiny-apes-glow.md b/.changeset/shiny-apes-glow.md new file mode 100644 index 0000000000..5ff66157cd --- /dev/null +++ b/.changeset/shiny-apes-glow.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': minor +'@backstage/plugin-scaffolder-backend': patch +--- + +New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + +Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` +and replaces its actions related to Bitbucket Cloud. + +- `publish:bitbucketCloud` +- `bitbucket:pipelines:run` diff --git a/.changeset/shiny-clocks-greet.md b/.changeset/shiny-clocks-greet.md new file mode 100644 index 0000000000..0c112ff81f --- /dev/null +++ b/.changeset/shiny-clocks-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': patch +--- + +conditionally rendering the user name and email in user settings page diff --git a/.changeset/shiny-jeans-begin.md b/.changeset/shiny-jeans-begin.md new file mode 100644 index 0000000000..d542747b34 --- /dev/null +++ b/.changeset/shiny-jeans-begin.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Validate if the `baseUrl` is a valid URL diff --git a/.changeset/shiny-poets-tease.md b/.changeset/shiny-poets-tease.md new file mode 100644 index 0000000000..a991601a88 --- /dev/null +++ b/.changeset/shiny-poets-tease.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Update to a newer version of `@trendyol-js/openstack-swift-sdk` diff --git a/.changeset/short-cherries-mix.md b/.changeset/short-cherries-mix.md new file mode 100644 index 0000000000..866f7a0971 --- /dev/null +++ b/.changeset/short-cherries-mix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +--- + +Provide default branch when creating repositories. diff --git a/.changeset/shy-carrots-decide.md b/.changeset/shy-carrots-decide.md new file mode 100644 index 0000000000..5f64f3d4bd --- /dev/null +++ b/.changeset/shy-carrots-decide.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-app-backend': patch +--- + +Do not force caching of the Javascript asset that contains the injected config. diff --git a/.changeset/silent-hotels-knock.md b/.changeset/silent-hotels-knock.md new file mode 100644 index 0000000000..7ff5d978d2 --- /dev/null +++ b/.changeset/silent-hotels-knock.md @@ -0,0 +1,25 @@ +--- +'@backstage/frontend-app-api': minor +--- + +**BREAKING**: The `app.routes.bindings` app-config mapping has been simplified. You now only need to specify the plugin ID and route ID on both sides of the mapping. + +Old form: + +```yaml +app: + routes: + bindings: + plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot + plugin.catalog.externalRoutes.createComponent: plugin.catalog-import.routes.importPage +``` + +New form: + +```yaml +app: + routes: + bindings: + catalog.viewTechDoc: techdocs.docRoot + catalog.createComponent: catalog-import.importPage +``` diff --git a/.changeset/silent-poets-grab.md b/.changeset/silent-poets-grab.md new file mode 100644 index 0000000000..0d76e263d2 --- /dev/null +++ b/.changeset/silent-poets-grab.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +Improved the error message when data input/output shapes do not match diff --git a/.changeset/silent-waves-pretend.md b/.changeset/silent-waves-pretend.md new file mode 100644 index 0000000000..5986579fe6 --- /dev/null +++ b/.changeset/silent-waves-pretend.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-auth-backend-module-aws-alb-provider': minor +'@backstage/plugin-auth-backend': patch +--- + +Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. diff --git a/.changeset/silver-crabs-exercise.md b/.changeset/silver-crabs-exercise.md new file mode 100644 index 0000000000..ff34b5a3c3 --- /dev/null +++ b/.changeset/silver-crabs-exercise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': minor +--- + +Migrate the `api-docs` to the new frontend system. It is experimental and available via alpha subpath. diff --git a/.changeset/six-emus-buy.md b/.changeset/six-emus-buy.md new file mode 100644 index 0000000000..1ef2a8e124 --- /dev/null +++ b/.changeset/six-emus-buy.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-signals-react': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-signals': patch +--- + +Allow defining signal type to publish and receive diff --git a/.changeset/six-jobs-sin.md b/.changeset/six-jobs-sin.md new file mode 100644 index 0000000000..307190ae81 --- /dev/null +++ b/.changeset/six-jobs-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-client': patch +--- + +Internal updates to auto-generated files. diff --git a/.changeset/six-melons-end.md b/.changeset/six-melons-end.md new file mode 100644 index 0000000000..f139e49887 --- /dev/null +++ b/.changeset/six-melons-end.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': patch +--- + +Fixed a bug where the logs dialog and any other functionality depending on the proxy endpoint would fail for clusters configured with the OIDC auth provider. diff --git a/.changeset/sixty-bags-fry.md b/.changeset/sixty-bags-fry.md new file mode 100644 index 0000000000..139e31c6a4 --- /dev/null +++ b/.changeset/sixty-bags-fry.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-node': patch +--- + +The `ClusterDetails` type now has a `title` field, which should be a +human-readable name. diff --git a/.changeset/sixty-shoes-prove.md b/.changeset/sixty-shoes-prove.md new file mode 100644 index 0000000000..fe9438eeb2 --- /dev/null +++ b/.changeset/sixty-shoes-prove.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-react': minor +--- + +**BREAKING** The pod exec terminal is now disabled by default since there are several scenarios where it is known not to work. It can be re-enabled at your own risk by setting the config parameter `kubernetes.podExecTerminal.enabled` to `true`. diff --git a/.changeset/slimy-rats-fly.md b/.changeset/slimy-rats-fly.md new file mode 100644 index 0000000000..81fcae5bb2 --- /dev/null +++ b/.changeset/slimy-rats-fly.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Added basic support for the new frontend system, exported from the `/alpha` subpath. diff --git a/.changeset/smart-numbers-call.md b/.changeset/smart-numbers-call.md new file mode 100644 index 0000000000..24a2053259 --- /dev/null +++ b/.changeset/smart-numbers-call.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +The default `ComponentsApi` implementation now uses the `ComponentRef` ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of `@backstage/frontend-plugin-api` would break the app. diff --git a/.changeset/soft-balloons-relax.md b/.changeset/soft-balloons-relax.md new file mode 100644 index 0000000000..3fae8984a3 --- /dev/null +++ b/.changeset/soft-balloons-relax.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-components': patch +'@backstage/app-defaults': patch +--- + +Fix invalid HTTP status code 501 in Error Page diff --git a/.changeset/soft-beans-tease.md b/.changeset/soft-beans-tease.md new file mode 100644 index 0000000000..881900e773 --- /dev/null +++ b/.changeset/soft-beans-tease.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cloudbuild': patch +--- + +Add telemetry HTTP header Google Cloud Platform diff --git a/.changeset/sour-ligers-hunt.md b/.changeset/sour-ligers-hunt.md new file mode 100644 index 0000000000..5642494c24 --- /dev/null +++ b/.changeset/sour-ligers-hunt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Added `experimentalExtraAllowedOrigins` to config diff --git a/.changeset/sour-rivers-fry.md b/.changeset/sour-rivers-fry.md new file mode 100644 index 0000000000..1b74850614 --- /dev/null +++ b/.changeset/sour-rivers-fry.md @@ -0,0 +1,9 @@ +--- +'@backstage/create-app': patch +--- + +Updated `packages/app` as well as the root `package.json` type resolutions to use React v18. + +The `@testing-library/*` dependencies have also been updated to the ones compatible with React v18, and the test at `packages/app/src/App.test.tsx` had been updated to use more modern patterns that work better with these new versions. + +For information on how to migrate existing apps to React v18, see the [migration guide](https://backstage.io/docs/tutorials/react18-migration) diff --git a/.changeset/spicy-bobcats-return.md b/.changeset/spicy-bobcats-return.md new file mode 100644 index 0000000000..9bd4b33784 --- /dev/null +++ b/.changeset/spicy-bobcats-return.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-dynatrace': patch +--- + +Fixed Dynatrace plugin proxy configuration diff --git a/.changeset/spotty-jokes-unite.md b/.changeset/spotty-jokes-unite.md new file mode 100644 index 0000000000..15097e42d0 --- /dev/null +++ b/.changeset/spotty-jokes-unite.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Harmonize the package naming and allow custom prefix diff --git a/.changeset/spotty-kids-pay.md b/.changeset/spotty-kids-pay.md new file mode 100644 index 0000000000..157515201d --- /dev/null +++ b/.changeset/spotty-kids-pay.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Ability for user to configure backstage token expiration diff --git a/.changeset/spotty-phones-attend.md b/.changeset/spotty-phones-attend.md new file mode 100644 index 0000000000..79bd38061d --- /dev/null +++ b/.changeset/spotty-phones-attend.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-aws': patch +--- + +Move the AWS account e-mail from labels to annotations to fix the creation of `cloud-account` resources. diff --git a/.changeset/strange-parents-hammer.md b/.changeset/strange-parents-hammer.md new file mode 100644 index 0000000000..57d5eeb83d --- /dev/null +++ b/.changeset/strange-parents-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/test-utils': minor +--- + +Added `components` option to `TestAppOptions`, which will be forwarded as the `components` option to `createApp`. diff --git a/.changeset/strong-lobsters-hide.md b/.changeset/strong-lobsters-hide.md new file mode 100644 index 0000000000..7b51355eb7 --- /dev/null +++ b/.changeset/strong-lobsters-hide.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': patch +--- + +App component extensions are no longer wrapped in an `ExtensionBoundary`, allowing them to inherit the outer context instead. diff --git a/.changeset/strong-news-develop.md b/.changeset/strong-news-develop.md new file mode 100644 index 0000000000..1cbe4dda07 --- /dev/null +++ b/.changeset/strong-news-develop.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': patch +--- + +Use the EntityDisplayName component for rendering Group nodes diff --git a/.changeset/sweet-ravens-glow.md b/.changeset/sweet-ravens-glow.md new file mode 100644 index 0000000000..045f7edbf2 --- /dev/null +++ b/.changeset/sweet-ravens-glow.md @@ -0,0 +1,6 @@ +--- +'@backstage/integration': minor +'@backstage/backend-common': patch +--- + +Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned diff --git a/.changeset/swift-pumpkins-shake.md b/.changeset/swift-pumpkins-shake.md new file mode 100644 index 0000000000..c7a0a44ade --- /dev/null +++ b/.changeset/swift-pumpkins-shake.md @@ -0,0 +1,8 @@ +--- +'@backstage/backend-dynamic-feature-service': minor +--- + +Implement the discovery of additional individual configuration schemas for dynamic plugins, and provide: + +- an alternate implementation of the root logger service that takes them into account, +- an extension to the App backend plugin to set a global configuration schema that takes them into account. diff --git a/.changeset/tall-fireants-fix.md b/.changeset/tall-fireants-fix.md new file mode 100644 index 0000000000..3fbc78290f --- /dev/null +++ b/.changeset/tall-fireants-fix.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-catalog-backend': patch +--- + +Upgraded `prom-client` to version 15 diff --git a/.changeset/tall-frogs-clap.md b/.changeset/tall-frogs-clap.md new file mode 100644 index 0000000000..1e87ca316c --- /dev/null +++ b/.changeset/tall-frogs-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites-backend': patch +--- + +Added `permissionIntegrationRouter` for azure-sites-backend routes diff --git a/.changeset/tall-tools-compare.md b/.changeset/tall-tools-compare.md new file mode 100644 index 0000000000..f55c8ef5a5 --- /dev/null +++ b/.changeset/tall-tools-compare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-node': patch +--- + +Introduced `PinnipedHelper` class to enable authentication to Kubernetes clusters through Pinniped diff --git a/.changeset/tame-numbers-smile.md b/.changeset/tame-numbers-smile.md new file mode 100644 index 0000000000..1d675f8c9c --- /dev/null +++ b/.changeset/tame-numbers-smile.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-node': patch +--- + +Enabling authentication to kubernetes clusters with mTLS x509 client certs diff --git a/.changeset/tame-rockets-sin.md b/.changeset/tame-rockets-sin.md new file mode 100644 index 0000000000..30c7289871 --- /dev/null +++ b/.changeset/tame-rockets-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Fix position of the ReportIssue component when is displaying at the top of the container. diff --git a/.changeset/tasty-feet-cheat.md b/.changeset/tasty-feet-cheat.md new file mode 100644 index 0000000000..1e93439fa6 --- /dev/null +++ b/.changeset/tasty-feet-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Fixes an issue where comments would be duplicated in the template. Also, removes a header with the title and version of the OpenAPI spec from generated code. diff --git a/.changeset/tasty-oranges-rescue.md b/.changeset/tasty-oranges-rescue.md new file mode 100644 index 0000000000..b146c2e143 --- /dev/null +++ b/.changeset/tasty-oranges-rescue.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +**BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. + +This comes with breaking changes to config options: + +- `audience` is now mandatory +- `wantAuthnResponseSigned` is now exposed and defaults to `true` +- `wantAssertionsSigned` is now exposed and defaults to `true` diff --git a/.changeset/ten-numbers-happen.md b/.changeset/ten-numbers-happen.md new file mode 100644 index 0000000000..73397d4568 --- /dev/null +++ b/.changeset/ten-numbers-happen.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Custom per-cluster auth metadata (mainly for use with custom `AuthenticationStrategy` implementations) can now be specified in the `authMetadata` property of clusters in the app-config. diff --git a/.changeset/ten-planets-guess.md b/.changeset/ten-planets-guess.md new file mode 100644 index 0000000000..c8510dc6b2 --- /dev/null +++ b/.changeset/ten-planets-guess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Fix typo in VisitsStorageApi diff --git a/.changeset/ten-trainers-cough.md b/.changeset/ten-trainers-cough.md new file mode 100644 index 0000000000..53a82def90 --- /dev/null +++ b/.changeset/ten-trainers-cough.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-node': minor +--- + +Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations diff --git a/.changeset/tender-flowers-collect.md b/.changeset/tender-flowers-collect.md new file mode 100644 index 0000000000..dfbf96a52c --- /dev/null +++ b/.changeset/tender-flowers-collect.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': minor +--- + +Updated the styling for tags to avoid word break. diff --git a/.changeset/thick-pillows-punch.md b/.changeset/thick-pillows-punch.md new file mode 100644 index 0000000000..def589d3f8 --- /dev/null +++ b/.changeset/thick-pillows-punch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +Add gitea as new type to be used from integrations configuration diff --git a/.changeset/thin-turtles-float.md b/.changeset/thin-turtles-float.md new file mode 100644 index 0000000000..7416093e17 --- /dev/null +++ b/.changeset/thin-turtles-float.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Clusters in the catalog can now specify a human-readable title via `metadata.title`. diff --git a/.changeset/thirty-bags-try.md b/.changeset/thirty-bags-try.md new file mode 100644 index 0000000000..98d6c5620b --- /dev/null +++ b/.changeset/thirty-bags-try.md @@ -0,0 +1,33 @@ +--- +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-catalog-node': minor +--- + +Adds support for supplying field validators to the new backend's catalog plugin. If you're using entity policies, you should use the new `transformLegacyPolicyToProcessor` function to install them as processors instead. + +```ts +import { + catalogProcessingExtensionPoint, + catalogModelExtensionPoint, +} from '@backstage/plugin-catalog-node/alpha'; +import {myPolicy} from './my-policy'; + +export const catalogModulePolicyProvider = createBackendModule({ + pluginId: 'catalog', + moduleId: 'internal-policy-provider', + register(reg) { + reg.registerInit({ + deps: { + modelExtensions: catalogModelExtensionPoint, + processingExtensions: catalogProcessingExtensionPoint, + }, + async init({ modelExtensions, processingExtensions }) { + modelExtensions.setFieldValidators({ + ... + }); + processingExtensions.addProcessors(transformLegacyPolicyToProcessor(myPolicy)) + }, + }); + }, +}); +``` diff --git a/.changeset/thirty-dolls-admire.md b/.changeset/thirty-dolls-admire.md new file mode 100644 index 0000000000..1011508a98 --- /dev/null +++ b/.changeset/thirty-dolls-admire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': minor +--- + +Prevent Entity Providers from eliminating Users and Groups from the DB when the synchronisation fails diff --git a/.changeset/tidy-cooks-mix.md b/.changeset/tidy-cooks-mix.md new file mode 100644 index 0000000000..873de64a45 --- /dev/null +++ b/.changeset/tidy-cooks-mix.md @@ -0,0 +1,32 @@ +--- +'@backstage/plugin-azure-sites-backend': patch +'@backstage/plugin-azure-sites-common': patch +'@backstage/plugin-azure-sites': patch +--- + +Azure Sites `start` and `stop` action is now protected with the Permissions framework. + +The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + +```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } +``` diff --git a/.changeset/tidy-cooks-mixed.md b/.changeset/tidy-cooks-mixed.md new file mode 100644 index 0000000000..a72f1ee0df --- /dev/null +++ b/.changeset/tidy-cooks-mixed.md @@ -0,0 +1,31 @@ +--- +'@backstage/plugin-azure-sites-backend': minor +--- + +**BREAKING**: `catalogApi` and `permissionsApi` are now a requirement to be passed through to the `createRouter` function. + +You can fix the typescript issues by passing through the required dependencies like the below `diff` shows: + +```diff + import { + createRouter, + AzureSitesApi, + } from '@backstage/plugin-azure-sites-backend'; + import { Router } from 'express'; + import { PluginEnvironment } from '../types'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { ++ const catalogClient = new CatalogClient({ ++ discoveryApi: env.discovery, ++ }); + + return await createRouter({ + logger: env.logger, + azureSitesApi: AzureSitesApi.fromConfig(env.config), ++ catalogApi: catalogClient, ++ permissionsApi: env.permissions, + }); + } +``` diff --git a/.changeset/tidy-cycles-obey.md b/.changeset/tidy-cycles-obey.md new file mode 100644 index 0000000000..4a002269e1 --- /dev/null +++ b/.changeset/tidy-cycles-obey.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Remove unused deps diff --git a/.changeset/tidy-peaches-nail.md b/.changeset/tidy-peaches-nail.md new file mode 100644 index 0000000000..d044a6bfaa --- /dev/null +++ b/.changeset/tidy-peaches-nail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Clusters in the app-config can now specify a `title` property for human readability. diff --git a/.changeset/tiny-donuts-drive.md b/.changeset/tiny-donuts-drive.md new file mode 100644 index 0000000000..aadac7a276 --- /dev/null +++ b/.changeset/tiny-donuts-drive.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Backstage will log a warning whenever duplicate cluster names are detected -- +even if clusters sharing the same name come from separate locators. diff --git a/.changeset/tiny-kiwis-know.md b/.changeset/tiny-kiwis-know.md new file mode 100644 index 0000000000..add4736527 --- /dev/null +++ b/.changeset/tiny-kiwis-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependencies in frontend plugin templates diff --git a/.changeset/tough-drinks-scream.md b/.changeset/tough-drinks-scream.md new file mode 100644 index 0000000000..3d2f154016 --- /dev/null +++ b/.changeset/tough-drinks-scream.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-cloudbuild': minor +--- + +Changed build list view to automatically filter builds based on repository name matching component-info's metadata.name. +Added optional `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. +Added optional `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. +Updated the ReadMe with information about the filtering and some other minor verbiage updates. +Changed `substitutions.BRANCH_NAME` to `substitutions.REF_NAME` so that the Ref field is populated properly. +Added optional `google.com/cloudbuild-location` annotation which allows you to specify the Cloud Build location of your builds. Default is global scope. +Changed build list view to show builds in a specific location if the location annotation is used. +Updated ReadMe with information about the use of the location filtering. diff --git a/.changeset/twelve-hounds-know.md b/.changeset/twelve-hounds-know.md new file mode 100644 index 0000000000..3c95c71ddb --- /dev/null +++ b/.changeset/twelve-hounds-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': minor +--- + +Use more distinguishable icons for link (`Link`) and text output (`Description`). diff --git a/.changeset/twelve-pens-rescue.md b/.changeset/twelve-pens-rescue.md new file mode 100644 index 0000000000..9d40fb2851 --- /dev/null +++ b/.changeset/twelve-pens-rescue.md @@ -0,0 +1,7 @@ +--- +'@backstage/frontend-plugin-api': patch +'@backstage/frontend-app-api': patch +'@backstage/core-compat-api': patch +--- + +Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. diff --git a/.changeset/twelve-shirts-buy.md b/.changeset/twelve-shirts-buy.md new file mode 100644 index 0000000000..6183c7dabd --- /dev/null +++ b/.changeset/twelve-shirts-buy.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-node': patch +--- + +Add support for `onProcessingError` handler at the catalog plugin (new backend system). + +You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` +as replacement for + +```ts +catalogBuilder.subscribe({ + onProcessingError: hander, +}); +``` diff --git a/.changeset/twelve-weeks-march.md b/.changeset/twelve-weeks-march.md new file mode 100644 index 0000000000..4d9fff5b34 --- /dev/null +++ b/.changeset/twelve-weeks-march.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fix issue where `ui:schema` was replaced with an empty object if `dependencies` is defined diff --git a/.changeset/twenty-taxis-mate.md b/.changeset/twenty-taxis-mate.md new file mode 100644 index 0000000000..65ed158e9b --- /dev/null +++ b/.changeset/twenty-taxis-mate.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-compat-api': patch +--- + +Plugins converted by `convertLegacyApp` now have their `routes` and `externalRoutes` included as well, allowing them to be used to bind external routes in configuration. diff --git a/.changeset/two-coats-smile.md b/.changeset/two-coats-smile.md new file mode 100644 index 0000000000..65abb7a1eb --- /dev/null +++ b/.changeset/two-coats-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated the backend module template to make the module instance the package default export. diff --git a/.changeset/two-geese-explain.md b/.changeset/two-geese-explain.md new file mode 100644 index 0000000000..12ae307cfe --- /dev/null +++ b/.changeset/two-geese-explain.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed an issue that would cause an invalid `__backstage-autodetected-plugins__.js` to be written when using experimental module discovery. diff --git a/.changeset/two-singers-learn.md b/.changeset/two-singers-learn.md new file mode 100644 index 0000000000..f5c2a78ab0 --- /dev/null +++ b/.changeset/two-singers-learn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools': patch +--- + +Added alpha support for the New Frontend System (Declarative Integration) diff --git a/.changeset/unlucky-pens-search.md b/.changeset/unlucky-pens-search.md new file mode 100644 index 0000000000..4786c14691 --- /dev/null +++ b/.changeset/unlucky-pens-search.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +When using node 20+ the `scaffolder-backend` will now throw an error at startup if the `--no-node-snapshot` option was +not provided to node. diff --git a/.changeset/unlucky-wasps-tan.md b/.changeset/unlucky-wasps-tan.md new file mode 100644 index 0000000000..97813cb416 --- /dev/null +++ b/.changeset/unlucky-wasps-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +--- + +Enhanced the pull request action to allow for adding new content to the PR as described in this issue #21762 diff --git a/.changeset/weak-news-jam.md b/.changeset/weak-news-jam.md new file mode 100644 index 0000000000..a1f44082da --- /dev/null +++ b/.changeset/weak-news-jam.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links diff --git a/.changeset/wet-emus-work.md b/.changeset/wet-emus-work.md new file mode 100644 index 0000000000..413670a325 --- /dev/null +++ b/.changeset/wet-emus-work.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-compat-api': patch +--- + +collectLegacyRoutes throws in case invalid element is found diff --git a/.changeset/wet-lions-crash.md b/.changeset/wet-lions-crash.md new file mode 100644 index 0000000000..795e60588d --- /dev/null +++ b/.changeset/wet-lions-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-puppetdb': patch +--- + +Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. diff --git a/.changeset/wicked-ants-reflect.md b/.changeset/wicked-ants-reflect.md new file mode 100644 index 0000000000..4882d12a34 --- /dev/null +++ b/.changeset/wicked-ants-reflect.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-notifications-backend': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications-node': patch +'@backstage/plugin-notifications': patch +--- + +Initial notifications system for backstage diff --git a/.changeset/wicked-dolphins-wash.md b/.changeset/wicked-dolphins-wash.md new file mode 100644 index 0000000000..9258913c41 --- /dev/null +++ b/.changeset/wicked-dolphins-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +On LocalKubectlProxyClusterLocator, when resolving localhost, IPv4 address is placed before IPv6 address, ignoring the order from the DNS resolver. This change is necessary since by default kubectl proxy listen on IPv4 diff --git a/.changeset/wicked-elephants-scream.md b/.changeset/wicked-elephants-scream.md new file mode 100644 index 0000000000..f002a48ba8 --- /dev/null +++ b/.changeset/wicked-elephants-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops': patch +--- + +Prefer `dev.azure.com/build-definition` annotation when it is provided, as it is more specific than `dev.azure.com/project-repo`. This can also be used as a filter for mono-repos. diff --git a/.changeset/wild-owls-doubt.md b/.changeset/wild-owls-doubt.md new file mode 100644 index 0000000000..84abffb159 --- /dev/null +++ b/.changeset/wild-owls-doubt.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +The built-in module list has been trimmed down when using the new Backend System. Provider specific modules should now be installed with `backend.add` to provide additional actions to the scaffolder. These modules are as follows: + +- `@backstage/plugin-scaffolder-backend-module-github` +- `@backstage/plugin-scaffolder-backend-module-gitlab` +- `@backstage/plugin-scaffolder-backend-module-bitbucket` +- `@backstage/plugin-scaffolder-backend-module-gitea` +- `@backstage/plugin-scaffolder-backend-module-gerrit` +- `@backstage/plugin-scaffolder-backend-module-confluence-to-markdown` +- `@backstage/plugin-scaffolder-backend-module-cookiecutter` +- `@backstage/plugin-scaffolder-backend-module-rails` +- `@backstage/plugin-scaffolder-backend-module-sentry` +- `@backstage/plugin-scaffolder-backend-module-yeoman` diff --git a/.changeset/wise-flies-laugh.md b/.changeset/wise-flies-laugh.md new file mode 100644 index 0000000000..4b31b4e9ba --- /dev/null +++ b/.changeset/wise-flies-laugh.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Added filter support for HomePageVisitedByType in order to enable filtering entities from the list diff --git a/.changeset/wise-papayas-cough.md b/.changeset/wise-papayas-cough.md new file mode 100644 index 0000000000..955e7fefcc --- /dev/null +++ b/.changeset/wise-papayas-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Add a config declaration for `workingDirectory` diff --git a/.changeset/young-ladybugs-decide.md b/.changeset/young-ladybugs-decide.md new file mode 100644 index 0000000000..53284cbc37 --- /dev/null +++ b/.changeset/young-ladybugs-decide.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-node': patch +--- + +Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..247ce66010 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +**/api-report*.md linguist-generated=true +**/cli-report.md linguist-generated=true +**/knip-report.md linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d10106e47f..75416ace16 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -86,3 +86,5 @@ yarn.lock @backstage/maintainers @backst /plugins/tech-insights-backend-module-jsonfc @backstage/maintainers @backstage/reviewers @xantier /plugins/tech-insights-tech-insights-common @backstage/maintainers @backstage/reviewers @xantier /plugins/tech-insights-tech-insights-node @backstage/maintainers @backstage/reviewers @xantier + +knip-report.md diff --git a/.github/labeler.yml b/.github/labeler.yml index add66d7b28..6653c2d868 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,35 +1,62 @@ area:catalog: - - plugins/catalog/**/* - - plugins/catalog-*/**/* - - packages/catalog-*/**/* -area:scaffolder: - - plugins/scaffolder/**/* - - plugins/scaffolder-*/**/* -search: - - plugins/search/**/* - - plugins/search-*/**/* - - packages/search-*/**/* -homepage: - - plugins/home/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/catalog/**/* + - plugins/catalog-*/**/* + - packages/catalog-*/**/* area:discoverability: # search + home - - plugins/search/**/* - - plugins/search-*/**/* - - packages/search-*/**/* - - plugins/home/**/* -area:techdocs: - - plugins/techdocs/**/* - - plugins/techdocs-*/**/* - - packages/techdocs-*/**/* -documentation: - - docs/**/* -microsite: - - microsite/**/* -storybook: - - storybook/**/* -auth: - - plugins/auth-backend/**/* - - packages/core-app-api/src/apis/implementations/auth/**/* - - packages/core-app-api/src/lib/Auth*/**/* - - packages/core-plugin-api/src/apis/definitions/auth.ts + - changed-files: + - any-glob-to-any-file: + - plugins/search/**/* + - plugins/search-*/**/* + - packages/search-*/**/* + - plugins/home/**/* +area:kubernetes: + - changed-files: + - any-glob-to-any-file: + - plugins/kubernetes/**/* + - plugins/kubernetes-*/**/* area:permission: - - plugins/permission-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/permission-*/**/* +area:scaffolder: + - changed-files: + - any-glob-to-any-file: + - plugins/scaffolder/**/* + - plugins/scaffolder-*/**/* +area:techdocs: + - changed-files: + - any-glob-to-any-file: + - plugins/techdocs/**/* + - plugins/techdocs-*/**/* + - packages/techdocs-*/**/* +auth: + - changed-files: + - any-glob-to-any-file: + - plugins/auth-*/**/* + - packages/core-app-api/src/apis/implementations/auth/**/* + - packages/core-app-api/src/lib/Auth*/**/* + - packages/core-plugin-api/src/apis/definitions/auth.ts +documentation: + - changed-files: + - any-glob-to-any-file: + - docs/**/* +homepage: + - changed-files: + - any-glob-to-any-file: + - plugins/home/**/* +microsite: + - changed-files: + - any-glob-to-any-file: + - microsite/**/* +search: + - changed-files: + - any-glob-to-any-file: + - plugins/search/**/* + - plugins/search-*/**/* + - packages/search-*/**/* +storybook: + - changed-files: + - any-glob-to-any-file: + - storybook/**/* diff --git a/.github/renovate.json5 b/.github/renovate.json5 index b58c0beb05..5d979d5f22 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,10 +1,26 @@ { + $schema: 'https://docs.renovatebot.com/renovate-schema.json', + labels: ['dependencies'], - extends: ['config:base', ':disableDependencyDashboard', ':gitSignOff'], + + extends: [ + 'config:best-practices', + ':gitSignOff', + 'default:pinDigestsDisabled', + ], + // do not pin dev dependencies, which are part of the best-practices preset + ignorePresets: [':pinDevDependencies', ':pinDigest'], + + // the default limit are 10 PRs + prConcurrentLimit: 20, + postUpdateOptions: ['yarnDedupeHighest'], rangeStrategy: 'update-lockfile', - // @elastic/elasticsearch is ignored due to licensing issues. See #10992 - ignoreDeps: ['@elastic/elasticsearch', 'event-source-polyfill'], + ignoreDeps: [ + // ignored due to licensing issues. See #10992 + '@elastic/elasticsearch', + 'event-source-polyfill', + ], packageRules: [ { matchSourceUrlPrefixes: ['https://github.com/spotify/web-scripts'], diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt similarity index 98% rename from .github/vale/Vocab/Backstage/accept.txt rename to .github/vale/config/vocabularies/Backstage/accept.txt index d557434d78..c38a115fa3 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -92,6 +92,7 @@ Deutsche dev devops devs +dialogs discoverability Discoverability dls @@ -158,6 +159,7 @@ hotspots http https Iain +idempotency Iglesias iLert img @@ -185,6 +187,7 @@ Kaswell keepalive Keyv Knex +knip Koyeb KPIs Kuang @@ -312,6 +315,8 @@ rebase rebasing Recharts Redash +renderer +renderers replicasets repo Repo @@ -319,6 +324,7 @@ repos rerender rerenders resourcequotas +retryable reusability Reusability roadmaps @@ -328,6 +334,7 @@ Rollbar Rollup routable Routable +Rspack rst rsync ruleset @@ -463,4 +470,4 @@ zod Zolotusky zoomable zsh -scrollable \ No newline at end of file +scrollable diff --git a/.github/workflows/automate_area-labels.yml b/.github/workflows/automate_area-labels.yml index 5d12e4ca89..632624bd50 100644 --- a/.github/workflows/automate_area-labels.yml +++ b/.github/workflows/automate_area-labels.yml @@ -13,11 +13,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/labeler@v4.3.0 + - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' sync-labels: true diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index bf58b4b49d..89b611f981 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -23,18 +23,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # Fetch the commit that's merged into the base rather than the target ref # This will let us diff only the contents of the PR, without fetching more history ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' - name: fetch base run: git fetch --depth 1 origin ${{ github.base_ref }} - - uses: backstage/actions/changeset-feedback@v0.6.5 + - uses: backstage/actions/changeset-feedback@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 name: Generate feedback with: diff-ref: 'origin/master' diff --git a/.github/workflows/automate_merge_message.yml b/.github/workflows/automate_merge_message.yml index 71e3450235..0c6dacde69 100644 --- a/.github/workflows/automate_merge_message.yml +++ b/.github/workflows/automate_merge_message.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: '${{ github.event.pull_request.merge_commit_sha }}' @@ -44,7 +44,7 @@ jobs: node generate.js ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} > message.txt - name: Post Message - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index 6d6fd65c0d..b4a7271875 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -15,11 +15,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/stale@v8.0.0 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 id: stale with: stale-issue-message: > diff --git a/.github/workflows/ci-noop.yml b/.github/workflows/ci-noop.yml index 6918db4be5..2c66da768f 100644 --- a/.github/workflows/ci-noop.yml +++ b/.github/workflows/ci-noop.yml @@ -6,6 +6,7 @@ on: pull_request: paths: - 'microsite/**' + - 'beps/**' permissions: contents: read @@ -39,7 +40,7 @@ jobs: name: Test ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ada4233f18..5df2a2509d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,7 @@ on: pull_request: paths-ignore: - 'microsite/**' + - 'beps/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -22,25 +23,25 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=8192 name: Install ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -58,25 +59,25 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=8192 name: Verify ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -112,10 +113,10 @@ jobs: run: yarn backstage-repo-tools generate-catalog-info --ci - name: lint openapi yaml files - run: yarn backstage-repo-tools schema openapi lint + run: yarn backstage-repo-tools repo schema openapi lint - name: verify openapi yaml file matches generated ts file - run: yarn backstage-repo-tools schema openapi verify + run: yarn backstage-repo-tools repo schema openapi verify - name: verify doc links run: node scripts/verify-links.js @@ -189,25 +190,25 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=8192 --no-node-snapshot' || '--max-old-space-size=8192' }} INTEGRATION_TEST_GITHUB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITHUB_TOKEN }} INTEGRATION_TEST_GITLAB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITLAB_TOKEN }} INTEGRATION_TEST_BITBUCKET_TOKEN: ${{ secrets.INTEGRATION_TEST_BITBUCKET_TOKEN }} INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: fetch branch master run: git fetch origin master - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -215,7 +216,7 @@ jobs: run: yarn backstage-cli repo lint --since origin/master - name: test changed packages - run: yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --since origin/master + run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --since origin/master env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }} @@ -224,7 +225,7 @@ jobs: # We run the test cases before verifying the specs to prevent any failing tests from causing errors. - name: verify openapi specs against test cases - run: yarn backstage-repo-tools schema openapi test + run: yarn backstage-repo-tools repo schema openapi test - name: ensure clean working directory run: | diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index 4a9e4522f4..6ae0310813 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -9,11 +9,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: backstage/actions/cron@v0.6.5 + - uses: backstage/actions/cron@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 037d4a88d7..eef70ff02c 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -16,24 +16,24 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: backstage ref: v${{ github.event.client_payload.version }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -47,17 +47,17 @@ jobs: working-directory: ./example-app - name: Login to GitHub Container Registry - uses: docker/login-action@v3.0.0 + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3.0.0 + uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 - name: Build and push - uses: docker/build-push-action@v5.1.0 + uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 with: context: './example-app' file: ./example-app/packages/backend/Dockerfile diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index 8343b92a66..e9abba59a3 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -24,14 +24,14 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 33dc17f867..43fafde90b 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -11,23 +11,23 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=8192 steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 0d81f1c40a..c91fec948e 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -1,6 +1,11 @@ name: Deploy Packages on: workflow_dispatch: + inputs: + force_release: + description: Unconditionally trigger the release job + required: false + type: boolean push: branches: [master, patch/*] @@ -53,22 +58,22 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=8192 --no-node-snapshot' || '--max-old-space-size=8192' }} INTEGRATION_TEST_GITHUB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITHUB_TOKEN }} INTEGRATION_TEST_GITLAB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITLAB_TOKEN }} INTEGRATION_TEST_BITBUCKET_TOKEN: ${{ secrets.INTEGRATION_TEST_BITBUCKET_TOKEN }} INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -76,6 +81,7 @@ jobs: run: git fetch origin '${{ github.event.before }}' - name: Check if release + if: inputs.force_release != true id: release_check run: node scripts/check-if-release.js env: @@ -98,7 +104,7 @@ jobs: - name: test (and upload coverage) run: | - yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --coverage + yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --coverage bash <(curl -s https://codecov.io/bash) # Upload code coverage for some specific flags. Also see .codecov.yml bash <(curl -s https://codecov.io/bash) -f packages/core-app-api/coverage/* -F core-app-api @@ -124,7 +130,7 @@ jobs: release: needs: build - if: needs.build.outputs.needs_release == 'true' + if: needs.build.outputs.needs_release == 'true' || inputs.force_release == true runs-on: ubuntu-latest @@ -134,23 +140,23 @@ jobs: env: CI: 'true' - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=8192 steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -190,7 +196,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} - name: Dispatch repository event - uses: peter-evans/repository-dispatch@bf47d102fdb849e755b0b0023ea3e81a44b6f570 # v2.1.2 + uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0 with: token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} event-type: release-published diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml index c81447e9c0..54bc8d8782 100644 --- a/.github/workflows/issue.yaml +++ b/.github/workflows/issue.yaml @@ -10,9 +10,9 @@ jobs: if: github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Issue sync - uses: backstage/actions/issue-sync@v0.6.5 + uses: backstage/actions/issue-sync@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index bfd1ffef3d..46f7dad8a3 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@v3.1.3 + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml index 7d9869d378..18300b074e 100644 --- a/.github/workflows/pr-review-comment.yaml +++ b/.github/workflows/pr-review-comment.yaml @@ -17,13 +17,13 @@ jobs: steps: # Inspired by https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Read PR Number id: pr-number - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -40,7 +40,7 @@ jobs: const prNumber = artifact.name.slice('pr_number-'.length) core.setOutput('pr-number', prNumber); - - uses: backstage/actions/re-review@v0.6.5 + - uses: backstage/actions/re-review@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 6c2ffcfe77..89531bf70a 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -18,12 +18,12 @@ jobs: if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request ) steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: PR sync - uses: backstage/actions/pr-sync@v0.6.5 + uses: backstage/actions/pr-sync@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 64472e71c6..621776d69b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -29,12 +29,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: 'Checkout code' - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: persist-credentials: false @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: SARIF file path: results.sarif @@ -66,6 +66,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@1500a131381b66de0c52ac28abb13cd79f4b7ecc # v2.22.12 + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 9b5a04198a..f34011348c 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -20,12 +20,12 @@ jobs: fetch-depth: 0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/sync_dependabot-changesets.yml b/.github/workflows/sync_dependabot-changesets.yml index f61d8709a5..c2a447e369 100644 --- a/.github/workflows/sync_dependabot-changesets.yml +++ b/.github/workflows/sync_dependabot-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'dependabot[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} @@ -26,7 +26,7 @@ jobs: git config --global user.email noreply@backstage.io git config --global user.name 'Github changeset workflow' - name: Generate changeset - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { promises: fs } = require('fs'); diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 1cab7797e6..64dec1905a 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -8,12 +8,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit # Setup node & install deps before checkout, keeping install quick - - uses: actions/setup-node@v4.0.1 + - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x - name: Install dependencies @@ -21,7 +21,7 @@ jobs: run: npm install semver@7.3.5 fs-extra@10.0.0 @manypkg/get-packages@1.1.1 - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: backstage # 'v' prefix is added here for the tag, we keep it out of the manifest logic @@ -29,7 +29,7 @@ jobs: # Checkout backstage/versions into /backstage/versions, which is where store the output - name: Checkout versions - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: repository: backstage/versions path: backstage/versions @@ -53,7 +53,7 @@ jobs: git push - name: Dispatch update-helper update - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} # TODO(Rugvip): Remove the create-app dispatch once we've been on the release version for a while diff --git a/.github/workflows/sync_renovate-changesets.yml b/.github/workflows/sync_renovate-changesets.yml index 1e93a12f85..83b9f8f574 100644 --- a/.github/workflows/sync_renovate-changesets.yml +++ b/.github/workflows/sync_renovate-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} @@ -26,7 +26,7 @@ jobs: git config --global user.email noreply@backstage.io git config --global user.name 'Github changeset workflow' - name: Generate changeset - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { promises: fs } = require("fs"); diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index f1a91ed7e6..02d4d55301 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -12,24 +12,24 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x - name: Create Snyk report - uses: snyk/actions/node@3e2680e8df93a24b52d119b1305fb7cedc60ceae # master + uses: snyk/actions/node@1d672a455ab3339ef0a0021e1ec809165ee12fad # master continue-on-error: true # Snyk CLI exits with error when vulnerabilities are found with: args: > diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index c3f7af1550..7ee4e72d38 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -25,13 +25,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Monitor and Synchronize Snyk Policies - uses: snyk/actions/node@3e2680e8df93a24b52d119b1305fb7cedc60ceae # master + uses: snyk/actions/node@1d672a455ab3339ef0a0021e1ec809165ee12fad # master with: command: monitor args: > @@ -46,7 +46,7 @@ jobs: # Above we run the `monitor` command, this runs the `test` command which is # the one that generates the SARIF report that we can upload to GitHub. - name: Create Snyk report - uses: snyk/actions/node@3e2680e8df93a24b52d119b1305fb7cedc60ceae # master + uses: snyk/actions/node@1d672a455ab3339ef0a0021e1ec809165ee12fad # master continue-on-error: true # To make sure that SARIF upload gets called with: args: > @@ -58,6 +58,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Upload Snyk report - uses: github/codeql-action/upload-sarif@v2.22.12 + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: sarif_file: snyk.sarif diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index fc1d7a68f1..3164e471d2 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -14,11 +14,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 20000 fetch-tags: true @@ -26,7 +26,7 @@ jobs: - name: Install Dependencies run: yarn --immutable - name: Create Release Pull Request - uses: backstage/changesets-action@v2.1.0 + uses: backstage/changesets-action@99063c276a7f12e024cb310e7a05a3a5b89449f8 # v2.1.0 with: # Calls out to `changeset version`, but also runs prettier version: yarn release diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index c0bbde49f3..b4e7d4b904 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -7,6 +7,7 @@ on: - 'contrib/**' - 'docs/**' - 'microsite/**' + - 'beps/**' - 'scripts/**' - 'storybook/**' - '**/*.test.*' @@ -25,21 +26,21 @@ jobs: tags: ${{ steps.meta.outputs.tags }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: setup-node - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: linux-v18 @@ -60,7 +61,7 @@ jobs: - name: Docker metadata id: meta - uses: docker/metadata-action@e6428a5c4e294a61438ed7f43155db912025b6b3 # v5.2.0 + uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 with: images: registry.uffizzi.com/${{ env.UUID_TAG_APP }} tags: type=raw,value=60d @@ -83,12 +84,12 @@ jobs: - build-backstage steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout git repo - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Render Compose File run: | # update image after the build above @@ -97,13 +98,13 @@ jobs: kustomize build . > manifests.rendered.yml cat manifests.rendered.yml - name: Upload Rendered Manifests File as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3 with: name: preview-spec path: ./.github/uffizzi/k8s/manifests/manifests.rendered.yml retention-days: 2 - name: Upload PR Event as Artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: preview-spec path: ${{ github.event_path }} @@ -115,13 +116,13 @@ jobs: if: ${{ github.event.action == 'closed' }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit # If this PR is closing, we will not render a compose file nor pass it to the next workflow. - name: Upload PR Event as Artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: preview-spec path: ${{ github.event_path }} diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index c1659097a7..9db724fa96 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -23,7 +23,7 @@ jobs: action: ${{ steps.event.outputs.ACTION }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: disable-sudo: true egress-policy: block @@ -32,7 +32,7 @@ jobs: - name: 'Download artifacts' # Fetch output (zip archive) from the workflow run that triggered this workflow. - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ @@ -76,7 +76,7 @@ jobs: - name: Cache Manifests File if: ${{ steps.event.outputs.ACTION != 'closed' }} - uses: actions/cache@v3.3.2 + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: path: manifests.rendered.yml key: ${{ steps.hash.outputs.MANIFESTS_FILE_HASH }} @@ -102,11 +102,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 # Identify comment to be updated - name: Find comment for Ephemeral Environment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@d5fe37641ad8451bdd80312415672ba26c86575e # v3 id: find-comment with: issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -117,14 +117,14 @@ jobs: # Create/Update comment with action deployment status - name: Create or Update Comment with Deployment Notification id: notification - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} body: | ## Uffizzi Ephemeral Environment - Virtual Cluster - :cloud: deploying ... + :cloud: deploying cluster `pr-${{ needs.cache-manifests-file.outputs.pr-number }}` :gear: Updating now by workflow run [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). @@ -140,7 +140,7 @@ jobs: - name: Fetch cached Manifests File id: cache - uses: actions/cache@v3 + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4 with: path: manifests.rendered.yml key: ${{ needs.cache-manifests-file.outputs.manifests-cache-key }} @@ -165,7 +165,7 @@ jobs: echo "Access the \`backstage\` endpoint at [\`${BACKSTAGE_HOST}\`](http://${BACKSTAGE_HOST})" >> $GITHUB_STEP_SUMMARY - name: Create or Update Comment with Deployment URL - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.notification.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} @@ -209,7 +209,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Delete Virtual Cluster uses: UffizziCloud/cluster-action@main @@ -220,7 +220,7 @@ jobs: # Identify comment to be updated - name: Find comment for Ephemeral Environment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@d5fe37641ad8451bdd80312415672ba26c86575e # v3 id: find-comment with: issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -229,7 +229,7 @@ jobs: direction: last - name: Update Comment with Deletion - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} diff --git a/.github/workflows/verify_accessibility-noop.yml b/.github/workflows/verify_accessibility-noop.yml index 79c9962fce..07c92b5b5d 100644 --- a/.github/workflows/verify_accessibility-noop.yml +++ b/.github/workflows/verify_accessibility-noop.yml @@ -7,7 +7,7 @@ on: branches: [master] paths-ignore: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index 1310fc15f4..cbce7ce6ab 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -1,11 +1,11 @@ name: Accessibility on: - # NOTE: If you change these you must update verify_accessibility_core-noop.yml as well + # NOTE: If you change these you must update verify_accessibility-noop.yml as well pull_request: branches: [master] paths: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' @@ -20,17 +20,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Use Node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x - name: run Lighthouse CI diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index 61be150ff8..7c7ef286db 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -42,12 +42,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2.22.12 + uses: github/codeql-action/init@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -66,7 +66,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2.22.12 + uses: github/codeql-action/autobuild@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -80,4 +80,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2.22.12 + uses: github/codeql-action/analyze@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 diff --git a/.github/workflows/verify_docs-quality.yml b/.github/workflows/verify_docs-quality.yml index 8e3b333dd3..2065af00fb 100644 --- a/.github/workflows/verify_docs-quality.yml +++ b/.github/workflows/verify_docs-quality.yml @@ -12,11 +12,11 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 # Vale does not support file excludes, so we use the script to generate a list of files instead # The action also does not allow args or a local config file to be passed in, so the files array @@ -26,10 +26,10 @@ jobs: run: echo "args=$(node scripts/check-docs-quality.js --ci-args)" >> $GITHUB_OUTPUT - name: documentation quality check - uses: errata-ai/vale-action@c4213d4de3d5f718b8497bd86161531c78992084 # v2.0.1 + uses: errata-ai/vale-action@38bf078c328061f59879b347ca344a718a736018 # v2.1.0 with: # This also contains --config=.github/vale/config.ini ... :/ files: '${{ steps.generate.outputs.args }}' - version: 2.30.0 # TODO: migrate to v3 + version: latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify_e2e-kubernetes-noop.yml b/.github/workflows/verify_e2e-kubernetes-noop.yml index 7606f78f07..8d8b14d5ba 100644 --- a/.github/workflows/verify_e2e-kubernetes-noop.yml +++ b/.github/workflows/verify_e2e-kubernetes-noop.yml @@ -23,7 +23,7 @@ jobs: name: Kubernetes ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml index db3651cfe1..2304bdbb26 100644 --- a/.github/workflows/verify_e2e-kubernetes.yml +++ b/.github/workflows/verify_e2e-kubernetes.yml @@ -22,25 +22,25 @@ jobs: name: Kubernetes ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: bootstrap kind - uses: helm/kind-action@dda0770415bac9fc20092cacbc54aa298604d140 # v1.8.0 + uses: helm/kind-action@99576bfa6ddf9a8e612d83b513da5a75875caced # v1.9.0 - name: kubernetes test working-directory: packages/backend-common diff --git a/.github/workflows/verify_e2e-linux-noop.yml b/.github/workflows/verify_e2e-linux-noop.yml index c1ac6ecf89..93d48caf22 100644 --- a/.github/workflows/verify_e2e-linux-noop.yml +++ b/.github/workflows/verify_e2e-linux-noop.yml @@ -9,6 +9,7 @@ on: - 'contrib/**' - 'docs/**' - 'microsite/**' + - 'beps/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -28,7 +29,7 @@ jobs: name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 0e335b8fe0..dc62ce5725 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -7,6 +7,7 @@ on: - 'contrib/**' - 'docs/**' - 'microsite/**' + - 'beps/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -35,16 +36,16 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=8192 --no-node-snapshot' || '--max-old-space-size=8192' }} name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Configure Git run: | @@ -52,12 +53,12 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index e2ca1db16e..0bce75f720 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -30,12 +30,12 @@ jobs: name: Techdocs steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 - - uses: actions/setup-python@v4.8.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows-noop.yml b/.github/workflows/verify_e2e-windows-noop.yml index e24f7820fe..a7ebdba4b5 100644 --- a/.github/workflows/verify_e2e-windows-noop.yml +++ b/.github/workflows/verify_e2e-windows-noop.yml @@ -25,7 +25,7 @@ jobs: name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index d3c9d58ba6..ae2e7c7e99 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -26,12 +26,12 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=8192 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=8192 --no-node-snapshot' || '--max-old-space-size=8192' }} name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -42,7 +42,7 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Configure Git run: | @@ -50,18 +50,18 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: setup python - uses: actions/setup-python@v4.8.0 + uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.10' - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.3.1 + uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 - name: Setup gyp env run: | @@ -78,7 +78,7 @@ jobs: uses: browser-actions/setup-chrome@803ef6dfb4fdf22089c9563225d95e4a515820a0 # latest - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_fossa.yml b/.github/workflows/verify_fossa.yml index e91a04d6ed..fd555159b1 100644 --- a/.github/workflows/verify_fossa.yml +++ b/.github/workflows/verify_fossa.yml @@ -14,12 +14,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Install Fossa run: "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash" diff --git a/.github/workflows/verify_microsite-noop.yml b/.github/workflows/verify_microsite-noop.yml index ac0e397127..ad3e67ba70 100644 --- a/.github/workflows/verify_microsite-noop.yml +++ b/.github/workflows/verify_microsite-noop.yml @@ -7,6 +7,7 @@ on: paths-ignore: - '.github/workflows/verify_microsite.yml' - 'microsite/**' + - 'beps/**' - 'mkdocs.yml' - 'docs/**' @@ -20,7 +21,7 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 42a6663e59..cee89a8ba2 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -5,6 +5,7 @@ on: paths: - '.github/workflows/verify_microsite.yml' - 'microsite/**' + - 'beps/**' - 'mkdocs.yml' - 'docs/**' @@ -23,14 +24,14 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18.x diff --git a/.github/workflows/verify_microsite_accessibility-noop.yml b/.github/workflows/verify_microsite_accessibility-noop.yml new file mode 100644 index 0000000000..4b63dc41cc --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility-noop.yml @@ -0,0 +1,31 @@ +# NO-OP placeholder that always passes for other paths +# This is here so that we're able to set the status check as required + +name: Microsite Accessibility +on: + pull_request: + branches: [master] + paths-ignore: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/scripts/**' + - 'microsite/src/**' + - 'microsite/data/**' + - 'microsite/blog/**' + - 'microsite/static/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +permissions: + contents: read + +jobs: + noop: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - run: echo NOOP diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml new file mode 100644 index 0000000000..fa5e54905f --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility.yml @@ -0,0 +1,40 @@ +name: Microsite Accessibility +on: + # NOTE: If you change these you must update verify_microsite_accessibility-noop.yml as well + pull_request: + branches: [master] + paths: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +jobs: + lhci: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Use Node.js 18.x + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: 18.x + + - name: top-level install + run: yarn install --immutable + + - name: yarn install + run: yarn install --immutable + working-directory: microsite + + - name: run Lighthouse CI + run: | + yarn dlx @lhci/cli@0.11.x --config=microsite/lighthouserc.js autorun + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify_storybook-noop.yml b/.github/workflows/verify_storybook-noop.yml index 3c92f0eaa2..74aed57f5c 100644 --- a/.github/workflows/verify_storybook-noop.yml +++ b/.github/workflows/verify_storybook-noop.yml @@ -28,7 +28,7 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 6219faf616..70fb16ac48 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -28,21 +28,21 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 0 # Required to retrieve git history - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: storybook yarn install @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@80bf5911f28005ed208f15b7268843b79ca0e23a # v1 + - uses: chromaui/action@c9067691aca4a28d6fbb40d9eea6e144369fbcae # v10 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index 4cffa959da..7d772bd765 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -21,7 +21,7 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=8192 --no-node-snapshot' || '--max-old-space-size=8192' }} INTEGRATION_TEST_GITHUB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITHUB_TOKEN }} INTEGRATION_TEST_GITLAB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITLAB_TOKEN }} INTEGRATION_TEST_BITBUCKET_TOKEN: ${{ secrets.INTEGRATION_TEST_BITBUCKET_TOKEN }} @@ -29,14 +29,14 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -55,7 +55,7 @@ jobs: run: yarn lint:type-deps - name: test - run: yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M + run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 diff --git a/.gitignore b/.gitignore index c0ef0d2001..e499faf29e 100644 --- a/.gitignore +++ b/.gitignore @@ -162,4 +162,7 @@ e2e-test-report/ *svg.dtmp # Scripts -plugins-report.csv \ No newline at end of file +plugins-report.csv + +# Temporary knip configs +knip.json diff --git a/.husky/pre-commit b/.husky/pre-commit index d2ae35e84b..3723623171 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - yarn lint-staged diff --git a/.prettierignore b/.prettierignore index c54ee5d821..c561036ebb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ coverage templates api-report.md api-report-*.md +knip-report.md cli-report.md plugins/scaffolder-backend/sample-templates .vscode diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 527957677b..be88ed2249 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -386,7 +386,7 @@ Here are a few things that can help as you go through the review process: - PRs get automatically assigned so you don't need to ping people, they will be notified and have a process of their own for this - If you are waiting for a review or mid-review and your PR goes stale one of the easiest ways to clear the stale bot is by simply rebasing your PR - There are times where you might run into conflict with the `yarn.lock` during a rebase, to help with that make sure your `master` branch is up to date and then in your branch run `git checkout master yarn.lock` and then run `yarn install`, this will get you a conflict free `yarn.lock` file you can commit -- If Vale finds issues with your documentation but it's a code reference you can fix it by putting backticks (`) around it. Now if it is a special word or maybe a name there are two ways you can fix that by adding it to the list of accepted words in the [accept.txt file](https://github.com/backstage/backstage/blob/master/.github/vale/Vocab/Backstage/accept.txt) and them committing that change +- If Vale finds issues with your documentation but it's a code reference you can fix it by putting backticks (`) around it. Now if it is a special word or maybe a name there are two ways you can fix that by adding it to the list of accepted words in the [accept.txt file](https://github.com/backstage/backstage/blob/master/.github/vale/config/vocabularies/Backstage/accept.txt) and them committing that change ### Merging to Master diff --git a/NOTICE b/NOTICE index 38e5cdef85..fb23d28ebc 100644 --- a/NOTICE +++ b/NOTICE @@ -2,4 +2,6 @@ Backstage Copyright 2020 The Backstage Authors Portions of this software were developed by third-party software vendors: + - Tech Radar Plugin (https://opensource.zalando.com/tech-radar/), Copyright (c) 2017 Zalando SE +- [OpenAPI Generator Templates](./packages/repo-tools/templates), Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) Copyright 2018 SmartBear Software diff --git a/OWNERS.md b/OWNERS.md index 4d6fb21a80..1e92e68c40 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -37,14 +37,13 @@ Team: @backstage/discoverability-maintainers Scope: Discoverability within Backstage, including the home page, information architecture, and search -| Name | Organization | Team | GitHub | Discord | -| ------------------------ | ------------ | ---- | ---------------------------------------- | ------------------ | -| Avantika Iyer | Spotify | BUX | [tikabom](http://github.com/tikabom) | - | -| Camila Belo | Spotify | BUX | [camilaibs](http://github.com/camilaibs) | Camila Loiola#0226 | -| Emma Indal | Spotify | BUX | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | -| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | -| Renan Mendes Carvalho | Spotify | BUX | [aitherios](http://github.com/aitherios) | aitherios#0593 | -| Bailey Brooks | Spotify | BUX | [bailey](http://github.com/bailey) | \_bailey4 | +| Name | Organization | Team | GitHub | Discord | +| ------------------------ | ------------ | -------------- | ---------------------------------------- | ----------------- | +| Avantika Iyer | Spotify | Infinite Buck$ | [tikabom](http://github.com/tikabom) | - | +| Emma Indal | Spotify | Infinite Buck$ | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | +| Djamaile Rahamat | Spotify | Infinite Buck$ | [djamaile](http://github.com/djamaile) | dyoqi | +| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | +| Bailey Brooks | Spotify | Infinite Buck$ | [bailey](http://github.com/bailey) | \_bailey4 | ### Helm Charts @@ -149,6 +148,7 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling. | Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` | | Carlos Esteban Lopez Jaramillo | VMWare | [luchillo17](https://github.com/luchillo17) | `luchillo17#8777` | | David Tuite | Roadie.io | [dtuite](https://github.com/dtuite) | `David Tuite (roadie.io)#1010` | +| Deepankumar Loganathan | | [deepan10](https://github.com/deepan10) | `deepan10` | | Himanshu Mishra | Harness.io | [OrkoHunter](https://github.com/OrkoHunter) | `OrkoHunter#1520` | | Irma Solakovic | Roadie.io | [Irma12](https://github.com/Irma12) | `Irma#7629` | | Jamie Klassen | VMware | [jamieklassen](https://github.com/jamieklassen) | `jamieklassen#3047` | diff --git a/README-ko_kr.md b/README-ko_kr.md index f7bcba144b..e5f50bd2b8 100644 --- a/README-ko_kr.md +++ b/README-ko_kr.md @@ -22,10 +22,10 @@ Backstage 는 모든 인프라 도구, 서비스 및 문서를 통합하여 처 ![software-catalog](docs/assets/header.png) -Backstage 다음을 포함합니다: +Backstage는 다음을 포함합니다: - [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) 마이크로 서비스, 라이브러리, 데이터 파이프라인, 웹 사이트, ML 모델 등 모든 소프트웨어 관리 -- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) 새로운 프로젝트를 신속하게 시작하고 조직의 모밤 사례에따라 도구를 표준화 +- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) 새로운 프로젝트를 신속하게 시작하고 조직의 모범 사례에따라 도구를 표준화 - [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) "docs like code" 접근 방식을 사용하여 기술 문서를 쉽게 작성, 유지 관리, 검색 및 사용 - [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) Backstage의 사용자 정의 가능성과 기능을 확장 @@ -66,7 +66,7 @@ Backstage의 문서는 다음을 포함합니다: ## License -Copyright 2020-2023 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README-zh_Hans.md b/README-zh_Hans.md index bf96eea389..3e6cea4e95 100644 --- a/README-zh_Hans.md +++ b/README-zh_Hans.md @@ -57,7 +57,7 @@ Backstage 的文档包括: - [参与贡献 Backstage](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) - 如果您想做出贡献,请从这里开始 - [RFCs](https://github.com/backstage/backstage/labels/rfc) - 帮助制定技术方向 - [FAQ](https://backstage.io/docs/FAQ) - n.: 常问问题 -- [行为准则](CODE_OF_CONDUCT.md) - 这是我们的刑事方式 +- [行为准则](CODE_OF_CONDUCT.md) - 这是我们的行事方式 - [采纳者](ADOPTERS.md) - 已经在使用 Backstage 的公司 - [博客](https://backstage.io/blog/) - 公告和更新 - [通讯](https://spoti.fi/backstagenewsletter) - 订阅我们的电子邮件通讯 @@ -66,7 +66,7 @@ Backstage 的文档包括: ## 许可 -版权所有 2020-2023 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage +版权所有 2020-2024 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage 采用 Apache v2.0 许可:http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README.md b/README.md index a1c53e4c8d..f7b74adee4 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ To engage with our community, you can use the following resources: ## License -Copyright 2020-2023 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/beps/0001-notifications-system/README.md b/beps/0001-notifications-system/README.md index c7b0ffff64..e3507d05fa 100644 --- a/beps/0001-notifications-system/README.md +++ b/beps/0001-notifications-system/README.md @@ -2,7 +2,9 @@ title: Backstage Notifications System status: provisional authors: - - Rugvip + - '@Rugvip' + - '@drodil' + - '@mareklibra' project-areas: - core creation-date: 2023-01-12 @@ -76,7 +78,15 @@ In the backend the signal plugin implements a general purpose message bus for se In the frontend the signal plugin has a persistent connection to the signal backend. This is initially implemented as a WebSocket connection, but could in the future also receive fallback mechanisms such as Server Sent Events or long polling. It is important that this connection is authenticated as we will be routing signals to specific users. The exact implementation of the authentication is not part of this proposal, but it should use whatever the outcome of the discussion in issue [#19581](https://github.com/backstage/backstage/issues/19581) is. -In order to route signals from the sender to the intended receiver the signal plugin uses the concept of signaling channels. They are just like the topics on the message bus, but we use separate terminology in order to avoid confusion. They also sit one layer beneath the even topic in the protocol stack, where the signal channel is communicated as part of the event payload. In the frontend, the signal plugin exposes an API to subscribe to a signal channel. Each time the user receives a signal on the specified channel, a listener is called with the signal payload. +In order to route signals from the sender to the intended recipient the signal plugin uses the concept of signaling channels. They are just like the topics on the message bus, but we use separate terminology in order to avoid confusion. They also sit one layer beneath the even topic in the protocol stack, where the signal channel is communicated as part of the event payload. In the frontend, the signal plugin exposes an API to subscribe to a signal channel. Each time the user receives a signal on the specified channel, a listener is called with the signal payload. + +Upon creating a new notification, a signal will be emitted by the `notification-backend`. + +The channel for notifications will be named `notifications` and the message will contain necessary information about the notification for rendering as well as action telling to refresh the notifications using the REST API. + +The notification payload must be in the signal to be able to show notification in the UI immediately after receiving the signal. + +If the notification status is updated, the signal service shall emit a signal without the notification payload and only with the action. ### Notifications Plugin @@ -85,13 +95,57 @@ The role of the notifications plugin is to manage the lifecycle of notifications The notification backend stores notification using the [database service](https://backstage.io/docs/backend-system/core-services/index#database). In particular it needs to store the following information for each notification: - ID -- Payload -- Receivers -- Read status by user +- Read date +- Done date +- Saved status +- Creation date +- Updated date (optional, for scoped notifications) +- Payload: + - Title + - Description (optional) + - Origin + - Link + - Recipients + - Severity (optional, default normal) + - Topic (optional) + - Scope (optional) + - Icon (optional) -The receivers is **not** a list of users, but rather a filter that describes who should receive the notification. It must be possible to evaluate this filter in a database query, so that we can efficiently fetch all notifications for a given user. The same filter will also be used by the signal backend to determine which users should receive a signal. +The recipients is **not** a list of users, but rather a filter that describes who should receive the notification. It must be possible to evaluate this filter in a database query, so that we can efficiently fetch all notifications for a given user. The same filter will also be used by the signal backend to determine which users should receive a signal. -The notification backend does not provide any new permissions, since creating notifications can only be done by other backend plugins, while reading notifications can only be done by the authenticated user. It is possible that we want to add a permissions for reading notifications, in particular for admin and impersonation use cases, but that is not part of this proposal or the initial implementation. +The title is mandatory human-readable text shortly describing the notifications. + +The description is an optional human-readable text providing more details to the user. + +The severity is one of the predefined values to help with presentation of the notifications or their filtering. Allowed values are: `critical`, `high`, `normal` (default), and `low`. + +The origin is a string identifying the creator of the notification, i.e. the BE plugin or external system. + +The topic is an optional string helping to group notifications of particular context. Its use cases include: + +- Several notifications emitted by an asynchronous external task can be grouped by a single topic +- A backend plugin can group several related messages to a particular processing, i.e. asynchronous progress monitoring + +If a scope is provided for a notification, it will either: + +- Create a new notification if user doesn't have existing notification in that scope and origin +- Update existing notification in that scope and origin so that it's unread considered as a new notification + +The idea of scope is to be able to reuse notifications about same information for example specific failing CI build. + +The timestamp of notification creation is auto-generated by the notifications backend at the time of receiving a request to create the notification. + +The icon is optional and is meant to improve UX. A string referencing an icon name from MUI icon library of a defined version. If missing, it will be determined from the severity. + +The link is a relative or absolute URL. As an example, it can be used: + +- by an external system to provide more details related to the notification +- by an external system to request an action within an asynchronous task +- by a BE plugin to provide link to other part of the Backstage UI (i.e. to the Catalog) + +The `notification-backend` does not provide any new permissions, since creating notifications can only be done by other backend plugins, while reading notifications can only be done by the authenticated user. It is possible that we want to add a permissions for reading notifications, in particular for admin and impersonation use cases, but that is not part of this proposal or the initial implementation. + +The `notification-backend` shall provide necessary parameters for paging and filtering notifications from the frontend. The notification frontend plugin provides a UI for viewing notifications, which in the initial implementation can be as simple as needed. The only requirement is that a user is able to view recent notifications and distinguish between read and unread notifications. A notification as marked as read once it has been interacted with. The frontend plugin also subscribes to the notifications signal channel and alerts the user when a new notification is received. @@ -129,89 +183,186 @@ The following backend service interfaces are added as part of this proposal. ```ts // TODO - We may want to add an additional wrapping here with interfaces for Notification and NotificationParameters -interface SendNotificationRequest { - receivers: SignalReceivers; - - /* TODO - please contribute :) */ -} - -interface SendNotificationResponse { - id: string; - receivers: SignalReceivers; - - /* TODO - please contribute :) */ -} - -interface NotificationService { - sendNotification( - request: SendNotificationRequest, - ): Promise; -} -``` - -#### `SignalService` - -```ts -type SignalReceivers = +export type NotificationRecipients = | { type: 'entity'; - entityRef: string; // typically a user or group entity + entityRef: string | string[]; // typically a user or group entity, otherwise `spec.owner` of the entity/entities } | { type: 'broadcast'; // all users }; -interface Signal { - channel: string; - receivers: SignalReceivers; - payload: JsonObject; +export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; + +export type NotificationPayload = { + title: string; + description?: string; + link: string; + additionalLinks?: string[]; + severity: NotificationSeverity; + topic?: string; + scope?: string; + icon?: string; +}; + +export type Notification = { + id: string; + userRef: string; + created: Date; + saved?: Date; + read?: Date; + updated?: Date; + origin: string; + payload: NotificationPayload; +}; + +interface SendNotificationRequest { + recipients: NotificationRecipients; + payload: NotificationPayload; } -interface SignalService { - signal(signal: Signal): Promise; +interface NotificationService { + sendNotification(request: SendNotificationRequest): Promise; } ``` +Each notification is always routed to individual users unless it's a broadcast. The `notification-backend` will figure out which users will receive a notification based on the `recipients` parameter, resolving it to the concrete list of users at the time of sending the notification. + +Each notification contains a `title` and a `link` for user to see further information. The `created`, `id`, `read` and `saved` properties are handled by the backend based and cannot be changed during the notification creation. + +Calling `sendNotification` should never throw an error so that it doesn't block the current processing. Notifications should be considered as second-level citizens that are not critical if not delivered. + +#### `SignalService` + +```ts +export type SignalPayload = { + recipients: string[] | string | null; + channel: string; + message: SignalType; +}; + +interface SignalService { + publish( + signal: SignalPayload, + ): Promise; +} +``` + +Example signal payload for a new notification: + +```json +{ + "action": "new_notification", + "notification": { + "title": "New notification", + "description": "This is the longer description of the notification", + "link": "/catalog" + } +} +``` + +#### Future considerations and BEP TODO + +- Broadcast messages are to be saved to a separate table for performance reasons +- OpenAPI tooling is taken into use for the notification router and client +- Allow using dynamic values in notification payload, for example entity references `{{ user:default/john.doe }}` should be rendered by the frontend with `EntityRefLink` component. Defining the dynamic data values should be done before implementation. +- Add configurable automatic clean-up of old notifications to save storage space +- Support for saving user notification settings + ### Frontend API +Notification frontend shows users their own notifications in its own page and the number of unread notifications in the main menu item. + +By default, notifications that are `undone` will be shown in the notifications view. The notification `read` status is indicated by the UI. + +Notifications are set to `read` when the notification link is opened or the notification is set as `done` by the user. + +Notifications can be set to `done` by the user, and they are filtered out of the main view. + +Notifications can be saved for later use by the user. + +Notifications can be filtered by their `read`, `done` and `saved` statuses. + +Notifications are displayed in pages. + +User can search for notifications based on their title and description. + The following frontend API is added as part of this proposal. +#### `NotificationsApi` + +```ts +export type NotificationType = 'undone' | 'done' | 'saved'; + +export type GetNotificationsOptions = { + type?: NotificationType; + offset?: number; + limit?: number; + search?: string; +}; + +export type NotificationUpdateOptions = { + ids: string[]; + done?: boolean; + read?: boolean; + saved?: boolean; +}; + +export type NotificationStatus = { + unread: number; + read: number; +}; + +interface NotificationsApi { + getNotifications(options?: GetNotificationsOptions): Promise; + + getStatus(): Promise; + + updateNotifications( + options: UpdateNotificationsOptions, + ): Promise; +} +``` + #### `SignalApi` > TODO - we likely need a slightly different approach here, since APIs are lazy loaded. +> TODO - signal typing in https://github.com/backstage/backstage/pull/22656 + +```ts +export type NotificationSignal = { + action: string; + notification?: NotificationPayload; +}; + +const { lastSignal, isSignalsAvailable } = + useSignal('notifications'); +// isSignalsAvailable can be used to fallback to long-polling if wanted +``` + ```ts interface SignalSubscriber { unsubscribe(): void; } interface SignalApi { - subscribe( + subscribe( channel: string, - listener: (payload: JsonObject) => void, + onMessage: (message: SignalType) => void, ): SignalSubscriber; } ``` -> TODO: Add payload formats and API details +#### Future considerations and BEP TODO - +- Replace absent signal service with long polling. This requires changes to the `signals` plugin as well. +- Render dynamic values with various different React elements such as the `EntityRefLink` for entity references (for example `{{ user:default/john.doe }}`) in the notification payload +- Handle `link` values that use route references. For example instead hard-coding link to `/catalog/default/component/artist-web` it should be possible to use `catalogPlugin.catalogEntity` route reference as a link of the notification. This should also allow using parameters to be passed to the route reference +- Add support for `analyticsApi` to notification actions like marking notifications done, saved or opening links in the notifications +- Add support for user settings to control how notifications are shown to the user and which notifications user wants to receive. This should also include support for different `NotificationProcessor`s that can send notification to external systems +- Add a sound to be played when notification is received +- Add i18n internationalization support for the notification payload ## Release Plan @@ -220,12 +371,12 @@ The notification and signal plugins are released as two new plugins in the Backs For the notification plugin to reach a stable release we much reach the following: - A stable notifications payload format. -- A stable notifications receiver filter format. +- A stable notifications recipient filter format. - The event broker must have at least one implementation that supports scaled deployments. For the signal plugin to reach a stable release we much reach the following: -- A stable signal receiver filter format. +- A stable signal recipient filter format. - A stable signal channel API in the frontend. If any changes are required to the frontend framework to facilitate the implementation of notifications or signals, these will be released as experimental alpha features. They will stay in alpha until they are deemed stable enough, which must happen before a stable release of the notifications system. @@ -234,6 +385,8 @@ If any changes are required to the frontend framework to facilitate the implemen Since the signal plugin relies on the event broker for communication, it is a dependency for the notifications system as a whole. The event broker does not currently implement any transport for scaled deployments, which is a requirement for scaled deployments of the notification system. +Alternatively the notifications can work without the signals, but in this case the notifications are updated only during page refresh. + ## Alternatives ### Signal Plugin Separation diff --git a/beps/0002-dynamic-frontend-plugins/README.md b/beps/0002-dynamic-frontend-plugins/README.md new file mode 100644 index 0000000000..6581457e06 --- /dev/null +++ b/beps/0002-dynamic-frontend-plugins/README.md @@ -0,0 +1,562 @@ +--- +title: Dynamic Frontend Plugins +status: provisional +authors: + - '@Hyperkid123' +owners: +project-areas: + - core +creation-date: 2024-01-17 +--- + + + +# BEP: + + + +[**Discussion Issue**](https://github.com/backstage/backstage/issues/22423) + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) +- [Design Details](#design-details) +- [Release Plan](#release-plan) +- [Dependencies](#dependencies) +- [Alternatives](#alternatives) + +## Summary + + + +The dynamic frontend plugins feature is a way of loading additional frontend plugins at runtime, without the requirement of rebuilding and restarting a running Backstage instance. It also provides a method for packaging and distributing plugins as standalone artifacts, which can be installed directly into Backstage. + +This system should significantly improve frontend plugin management for Backstage instances, and makes it possible to deploy changes to the app without rebuilding the app itself. + +The dynamic plugins leverage the declarative nature of the new frontend system to define what a plugin is and how it is integrated into the rest of the app. + +## Motivation + + + +Being able to dynamically install plugins unlocks new ways of deploying and managing Backstage, and has the potential to hugely improve adoption by lowering the barrier of entry. A Backstage installation currently requires quite a lot of care to maintain, meaning it may not be worth the investment for smaller organizations. By making it possible to set up and maintain a Backstage instance without the need to manage a codebase, we can make Backstage more accessible to a wider audience. + +The ability to dynamically install plugins also allows for more isolated development and deployment of plugins. This can benefit organizations with large Backstage projects, where splitting the codebase into multiple smaller projects can improve development experience and autonomy. + +### Goals + + + +The overarching goal of this proposal is to outline the full path of how frontend plugin code in a repository makes it way into an existing Backstage app. As part of this, we define the following: + +- **Bundling**: How plugin code is packaged into a portable artifact. +- **Distribution**: How these artifacts are deployed or published and made available for apps to load. +- **Loading**: How an app is able to load these artifacts from remote or local sources at runtime. + +Each of these may have multiple possible solutions, in particular the loading and distribution steps. This proposal should aim to provide the minimum solutions that avoids the need for each adopter to have to re-bundle open source plugins, while still making it simple to use dynamic installation for their own internal plugins. + +There are a couple of sub-goals that are important for this to work: + +- Discover and choose the underlying tooling to enable dynamic frontend plugins. +- An easy way to package existing frontend plugins for dynamic installation. +- Reconfiguring the installed plugins at runtime without rebuilding the app, either declaratively or through code. + +### Non-Goals + + + +The **integration** of installed plugins and features is not in scope for this proposal, that is the responsibility of the new frontend system. + +This proposal does not contain any form of visual interface for managing dynamically installed plugins. The scope of this proposal only includes configuration of dynamic plugins through static configuration and TypeScript interfaces. + +This proposal does not aim to make it possible to add or remove plugins into an already running frontend app instance as created by `createApp` from the Backstage core APIs. The page must be reloaded for any updates to take effect. + +## Proposal + + + +### Definition of UI dynamic plugin + +A dynamic UI plugin (from now just plugin) is a plugin that is not part of the output of a backstage instance build. The plugin and its assets are injected into backstage at runtime. In this case, its injected into the browser at some point during user session. + +From the user POV, there is no difference between classic and dynamic plugins. + +The difference is known only to maintainers and should be limited to + +- build requirements +- integration into backstage + +### Dynamic loading tool + +Traditional plugins are not dynamic out of the box. Additional changes are required during build time to make a plugin dynamic. + +The main application (shell) also requires some changes to be able to load, inject, and propagate mandatory context to dynamic plugins. + +Over the last few year, [Module Federation](https://github.com/module-federation) has become the standard when it comes to dynamically load JS modules browser (and nodejs) environment from remote locations and sharing context between the shell and the remote module. + +Although there are other options, like externalizing dependencies, the module federation has proven itself as a robust solution to this particular problem. + +### Module federation implementation + +There are multiple available implementations of module federation. + +Historically, module federation was implemented as a [Webpack feature](https://webpack.js.org/). Since then, additional implementations were created. Mainly for [`rspack`](https://www.rspack.dev/) and [Vite](https://github.com/originjs/vite-plugin-federation). + +Recent changes _claim_, that all of these module federation implementations should be compatible with each other and there should be no need for locking backstage into a single implementation. + +Compatibility between Webpack and `rspack` should available via the [@module-federation/enhanced](https://www.npmjs.com/package/@module-federation/enhanced) package. The compatibility is further [described here](https://www.rspack.dev/blog/module-federation-added-to-rspack.html#introducing-rspack-050). + +The Vite plugin claims webpack compatibility as well. The Vite plugin _is not part of the @module-federation_ organization. The extend of compatibility is at this time unknown. + +**The level of compatibility has to be tested.** Before then, no decision in regards to which implementation(s) will be used should be made. The chosen tool, or their mix, will shape the design and implementation. + +That said, packages from the `@module-federation/*` organization should have higher priority as they are based directly on the module federation concepts and are well supported. + +### Plugin integration into shell applications + +Plugins should be integrated via the new UI system. The system already provides an asynchronous way of loading plugins. The dynamic plugins can be loaded in a similar fashion. + +Plugins should be defined declaratively through configuration. Similar to what was described in this [RFC](https://github.com/backstage/backstage/issues/18372) and in this [issue](https://github.com/backstage/backstage/issues/19545). + +### Plugin registry + +Because plugins are not available at build time, some sort of registry needs to exist to store the information. + +This registry needs to be mutable at runtime (add/remove new plugin metadata) and changes have to be reflected on session refresh. + +This is currently an issue as the app config is embedded into JS assets during build time. + +Each plugin is required to provide manifest file (metadata) in predefined format. This manifest will be used to inject the plugin assets into the browser. + +### Plugin discovery + +Plugin discovery is a pre-requisite for Plugin registry. This should be responsible for scanning for available plugins and generating/modifying the plugin registry to always keep it up to date. + +## Design Details + +> NOTE The details are based on the Janus implementation of dynamic frontend plugins. The implementation leverages [Scalprum](https://github.com/scalprum/scaffolding) which is a Webpack based dynamic plugin manager for React applications. + +### Module federation implementation experiments + +Test should consist of trying to run permutations of webpack/Rspack/vite based shell apps/plugins and discover if we can freely choose any tool, or if we should restrict the tooling to just a subset of the available options. + +The outcome of initial testing is positive and it is possible to mix and match different build tools and consume different remote modules in a single shell application. + +The experimental code can be found in [this repository](https://github.com/scalprum/mf-mixing-experiments). + +So far a lot of custom code needs to be written to bridge Webpack, Rspack, @module-federation/enhanced with Vite. The first three are compatible out of the box, but Vite requires extra bridge to be able to consume/provide modules with/to other builds. + +#### React context and singleton sharing + +We can share React context and its values. Meaning a shell application (or a plugin parent) can have a context provider and a plugin will consume the context value. + +An example is this [package](https://github.com/scalprum/mf-mixing-experiments/tree/master/shared-package) in the experiment repo. + +The shell apps supply the provider and remote modules consume it. There are no issues with any combination of tooling. + +#### Optimized module sharing + +Module sharing optimizations are also working nicely. ([Optimization description](https://medium.com/@marvusm.mmi/webpack-module-federation-think-twice-before-sharing-a-dependency-18b3b0e352cb)) + +Mixing shared scope is working between various modules using various build tools. + +Sample configuration: +https://github.com/scalprum/mf-mixing-experiments/blob/master/mixed-remote-modules-collection/webpack.config.js#L27-L41 + +```js +const plugin = new ModuleFederationPlugin({ + ... + shared: { + '@mui/material/Button': { + requiredVersion: '>=5.0.0', + version: '5.15.6', + }, + '@mui/material/TextField': { + requiredVersion: '>=5.0.0', + version: '5.15.6', + }, + '@mui/material/Typography': { + requiredVersion: '>=5.0.0', + version: '5.15.6', + }, + '@mui/material/Divider': { + requiredVersion: '>=5.0.0', + version: '5.15.6', + }, + ... + }, +}); + +``` + +This config ensures that only those modules (from @mui/material) that are used in the code will be shared. If a relative imports and the entire dependency name is used, the entire dependency will be shared, regardless of which modules are consumed. Tree shaking does not work when an entire dependency is shared! Explanation of why is described [here](https://medium.com/@marvusm.mmi/webpack-module-federation-think-twice-before-sharing-a-dependency-18b3b0e352cb). + +This can be checked by debugging network traffic and shared scopes: + +![notifications system architecture diagram](./scope-sharing.png) + +### Plugin manifest + +Each plugin should have a manifest file with important metadata. This metadata is used to load the remote assets to browser. The plugin manifest should be part of a build output. + +A manifest should have: + +- name of plugin +- how can be the init container accessed +- what is the base URL (assets pathname) +- name of the entry script(s) + +#### Scalprum compatible manifest + +```TS +type PluginManifest = { + name: string; + version: string; + dependencies?: Record; + customProperties?: AnyObject; + baseURL: string; + extensions: Extension[]; + loadScripts: string[]; + registrationMethod: 'callback' | 'custom'; + buildHash?: string; +} +``` + +```js +{ + "name": "backstage.plugin-github-actions", + "version": "0.6.6", + "extensions": [], + "registrationMethod": "callback", // where container init is available in browser + "baseURL": "auto", + "loadScripts": [ + "backstage.plugin-github-actions.804b91040fcbca6585ce.js" + ], + "buildHash": "804b91040fcbca6585ce1bcd4b1f8aa2" +} +``` + +##### `registrationMethod` + +Refers to [webpack output.libraryTarget](https://webpack.js.org/configuration/output/#outputlibrarytarget). + +Callback refers to `jsonp` and a the `custom` is used if other available target configuration has been picked. + +It is recommended to use either `global` or `jsonp` as these are environment agnostic (browser VS node). `jsonp` requires additional configurations. The `global` is preferable due to its simplicity. + +##### `baseURL` + +The `baseURL` is derived from [webpack public path](https://webpack.js.org/configuration/output/#outputpublicpath) + +The public path can also be set to `auto` to remove the need to specify origin or pathname and resolve the pathname at runtime. + +In Scalprum, some manifest [post processing](https://github.com/janus-idp/backstage-showcase/blob/main/packages/app/src/components/DynamicRoot/DynamicRoot.tsx#L323) is required to load the initial scripts if the `auto` baseURL is chosen. + +### Plugin registry + +Plugin registry can be fairly simplistic. It can be as simple as JSON file containing list/map of available plugins and their manifests + +```TS +type RegistryEntry = { + name: string // plugin name + manifestLocation: string // path to the manifest resource +} + +// object for easy access +type PluginRegistry = { + [pluginName: string]: RegistryEntry +} + +// or as an array +type PluginRegistry = RegistryEntry[] +``` + +Example of such registry + +```JS +// as object +{ + "backstage.plugin-github-actions": { + "name": "backstage.plugin-github-actions", + "manifestLocation": "https://foo-bar.com/api/plugin-storage/plugin-manifest.json" + }, + // ..rest of plugins +} + +// as array +[ + { + "name": "backstage.plugin-github-actions", + "manifestLocation": "https://foo-bar.com/api/plugin-storage/plugin-manifest.json" + }, + // ...rest of plugins +] +``` + +Scalprum by default lazy loads plugins and manifests. That is because Scalprum initializes plugins only once they are supposed to be rendered in browser. + +Because backstage does not require that functionality in initial dynamic plugin implementation and loads all plugins at bootstrap, there is an alternative to embed manifest data into the registry itself. + +```TS +type RegistryEntry = { + name: string // plugin name + pluginManifest: PluginManifest +} + +// object for easy access +type PluginRegistry = { + [pluginName: string]: RegistryEntry +} + +// or as an array +type PluginRegistry = RegistryEntry[] + +``` + +Example of registry with embedded manifests + +```JS +// as object +{ + "backstage.plugin-github-actions": { + "name": "backstage.plugin-github-actions", + "pluginManifest": { + "name": "backstage.plugin-github-actions", + "version": "0.6.6", + "extensions": [], + "registrationMethod": "callback", + "baseURL": "auto", + "loadScripts": [ + "backstage.plugin-github-actions.804b91040fcbca6585ce.js" + ], + "buildHash": "804b91040fcbca6585ce1bcd4b1f8aa2" + } + }, + // ..rest of plugins +} + +// as array +[ + { + "name": "backstage.plugin-github-actions", + "pluginManifest": { + "name": "backstage.plugin-github-actions", + "version": "0.6.6", + "extensions": [], + "registrationMethod": "callback", + "baseURL": "auto", + "loadScripts": [ + "backstage.plugin-github-actions.804b91040fcbca6585ce.js" + ], + "buildHash": "804b91040fcbca6585ce1bcd4b1f8aa2" + } + }, + // ...rest of plugins +] + +``` + +### Webpack build configuration + +> NOTE This is a sample current configuration in the Janus project. It uses Scalprum webpack based build plugin to generate the output. It does not take the [all options](#Module-federation-implementation-experiments) in consideration. This section will likely change considerably. + +Part of a Scalprum tooling is also [dynamic-plugins-sdk](https://github.com/openshift/dynamic-plugin-sdk). Right now the package is a part of a different project, but that is about to change. More details in the [Scalprum roadmap](https://github.com/scalprum/scaffolding/blob/main/ROADMAP.md). + +#### Sample plugin configuration using Scalprum SDK + +```TS +import { DynamicRemotePlugin } from '@openshift/dynamic-plugin-sdk-webpack'; + +const sharedModules = { + /** + * Mandatory singleton packages for sharing + */ + react: { + singleton: true, + requiredVersion: '*', + }, + 'react-dom': { + singleton: true, + requiredVersion: '*', + }, + 'react-router-dom': { + singleton: true, + requiredVersion: '*', + }, + 'react-router': { + singleton: true, + requiredVersion: '*', + }, + ... + /** + * Full list of shared modules in Janus + * https://github.com/janus-idp/backstage-plugins/blob/87a6b045c7b0f301ebed8b8f99dc1741fa2b044b/packages/cli/src/lib/bundler/scalprumConfig.ts#L16 + */ + +} + +const dynamicPluginPlugin = new DynamicRemotePlugin({ + extensions: [], + sharedModules, + entryScriptFilename: `${options.pluginMetadata.name}.[contenthash].js`, + pluginMetadata: { + // version cna be used from the package.json version field + version: '1.0.0', + /** + * Name can be easily derived from the plugin name + * https://github.com/janus-idp/backstage-plugins/blob/87a6b045c7b0f301ebed8b8f99dc1741fa2b044b/packages/cli/src/commands/export-dynamic-plugin/frontend.ts#L40 + */ + name: 'backstage.plugin-github-actions', + /** + * Path to the plugin entry point. + * It can default to the same entry point as in regular build. + * Plugins can expose multiple modules. We have found that one is sufficient from backstage plugins. + */ + exposedModules: { + PluginRoot: './src/index.ts' + } + }, +}); +``` + +The `DynamicRemotePlugin` webpack plugin takes care of the rest, including the manifest generation. + +#### Sample plugin raw webpack configuration + +The Scalprum config translates to a following base webpack plugin configuration: + +```JS +import { container } from 'webpack'; + +const dynamicPlugin = new container.ModuleFederationPlugin({ + name: 'backstage.plugin-github-actions', + library: { + type: 'global', + /** + * Some library.type has name limitation + * for example, if "type": "var" is used, the library.name can contain the "-" character + */ + name: 'backstage.plugin-github-actions' + }, + filename: 'backstage.plugin-github-actions.[contenthash].js', + exposes: { + PluginRoot: './src/index.ts' + }, + // list of shared modules like "react", "react-dom", etc + shared: sharedModules, +}); +``` + +Additional plugin would have to be written from scratch to generate the plugin manifest file. + +### Sample shell application webpack configuration + +Shell application (backstage) has very simple module federation configuration. It does not require anything special to be able to inject plugins. Main requirement is to provide core shared packages like react and react-dom. + +```JS +import { container } from 'webpack'; + +const scalprumPlugin = new container.ModuleFederationPlugin({ + name: 'backstageHost', + filename: 'backstageHost.[contenthash].js', + // same share modules list as with plugin config + shared: [sharedModules], +}); +``` + +Nothing else is required. + +### Plugin storage + +Where will the dynamic plugin assets be hosted? Module federation does not strictly require the remote assets to be all hosted on the same origin. + +Theoretically plugins can be hosted on some "public CDN" which is detached from individual backstage instances. + +Assets can be also be hosted in the same way as they have always been. + +### Plugin discovery + +How to notify/send data to browser + +### Plugin initialization + +Currently all plugins have to be initialized at UI bootstrap (page refresh). The new UI async API can be used to initialize the remote assets. + +The `CreateAppFeatureLoader` can be leveraged to initialize the remote container. + +```TS +const allPluginManifests = {...} // get this from the config + +const asyncFeatureLoaders: CreateAppFeatureLoader[] = Object.values(allPluginManifests).map(({ manifest }) => { + return { + getLoaderName: () => manifest.name, + load: (options) => { + // initialize the remote container, depends on tooling + const plugin = initDynamicPlugin(manifest) + } + } +}) + +const app = createApp({ + features: [ + ...asyncFeatureLoaders, + // rest of classic features + ] +}) +``` + +### Plugin declarative configuration + +Janus dynamic plugins ref: https://github.com/janus-idp/backstage-showcase/blob/main/showcase-docs%2Fdynamic-plugins.md#frontend-layout-configuration + +TBD, depends heavily on the new UI system + + + +## Release Plan + + + +## Dependencies + + + +## Alternatives + + diff --git a/beps/0002-dynamic-frontend-plugins/scope-sharing.png b/beps/0002-dynamic-frontend-plugins/scope-sharing.png new file mode 100644 index 0000000000..40acfa5769 Binary files /dev/null and b/beps/0002-dynamic-frontend-plugins/scope-sharing.png differ diff --git a/beps/0003-auth-architecture-evolution/README.md b/beps/0003-auth-architecture-evolution/README.md new file mode 100644 index 0000000000..dc475fa14d --- /dev/null +++ b/beps/0003-auth-architecture-evolution/README.md @@ -0,0 +1,522 @@ +--- +title: Auth Architecture Evolution +status: implementable +authors: + - '@Rugvip' +owners: + - '@backstage/maintainers' +project-areas: + - core +creation-date: 2024-01-28 +--- + +# BEP: Auth Architecture Evolution + + + +[**Discussion Issue**](https://github.com/backstage/backstage/issues/22605) + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) +- [Design Details](#design-details) +- [Release Plan](#release-plan) +- [Dependencies](#dependencies) +- [Alternatives](#alternatives) + +## Summary + +This proposal outlines a new architecture for authenticating users and services in Backstage. It adds built-in access restriction to Backstage instances that protects them from outside access, and enables more granular access control for inter-plugin communication and access from external services. + +It proposes a new `AuthService` interface that handles all user and service authentication and token management available to plugins, as well as a new `HttpAuthService` interface that is a higher level service used to protect endpoints of plugin routers. The `auth-backend` will also be extended to support issuing of user tokens with a reduced scope for cookie-based authentication of requests. + +The changes to the service-to-service auth are aimed to be the minimum needed to get the necessary interfaces in place, and will rely on the existing symmetrical keys for now. + +## Motivation + +This proposal aims to address several of the points in the [Auth Meta issue](https://github.com/backstage/backstage/issues/15999), with the overarching goal being to replace the existing [API request authentication](https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/authenticate-api-requests.md) tutorial in `contrib/` with a more robust and secure built-in solution. The tutorial exists for two purposes: to add authentication of API requests as part of using the permission system in Backstage, and to protect a Backstage instance from external access. It does a fairly good job of the former, although we want to avoid placing user tokens in cookies, but it does a quite poor job of the latter, which we want to fix. + +A secondary goal is to do this work before stabilizing the APIs in the new Backend system, as it will have some impact on how plugin backends are built. This will inevitably also lead to the need to improve the way that service-to-service auth is handled in Backstage, although that is not the primary goal of this work. + +By providing protection of Backstage instances out of the box we drastically reduce both the barrier of entry as well as security risks for Backstage adopters. It will no longer be a requirement to either set up protection of your Backstage instance or not do so and risk exposing your instance to malicious actors. It also drastically reduces the complexity of enabling the permission system of Backstage, since access restrictions are already built-in. + +### Goals + +The following goals are the primary focus of this BEP: + +- Built-in protection of Backstage instances such that it is safe to deploy Backstage directly towards the internet. + - Protection of the frontend app bundle from being accessed by unauthenticated users. + - Basic rate limiting of non-authenticated requests. + - Cookie-based authentication of requests for static assets that protects against CSRF attacks and does not unnecessarily expose user tokens. + - A solution where plugin builders need to opt-out of endpoint protection, for example allowing cookie or unauthenticated access. +- Basic improvements to the service-to-service auth service interfaces such that we are confident that we do not need to break them in the near future. + - If possible we will keep using the existing symmetrical keys that are used today, but it is likely that we will need to break compatibility of existing tokens. + - Encapsulation of user credentials in upstream service requests, avoiding the pattern where backend plugins re-use the user token directly for their outgoing requests. +- Separate out the ownership information out of the Backstage user tokens, since user tokens have been growing large enough to have an impact on performance and reliability. + +### Non-Goals + +- No advanced rate limiting or other protection against DDoS attacks. If this is a concern then adopters should still use other external technologies to protect access to their Backstage instance. +- As part of the immediate work we will only add as much support for service-to-service auth as is needed for a stable API, and not necessarily make it very capable from the start. +- We will not aim to provide an abstraction that makes it possible to switch out the `Authorization` header for service-to-service communication. + +## Proposal + +Two new backend service interfaces are introduced to support these new features. The new `AuthService` is a low-level service that encapsulates authentication and creation of bearer tokens for all types of Backstage identities, including user, service, and services making requests on behalf of users. The new `HttpAuthService` is a higher level service that lets you access the credentials and identity of incoming requests, and issue credentials for outgoing requests. These new services replace the existing `IdentityService` and `TokenManagerService` + +The proposed design leaves the decision for how different endpoints are protected to the implementation of the plugin backends themselves. This includes whether particular routes should allow anonymous access, access from users authenticated via a cookie, or perhaps only allow access from other plugin backends and external services. This means that integrators do not need to - and do not have the ability to - configure access controls of individual endpoints, except for what the permission system already provides, and what is made available through static configuration or extension points. + +In order to allow for cookie-based authentication of incoming user requests, the `auth` plugin backend is extended to be able to issue user tokens with reduced scope, which in turn integrate with the new `AuthService` and `HttpAuthService`. The ability to use cookie auth for requests is an opt-in per route and is only be permitted for read methods (`GET`, `HEAD`, `OPTIONS`). The actual implementation of cookie-based flows will be up to each plugin, but with significant help from the new auth service interfaces. + +In order to allow either unauthenticated access or cookie-based access, a plugin must explicitly opt-in the specific path prefixes that these should be available at. This is done through a new method that is added to the `HttpRouterService` interface. + +For service-to-service communication we will move away from reusing user tokens in upstream requests. We will instead implement an "On-Behalf-Of" flow where incoming user credentials are encapsulated in a service token for the upstream request. In line with this the new auth service interfaces will aim to make it difficult to directly forward credentials from incoming requests, and instead encourage that plugin backends issue new service credentials for upstream requests. + +An issue that has been identified in the current auth implementation is that the user information embedded in the Backstage user tokens can grow fairly large. In order to avoid that this becomes a widespread problem, especially as we implement cookie auth with a 4kb size limit, we will remove the ownership entity refs (`ent` claim) from the user tokens. There were already very few consumers of this information in practice - only the `permission-backend` and `signal-backend` plugin packages currently rely on this information. The ownership data will instead be available via a new `UserInfoService`, owned by the `auth-backend`. The implementation of this new service will keep relying on the `ent` claim of the user token initially, but we will also implement a new `/v1/userinfo` endpoint in the `auth-backend` that will migrate to transparently in the future. + +Finally, it is also important to be able to disable the built-in protection of Backstage instances, for example when access protection is already provided by an external service, and one wishes to allow unauthenticated access for internal use. All built-in service implementation therefore support a common configuration for specifying the desired access control. + +## Design Details + +### `AuthService` Interface + +The new `AuthService` interface is defined as follows: + +```ts +// These credential types are opaque and will also store some internal information, for example bearer tokens + +export type BackstageNonePrincipal = { + type: 'none'; +}; + +export type BackstageUserPrincipal = { + type: 'user'; + + userEntityRef: string; +}; + +export type BackstageServicePrincipal = { + type: 'user'; + + // Exact format TBD, possibly 'plugin:' or 'external:' + subject: string; + + // Not implemented in the first iteration, but this is how we might extend this in the future + permissions?: string[]; +}; + +export type BackstageCredentials = { + $$type: '@backstage/BackstageCredentials'; + + principal: TPrincipal; +}; + +export type BackstagePrincipalTypes = { + user: BackstageUserPrincipal; + service: BackstageServicePrincipal; + none: BackstageNonePrincipal; +}; + +export interface AuthService { + authenticate(token: string): Promise; + + isPrincipal( + credentials: BackstageCredentials, + type: TType, + ): credentials is BackstageCredentials; + + getOwnServiceCredentials(): Promise< + BackstageCredentials + >; + + getPluginRequestToken(options: { + onBehalfOf: BackstageCredentials; + targetPluginId: string; + }): Promise<{ token: string }>; +} +``` + +### `UserInfoService` Interface + +The new `UserInfoService` interface is defined as follows: + +```ts +export interface BackstageUserInfo { + userEntityRef: string; + ownershipEntityRefs: string[]; +} + +export interface UserInfoService { + getUserInfo(credentials: BackstageCredentials): Promise; +} +``` + +The `UserInfoService` is exported by `@backstage/auth-node`, and the initial implementation will simply read the ownership refs from the `ent` claim of the underlying token of the user credentials. The next iteration will instead call the `/v1/userinfo` endpoint of the `auth-backend`, once that has been implemented. + +### `HttpRouterService` Interface + +> Open question: Should this instead be added to the `HttpAuthService`? It may fit a bit better there, but on the other hand it might make sense to add additional policies unrelated to authentication too, such as rate limiting. + +The `HttpRouterService` interface will be extended with the ability to opt-out of the default protection of endpoints, enabling either cookie auth or unauthenticated access. + +```ts +export interface HttpRouterServiceAuthPolicy { + // The path matches in the same way as if it was passed to `express.Router.use(path, ...)` + path: string; + allow: 'unauthenticated' | 'user-cookie'; +} + +export interface HttpRouterService { + // All routes only allow authenticated users and services by default. + use(handler: Handler): void; + + // These are additive and the most relaxed access level takes precedence + addAuthPolicy(policy: HttpRouterServiceAuthPolicy): void; +} +``` + +### `HttpRouterService` Usage Patterns + +All of these usages patterns are from the perspective of a plugin backend. + +#### Standard plugin that only allows access from authenticated users and services + +```ts +export default createBackendPlugin({ + pluginId: 'todo', + register(env) { + env.registerInit({ + deps: { + http: coreServices.httpRouter, + }, + async init({ http }) { + http.use(await createRouter(/* ... */)); + }, + }); + }, +}); +``` + +This is expected to be the pattern for the vast majority of plugins. + +#### A plugin with an endpoint that only allows cookie auth + +```ts +export default createBackendPlugin({ + pluginId: 'techdocs', + register(env) { + env.registerInit({ + deps: { + http: coreServices.httpRouter, + }, + async init({ http }) { + // The order of these two calls does not matter + http.use(await createRouter(/* ... */)); + http.addAuthPolicy({ + path: '/static', + allow: 'user-cookie', + }); + }, + }); + }, +}); +``` + +#### A plugin that allows both public access and cookie auth + +```ts +export default createBackendPlugin({ + pluginId: 'app', + register(env) { + env.registerInit({ + deps: { + http: coreServices.httpRouter, + }, + async init({ http }) { + http.use(await createRouter(/* ... */)); + + http.addAuthPolicy({ + path: '/', + allow: 'user-cookie', + }); + + // Unauthenticated access takes precedence, the /public endpoint does not require cookie auth + http.addAuthPolicy({ + path: '/public', + allow: 'unauthenticated', + }); + }, + }); + }, +}); +``` + +### `HttpAuthService` Interface + +The new `HttpAuthService` interface is defined as follows: + +```ts +type BackstageHttpAccessToPrincipalTypesMapping = { + user: BackstageUserPrincipal; + service: BackstageServicePrincipal; + unauthenticated: BackstageNonePrincipal; + unknown: unknown; +}; + +export interface HttpAuthService { + // Implementations should cache resolved credentials on the request object + credentials< + TAllowed extends + | keyof BackstageHttpAccessToPrincipalTypesMapping = 'unknown', + >( + req: Request, + options?: { + allow?: Array; + allowedAuthMethods?: Array<'token' | 'cookie'>; + }, + ): Promise< + BackstageCredentials + >; + + // The cookie issued by this method must be consumable by the `credentials` method, which in turn + // should create a credentials object that can be passed to the `getPluginRequestToken` method. + // The issued token must then in turn be a valid token for a user principal with full access. + issueUserCookie(res: Response): Promise; +} +``` + +### `AuthService`, `HttpAuthService` and `UserInfoService` Usage Patterns + +All of these usages patterns are from the perspective of a plugin backend. + +#### Authenticate incoming request that requires user authentication + +```ts +// All routes only allow authenticated users and services by default. +router.get('/read-data', (req, res) => { + const credentials = await httpAuth.credentials(req, { allow: ['user'] }); // throws if not: user (or obo), user-cookie + const { ownershipEntityRefs } = await userInfo.getUserInfo(credentials); + console.log( + `User ref=${credentials.principal.userEntityRef} ownership=${ownershipEntityRefs} claims=${credentials.principal.extraClaims}`, + ); + // ... +}); +``` + +#### Issue a service token for a backend-to-backend request + +NOTE: This is not what we want this kind of request to look like in practice. The goal is to forward credential objects as far as possible, keeping the `auth.getPluginRequestToken(...)` in API client code rather than plugin app code. + +```ts +const { token } = await auth.getPluginRequestToken({ + onBehalfOf: await auth.getOwnServiceCredentials(), + targetPluginId: 'example', +}); + +const baseUrl = await discovery.getBaseUrl('example'); +const res = await fetch(`${baseUrl}/some-resource`, { + headers: { + // A utility may be provided for this in the future if needed, this is currently fairly rare + Authorization: `Bearer ${token}`, + }, +}); +``` + +#### Forward the user credentials from an incoming requests to upstream plugin backend + +```ts +class CatalogIntegration { + async getEntity( + res: string, + options: { + credentials: BackstageCredentials; + }, + ) { + return catalogClient.getEntityByRef(req.params.entityRef, { + token: await auth.getPluginRequestToken({ + onBehalfOf: options.credentials, + targetPluginId: 'catalog', + }), + }); + } +} + +// Earlier in the router setup +const catalogIntegration = new CatalogIntegration(); + +router.get('/read-data', (req, res) => { + // The catalogClient will have a reference to the (plugin scoped) HttpAuthService, + // which it uses to create the credential headers for the upstream request. + const entity = await catalogIntegration.getEntity(req.params.entityRef, { + credentials: await httpAuth.credentials(req), + }); + // ... +}); +``` + +#### Allow both user and service request + +```ts +router.get('/read-data', (req, res) => { + const credentials = await httpAuth.credentials(req, { + allow: ['user', 'service'], + }); + if (credentials.principal.type === 'user') { + res.json( + todoStore.listOwnedTodos({ owner: credentials.principal.userEntityRef }), + ); + } else { + res.json( + todoStore.listTodos({ + serviceId: credentials.principal.subject, + }), + ); + } +}); +``` + +#### Issuing a cookie and allowing user cookie auth on a separate endpoint + +```ts +router.get('/cookie', async (req, res) => { + await httpAuth.issueUserCookie(res); // If this is a service call it'll throw + res.json({ ok: true }); +}); + +// Allowing cookie auth is a separate step where you call the addAuthPolicy method +// of the httpRouter API in your plugin setup code. +httpRouter.addAuthPolicy({ + path: '/static', + allow: 'user-cookie', +}); + +// Separate endpoint that serves static content, allowing user cookie auth as +// well as the default user and service auth methods +router.use('/static', express.static(staticContentDir)); +``` + +#### Passing along user identity from a cookie in an upstream request + +```ts +router.get( + '/read-data', + httpAuth.middleware({ allow: ['user-cookie'] }), + (req, res) => { + const credentials = await httpAuth.credentials(req, { allow: ['user'] }); + const { ownershipEntityRefs } = await userInfo.getUserInfo(credentials); + console.log( + `User ref=${credentials.userEntityRef} ownership=${ownershipEntityRefs}`, + ); + // ... + }, +); +``` + +### Access Control Configuration + +In order to disable access control for a Backstage instance, the following configuration can be used: + +```yaml +backend: + dangerouslyDisableServiceAuth: true +``` + +The exact impact that this has is that it disables the check in the `HttpRouterService` implementation, effectively applying the `unauthenticated` access level to all routes. Furthermore, it will also change `AuthService` so that the `getPluginRequestToken()` method will now issue an empty token for a `'none'` principal, rather than throwing. + +## Release Plan + +The existing `IdentityService` and `TokenManagerService` will be deprecated and instead implemented in terms of the new `AuthService`. + +The new `AuthService` and `HttpAuthService` will need backwards compatible implementations for the old backend system. The plan is to not apply any access restrictions for the old Backend system, only implementing that in the new system. The backwards compatibility helpers will use the provided `identity` and `tokenManager` services if available, and plugins should provide fallbacks in the same way as they currently do. If these are not provided, the `identity` client will fall back to `DefaultIdentityClient`, and `tokenManager` will fall back to `ServicerTokenManager.noop()`. + +The backwards compatibility helpers will have the following behavior for each individual service call: + +- `auth.authenticate(token)`: If the decoded token has the `backstage` audience, authenticate the token for a user principal using `identity.getIdentity(...)`, otherwise authenticate it using `tokenManager.authenticate(...)` and return a service principal with the subject `external:backstage-plugin`. If a no-op token manager is used then anything but a user token will be treated as a valid service token, which is consistent with existing behavior. +- `auth.getOwnServiceCredentials()`: Use original implementation. +- `auth.isPrincipal()`: Use original implementation. +- `auth.getPluginRequestToken(options)`: Same behavior as the original implementation, using the `tokenManager` to issue service tokens, with the exception that a `none` principal will translate to an empty token rather than an error in order to properly forward calls with a no-op token manager. +- `httpAuth.credentials(...)`: Use original implementation. +- `httpAuth.issueUserCookie(...)`: This is a no-op as we do not need to support cookie auth in the legacy adapter. + +With this compatibility layer in place all plugins will be refactored to always use the new `AuthService` and `HttpAuthService` internally. The old deprecated services are only accepted at the public API boundaries, i.e. `createRouter` and similar. All plugin code beyond that point uses the new services. + +We do not roll out support for the new auth services for the old backend system, the full implementation is only supported in the new backend system. In particular this means that the new default protection in the `HttpRouterService` only apply to the new backend system. + +Users of the old backend system may already have their own protection set up, which we need to take into account, ensuring that we do not break these existing implementations. + +Several API clients will be updated to support passing `BackstageCredentials` instead of a token, although it is not a requirement to update all clients. In particular we will hold off on migrating isomorphic clients, leaving them to keep consuming tokens where possible. Adding support for credentials to be passed to these clients is a separate future improvement. + +## Dependencies + +No significant dependencies have been identified for this work, although any future security audits of Backstage are considered dependent on this work. + +## Alternatives + +An alternative to built-in protection from external access would be to keep relying on external mechanisms to protect access to Backstage. We feel that this is a suboptimal solution since it adds complexity to the adoption of Backstage, and increases the risk of misconfiguration and security breaches. Regardless of whether we add built-in protection or not the ability to protect API endpoints needs to be addressed in some way, since it is a requirement for the permission system to work. This means that the extra steps to ensure protection out of the box are fairly minimal when looking at just the delta for protecting API access. + +### Access Control Patterns + +These are the different patterns that we've considered for how plugins should control access to their endpoints. + +#### Separate methods / configuration for `use` + +This approach extends the `HttpRouterService` with separate methods or options for specifying the access control for different handlers. + +Pros: + +- We can make strict access control the default, making relaxed controls an opt-in +- The routing setup is quite explicit in what handlers allow for what access levels + +Cons: + +- Forces separation of the router, splitting it into separate handlers for different levels of access. +- Can be extremely confusing because the top-level middleware for more lax access will also apply to the more strict access levels. For example + + ```ts + const cookieRouter = Router(); + cookieRouter.use(rateLimit()); + http.useWithCookieAuthentication(cookieRouter); + + const mainRouter = Router(); + // rateLimit() will apply here too + http.use(mainRouter); + ``` + +This applied to any similar way of structuring this API, such as a single `.use()` method with additional options: + +```ts +http.use(cookieRouter, { allow: ['user-cookie'] }); +``` + +#### Separate configuration on different paths for `use` + +Similar to the previous approach, but also require that a path is provided. This removes much of the confusion around what middleware are applied. + +The downside of this approach is that it still has the drawback of forcing a separation of the router, but at the same it provides very little benefit over a top-level path configuration approach like `http.addAuthPolicy()`. The `'/static'` path in the below example essentially has the exact same logic as `.addAuthPolicy({ path: '/static', allow: 'user-cookie' })` since it'd be implemented in the same way. The `.addAuthPolicy()` approach has the benefit of allowing plugin authors to decide whether they want to keep the routes separate or not. + +This does have the benefit of letting the framework know which exact routes are protected, which can be useful for introspection, although that benefit also applies to the `.addAuthPolicy()` approach. + +```ts +// This isn't too bad, but it's extremely similar to the addAuthPolicy() method since +// we're just matching on the path. The benefit of addAuthPolicy is that it allows you +// to keep everything in a singe router if desired. +http.use('/static', cookieRouter, { allow: ['user-cookie'] }); +``` + +#### Complete opt-out + +This approach simply enabled plugins to opt-out of the default access control, and instead require that they implement the necessary endpoint protection using `httpAuth.middleware()`. + +This approach makes it a bit easier to make mistakes compared to the `.configure()` approach, but at the same time it has the benefit of collection all access control login in a single place (the plugin router). It also doesn't allow the framework to see which endpoints have relaxed protection, which is a downside. + +Still, this is a pattern that is currently second in line if we don't go with the `.configure()` approach. + +```ts +http.dangerouslyDisableAuthentication(); +``` + +#### Leave access control to the plugin router + +Having strict access control be the default with explicit opt-out is an explicit goal of this work, so this is not an option that we are considering. diff --git a/beps/0004-scaffolder-task-idempotency/README.md b/beps/0004-scaffolder-task-idempotency/README.md new file mode 100644 index 0000000000..a7e592af39 --- /dev/null +++ b/beps/0004-scaffolder-task-idempotency/README.md @@ -0,0 +1,247 @@ +--- +title: Scaffolder Retryable Tasks +status: provisional +authors: + - 'bnechyporenko@bol.com' + - 'benjaminl@spotify.com' +owners: +project-areas: + - scaffolder +creation-date: 2024-01-31 +--- + + + +# BEP: + + + +[**Discussion Issue**](https://github.com/backstage/backstage/issues/22590) + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) +- [Design Details](#design-details) +- [Release Plan](#release-plan) +- [Dependencies](#dependencies) +- [Alternatives](#alternatives) + +## Summary + +Scaffolder retryable task idempotency provides the means to make each action of the task idempotent. By default, an action is not considered to be idempotent. +It has to be crafted to a solution when action can be re-run multiple times and giving the same effect as it had been run only once. + +## Motivation + +The aim is to make task engine more reliable in terms of system crash or redeployment. If the task engine is in process of executing +tasks and system stops, after restart task engine will restore all such tasks and continue their execution. +Another purpose is to make it possible to manually retry the task from the last failed step. + +### Goals + + + +- we will provide extended task API in scaffolder with a necessary tools to let tasks implement retries +- make built-in actions retryable +- enable the user to retry the failed task +- should be possible to retry the task on a different scaffolder instance +- we would like to retry from any state and not tearing down or overwriting what was created before. +- we would like to be resilient to upstream failures, i.e. a request to create a remote repository failed and repository was created, it should be handled gracefully. + +### Non-Goals + + + +We will not aim to magically provide idempotency for actions, it has to be explicitly implemented. + +## Proposal + + + +### Idempotency + +We believe that idempotency is the best way to do it. Idempotency allows to rerun the actions multiple times to gracefully deal with semi-complete actions. + +### Serialization of workspace + +We believe that a serialization of workspace is a way to achieve re-running the task on a non-sticky way. +That means that the task can be restored and retried on a different scaffolder node. + +### Secrets + +Secrets will be stored for a longer period of time in the database and wiped out once the task going into a complete state (successfully finished or archived). + +## Design Details + + + +### Idempotency + +This is a simplified idempotent version of GitHub repository creation action: + +```typescript +export function createGithubRepoCreateAction(options: { + integrations: ScmIntegrationRegistry; + githubCredentialsProvider?: GithubCredentialsProvider; +}) { + const { integrations, githubCredentialsProvider } = options; + + return createTemplateAction<{ + repoUrl: string; + secrets?: { [key: string]: string }; + token?: string; + }>({ + id: 'github:repo:create', + description: 'Creates a GitHub repository.', + examples, + schema: { + input: { + type: 'object', + required: ['repoUrl'], + properties: { + repoUrl: inputProps.repoUrl, + token: inputProps.token, + secrets: inputProps.secrets, + repoVariables: inputProps.repoVariables, + }, + }, + }, + async handler(ctx) { + const { + repoUrl, + secrets, + repoVariables, + token: providedToken, + } = ctx.input; + + const octokitOptions = await getOctokitOptions({ + integrations, + credentialsProvider: githubCredentialsProvider, + token: providedToken, + repoUrl: repoUrl, + }); + const client = new Octokit(octokitOptions); + + const { owner, repo } = parseRepoUrl(repoUrl, integrations); + + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } + + const user = await client.rest.users.getByUsername({ + username: owner, + }); + + await ctx.checkpoint('v1.task.checkpoint.repo.creation', async () => { + const repoCreationPromise = + user.data.type === 'Organization' + ? client.rest.repos.createInOrg({ + name: repo, + org: owner, + }) + : client.rest.repos.createForAuthenticatedUser({ + name: repo, + }); + const { repoUrl } = await repoCreationPromise; + return { repoUrl }; + }); + + if (secrets) { + await ctx.checkpoint( + 'v1.task.checkpoint.repo.create.variables', + async () => { + for (const [key, value] of Object.entries(repoVariables ?? {})) { + await client.rest.actions.createRepoVariable({ + owner, + repo, + name: key, + value: value, + }); + } + }, + ); + } + + ctx.output('remoteUrl', newRepo.clone_url); + }, + }); +} +``` + +#### Task context store + +Implement the similar API to CatalogProcessorCache allowing to store markers or keys to enable users to write idempotent actions. +This context persists across retries. + +```typescript +const repoMarker = await cache.get('repo.marker.key'); +``` + +#### Checkpoints + +Checkpoints will allow action authors to create actions where code paths are ignored if already run. +This will be provided on a context object and action of author provide a key and a callback. + +```typescript +await ctx.checkpoint('v1.task.checkpoint.repo.creation', async () => { + const { repoUrl } = await client.rest.Repository.create({}); + return { repoUrl }; +}); +``` + +This checkpoint will be backed with task stored context namespaced with a checkpoint versioned prefix. +It's going look like: + +```json +{ + "v1.task.checkpoint.repo.creation": { + "status": "success", + "result": { + "repoUrl": "https://github.com/backstage/backstage.git" + } + } +} +``` + +## Release Plan + + + +## Dependencies + + + +## Alternatives + + diff --git a/contrib/chart/backstage/Chart.lock b/contrib/chart/backstage/Chart.lock deleted file mode 100644 index 542f9d592e..0000000000 --- a/contrib/chart/backstage/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 13.2.27 -digest: sha256:c2272865ffe4c805153440d8fc6af84945d4ce566b14d0fa8698d75382ada06c -generated: "2023-12-31T14:23:23.75461574Z" diff --git a/contrib/chart/backstage/Chart.yaml b/contrib/chart/backstage/Chart.yaml deleted file mode 100644 index a152ac49ac..0000000000 --- a/contrib/chart/backstage/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -name: backstage -description: A Helm chart for Backstage -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -version: 0.1.3 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. -appVersion: v0.1.1-alpha.23 - -sources: - - https://github.com/backstage/backstage - - https://github.com/spotify/lighthouse-audit-service - -dependencies: - - name: postgresql - condition: postgresql.enabled - version: 13.2.27 - repository: https://charts.bitnami.com/bitnami - -maintainers: - - name: Martina Iglesias Fernández - email: martina@roadie.io - url: https://roadie.io - - name: David Tuite - email: david@roadie.io - url: https://roadie.io diff --git a/contrib/chart/backstage/README.md b/contrib/chart/backstage/README.md deleted file mode 100644 index 40bb2666bc..0000000000 --- a/contrib/chart/backstage/README.md +++ /dev/null @@ -1,282 +0,0 @@ -# Backstage demo helm charts - -This folder contains Helm charts that can easily create a Kubernetes deployment of a demo Backstage app. - -### Pre-requisites - -These charts depend on the `nginx-ingress` controller being present in the cluster. If it's not already installed you -can run: - -```shell -helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx -helm install nginx-ingress ingress-nginx/ingress-nginx -``` - -### Installing the charts - -After choosing a DNS name where backstage will be hosted create a yaml file for your custom configuration. - -```yaml -appConfig: - app: - baseUrl: https://backstage.mydomain.com - title: Backstage - backend: - baseUrl: https://backstage.mydomain.com - cors: - origin: https://backstage.mydomain.com - lighthouse: - baseUrl: https://backstage.mydomain.com/lighthouse-api - techdocs: - storageUrl: https://backstage.mydomain.com/api/techdocs/static/docs - requestUrl: https://backstage.mydomain.com/api/techdocs -``` - -Then use it to run: - -```shell -git clone https://github.com/backstage/backstage.git -cd contrib/chart/backstage -helm dependency update -helm install -f backstage-mydomain.yaml backstage . -``` - -This command will deploy the following pieces: - -- Backstage frontend -- Backstage backend with scaffolder and auth plugins -- (optional) a PostgreSQL instance -- lighthouse plugin -- ingress - -After a few minutes Backstage should be up and running in your cluster under the DNS specified earlier. - -Make sure to create the appropriate DNS entry in your infrastructure. To find the public IP address run: - -```shell -$ kubectl get ingress -NAME HOSTS ADDRESS PORTS AGE -backstage-ingress * 123.1.2.3 80 17m -``` - -> **NOTE**: this is not a production ready deployment. - -## Customization - -### Issue certificates - -These charts can install or reuse a `clusterIssuer` to generate certificates for the backstage `ingress`. To do that: - -1. [Install][install-cert-manager] or make sure [cert-manager][cert-manager] is installed in the cluster. -2. Enable the issuer in the charts. This will first check if there is a `letsencrypt` issuer already deployed in your - cluster and deploy one if it doesn't exist. - -To enable it you need to provide a valid email address in the chart's values: - -```yaml -issuer: - email: me@example.com - clusterIssuer: 'letsencrypt-prod' -``` - -By default, the charts use `letsencrypt-staging` so in the above example we instruct helm to use the production issuer -instead. - -[cert-manager]: https://cert-manager.io/docs/ -[install-cert-manager]: https://cert-manager.io/docs/installation/kubernetes/#installing-with-helm - -### Custom PostgreSQL instance - -Configuring a connection to an existing PostgreSQL instance is possible through the chart's values. - -First create a yaml file with the configuration you want to override, for example `backstage-prod.yaml`: - -```yaml -postgresql: - enabled: false - -appConfig: - app: - baseUrl: https://backstage-demo.mydomain.com - title: Backstage - backend: - baseUrl: https://backstage-demo.mydomain.com - cors: - origin: https://backstage-demo.mydomain.com - database: - client: pg - connection: - database: backstage_plugin_catalog - host: - user: - password: - lighthouse: - baseUrl: https://backstage-demo.mydomain.com/lighthouse-api - -lighthouse: - database: - client: pg - connection: - host: - user: - password: - database: lighthouse_audit_service -``` - -For the CA, create a `configMap` named `--postgres-ca` with a file called `ca.crt`: - -```shell -kubectl create configmap my-company-backstage-postgres-ca --from-file=ca.crt" -``` - -or disable CA mount - -```yaml -backend: - postgresCertMountEnabled: false - -lighthouse: - postgresCertMountEnabled: false -``` - -> Where the release name contains the chart name "backstage" then only the release name will be used. - -Now install the helm chart: - -```shell -cd contrib/chart/backstage -helm install -f backstage-prod.yaml my-backstage . -``` - -### Use your own docker images - -The docker images used for the deployment can be configured through the charts values: - -```yaml -frontend: - image: - repository: - tag: - -backend: - image: - repository: - tag: - -lighthouse: - image: - repository: - tag: -``` - -### Use a private docker repo - -Create a docker-registry secret - -```shell -kubectl create secret docker-registry # args -``` - -> For private images on docker hub --docker-server can be set to docker.io - -Reference the secret in your chart values - -```yaml -dockerRegistrySecretName: -``` - -### Different namespace - -To install the charts a specific namespace use `--namespace `: - -```shell -helm install -f my_values.yaml --namespace demos backstage . -``` - -### Disable loading of demo data - -To deploy backstage with the pre-loaded demo data disable `backend.demoData`: - -```shell -helm install -f my_values.yaml --set backend.demoData=false backstage . -``` - -### Other options - -For more customization options take a look at the [values.yaml](/contrib/chart/backstage/values.yaml) file. - -## Troubleshooting - -Some resources created by these charts are meant to survive after upgrades and even after uninstalls. When -troubleshooting these charts it can be useful to delete these resources between re-installs. - -Secrets: - -``` --postgresql-certs -- contains the certificates used by the deployed PostgreSQL -``` - -Persistent volumes: - -``` -data--postgresql-0 -- this is the data volume used by PostgreSQL to store data and configuration -``` - -> **NOTE**: this volume also stores the configuration for PostgreSQL which includes things like the password for the -> `postgres` user. This means that uninstalling and re-installing the charts with `postgres.enabled` set to `true` and -> auto generated passwords will fail. The solution is to delete this volume with -> `kubectl delete pvc data--postgresql-0` - -ConfigMaps: - -``` --postgres-ca -- contains the generated CA certificate for PostgreSQL when `postgres` is enabled -``` - -#### Unable to verify signature - -``` -Backend failed to start up Error: unable to verify the first certificate - at TLSSocket.onConnectSecure (_tls_wrap.js:1501:34) - at TLSSocket.emit (events.js:315:20) - at TLSSocket._finishInit (_tls_wrap.js:936:8) - at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:710:12) { - code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' -``` - -This error happens in the backend when it tries to connect to the configured PostgreSQL database and the specified CA is not correct. The solution is to make sure that the contents of the `configMap` that holds the certificate match the CA for the PostgreSQL instance. A workaround is to set `appConfig.backend.database.connection.ssl.rejectUnauthorized` to `false` in the chart's values. - -#### Multi-Platform Kubernetes Services - -If you are running a multi-platform Kubernetes service with Windows and Linux nodes then you will need to apply a `nodeSelector` to the Helm chart to ensure that pods are scheduled onto the correct platform nodes. - -Add the following to your Helm values file: - -```yaml -global: - nodeSelector: - kubernetes.io/os: linux - -# If using Postgres Chart also add -postgresql: - master: - nodeSelector: - kubernetes.io/os: linux - slave: - nodeSelector: - kubernetes.io/os: linux -``` - - - -## Uninstalling Backstage - -To uninstall Backstage simply run: - -```shell -RELEASE_NAME= # use `helm list` to find out the name -helm uninstall ${RELEASE_NAME} -kubectl delete pvc data-${RELEASE_NAME}-postgresql-0 -kubectl delete secret ${RELEASE_NAME}-postgresql-certs -kubectl delete configMap ${RELEASE_NAME}-postgres-ca -``` diff --git a/contrib/chart/backstage/files/app-config.development.yaml.tpl b/contrib/chart/backstage/files/app-config.development.yaml.tpl deleted file mode 100644 index 105ba3b259..0000000000 --- a/contrib/chart/backstage/files/app-config.development.yaml.tpl +++ /dev/null @@ -1,51 +0,0 @@ -backend: - lighthouseHostname: {{ include "lighthouse.serviceName" . | quote }} - listen: - port: {{ .Values.appConfig.backend.listen.port | default 7007 }} - database: - client: {{ .Values.appConfig.backend.database.client | quote }} - connection: - host: {{ include "backend.postgresql.host" . | quote }} - port: {{ include "backend.postgresql.port" . | quote }} - user: {{ include "backend.postgresql.user" . | quote }} - database: {{ .Values.appConfig.backend.database.connection.database | quote }} - ssl: - rejectUnauthorized: {{ .Values.appConfig.backend.database.connection.ssl.rejectUnauthorized | quote }} - ca: {{ include "backstage.backend.postgresCaFilename" . | quote }} - -catalog: -{{- if .Values.backend.demoData }} - locations: - # Backstage example components - - type: github - target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all-components.yaml - # Example component for github-actions - - type: github - target: https://github.com/backstage/backstage/blob/master/plugins/github-actions/examples/sample.yaml - # Example component for techdocs - - type: github - target: https://github.com/backstage/backstage/blob/master/plugins/techdocs-backend/examples/documented-component/documented-component.yaml - # Backstage example APIs - - type: github - target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all-apis.yaml - # Backstage example templates - - type: github - target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/all-templates.yaml -{{- else }} - locations: [] -{{- end }} - -auth: - providers: - microsoft: null - -scaffolder: - azure: null - - -sentry: - organization: {{ .Values.appConfig.sentry.organization | quote }} - -techdocs: - generator: - runIn: 'local' \ No newline at end of file diff --git a/contrib/chart/backstage/files/create-backend-dbs.sql b/contrib/chart/backstage/files/create-backend-dbs.sql deleted file mode 100644 index 043ff7daf5..0000000000 --- a/contrib/chart/backstage/files/create-backend-dbs.sql +++ /dev/null @@ -1,13 +0,0 @@ -{{ $backendDb := .Values.appConfig.backend.database.connection.database }} -{{ $lighthouseDb := .Values.lighthouse.database.connection.database }} -{{ $user := .Values.global.postgresql.postgresqlUsername }} - -grant all privileges on database {{ $backendDb }} to {{ $user }}; - -create database backstage_plugin_auth; -grant all privileges on database backstage_plugin_auth to {{ $user }}; - -{{ if not (eq $backendDb $lighthouseDb) }} -create database {{ $lighthouseDb }}; -grant all privileges on database {{ $lighthouseDb }} to {{ $user }}; -{{ end }} diff --git a/contrib/chart/backstage/templates/_helpers.tpl b/contrib/chart/backstage/templates/_helpers.tpl deleted file mode 100644 index 123d4dba5b..0000000000 --- a/contrib/chart/backstage/templates/_helpers.tpl +++ /dev/null @@ -1,286 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "backstage.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "backstage.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backstage.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common App labels -*/}} -{{- define "backstage.app.labels" -}} -app.kubernetes.io/name: {{ include "backstage.name" . }}-app -helm.sh/chart: {{ include "backstage.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Common Backend labels -*/}} -{{- define "backstage.backend.labels" -}} -app.kubernetes.io/name: {{ include "backstage.name" . }}-backend -helm.sh/chart: {{ include "backstage.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Name for postgresql dependency -See https://github.com/helm/helm/issues/3920#issuecomment-686913512 -*/}} -{{- define "backstage.postgresql.fullname" -}} -{{ printf "%s-%s" .Release.Name .Values.postgresql.nameOverride }} -{{- end -}} - - -{{/* -Create the name of the service account to use for the app -*/}} -{{- define "backstage.app.serviceAccountName" -}} -{{- if .Values.app.serviceAccount.create -}} - {{ default "default" .Values.app.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.app.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the service account to use for the backend -*/}} -{{- define "backstage.backend.serviceAccountName" -}} -{{- if .Values.backend.serviceAccount.create -}} - {{ default default .Values.backend.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.backend.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Path to the CA certificate file in the backend -*/}} -{{- define "backstage.backend.postgresCaFilename" -}} -{{ include "backstage.backend.postgresCaDir" . }}/{{- required "The name for the CA certificate file for postgresql is required" .Values.global.postgresql.caFilename }} -{{- end -}} -{{/* - -{{/* -Directory path to the CA certificate file in the backend -*/}} -{{- define "backstage.backend.postgresCaDir" -}} -{{- if .Values.appConfig.backend.database.connection.ssl.ca -}} - {{ .Values.appConfig.backend.database.connection.ssl.ca }} -{{- else -}} -/etc/postgresql -{{- end -}} -{{- end -}} -{{/* - -Path to the CA certificate file in lighthouse -*/}} -{{- define "backstage.lighthouse.postgresCaFilename" -}} -{{ include "backstage.lighthouse.postgresCaDir" . }}/{{- required "The name for the CA certificate file for postgresql is required" .Values.global.postgresql.caFilename }} -{{- end -}} - -{{/* -Directory path to the CA certificate file in lighthouse -*/}} -{{- define "backstage.lighthouse.postgresCaDir" -}} -{{- if .Values.lighthouse.database.pathToDatabaseCa -}} - {{ .Values.lighthouse.database.pathToDatabaseCa }} -{{- else -}} -/etc/postgresql -{{- end -}} -{{- end -}} -{{/* - -{{/* -Generate ca for postgresql -*/}} -{{- define "backstage.postgresql.generateCA" -}} -{{- $ca := .ca | default (genCA (include "backstage.postgresql.fullname" .) 365) -}} -{{- $_ := set . "ca" $ca -}} -{{- $ca.Cert -}} -{{- end -}} - -{{/* -Generate certificates for postgresql -*/}} -{{- define "generateCerts" -}} -{{- $postgresName := (include "backstage.postgresql.fullname" .) }} -{{- $altNames := list $postgresName ( printf "%s.%s" $postgresName .Release.Namespace ) ( printf "%s.%s.svc" ( $postgresName ) .Release.Namespace ) -}} -{{- $ca := .ca | default (genCA (include "backstage.postgresql.fullname" .) 365) -}} -{{- $_ := set . "ca" $ca -}} -{{- $cert := genSignedCert ( $postgresName ) nil $altNames 365 $ca -}} -tls.crt: {{ $cert.Cert | b64enc }} -tls.key: {{ $cert.Key | b64enc }} -{{- end -}} - -{{/* -Generate a password for the postgres user used for the connections from the backend and lighthouse -*/}} -{{- define "postgresql.generateUserPassword" -}} -{{- $pgPassword := .pgPassword | default ( randAlphaNum 12 ) -}} -{{- $_ := set . "pgPassword" $pgPassword -}} -{{ $pgPassword}} -{{- end -}} - -{{/* -Name of the backend service -*/}} -{{- define "backend.serviceName" -}} -{{ include "backstage.fullname" . }}-backend -{{- end -}} - -{{/* -Name of the frontend service -*/}} -{{- define "frontend.serviceName" -}} -{{ include "backstage.fullname" . }}-frontend -{{- end -}} - -{{/* -Name of the lighthouse backend service -*/}} -{{- define "lighthouse.serviceName" -}} -{{ include "backstage.fullname" . }}-lighthouse -{{- end -}} - -{{/* -Name of the postgresql service -*/}} -{{- define "postgresql.serviceName" -}} -{{- include "backstage.postgresql.fullname" . }} -{{- end -}} - -{{/* -Postgres host for lighthouse -*/}} -{{- define "lighthouse.postgresql.host" -}} -{{- if .Values.postgresql.enabled }} -{{- include "postgresql.serviceName" . }} -{{- else -}} -{{- required "A valid .Values.lighthouse.database.connection.host is required when postgresql is not enabled" .Values.lighthouse.database.connection.host -}} -{{- end -}} -{{- end -}} - -{{/* -Postgres host for the backend -*/}} -{{- define "backend.postgresql.host" -}} -{{- if .Values.postgresql.enabled }} -{{- include "postgresql.serviceName" . }} -{{- else -}} -{{- required "A valid .Values.appConfig.backend.database.connection.host is required when postgresql is not enabled" .Values.appConfig.backend.database.connection.host -}} -{{- end -}} -{{- end -}} - -{{/* -Postgres port for the backend -*/}} -{{- define "backend.postgresql.port" -}} -{{- if .Values.postgresql.enabled }} -{{- .Values.postgresql.service.port }} -{{- else if .Values.appConfig.backend.database.connection.port -}} -{{- .Values.appConfig.backend.database.connection.port }} -{{- else -}} -5432 -{{- end -}} -{{- end -}} - -{{/* -Postgres port for lighthouse -*/}} -{{- define "lighthouse.postgresql.port" -}} -{{- if .Values.postgresql.enabled }} -{{- .Values.postgresql.service.port }} -{{- else if .Values.lighthouse.database.connection.port -}} -{{- .Values.lighthouse.database.connection.port }} -{{- else -}} -5432 -{{- end -}} -{{- end -}} - -{{/* -Postgres user for backend -*/}} -{{- define "backend.postgresql.user" -}} -{{- if .Values.postgresql.enabled }} -{{- .Values.global.postgresql.postgresqlUsername }} -{{- else -}} -{{- required "A valid .Values.appConfig.backend.database.connection.user is required when postgresql is not enabled" .Values.appConfig.backend.database.connection.user -}} -{{- end -}} -{{- end -}} - -{{/* -Postgres user for lighthouse -*/}} -{{- define "lighthouse.postgresql.user" -}} -{{- if .Values.postgresql.enabled }} -{{- .Values.global.postgresql.postgresqlUsername }} -{{- else -}} -{{- required "A valid .Values.lighthouse.database.connection.user is required when postgresql is not enabled" .Values.lighthouse.database.connection.user -}} -{{- end -}} -{{- end -}} - -{{/* -Postgres password secret for backend -*/}} -{{- define "backend.postgresql.passwordSecret" -}} -{{- if .Values.postgresql.enabled }} -{{- template "backstage.postgresql.fullname" . }} -{{- else -}} -{{ $secretName := (printf "%s-backend-postgres" (include "backstage.fullname" . )) }} -{{- required "A valid .Values.appConfig.backend.database.connection.password is required when postgresql is not enabled" $secretName -}} -{{- end -}} -{{- end -}} - -{{/* -Postgres password for lighthouse -*/}} -{{- define "lighthouse.postgresql.passwordSecret" -}} -{{- if .Values.postgresql.enabled }} -{{- template "backstage.postgresql.fullname" . }} -{{- else -}} -{{ $secretName := (printf "%s-lighthouse-postgres" (include "backstage.fullname" . )) }} -{{- required "A valid .Values.lighthouse.database.connection.password is required when postgresql is not enabled" $secretName -}} -{{- end -}} -{{- end -}} - -{{/* -app-config file name -*/}} -{{- define "backstage.appConfigFilename" -}} -{{- "app-config.development.yaml" -}} -{{- end -}} diff --git a/contrib/chart/backstage/templates/backend-deployment.yaml b/contrib/chart/backstage/templates/backend-deployment.yaml deleted file mode 100644 index 0fa6b7fbe2..0000000000 --- a/contrib/chart/backstage/templates/backend-deployment.yaml +++ /dev/null @@ -1,98 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backstage.fullname" . }}-backend - -spec: - replicas: {{ .Values.backend.replicaCount }} - - selector: - matchLabels: - app: backstage - component: backend - - template: - metadata: - annotations: - ad.datadoghq.com/backstage.logs: '[{"source":"backstage","service":"backend"}]' - labels: - app: backstage - component: backend - - spec: - {{- if .Values.dockerRegistrySecretName }} - imagePullSecrets: - - name: {{ .Values.dockerRegistrySecretName }} - {{- end}} - containers: - - name: {{ .Chart.Name }}-backend - command: ["node"] - args: - - "packages/backend" - - "--config" - - "app-config.yaml" - - "--config" - - {{ printf "/usr/src/app/%s" (include "backstage.appConfigFilename" .) | quote }} - image: {{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }} - imagePullPolicy: {{ .Values.backend.image.pullPolicy }} - ports: - - containerPort: {{ .Values.backend.containerPort }} - resources: - {{- toYaml .Values.backend.resources | nindent 12 }} - - envFrom: - - secretRef: - name: {{ include "backstage.fullname" . }}-backend - - configMapRef: - name: {{ include "backstage.fullname" . }}-app-env - - configMapRef: - name: {{ include "backstage.fullname" . }}-auth - env: - - name: NODE_ENV - value: {{ .Values.backend.nodeEnv | default "development" }} - - name: APP_CONFIG_backend_database_connection_password - valueFrom: - secretKeyRef: - name: {{ include "backend.postgresql.passwordSecret" .}} - key: postgresql-password - volumeMounts: - {{- if .Values.backend.postgresCertMountEnabled }} - - name: postgres-ca - mountPath: {{ include "backstage.backend.postgresCaDir" . }} - {{- end }} - - name: app-config - mountPath: {{ printf "/usr/src/app/%s" (include "backstage.appConfigFilename" .) }} - subPath: {{ include "backstage.appConfigFilename" . }} - - volumes: - {{- if .Values.backend.postgresCertMountEnabled }} - - name: postgres-ca - configMap: - name: {{ include "backstage.fullname" . }}-postgres-ca - {{- end }} - - name: app-config - configMap: - name: {{ include "backstage.fullname" . }}-app-config - - {{- if .Values.global.nodeSelector }} - nodeSelector: {{- toYaml .Values.global.nodeSelector | nindent 8 }} - {{- end }} - -{{- if .Values.backend.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "backend.serviceName" . }} - -spec: - ports: - - port: 80 - targetPort: {{ .Values.backend.containerPort }} - - selector: - app: backstage - component: backend - - type: {{ .Values.backend.serviceType }} -{{- end }} diff --git a/contrib/chart/backstage/templates/backend-secret.yaml b/contrib/chart/backstage/templates/backend-secret.yaml deleted file mode 100644 index 299d893ec4..0000000000 --- a/contrib/chart/backstage/templates/backend-secret.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.backend.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backstage.fullname" . }}-backend -type: Opaque -stringData: - AUTH_GOOGLE_CLIENT_SECRET: {{ .Values.auth.google.clientSecret }} - AUTH_GITHUB_CLIENT_SECRET: {{ .Values.auth.github.clientSecret }} - AUTH_GITLAB_CLIENT_SECRET: {{ .Values.auth.gitlab.clientSecret }} - AUTH_OKTA_CLIENT_SECRET: {{ .Values.auth.okta.clientSecret }} - AUTH_OAUTH2_CLIENT_SECRET: {{ .Values.auth.oauth2.clientSecret }} - AUTH_AUTH0_CLIENT_SECRET: {{ .Values.auth.auth0.clientSecret }} - AUTH_MICROSOFT_CLIENT_SECRET: {{ .Values.auth.microsoft.clientSecret }} - SENTRY_TOKEN: {{ .Values.auth.sentryToken }} - ROLLBAR_ACCOUNT_TOKEN: {{ .Values.auth.rollbarAccountToken }} - CIRCLECI_AUTH_TOKEN: {{ .Values.auth.circleciAuthToken }} - GITHUB_TOKEN: {{ .Values.auth.githubToken }} - GITLAB_TOKEN: {{ .Values.auth.gitlabToken }} - AZURE_TOKEN: {{ .Values.auth.azure.api.token }} - NEW_RELIC_REST_API_KEY: {{ .Values.auth.newRelicRestApiKey }} - TRAVISCI_AUTH_TOKEN: {{ .Values.auth.travisciAuthToken }} - PAGERDUTY_TOKEN: {{ .Values.auth.pagerdutyToken }} -{{- end }} diff --git a/contrib/chart/backstage/templates/backstage-app-config.yaml b/contrib/chart/backstage/templates/backstage-app-config.yaml deleted file mode 100644 index 061fc3285b..0000000000 --- a/contrib/chart/backstage/templates/backstage-app-config.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "backstage.fullname" . }}-app-config -data: -{{ include "backstage.appConfigFilename" . | indent 2 }}: | -{{ tpl (.Files.Get "files/app-config.development.yaml.tpl") . | indent 4 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "backstage.fullname" . }}-app-env -data: - APP_CONFIG_app_baseUrl: {{ .Values.appConfig.app.baseUrl | quote | quote }} - APP_CONFIG_app_title: {{ .Values.appConfig.app.title | quote | quote }} - APP_CONFIG_backend_baseUrl: {{ .Values.appConfig.backend.baseUrl | quote | quote }} - APP_CONFIG_backend_cors_origin: {{ .Values.appConfig.backend.cors.origin | quote | quote }} - APP_CONFIG_techdocs_storageUrl: {{ .Values.appConfig.techdocs.storageUrl | quote | quote }} - APP_CONFIG_techdocs_requestUrl: {{ .Values.appConfig.techdocs.requestUrl | quote | quote }} - APP_CONFIG_lighthouse_baseUrl: {{ .Values.appConfig.lighthouse.baseUrl | quote | quote }} - APP_CONFIG_backend_database_connection_ssl_rejectUnauthorized: "false" - APP_CONFIG_auth_providers_github_development_appOrigin: {{ .Values.appConfig.auth.providers.github.development.appOrigin | quote | quote }} - APP_CONFIG_auth_providers_google_development_appOrigin: {{ .Values.appConfig.auth.providers.google.development.appOrigin | quote | quote }} - APP_CONFIG_auth_providers_gitlab_development_appOrigin: {{ .Values.appConfig.auth.providers.gitlab.development.appOrigin | quote | quote }} - APP_CONFIG_auth_providers_okta_development_appOrigin: {{ .Values.appConfig.auth.providers.okta.development.appOrigin | quote | quote }} - APP_CONFIG_auth_providers_oauth2_development_appOrigin: {{ .Values.appConfig.auth.providers.oauth2.development.appOrigin | quote | quote }} - diff --git a/contrib/chart/backstage/templates/backstage-auth-config.yaml b/contrib/chart/backstage/templates/backstage-auth-config.yaml deleted file mode 100644 index 7dcf8379aa..0000000000 --- a/contrib/chart/backstage/templates/backstage-auth-config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "backstage.fullname" . }}-auth -data: - AUTH_GOOGLE_CLIENT_ID: {{ .Values.auth.google.clientId }} - AUTH_GITHUB_CLIENT_ID: {{ .Values.auth.github.clientId }} - AUTH_GITLAB_CLIENT_ID: {{ .Values.auth.gitlab.clientId }} - # This should not be prefixed with AUTH_. This could be a typo in the Backstage app config. - # Regardless, it is not decided by me. - GITLAB_BASE_URL: {{ .Values.auth.gitlab.baseUrl }} - AUTH_OKTA_CLIENT_ID: {{ .Values.auth.okta.clientId }} - AUTH_OKTA_AUDIENCE: {{ .Values.auth.okta.audience }} - AUTH_OAUTH2_CLIENT_ID: {{ .Values.auth.oauth2.clientId }} - AUTH_OAUTH2_AUTH_URL: {{ .Values.auth.oauth2.authUrl }} - AUTH_OAUTH2_TOKEN_URL: {{ .Values.auth.oauth2.tokenUrl }} - AUTH_AUTH0_CLIENT_ID: {{ .Values.auth.auth0.clientId }} - AUTH_AUTH0_DOMAIN: {{ .Values.auth.auth0.domain }} - AUTH_MICROSOFT_CLIENT_ID: {{ .Values.auth.microsoft.clientId }} - AUTH_MICROSOFT_TENANT_ID: {{ .Values.auth.microsoft.tenantId }} - diff --git a/contrib/chart/backstage/templates/frontend-deployment.yaml b/contrib/chart/backstage/templates/frontend-deployment.yaml deleted file mode 100644 index dba4e2c96a..0000000000 --- a/contrib/chart/backstage/templates/frontend-deployment.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.frontend.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backstage.fullname" . }}-frontend - -spec: - replicas: {{ .Values.frontend.replicaCount }} - - selector: - matchLabels: - app: backstage - component: frontend - - template: - metadata: - annotations: - ad.datadoghq.com/backstage.logs: '[{"source":"backstage","service":"frontend"}]' - labels: - app: backstage - component: frontend - - spec: - {{- if .Values.dockerRegistrySecretName }} - imagePullSecrets: - - name: {{ .Values.dockerRegistrySecretName }} - {{- end}} - containers: - - name: {{ .Chart.Name }}-frontend - image: {{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag }} - imagePullPolicy: {{ .Values.frontend.image.pullPolicy }} - ports: - - containerPort: {{ .Values.frontend.containerPort }} - resources: - {{- toYaml .Values.frontend.resources | nindent 12 }} - envFrom: - - configMapRef: - name: {{ include "backstage.fullname" . }}-app-env - volumeMounts: - - name: app-config - mountPath: {{ printf "/usr/share/nginx/html/static/%s" (include "backstage.appConfigFilename" .) }} - subPath: {{ include "backstage.appConfigFilename" . }} - volumes: - - name: app-config - configMap: - name: {{ include "backstage.fullname" . }}-app-config - {{- if .Values.global.nodeSelector }} - nodeSelector: {{- toYaml .Values.global.nodeSelector | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "frontend.serviceName" . }} - -spec: - ports: - - port: 80 - targetPort: {{ .Values.frontend.containerPort }} - - selector: - app: backstage - component: frontend - - type: {{ .Values.frontend.serviceType }} -{{- end }} diff --git a/contrib/chart/backstage/templates/ingress.yaml b/contrib/chart/backstage/templates/ingress.yaml deleted file mode 100644 index 7e008c5d9d..0000000000 --- a/contrib/chart/backstage/templates/ingress.yaml +++ /dev/null @@ -1,150 +0,0 @@ -{{- $frontendUrl := urlParse .Values.appConfig.app.baseUrl}} -{{- $backendUrl := urlParse .Values.appConfig.backend.baseUrl}} -{{- $lighthouseUrl := urlParse .Values.appConfig.lighthouse.baseUrl}} - -{{/* Determine the api type for the ingress */}} -{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} -apiVersion: networking.k8s.io/v1 -{{- else -}} -apiVersion: networking.k8s.io/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ include "backstage.fullname" . }}-ingress - annotations: - {{- if .Values.issuer.email }} - cert-manager.io/cluster-issuer: {{ .Values.issuer.clusterIssuer }} - {{- end }} - nginx.ingress.kubernetes.io/ssl-redirect: "false" - nginx.ingress.kubernetes.io/configuration-snippet: | - if ($scheme = https) { - add_header Strict-Transport-Security "max-age=0;"; - } - {{- toYaml .Values.ingress.annotations | nindent 4 }} -spec: - tls: - - secretName: {{ include "backstage.fullname" . }}-tls - hosts: - - {{ $frontendUrl.host }} - - {{ $backendUrl.host }} - - {{ $lighthouseUrl.host }} - rules: - - host: {{ $frontendUrl.host }} - http: - paths: - - path: / - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - pathType: Prefix - {{- end }} - backend: - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - service: - name: {{ include "frontend.serviceName" . }} - port: - number: 80 - {{- else -}} - serviceName: {{ include "frontend.serviceName" . }} - servicePort: 80 - {{- end }} - {{/* Route the backend inside the same hostname as the frontend when they are the same */}} - {{- if eq $frontendUrl.host $backendUrl.host}} - - path: /api/ - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - pathType: Prefix - {{- end }} - backend: - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - service: - name: {{ include "backend.serviceName" . }} - port: - number: 80 - {{- else -}} - serviceName: {{ include "backend.serviceName" . }} - servicePort: 80 - {{- end }} - {{/* Route the backend through a different host */}} - {{- else -}} - - host: {{ $backendUrl.host }} - http: - paths: - - path: {{ $backendUrl.path | default "/" }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - pathType: Prefix - {{- end }} - backend: - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - service: - name: {{ include "backend.serviceName" . }} - port: - number: 80 - {{- else -}} - serviceName: {{ include "backend.serviceName" . }} - servicePort: 80 - {{- end }} - {{- end }} - -{{/* Route lighthouse through a different host */}} -{{- if not ( eq $frontendUrl.host $lighthouseUrl.host ) }} - - host: {{ $lighthouseUrl.host }} - http: - paths: - - path: {{ $lighthouseUrl.path | default "/" }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - pathType: Prefix - {{- end }} - backend: - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - service: - name: {{ include "lighthouse.serviceName" . }} - port: - number: 80 - {{- else -}} - serviceName: {{ include "lighthouse.serviceName" . }} - servicePort: 80 - {{- end }} -{{- else }} -{{/* Route lighthouse by path with re-write rules when it is hosted under the same hostname */}} ---- -{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} -apiVersion: networking.k8s.io/v1 -{{- else -}} -apiVersion: networking.k8s.io/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ include "backstage.fullname" . }}-ingress-lighthouse - annotations: - {{- if .Values.issuer.email }} - cert-manager.io/cluster-issuer: {{ .Values.issuer.clusterIssuer }} - {{- end }} - nginx.ingress.kubernetes.io/rewrite-target: /$2 - nginx.ingress.kubernetes.io/ssl-redirect: "false" - nginx.ingress.kubernetes.io/configuration-snippet: | - if ($scheme = https) { - add_header Strict-Transport-Security "max-age=0;"; - } - {{- toYaml .Values.ingress.annotations | nindent 4 }} -spec: - tls: - - secretName: {{ include "backstage.fullname" . }}-tls - hosts: - - {{ $lighthouseUrl.host }} - rules: - - host: {{ $frontendUrl.host }} - http: - paths: - - path: {{$lighthouseUrl.path}}(/|$)(.*) - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - pathType: Prefix - {{- end }} - backend: - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" }} - service: - name: {{ include "lighthouse.serviceName" . }} - port: - number: 80 - {{- else -}} - serviceName: {{ include "lighthouse.serviceName" . }} - servicePort: 80 - {{- end }} -{{- end }} diff --git a/contrib/chart/backstage/templates/issuer.yaml b/contrib/chart/backstage/templates/issuer.yaml deleted file mode 100644 index d129c8c701..0000000000 --- a/contrib/chart/backstage/templates/issuer.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if (and (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") .Values.issuer.email ) -}} -{{/* Only install issuer if it doesn't already exist in the cluster */}} -{{- if not ( lookup "cert-manager.io/v1alpha2" "ClusterIssuer" "" .Values.issuer.clusterIssuer ) }} -apiVersion: cert-manager.io/v1alpha2 -kind: ClusterIssuer -metadata: - name: {{ .Values.issuer.clusterIssuer }} -spec: - acme: - server: https://acme-v02.api.letsencrypt.org/directory - email: {{ required "expected a valid .Values.issuer.email to enable ClusterIssuer" .Values.issuer.email }} - privateKeySecretRef: - name: {{ required "expected .Values.issuer.cluster-issuer to not be empty (letsencrypt-prod | letsencrypt-staging)" .Values.issuer.clusterIssuer }} - solvers: - - http01: - ingress: - class: nginx -{{- end -}} -{{- end -}} diff --git a/contrib/chart/backstage/templates/lighthouse-config.yaml b/contrib/chart/backstage/templates/lighthouse-config.yaml deleted file mode 100644 index 7b8cad42dc..0000000000 --- a/contrib/chart/backstage/templates/lighthouse-config.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.lighthouse.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "backstage.fullname" . -}}-lighthouse -data: - PGDATABASE: {{ .Values.lighthouse.database.connection.database | quote }} - PGUSER: {{ include "lighthouse.postgresql.user" . | quote }} - PGPORT: {{ include "lighthouse.postgresql.port" . | quote }} - PGHOST: {{ include "lighthouse.postgresql.host" . | quote }} - PGPATH_TO_CA: {{ include "backstage.lighthouse.postgresCaFilename" . | quote }} -{{- end }} \ No newline at end of file diff --git a/contrib/chart/backstage/templates/lighthouse-deployment.yaml b/contrib/chart/backstage/templates/lighthouse-deployment.yaml deleted file mode 100644 index 849c48d7a6..0000000000 --- a/contrib/chart/backstage/templates/lighthouse-deployment.yaml +++ /dev/null @@ -1,86 +0,0 @@ -{{- if .Values.lighthouse.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backstage.fullname" . }}-lighthouse - -spec: - replicas: {{ .Values.lighthouse.replicaCount }} - - selector: - matchLabels: - app: backstage - component: lighthouse-audit-service - - template: - metadata: - annotations: - ad.datadoghq.com/backstage.logs: '[{"source":"backstage","service":"lighthouse"}]' - labels: - app: backstage - component: lighthouse-audit-service - - spec: - {{- if .Values.dockerRegistrySecretName }} - imagePullSecrets: - - name: {{ .Values.dockerRegistrySecretName }} - {{- end}} - containers: - - name: lighthouse-audit-service - image: {{ .Values.lighthouse.image.repository }}:{{ .Values.lighthouse.image.tag }} - imagePullPolicy: {{ .Values.lighthouse.image.pullPolicy }} - ports: - - containerPort: {{ .Values.lighthouse.containerPort }} - resources: - {{- toYaml .Values.lighthouse.resources | nindent 12 }} - - envFrom: - - configMapRef: - name: {{ include "backstage.fullname" . -}}-lighthouse - - configMapRef: - name: {{ include "backstage.fullname" . }}-app-env - - env: - - name: LAS_PORT - value: {{ .Values.lighthouse.containerPort | quote }} - - name: LAS_CORS - value: "true" - - name: PGPASSWORD - valueFrom: - secretKeyRef: - name: {{ include "lighthouse.postgresql.passwordSecret" . }} - key: postgresql-password - - {{- if .Values.lighthouse.postgresCertMountEnabled }} - volumeMounts: - - name: postgres-ca - mountPath: {{ include "backstage.lighthouse.postgresCaDir" . }} - {{- end }} - - {{- if .Values.lighthouse.postgresCertMountEnabled }} - volumes: - - name: postgres-ca - configMap: - name: {{ include "backstage.fullname" . }}-postgres-ca - {{- end }} - - {{- if .Values.global.nodeSelector }} - nodeSelector: {{- toYaml .Values.global.nodeSelector | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "lighthouse.serviceName" . }} - -spec: - ports: - - port: 80 - targetPort: {{ .Values.lighthouse.containerPort }} - - selector: - app: backstage - component: lighthouse-audit-service - - type: {{ .Values.lighthouse.serviceType }} -{{- end }} diff --git a/contrib/chart/backstage/templates/postgresql-ca-config.yaml b/contrib/chart/backstage/templates/postgresql-ca-config.yaml deleted file mode 100644 index 2631989f4e..0000000000 --- a/contrib/chart/backstage/templates/postgresql-ca-config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Values.postgresql.enabled }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "backstage.fullname" . }}-postgres-ca - labels: - app: {{ include "backstage.postgresql.fullname" . }} - release: {{ .Release.Name }} - annotations: - "helm.sh/hook": "pre-install" - "helm.sh/hook-delete-policy": "before-hook-creation" -data: - {{ .Values.global.postgresql.caFilename }}: | -{{ include "backstage.postgresql.generateCA" . | indent 4}} -{{- else }} -{{- $caConfig := printf "%s-postgres-ca" (include "backstage.fullname" .) }} -{{- if not ( lookup "v1" "ConfigMap" .Release.Namespace $caConfig ) }} -{{- fail (printf "\n\nPlease create the '%s' configmap with the CA certificate for your existing postgresql: kubectl create configmap %s --from-file=ca.crt" $caConfig $caConfig) }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/contrib/chart/backstage/templates/postgresql-certs-secret.yaml b/contrib/chart/backstage/templates/postgresql-certs-secret.yaml deleted file mode 100644 index c6845caa7e..0000000000 --- a/contrib/chart/backstage/templates/postgresql-certs-secret.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.postgresql.enabled }} ---- -apiVersion: v1 -kind: Secret -type: kubernetes.io/tls -metadata: - name: {{ required ".Values.postgresql.tls.certificatesSecret is required" .Values.postgresql.tls.certificatesSecret }} - labels: - app: {{ include "backstage.postgresql.fullname" . }} - release: {{ .Release.Name }} - annotations: - "helm.sh/hook": "pre-install" - "helm.sh/hook-delete-policy": "before-hook-creation" -data: -{{ include "generateCerts" . | indent 2 }} -{{- end }} diff --git a/contrib/chart/backstage/templates/postgresql-initdb-secret.yaml b/contrib/chart/backstage/templates/postgresql-initdb-secret.yaml deleted file mode 100644 index d1c446f79f..0000000000 --- a/contrib/chart/backstage/templates/postgresql-initdb-secret.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.postgresql.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ required ".Values.postgresql.initdbScriptsSecret is required" .Values.postgresql.initdbScriptsSecret }} - annotations: - "helm.sh/hook": "pre-install" - "helm.sh/hook-delete-policy": "before-hook-creation" -type: Opaque -data: - create-backend-dbs.sql: | - {{ tpl (.Files.Get "files/create-backend-dbs.sql") . | b64enc }} -{{- end }} - diff --git a/contrib/chart/backstage/templates/postgresql-password-backend-secret.yaml b/contrib/chart/backstage/templates/postgresql-password-backend-secret.yaml deleted file mode 100644 index a71cef7b21..0000000000 --- a/contrib/chart/backstage/templates/postgresql-password-backend-secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if not .Values.postgresql.enabled }} ---- -apiVersion: v1 -kind: Secret -type: Opaque -metadata: - name: {{ include "backend.postgresql.passwordSecret" . }} - labels: - release: {{ .Release.Name }} - annotations: - "helm.sh/hook": "pre-install,pre-upgrade" - "helm.sh/hook-delete-policy": "before-hook-creation" -data: - postgresql-password: {{ .Values.appConfig.backend.database.connection.password | b64enc }} -{{- end }} diff --git a/contrib/chart/backstage/templates/postgresql-password-lighthouse-secret.yaml b/contrib/chart/backstage/templates/postgresql-password-lighthouse-secret.yaml deleted file mode 100644 index e7374e70db..0000000000 --- a/contrib/chart/backstage/templates/postgresql-password-lighthouse-secret.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.lighthouse.enabled }} -{{- if not .Values.postgresql.enabled }} ---- -apiVersion: v1 -kind: Secret -type: Opaque -metadata: - name: {{ include "lighthouse.postgresql.passwordSecret" . }} - labels: - release: {{ .Release.Name }} - annotations: - "helm.sh/hook": "pre-install,pre-upgrade" - "helm.sh/hook-delete-policy": "before-hook-creation" -data: - postgresql-password: {{ .Values.lighthouse.database.connection.password | b64enc }} -{{- end }} -{{- end }} diff --git a/contrib/chart/backstage/templates/tests/test-app-connection.yaml b/contrib/chart/backstage/templates/tests/test-app-connection.yaml deleted file mode 100644 index 93f51f3f09..0000000000 --- a/contrib/chart/backstage/templates/tests/test-app-connection.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -apiVersion: v1 -kind: Pod -metadata: - name: {{ include "backstage.fullname" . -}}-test-app-connection - annotations: - "helm.sh/hook": test -spec: - containers: - - name: test-app - image: busybox - command: - - /bin/sh - - -ecx - - | - echo -e "===== Testing the connection with the frontend...\n" - wget -q -O - {{ printf "%s.%s" (include "frontend.serviceName" .) .Release.Namespace | quote }} - echo -e "\n\n===== Testing the connection with the backend...\n" - wget -q -O - {{ printf "http://%s.%s/catalog/entities" (include "backend.serviceName" .) .Release.Namespace | quote }} - echo -e "\n\n===== Testing the connection with the lighthouse plugin...\n" - wget -q -O - {{ printf "%s.%s/v1/audits" (include "lighthouse.serviceName" .) .Release.Namespace | quote }} - echo -e "\n" - restartPolicy: Never \ No newline at end of file diff --git a/contrib/chart/backstage/templates/tests/test-postgresql.yaml b/contrib/chart/backstage/templates/tests/test-postgresql.yaml deleted file mode 100644 index 8eec1db452..0000000000 --- a/contrib/chart/backstage/templates/tests/test-postgresql.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.postgresql.enabled}} ---- -apiVersion: v1 -kind: Pod -metadata: - name: {{ include "backstage.name" . -}}-test-postgres - annotations: - "helm.sh/hook": test -spec: - containers: - - name: postgresql-client - image: bitnami/postgresql - env: - - name: PG_HOST - value: {{ include "postgresql.serviceName" . | quote }} - - name: PG_PORT - value: {{ .Values.postgresql.service.port | quote }} - - name: PG_USER - value: {{ .Values.global.postgresql.postgresqlUsername | quote }} - - name: PGPASSWORD - valueFrom: - secretKeyRef: - name: {{ include "backend.postgresql.passwordSecret" .}} - key: postgresql-password - - name: PG_DBNAME - value: {{ .Values.appConfig.backend.database.connection.database }} - command: - - /bin/bash - - -ecx - - | - psql --host=$PG_HOST --port=$PG_PORT --username=$PG_USER --dbname=$PG_DBNAME --no-password - restartPolicy: Never -{{- end }} \ No newline at end of file diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml deleted file mode 100644 index cd80fd954b..0000000000 --- a/contrib/chart/backstage/values.yaml +++ /dev/null @@ -1,216 +0,0 @@ -# Default values for backstage. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -frontend: - enabled: false - replicaCount: 1 - image: - repository: martinaif/backstage-k8s-demo-frontend - tag: test1 - pullPolicy: IfNotPresent - containerPort: 80 - serviceType: ClusterIP - resources: - requests: - memory: 128Mi - limits: - memory: 256Mi - -backend: - enabled: true - nodeEnv: development - demoData: true - replicaCount: 1 - image: - repository: martinaif/backstage-k8s-demo-backend - tag: 20210423T1550 - pullPolicy: IfNotPresent - containerPort: 7007 - serviceType: ClusterIP - postgresCertMountEnabled: true - resources: - requests: - memory: 512Mi - limits: - memory: 1024Mi - -lighthouse: - enabled: true - replicaCount: 1 - image: - repository: roadiehq/lighthouse-audit-service - tag: latest - pullPolicy: IfNotPresent - containerPort: 3003 - serviceType: ClusterIP - postgresCertMountEnabled: true - resources: - requests: - memory: 128Mi - limits: - memory: 256Mi - database: - connection: - port: - host: - user: - password: - database: lighthouse_audit_service - pathToDatabaseCa: - -nameOverride: '' -fullnameOverride: '' - -ingress: - annotations: - kubernetes.io/ingress.class: nginx - -issuer: - email: - clusterIssuer: 'letsencrypt-staging' - -global: - postgresql: - postgresqlUsername: backend-user - caFilename: ca.crt - nodeSelector: {} - -postgresql: - enabled: true - nameOverride: postgresql - tls: - enabled: true - certificatesSecret: backstage-postgresql-certs - certFilename: tls.crt - certKeyFilename: tls.key - volumePermissions: - enabled: true - initdbScriptsSecret: backstage-postgresql-initdb - -appConfig: - app: - baseUrl: https://demo.example.com - title: Backstage - backend: - baseUrl: https://demo.example.com - listen: - port: 7007 - cors: - origin: https://demo.example.com - database: - client: pg - connection: - database: backstage_plugin_catalog - host: - user: - port: - password: - ssl: - rejectUnauthorized: false - ca: - sentry: - organization: example-org-name - techdocs: - storageUrl: https://demo.example.com/api/techdocs/static/docs - requestUrl: https://demo.example.com/api/techdocs - lighthouse: - baseUrl: https://demo.example.com/lighthouse-api - rollbar: - organization: example-org-name - - # Auth config has recently moved into the app config file in upstream Backstage. However, - # most of this config simply mandates that items like the client id and client secret should - # be picked up from the environment variables named below. Those environment variables are - # set in this helm controlled environment by the 'auth' configuration below this section. - # Thus, the only key in this config which directly controls an app config is the - # auth.providers.github.development.appOrigin property. - auth: - providers: - google: - development: - appOrigin: 'http://localhost:3000/' - secure: false - clientId: ${AUTH_GOOGLE_CLIENT_ID} - clientSecret: ${AUTH_GOOGLE_CLIENT_SECRET} - github: - development: - appOrigin: 'http://localhost:3000/' - secure: false - clientId: ${AUTH_GITHUB_CLIENT_ID} - clientSecret: ${AUTH_GITHUB_CLIENT_SECRET} - enterpriseInstanceUrl: ${AUTH_GITHUB_ENTERPRISE_INSTANCE_URL} - gitlab: - development: - appOrigin: 'http://localhost:3000/' - secure: false - clientId: ${AUTH_GITLAB_CLIENT_ID} - clientSecret: ${AUTH_GITLAB_CLIENT_SECRET} - audience: ${GITLAB_BASE_URL} - okta: - development: - appOrigin: 'http://localhost:3000/' - secure: false - clientId: ${AUTH_OKTA_CLIENT_ID} - clientSecret: ${AUTH_OKTA_CLIENT_SECRET} - audience: ${AUTH_OKTA_AUDIENCE} - oauth2: - development: - appOrigin: 'http://localhost:3000/' - secure: false - clientId: ${AUTH_OAUTH2_CLIENT_ID} - clientSecret: ${AUTH_OAUTH2_CLIENT_SECRET} - authorizationURL: ${AUTH_OAUTH2_AUTH_URL} - tokenURL: ${AUTH_OAUTH2_TOKEN_URL} - auth0: - development: - clientId: ${AUTH_AUTH0_CLIENT_ID} - clientSecret: ${AUTH_AUTH0_CLIENT_SECRET} - domain: ${AUTH_AUTH0_DOMAIN} - microsoft: - development: - clientId: ${AUTH_MICROSOFT_CLIENT_ID} - clientSecret: ${AUTH_MICROSOFT_CLIENT_SECRET} - tenantId: ${AUTH_MICROSOFT_TENANT_ID} - -auth: - google: - clientId: a - clientSecret: a - github: - clientId: c - clientSecret: c - gitlab: - clientId: b - clientSecret: b - baseUrl: b - okta: - clientId: b - clientSecret: b - audience: b - oauth2: - clientId: b - clientSecret: b - authUrl: b - tokenUrl: b - auth0: - clientId: b - clientSecret: b - domain: b - microsoft: - clientId: f - clientSecret: f - tenantId: f - azure: - api: - token: h - sentryToken: e - rollbarAccountToken: f - # This is a 'Personal Access Token' - circleciAuthToken: r - # Used by the scaffolder to create GitHub repos. Must have 'repo' scope. - githubToken: g - gitlabToken: g - newRelicRestApiKey: r - travisciAuthToken: fake-travis-ci-auth-token - pagerdutyToken: h diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index 4c44c8ae65..8b71151ee9 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -88,7 +88,7 @@ Install cookie-parser: ```bash # From your Backstage root directory -yarn add --cwd packages/backend cookie-parser +yarn --cwd packages/backend add cookie-parser ``` Update routes in `packages/backend/src/index.ts`: @@ -223,7 +223,7 @@ Install cookie-parser: ```bash # From your Backstage root directory -yarn add --cwd packages/backend cookie-parser @types/cookie-parser +yarn --cwd packages/backend add cookie-parser @types/cookie-parser ``` Create a custom configured `rootHttpRouterService` in `packages/backend/src/customRootHttpRouterService.ts`: diff --git a/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md b/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md index 9ec3f1ca64..deef356d84 100644 --- a/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md +++ b/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md @@ -1,66 +1,65 @@ # Running the backend behind a Corporate Proxy -Let's admit it, we've all been there. Sometimes you've gotta run stuff with no way out to the public internet, only the smallest of corporate proxy tunnels. +This article helps you get your backend installation up and running making calls through corporate proxies. -Whilst this isn't supported natively by Backstage, this might help you get your installation up and running making calls through the said proxy tunnel. +## Background -## backend +Let's admit it, we've all been there. Sometimes you have to run stuff with no way out to the public internet, except via the smallest of corporate proxy tunnels. It's most likely that you're going to run into these issues from the backend part of Backstage as that's the part that isn't helped by your browser or OS settings for the corporate proxy. -Unfortunately, `nodejs` does not respect `HTTP(S)_PROXY` environment variables by default, and the library that we use to provide `fetch` functionality `node-fetch` (provided by `cross-fetch`) does not also respect these environment variables. +Unfortunately, neither the Node.js native `fetch` nor the other frequently used library `node-fetch` (see [ADR013](https://backstage.io/docs/architecture-decisions/adrs-adr013)) respect `HTTP(S)_PROXY` environment variables by default. As an additional complication, there is no single solution for configuring both native `fetch` and `node-fetch` at once, uniformly. -There are however some ways to get this to work without too much effort. It's most likely that you're going to run into these issues from the `backend` part of `backstage` as that's the part that isn't helped by your browser or OS's settings for the corporate proxy. +There are however some ways to get this to work without too much effort. -**Note:** You're gonna want to be in your backend working directory for these solutions as that's where the requests come from that don't go through this proxy. +## Installation -### Using `global-agent` +**Note:** You're going to want to be in your backend working directory for these solutions as that's where the requests come from that don't go through this proxy. -1. Install `global-agent` using `yarn add global-agent` -2. Go to the entry file for the backend (`src/index.ts`) -3. At the top of the file paste the following: +1. Install the required packages in your backend, by running the following command inside your backend directory (typically `packages/backend` under your repository root). -```ts -import 'global-agent/bootstrap'; -``` + ```bash + yarn add undici global-agent + ``` -4. Start the backend with the `global-agent` variables + `undici` exposes the settings for native `fetch`, and `global-agent` can set things up for `node-fetch`. -```sh -export GLOBAL_AGENT_HTTP_PROXY=$HTTP_PROXY -export GLOBAL_AGENT_NO_PROXY=$NO_PROXY -yarn start -``` +1. Go to the entry file for the backend (typically `packages/backend/src/index.ts`), and add the following at the top: -More information and more options for configuring `global-agent` including just using the default environment variables can be found here: https://github.com/gajus/global-agent + ```ts + import 'global-agent/bootstrap'; + import { setGlobalDispatcher, ProxyAgent } from 'undici'; -### Using `proxy-agent` + const proxyEnv = + process.env.GLOBAL_AGENT_HTTP_PROXY || + process.env.GLOBAL_AGENT_HTTPS_PROXY; -`proxy-agent` is a library that you can use to override the `globalAgents` of `node` land with a tunnel to use for each request. + if (proxyEnv) { + const proxyUrl = new URL(proxyEnv); + setGlobalDispatcher( + new ProxyAgent({ + uri: proxyUrl.protocol + proxyUrl.host, + token: + proxyUrl.username && proxyUrl.password + ? `Basic ${Buffer.from( + `${proxyUrl.username}:${proxyUrl.password}`, + ).toString('base64')}` + : undefined, + }), + ); + } + ``` -1. Install `proxy-agent` using `yarn add proxy-agent` -2. Go to the entry file for the backend (`src/index.ts`) -3. At the top of the file paste the following: + The first import automatically bootstraps `global-agent`, which addresses `node-fetch` proxying. The lines of code below that peeks into the same environment variables as `global-agent` uses, and also leverages them to set up the `undici` package which affects native `fetch`. Does that seem weird? Yes, we think so too. But in the current state of the Node.js ecosystem, that's how it works. -```ts -import ProxyAgent from 'proxy-agent'; -import http from 'http'; -import https from 'https'; + This code is kept brief for illustrative purposes. You may want to adjust it slightly if you need support for [no-proxy excludes](https://gist.github.com/zicklag/1bb50db6c5138de347c224fda14286da) or only do proxying in local development etc. Also see [the `global-agent` docs](https://github.com/gajus/global-agent) for information about its configuration options. -/* - Something to note here, this might need different configuration depending on your own setup. - If you only have an http_proxy then you'll need to set that as both the http and https globalAgent instead. -*/ -if (process.env.HTTP_PROXY) { - http.globalAgent = new ProxyAgent(process.env.HTTP_PROXY); -} +1. Start the backend with the correct environment variables set. For example: -if (process.env.HTTPS_PROXY) { - https.globalAgent = new ProxyAgent(process.env.HTTPS_PROXY); -} -``` + ```sh + export GLOBAL_AGENT_HTTP_PROXY=http://username:password@proxy.example.net:8888 + yarn start + ``` -4. Start the backend with `yarn start` - -## config +## Configuration If your development environment is in the cloud (like with [AWS Cloud9](https://aws.amazon.com/cloud9/) or an instance of [Theia](https://theia-ide.org/)), you will need to update your configuration. @@ -82,3 +81,33 @@ backend: ``` The app port must proxy web socket connections in order to make hot reloading work. + +## Alternatives to `global-agent` + +The `proxy-agent` package can be used as an alternative to `global-agent` (do not install both!), and also ensures that the `node-fetch` library correctly respects proxy settings, but [does NOT work](https://github.com/TooTallNate/proxy-agents/issues/239) for modern `undici` based native Node.js `fetch`, so you'll still have to also do the `undici` steps in the section above in addition to this. + +`proxy-agent` is a library that you can use to override the `globalAgents` of `node` land with a tunnel to use for each request. + +1. Install `proxy-agent` using `yarn add proxy-agent` +2. Go to the entry file for the backend (`src/index.ts`) +3. At the top of the file paste the following: + + ```ts + import ProxyAgent from 'proxy-agent'; + import http from 'http'; + import https from 'https'; + + /* + Something to note here, this might need different configuration depending on your own setup. + If you only have an http_proxy then you'll need to set that as both the http and https globalAgent instead. + */ + if (process.env.HTTP_PROXY) { + http.globalAgent = new ProxyAgent(process.env.HTTP_PROXY); + } + + if (process.env.HTTPS_PROXY) { + https.globalAgent = new ProxyAgent(process.env.HTTPS_PROXY); + } + ``` + +4. Start the backend with `yarn start` diff --git a/contrib/docs/tutorials/prometheus-metrics.md b/contrib/docs/tutorials/prometheus-metrics.md index 56989e709c..fb4366c7f7 100644 --- a/contrib/docs/tutorials/prometheus-metrics.md +++ b/contrib/docs/tutorials/prometheus-metrics.md @@ -11,8 +11,8 @@ This is a small tutorial that goes over how to setup your Backstage instance to ```diff // packages/backend/package.json "dependencies": { - + "express-prom-bundle": "^6.3.6", - + "prom-client": "^14.0.1", + + "express-prom-bundle": "^7.0.0", + + "prom-client": "^15.0.0", ``` 2. Now we want to run `yarn install` from the root of the project to get those dependencies in place diff --git a/contrib/terraform/techdocs-s3-storage/readme.md b/contrib/terraform/techdocs-s3-storage/readme.md index 9615cc8d13..b4968f7c09 100644 --- a/contrib/terraform/techdocs-s3-storage/readme.md +++ b/contrib/terraform/techdocs-s3-storage/readme.md @@ -1 +1 @@ -This terraform file should create a S3 bucket and setup IAM with a user with an inline policy which gives the user access to the bucket. After you have created the bucket, user and policy you should go to the user in the AWS console and create an access key. This access key should be used as the env variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). +This Terraform file should create an S3 bucket and set up IAM with a user and an inline policy that authorises access to the bucket. After you've set up the bucket, user, and policy, go to the user's AWS dashboard and create an access key. This access key should be used to configure the environment variables in step 3a [here](https://backstage.io/docs/features/techdocs/using-cloud-storage#configuring-aws-s3-bucket-with-techdocs). diff --git a/docs/architecture-decisions/adr011-plugin-package-structure.md b/docs/architecture-decisions/adr011-plugin-package-structure.md index 2def903dfc..8e4b5435f9 100644 --- a/docs/architecture-decisions/adr011-plugin-package-structure.md +++ b/docs/architecture-decisions/adr011-plugin-package-structure.md @@ -7,8 +7,7 @@ description: Architecture Decision Record (ADR) for Plugin Package Structure ## Context -A core feature of Backstage is the extensibility via plugins. The Backstage -repository is open for contributions of plugins. Even most of the core features +A core feature of Backstage is the extensibility via plugins. Even most of the core features are implemented as plugins. A plugin consists of one or multiple packages in the `plugins/` directory. Up till now, we have a simple conventions for naming plugin packages: Plugins are named `x`, with the option of having a related diff --git a/docs/auth/glossary.md b/docs/auth/glossary.md deleted file mode 100644 index ad7ae78d19..0000000000 --- a/docs/auth/glossary.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: glossary -title: Glossary -description: All Glossaries related to auth ---- - -- **Popup** - A separate browser window opened on top of the previous one. -- **OAuth** - More specifically OAuth 2.0, a standard protocol for - authorization. See [oauth.net/2/](https://oauth.net/2/). -- **OpenID Connect** - A layer on top of OAuth which standardises - authentication. See - [en.wikipedia.org/wiki/OpenID_Connect](https://en.wikipedia.org/wiki/OpenID_Connect). -- **JWT** - JSON Web Token, a popular JSON based token format that is commonly - encrypted and/or signed, see - [en.wikipedia.org/wiki/JSON_Web_Token](https://en.wikipedia.org/wiki/JSON_Web_Token) -- **Scope** - A string that describes a certain type of access that can be - granted to a user using OAuth. -- **Access token** - A token that gives access to perform actions on behalf of a - user. It will commonly have a short expiry time, and be limited to a set of - scopes. Part of the OAuth protocol. -- **ID token** - A JWT used to prove a user's identity, containing for example - the user's email. Part of OpenID Connect. -- **Offline access** - OAuth flow that results in both a refresh and access - token, where the refresh token has a long expiration or never expires, and can - be used to request more access tokens in the future. This lets the user go - "offline" with respect to the token issuer, but still be able to request more - tokens at a later time without further direct interaction for the user. -- **Code grant** - OAuth flow where the client receives an authorization code - that is passed to the backend to be exchanged for an access token and possibly - refresh token. diff --git a/docs/auth/index.md b/docs/auth/index.md index 806cda0ff7..f6282264e4 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -35,6 +35,7 @@ Backstage comes with many common authentication providers in the core library: - [Okta](okta/provider.md) - [OAuth 2 Custom Proxy](oauth2-proxy/provider.md) - [OneLogin](onelogin/provider.md) +- [VMware Cloud](vmware-cloud/provider.md) These built-in providers handle the authentication flow for a particular service including required scopes, callbacks, etc. These providers are each added to a diff --git a/docs/auth/microsoft/provider.md b/docs/auth/microsoft/provider.md index 999e1f40d2..bb8a7db6e4 100644 --- a/docs/auth/microsoft/provider.md +++ b/docs/auth/microsoft/provider.md @@ -28,6 +28,7 @@ On the **API permissions** tab, click on `Add Permission`, then add the followin - `openid` - `profile` - `User.Read` +- Optional custom scopes of the `Microsoft Graph` API defined in the app-config.yaml file. Your company may require you to grant [admin consent](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/user-admin-consent-overview) for these permissions. Even if your company doesn't require admin consent, you may wish to do so as it means users don't need to individually consent the first time they access backstage. @@ -54,6 +55,8 @@ auth: clientSecret: ${AZURE_CLIENT_SECRET} tenantId: ${AZURE_TENANT_ID} domainHint: ${AZURE_TENANT_ID} + additionalScopes: + - Mail.Send ``` The Microsoft provider is a structure with three mandatory configuration keys: @@ -65,6 +68,7 @@ The Microsoft provider is a structure with three mandatory configuration keys: Leave blank if your app registration is multi tenant. When specified, this reduces login friction for users with accounts in multiple tenants by automatically filtering away accounts from other tenants. For more details, see [Home Realm Discovery](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/home-realm-discovery-policy) +- `additionalScopes` (optional): List of scopes for the App Registration. The default and mandatory value is ['user.read']. ## Adding the provider to the Backstage frontend diff --git a/docs/auth/vmware-cloud/provider.md b/docs/auth/vmware-cloud/provider.md new file mode 100644 index 0000000000..20115f9e75 --- /dev/null +++ b/docs/auth/vmware-cloud/provider.md @@ -0,0 +1,171 @@ +--- +id: provider +title: VMware Cloud Authentication Provider +sidebar_label: VMware Cloud +description: Adding VMware Cloud as an authentication provider in Backstage +--- + +Backstage comes with an auth provider module to allow users to sign-in with +their VMware Cloud account. This page describes some actions within the VMware +Cloud Console and within a Backstage app required to enable this capability. + +## Create an OAuth App in the VMware Cloud Console + +1. Log in to the [VMware Cloud Console](https://console.cloud.vmware.com). +1. Navigate to [Identity & Access Management > OAuth + Apps](https://console.cloud.vmware.com/csp/gateway/portal/#/consumer/usermgmt/oauth-apps) + and click the [Owned + Apps](https://console.cloud.vmware.com/csp/gateway/portal/#/consumer/usermgmt/oauth-apps/owned-apps/view) + tab -- if you are not an Organization Owner or Administrator but only a + Member, you will not see this nav entry unless the **Developer** check box is + selected for your role (see the [Organization roles and + permissions](https://docs.vmware.com/en/VMware-Cloud-services/services/Using-VMware-Cloud-Services/GUID-C11D3AAC-267C-4F16-A0E3-3EDF286EBE53.html#organization-roles-and-permissions-0) + docs for details). +1. Click **Create App**, choose 'Web/Mobile app' and click **Continue**. +1. Use default settings except: + - `App Name` and `App Description` of your choosing. + - `Redirect URIs`: `${baseUrl}/api/auth/vmwareCloudServices/handler/frame` + where `baseUrl` is the URL where your Backstage backend can be reached; + note that VMware Cloud does not support the combination of an `http://` + scheme and a `localhost` hostname, so when testing locally it may help to + set your backend base URL to `http://127.0.0.1:7007`. + - `Refresh Token`: check `Issue refresh token`; refresh tokens are required + to prevent forcing users to re-login when they refresh their browser. + - `Define Scopes`: check `OpenID` at the bottom. +1. Click **Create**. +1. Take note of the `App ID` in the resulting modal; this is the client ID to be + used by Backstage. + +## Install the provider in the backend + +### New backend system + +Apps using the [new backend system](../../backend-system/index.md), +can enable the VMware Cloud provider with a small modification like: + +```ts title="packages/backend-next/src/index.ts" +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); +backend.add(import('@backstage/plugin-auth-backend')); +/* highlight-add-start */ +backend.add( + import('@backstage/plugin-auth-backend-module-vmware-cloud-provider'), +); +/* highlight-add-end */ +backend.start(); +``` + +### Old backend system + +This provider was added after the migration of the auth-backend plugin to the +new backend system, so no default provider factory was added. Because of this, +the installation procedure for old-style backends is slightly more involved: + +```ts title="packages/backend/src/plugins/auth.ts" +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { + createRouter, + providers, + defaultAuthProviderFactories, +} from '@backstage/plugin-auth-backend'; +import { Router } from 'express'; +import { PluginEnvironment } from '../types'; +/* highlight-add-start */ +import { + commonSignInResolvers, + createOAuthProviderFactory, +} from '@backstage/plugin-auth-node'; +import { + vmwareCloudAuthenticator, +} from '@backstage/plugin-auth-backend-module-vmware-cloud-provider'; +/* highlight-add-end */ + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + return await createRouter({ + logger: env.logger, + config: env.config, + database: env.database, + discovery: env.discovery, + tokenManager: env.tokenManager, + providerFactories: { + ...defaultAuthProviderFactories, + /* highlight-add-start */ + vmwareCloudServices: createOAuthProviderFactory({ + authenticator: vmwareCloudAuthenticator, + signInResolver: + commonSignInResolvers.emailLocalPartMatchingUserEntityName(), + }), + /* highlight-add-end */ +``` + +In the above, `commonSignInResolvers.emailLocalPartMatchingUserEntityName()` +can be replaced with a more suitable resolver for the app in question. + +## Configure Sign-in Resolution + +See [Sign-in Identities and Resolvers](../identity-resolver.md) for details. + +## Add to Sign-in Page + +See the [Sign-In Configuration](../index.md#sign-in-configuration) docs for +general guidance, but as an example: + +```tsx title="packages/app/src/App.tsx" +/* highlight-add-start */ +import { vmwareCloudAuthApiRef } from '@backstage/core-plugin-api'; +import { SignInPage } from '@backstage/core-components'; +/* highlight-add-end */ + +const app = createApp({ + /* highlight-add-start */ + components: { + SignInPage: props => ( + + ), + }, + /* highlight-add-end */ + // .. +}); +``` + +## Configuration + +Add the following to your `app-config.yaml` under the root `auth` configuration: + +```yaml +auth: + session: + secret: your session secret + environment: development + providers: + vmwareCloudServices: + development: + clientId: ${APP_ID} + organizationId: ${ORG_ID} +``` + +where `APP_ID` refers to the ID retrieved when creating the OAuth App, and +`ORG_ID` is the [long ID of the +Organization](https://docs.vmware.com/en/VMware-Cloud-services/services/Using-VMware-Cloud-Services/GUID-CF9E9318-B811-48CF-8499-9419997DC1F8.html#view-the-organization-id-1) +in VMware Cloud for which you wish to enable sign-in. + +Note that VMware Cloud requires OAuth Apps to use +[PKCE](https://oauth.net/2/pkce/) when performing authorization code flows; the +library used by this provider requires the use of Express session middleware to +do this. Therefore the value `your session secret` under `auth.session.secret` +should be replaced with a long, complex and unique string which will act as a +key for signing session cookies set by Backstage. diff --git a/docs/backend-system/building-backends/08-migrating.md b/docs/backend-system/building-backends/08-migrating.md index 2514f0925e..9eada30ef6 100644 --- a/docs/backend-system/building-backends/08-migrating.md +++ b/docs/backend-system/building-backends/08-migrating.md @@ -83,7 +83,7 @@ following command: ```bash # from the repository root -yarn add --cwd packages/backend @backstage/backend-defaults @backstage/backend-plugin-api +yarn --cwd packages/backend add @backstage/backend-defaults @backstage/backend-plugin-api ``` You should now be able to start this up with the familiar `yarn workspace @@ -616,7 +616,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-catalog-node +yarn --cwd packages/backend add @backstage/plugin-catalog-node ``` Here we've placed the module directly in the backend index file just to get @@ -681,7 +681,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-events-node +yarn --cwd packages/backend add @backstage/plugin-events-node ``` Here we've placed the module directly in the backend index file just to get @@ -700,6 +700,26 @@ const backend = createBackend(); backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); ``` +With the new Backend System version of the Scaffolder plugin, any provider specific actions will need to be installed separately. +For example - GitHub actions are now collected under the `@backstage/plugin-scaffolder-backend-module-github` package. + +```ts title="packages/backend/src/index.ts" +const backend = createBackend(); +backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); + +/* highlight-add-next-line */ +backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); +``` + +And of course you'll need to install those separately as well. + +```bash +# from the repository root +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-github +``` + +You can find a list of the available modules under the [plugins directory](https://github.com/backstage/backstage/tree/master/plugins) in the monorepo. + If you have other customizations made to `plugins/scaffolder.ts`, such as adding custom actions, read on. Otherwise, you should be able to just delete that file at this point. @@ -746,7 +766,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-scaffolder-node +yarn --cwd packages/backend add @backstage/plugin-scaffolder-node ``` Here we've placed the module directly in the backend index file just to get @@ -757,7 +777,7 @@ implementations that they represent, and being exported from there. ### The Auth Plugin -A basic installation of the auth plugin with a microsoft provider will look as follows. +A basic installation of the auth plugin with a Microsoft provider will look as follows. ```ts title="packages/backend/src/index.ts" const backend = createBackend(); diff --git a/docs/conf/writing.md b/docs/conf/writing.md index aef9620373..e0eb72f828 100644 --- a/docs/conf/writing.md +++ b/docs/conf/writing.md @@ -220,6 +220,8 @@ clientSecret: someGithubAppClientSecret webhookSecret: someWebhookSecret privateKey: | -----BEGIN RSA PRIVATE KEY----- - SomeRsaPrivateKey + SomeRsaPrivateKeySecurelyStored -----END RSA PRIVATE KEY----- ``` + +**Warning: Sensitive information, such as private keys, should not be hard coded**. We recommend that this entire file should be a secret and stored as such in a secure storage solution like Vault, to ensure they are neither exposed nor misused. This example key part only shows the format on how to use the yaml | syntax to make sure that the key is valid. diff --git a/docs/deployment/flightcontrol.md b/docs/deployment/flightcontrol.md index 482e9341ea..6078d931fb 100644 --- a/docs/deployment/flightcontrol.md +++ b/docs/deployment/flightcontrol.md @@ -9,8 +9,159 @@ This guide explains how to deploy Backstage to [Flightcontrol](https://www.fligh Before you begin, make sure you have a [Flightcontrol account](https://app.flightcontrol.dev/signup?ref=backstage) and a [Github account](https://github.com/login) to follow this guide. +# Creating a Dockerfile and .dockerignore + +Once your Flightcontrol account is setup, you will need to prepare a `Dockerfile` and `.dockerignore` to deploy Backstage to your target AWS environment. The standard `Dockerfile` included in the Backstage repository assumes that the `skeleton.tar.gz` and `bundle.tar.gz` already exist. When integrating Flightcontrol directly with a GitHub repository, changes to files within this repository will automatically start a Flightcontrol deployment, unless you have configured deployments via a webhook. Regardless of which method you have chosen, when Flightcontrol starts a deployment process it will pull all files directly from the repository, and not from a GitHub runner or other location. As Flightcontrol does not contain CI steps this results in the zip files having to be committed to the repository in order to be available for the `Dockerfile` to copy. + +A simple work around for this is to use a `Dockerfile` with a [multi-stage build](https://docs.docker.com/build/building/multi-stage/). Using this approach we can create our zip files in the first build stage, and copy them into the second stage ready for deployment. + +The following two code snippets demonstrate this method. The first block of code is an example of a multi-stage build approach and should be added to a file called `Dockerfile.flightcontrol` in the `packages/backend` directory. + +```dockerfile filename="Dockerfile.flightcontrol" +# This dockerfile builds an image for the backend package. +# It should be executed with the root of the repo as docker context. +# +# Before building this image, be sure to have run the following commands in the repo root: +# +# yarn install +# yarn tsc +# yarn build:backend +# +# Once the commands have been run, you can build the image using `yarn build-image` +FROM node:18-bookworm-slim as build + +USER node +WORKDIR /app +COPY --chown=node:node . . + +RUN yarn install --frozen-lockfile + +# tsc outputs type definitions to dist-types/ in the repo root, which are then consumed by the build +RUN yarn tsc + +# Build the backend, which bundles it all up into the packages/backend/dist folder. +# The configuration files here should match the one you use inside the Dockerfile below. +RUN yarn build:backend --config ../../app-config.yaml + +FROM node:18-bookworm-slim + +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ + yarn config set python /usr/bin/python3 + +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get install -y --no-install-recommends libsqlite3-dev + +# From here on we use the least-privileged `node` user to run the backend. +USER node + +# This should create the app dir as `node`. +# If it is instead created as `root` then the `tar` command below will fail: `can't create directory 'packages/': Permission denied`. +# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) so the app dir is correctly created as `node`. +WORKDIR /app + +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV production + +# Copy repo skeleton first, to avoid unnecessary docker cache invalidation. +# The skeleton contains the package.json of each package in the monorepo, +# and along with yarn.lock and the root package.json, that's enough to run yarn install. +COPY --from=build app/yarn.lock app/package.json app/packages/backend/dist/skeleton.tar.gz ./ +RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz + +RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ + yarn install --frozen-lockfile --production --network-timeout 300000 + +# Then copy the rest of the backend bundle, along with any other files we might want. +COPY --from=build app/packages/backend/dist/bundle.tar.gz app/app-config*.yaml ./ +RUN tar xzf bundle.tar.gz && rm bundle.tar.gz + +CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] +``` + +In order to prevent the default `.dockerignore` file from preventing the copying of the relevant files into the first stage of our build, we need to override it with a custom one. This can also be added to the `packages/backend` directory, it should be called `Dockerfile.flightcontrol.dockerignore` and contain the following. + +```ssh filename="Dockerfile.flightcontrol.dockerignore" +.git +.yarn/cache +.yarn/install-state.gz +node_modules +packages/*/node_modules +*.local.yaml +``` + +With these two new files, you will now have the necessary steps in place to build the zip files, copy them into the second stage of the build, and deploy them via Flightcontrol. + +# Creating a custom app-config.production file + +Our next steps before switching to the Flightcontrol dashboard is to create a custom app-config.production file. The purposes of this is to update how Backstage will connect to the RDS hosted Postgres DB. The default `app-config.production` file uses the `host`, `port`, `user` and `password` environment variables. + +When creating a database via the Flightcontrol dashboard, we are given an environment variable with the single connection string. Therefore we need an `app-config.production` file which uses this variable. + +Within your Backstage project create a new file called `app-config.production.flightcontrol.yaml`. Add the following configuration to it: + +```yaml filename="app-config.production.flightcontrol.yaml" +app: + # Should be the same as backend.baseUrl when using the `app-backend` plugin. + baseUrl: http://localhost:7007 + +backend: + # Note that the baseUrl should be the URL that the browser and other clients + # should use when communicating with the backend, i.e. it needs to be + # reachable not just from within the backend host, but from all of your + # callers. When its value is "http://localhost:7007", it's strictly private + # and can't be reached by others. + baseUrl: http://localhost:7007 + # The listener can also be expressed as a single : string. In this case we bind to + # all interfaces, the most permissive setting. The right value depends on your specific deployment. + listen: ':7007' + + # config options: https://node-postgres.com/api/client + database: + client: pg + pluginDivisionMode: 'schema' + connection: + connectionString: ${POSTGRES_CON_STRING} + ssl: + require: true + rejectUnauthorized: false + + # Flightcontrol provides a single DB connection string + # environment variable which can be renamed to POSTGRES_CON_STRING. + # the following default values are therefore not used: + # host: ${POSTGRES_HOST} + # port: ${POSTGRES_PORT} + # user: ${POSTGRES_USER} + # password: ${POSTGRES_PASSWORD} + # https://node-postgres.com/features/ssl + # you can set the sslmode configuration option via the `PGSSLMODE` environment variable + # see https://www.postgresql.org/docs/current/libpq-ssl.html Table 33.1. SSL Mode Descriptions (e.g. require) + # ssl: + # ca: # if you have a CA file and want to verify it you can uncomment this section + # $file: /ca/server.crt + +catalog: + # Overrides the default list locations from app-config.yaml as these contain example data. + # See https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog for more details + # on how to get entities into the catalog. + locations: [] +``` + +Make a note of the environment variable used in the `connectionString`. In our example above this is `POSTGRES_CON_STRING`. You will need this later when you have deployed the database via the Flightcontrol console, and wish to connect to it from Backstage. + # Deployment Via Dashboard +Ensure that custom `Dockerfile.flightcontrol`, `Dockerfile.flightcontrol.dockerignore` and `app-config.production.flightcontrol.yaml` have been committed to your repository before following the next steps. + +Login into the Flightcontrol Dashboard and complete each of the following: + 1. Create a new project from the Flightcontrol Dashboard 2. Select the GitHub repo for your Backstage project @@ -25,7 +176,7 @@ Before you begin, make sure you have a [Flightcontrol account](https://app.fligh | Health Check Path | /catalog | | Port | 7007 | -5. Click `Create Project` and complete any required steps (like linking your AWS account). +5. Click `Create Project` and complete any required steps (like linking your AWS account). Remember to point the project to your custom files. # Deployment via Code @@ -33,7 +184,7 @@ Before you begin, make sure you have a [Flightcontrol account](https://app.fligh 2. Select the GitHub repo for your Backstage project -3. Select the `flightcontrol.json` Config Type. +3. Select the `flightcontrol.json` Config Type. Update the example JSON below where applicable to your custom Dockerfile. ```json filename="flightcontrol.json" { @@ -72,6 +223,8 @@ Before you begin, make sure you have a [Flightcontrol account](https://app.fligh If you need a database or Redis for your Backstage plugins, you can easily add those to your Flightcontrol deployment. For more information, see [the flightcontrol docs](https://www.flightcontrol.dev/docs/guides/flightcontrol/using-code?ref=backstage#redis). +When creating a Postgres RDS database you will need to update the connection string variable name to the one included in the `app-config.production.flightcontrol.yaml`. As noted above in our example we called this `POSTGRES_CON_STRING`. + ## Troubleshooting - [Flightcontrol Documentation](https://www.flightcontrol.dev/docs?ref=backstage) diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md index b0218c8657..479d99510b 100644 --- a/docs/deployment/k8s.md +++ b/docs/deployment/k8s.md @@ -384,7 +384,7 @@ $ yarn build-image --tag backstage:1.0.0 There is no special wiring needed to access the PostgreSQL service. Since it's running on the same cluster, Kubernetes will inject `POSTGRES_SERVICE_HOST` and `POSTGRES_SERVICE_PORT` environment variables into our Backstage container. -These can be used in the Backstage `app-config.yaml` along with the secrets: +These can be used in the Backstage `app-config.yaml` along with the secrets. Apply this to `app-config.production.yaml` as well if you have one: ```yaml backend: diff --git a/docs/faq/index.md b/docs/faq/index.md new file mode 100644 index 0000000000..93e3e90fbe --- /dev/null +++ b/docs/faq/index.md @@ -0,0 +1,15 @@ +--- +id: index +title: Overview +description: FAQ Overview +--- + +This section contains answers to frequently asked questions about Backstage. + +### [Product FAQ](../faq/product.md) + +Questions related to product and design. + +### [Technical FAQ](../faq/technical.md) + +General technical questions about Backstage. diff --git a/docs/faq/product.md b/docs/faq/product.md new file mode 100644 index 0000000000..9d2a32f33e --- /dev/null +++ b/docs/faq/product.md @@ -0,0 +1,66 @@ +--- +id: product +title: Product FAQ +description: Questions related to product and design. +--- + +### Can we call Backstage something different? So that it fits our company better? + +Yes, Backstage is just a platform for building your own developer portal. We +happen to call our internal version Backstage, as well, as a reference to our +music roots. You can call your version whatever suits your team, company, or +brand. + +### Is Backstage a monitoring platform? + +No, but it can be! Backstage is designed to be a developer portal for all your +infrastructure tooling, services, and documentation. So, it's not a monitoring +platform — but that doesn't mean you can't integrate a monitoring tool into +Backstage by writing [a plugin](#what-is-a-plugin-in-backstage). + +### How is Backstage licensed? + +Backstage was released as open source software by Spotify and is licensed under +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). + +### Why did we open source Backstage? + +We hope to see Backstage become the infrastructure standard everywhere. When we +saw how much Backstage improved developer experience and productivity +internally, we wanted to share those gains. After all, if Backstage can create +order in an engineering environment as open and diverse as ours, then we're +pretty sure it can create order (and boost productivity) anywhere. To learn +more, read our blog post, +"[What the heck is Backstage anyway?](https://backstage.io/blog/2020/03/18/what-is-backstage)" + +### Will Spotify's internal plugins be open sourced, too? + +Yes, we've already started releasing open source versions of some of the plugins +we use here, and we'll continue to do so. +[Plugins](#what-is-a-plugin-in-backstage) are the building blocks of +functionality in Backstage. We have over 120 plugins inside Spotify — many of +those are specialized for our use, so will remain internal and proprietary to +us. But we estimate that about a third of our existing plugins make good open +source candidates. (And we'll probably end up writing some brand new ones, too.) + +### What's the roadmap for Backstage? + +We envision three phases, which you can learn about in +[our project roadmap](../overview/roadmap.md). Even though the open source version +of Backstage is relatively new compared to our internal version, we have already +begun work on various aspects of all three phases. Looking at the +[milestones for active issues](https://github.com/backstage/backstage/milestones) +will also give you a sense of our progress. + +### My company doesn't have thousands of developers or services. Is using Backstage excessive for our needs? + +Not at all! A core reason to adopt Backstage is to standardize how software is +built at your company. It's easier to decide on those standards as a small +company, and grows in importance as the company grows. Backstage sets a +foundation, and an early investment in your infrastructure becomes even more +valuable as you grow. + +### Our company has a strong design language system/brand that we want to incorporate. Does Backstage support this? + +Yes! The Backstage UI is built using Material UI. With the theming capabilities +of Material UI, you are able to adapt the interface to your brand guidelines. diff --git a/docs/FAQ.md b/docs/faq/technical.md similarity index 74% rename from docs/FAQ.md rename to docs/faq/technical.md index 7b935140e6..55bb1af615 100644 --- a/docs/FAQ.md +++ b/docs/faq/technical.md @@ -1,74 +1,9 @@ --- -id: FAQ -title: FAQ -description: All FAQ related to Backstage +id: technical +title: Technical FAQ +description: General technical questions about Backstage. --- -## Product FAQ - -### Can we call Backstage something different? So that it fits our company better? - -Yes, Backstage is just a platform for building your own developer portal. We -happen to call our internal version Backstage, as well, as a reference to our -music roots. You can call your version whatever suits your team, company, or -brand. - -### Is Backstage a monitoring platform? - -No, but it can be! Backstage is designed to be a developer portal for all your -infrastructure tooling, services, and documentation. So, it's not a monitoring -platform — but that doesn't mean you can't integrate a monitoring tool into -Backstage by writing [a plugin](#what-is-a-plugin-in-backstage). - -### How is Backstage licensed? - -Backstage was released as open source software by Spotify and is licensed under -[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). - -### Why did we open source Backstage? - -We hope to see Backstage become the infrastructure standard everywhere. When we -saw how much Backstage improved developer experience and productivity -internally, we wanted to share those gains. After all, if Backstage can create -order in an engineering environment as open and diverse as ours, then we're -pretty sure it can create order (and boost productivity) anywhere. To learn -more, read our blog post, -"[What the heck is Backstage anyway?](https://backstage.io/blog/2020/03/18/what-is-backstage)" - -### Will Spotify's internal plugins be open sourced, too? - -Yes, we've already started releasing open source versions of some of the plugins -we use here, and we'll continue to do so. -[Plugins](#what-is-a-plugin-in-backstage) are the building blocks of -functionality in Backstage. We have over 120 plugins inside Spotify — many of -those are specialized for our use, so will remain internal and proprietary to -us. But we estimate that about a third of our existing plugins make good open -source candidates. (And we'll probably end up writing some brand new ones, too.) - -### What's the roadmap for Backstage? - -We envision three phases, which you can learn about in -[our project roadmap](overview/roadmap.md). Even though the open source version -of Backstage is relatively new compared to our internal version, we have already -begun work on various aspects of all three phases. Looking at the -[milestones for active issues](https://github.com/backstage/backstage/milestones) -will also give you a sense of our progress. - -### My company doesn't have thousands of developers or services. Is using Backstage excessive for our needs? - -Not at all! A core reason to adopt Backstage is to standardize how software is -built at your company. It's easier to decide on those standards as a small -company, and grows in importance as the company grows. Backstage sets a -foundation, and an early investment in your infrastructure becomes even more -valuable as you grow. - -### Our company has a strong design language system/brand that we want to incorporate. Does Backstage support this? - -Yes! The Backstage UI is built using Material UI. With the theming capabilities -of Material UI, you are able to adapt the interface to your brand guidelines. - -## Technical FAQ - ### What technology does Backstage use? Backstage is a large scale [TypeScript](https://www.typescriptlang.org/) @@ -116,7 +51,7 @@ type of content. Plugins all use a common set of platform APIs and reusable UI components. Plugins can fetch data either from the backend or an API exposed through the proxy. -Learn more about [the different components](overview/what-is-backstage.md) that +Learn more about [the different components](../overview/what-is-backstage.md) that make up Backstage. ### Why can't I dynamically install plugins without modifications to the app? @@ -253,7 +188,7 @@ data is shared with. Yes. The core frontend framework could be used for building any large-scale web application where (1) multiple teams are building separate parts of the app, and (2) you want the overall experience to be consistent. That being said, in -[Phase 2](overview/roadmap.md) of the project we will add features that are +[Phase 2](../overview/roadmap.md) of the project we will add features that are needed for developer portals and systems for managing software ecosystems. Our ambition will be to keep Backstage modular. diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index e0cddefbcf..5057218f17 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -4,23 +4,26 @@ title: Kubernetes Authentication description: Authentication in Kubernetes plugin --- -The authentication process in Kubernetes relies on `KubernetesAuthProviders`, which are -not the same as the application's auth providers, the default providers are defined in -`plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.ts`, you can -add custom providers there if needed. +The authentication process in Kubernetes relies on `KubernetesAuthProviders` -- +which are not the same as the application's auth providers. the default +providers are defined in +`plugins/kubernetes-react/src/kubernetes-auth-provider/KubernetesAuthProviders.ts`; +you can add custom providers there if needed. -These providers are configured so your Kubernetes plugin can locate and access the -clusters you have access to, some of them have special requirements in the third party in -question, like Microsoft Entra ID (formerly Azure Active Directory) subscription or Azure RBAC support active on the cluster. +These providers are configured so your Kubernetes plugin can locate and access +the clusters you have access to, some of them have special requirements in the +third party in question, like Microsoft Entra ID (formerly Azure Active +Directory) subscription or Azure RBAC support active on the cluster. -The providers currently available are divided into server side and client side. +The providers currently available are summarized below: ## Server Side Providers -These providers authenticate your _application_ with the cluster, meaning anyone that is -logged in into your backstage app will be granted the same access to Kubernetes objects, including guest users. +These providers authenticate your _application_ with the cluster, meaning anyone +that is logged in into your Backstage app will be granted the same access to +Kubernetes objects, including guest users. -The providers available as server side are: +The server side providers are: - `aws` - `azure` @@ -30,11 +33,19 @@ The providers available as server side are: ### AWS -For AWS, in addition to the "kubernetes" configuration, you will have to set up AWS authentication. The AWS server-side authentication provider uses [AWS Identity and Access Management (IAM)][3] to authenticate to the target Account(s), you can read more about it on the page for the [Integration AWS node][4]. +For AWS, in addition to Kubernetes configuration, you will have to set up +AWS authentication. The AWS server-side authentication provider uses [AWS +Identity and Access Management (IAM)][3] to authenticate to the target +Account(s); you can read more about it on the page for the [Integration AWS +node][4]. -Using the plugin, you can authenticate to several AWS accounts using either [static AWS Access keys][5] or short-lived Access keys generated by [assuming a role][6], for either case you will need to install the [AWS CLI utility][7] and set it up following the steps in the linked documentation. +Using the plugin, you can authenticate to several AWS accounts using either +[static AWS Access keys][5] or short-lived Access keys generated by [assuming a +role][6], for either case you will need to install the [AWS CLI utility][7] and +set it up following the steps in the linked documentation. -If you have generated static AWS security credentials, the configuration block for AWS will look like this: +If you have generated static AWS security credentials, the configuration block +for AWS will look like this: ```yaml aws: @@ -47,7 +58,8 @@ aws: accountDefaults: ``` -If your environment is set up to assume a role, the configuration would instead look like this: +If your environment is set up to assume a role, the configuration would instead +look like this: ```yaml aws: @@ -58,7 +70,8 @@ aws: accountDefaults: ``` -Either of these sections needs to be present for the Kubernetes configuration to use the `aws` `authProvider`. The Kubernetes configuration looks like this: +Either of these sections needs to be present for the Kubernetes configuration to +use the `aws` `authProvider`. The Kubernetes configuration looks like this: ```yaml kubernetes: @@ -68,23 +81,37 @@ kubernetes: - type: 'config' clusters: - url: https://..eks.amazonaws.com - name: + name: ${CLUSTER_NAME_TO_DISPLAY} authProvider: 'aws' caData: ${EKS_CA_DATA} + authMetadata: + kubernetes.io/aws-assume-role: ${ROLE_ARN_TO_ASSUME} + kubernetes.io/aws-external-id: ${ID_FROM_AWS_ADMIN} + kubernetes.io/x-k8s-aws-id: ${CLUSTER_NAME_IN_AWS_CONSOLE} ``` -You get both, the cluster `url` and `caData` directly from the AWS console by going to `EKS` > `Your cluster` > `Overview` > `Details`. You will find them under 'API server endpoint' and 'Certificate authority' respectively. +You get both the cluster URL and CA directly from the AWS console by going to +`EKS` > `Your cluster` > `Overview` > `Details`. You will find them under 'API +server endpoint' and 'Certificate authority' respectively. + +If Backstage needs to assume a role when authenticating with EKS clusters, the +`kubernetes.io/aws-assume-role` parameter can be set to the ARN of the desired +role. the `kubernetes.io/aws-external-id` parameter in the config corresponds to +the `ExternalId` parameter of the [`AssumeRole` API in STS][8]. ### Azure -The Azure server side authentication provider works by authenticating on the server with -the Azure CLI, please note that [Microsoft Entra authentication][1] is a requirement and has to +The Azure provider works by authenticating on the server with the Azure CLI, +please note that [Microsoft Entra authentication][1] is a requirement and has to be enabled in your AKS cluster, then follow these steps: -- [Install the Azure CLI][2] in the environment where the backstage application will run. -- Login with your Azure/Microsoft account with `az login` in the server's terminal. -- Go to your AKS cluster's resource page in Azure Console and follow the steps in the - `Connect` tab to set the subscription and get your credentials for `kubectl` integration. +- [Install the Azure CLI][2] in the environment where the backstage application + will run. +- Login with your Azure/Microsoft account with `az login` in the server's + terminal. +- Go to your AKS cluster's resource page in Azure Console and follow the steps + in the `Connect` tab to set the subscription and get your credentials for + `kubectl` integration. - Configure your cluster to use the `azure` auth provider like this: ```yaml @@ -98,18 +125,19 @@ kubernetes: skipTLSVerify: true ``` -To get the API server address for your Azure cluster, go to the Azure console page for the -cluster resource, go to `Overview` > `Properties` tab > `Networking` section and copy paste -the API server address directly in that `url` field. +To get the API server address for your Azure cluster, go to the Azure console +page for the cluster resource, go to `Overview` > `Properties` tab > +`Networking` section and copy paste the API server address directly in that +`url` field. ## Client Side Providers -These providers authenticate your _user_ with the cluster. Each Backstage user will be -prompted for credentials and will have access to the clusters as long as the user has been -authorized to access said cluster. If the cluster is listed in the `clusterLocatorMethods`, -but the user hasn't been authorized to access, the user will see the cluster listed but -will not see any resources in the plugin page for that cluster, and the error will show -as `401` or similar. +These providers authenticate a _user_ with the cluster. Each Backstage user will +be prompted for credentials and will have access to the clusters as long as the +user has been authorized to access said cluster. If Backstage is configured to +communicate with a cluster but the user isn't authorized to access it, they will +see the cluster listed but will not see any resources in the plugin page for +that cluster. The error will show as `401` or similar. The providers available as client side are: @@ -124,3 +152,4 @@ The providers available as client side are: [5]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html [6]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html [7]: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html +[8]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md index 612d57334d..ff3a42c7ed 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -38,6 +38,7 @@ kubernetes: plural: 'rollouts' - url: http://127.0.0.2:9999 name: aws-cluster-1 + title: 'My AWS Cluster Number One' authProvider: 'aws' - type: 'gke' projectId: 'gke-clusters' @@ -151,6 +152,11 @@ The base URL to the Kubernetes control plane. Can be found by using the A name to represent this cluster, this must be unique within the `clusters` array. Users will see this value in the Software Catalog Kubernetes plugin. +##### `clusters.\*.title` + +A human-readable name for the cluster. This value will override the `name` field +for the purposes of display in the catalog. + ##### `clusters.\*.authProvider` This determines how the Kubernetes client authenticates with the Kubernetes @@ -393,6 +399,7 @@ For example: - type: 'gke' projectId: 'gke-clusters' region: 'europe-west1' # optional + authProvider: 'google' # optional skipTLSVerify: false # optional skipMetricsLookup: false # optional exposeDashboard: false # optional @@ -417,6 +424,18 @@ The Google Cloud project to look for Kubernetes clusters in. The Google Cloud region to look for Kubernetes clusters in. Defaults to all regions. +##### `authProvider` (optional) + +Set the authentication method for discovering clusters and gathering information +about resources. + +Defaults to `google` which leverages the logged in user's Google OAuth credentials. + +Set to `googleServiceAccount` to leverage +Application Default Credentials (https://cloud.google.com/docs/authentication/application-default-credentials). +To use a service account JSON key (not recommended), set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable +on the Backstage backend to the path of the service account key file. + ##### `skipTLSVerify` (optional) This determines whether the Kubernetes client verifies the TLS certificate @@ -651,7 +670,7 @@ SingleTenant Cluster: In the example above, we configured the "backstage.io/kubernetes-cluster" annotation on the entity `catalog-info.yaml` file to specify that the current component is running in a single cluster called "dice-cluster", so this cluster must have been specified in the `app-config.yaml`, under the Kubernetes clusters configuration (for more details, see [`Configuring Kubernetes clusters`](#configuring-kubernetes-clusters)). -If you do not specify the annotation by `default Backstage fetches all` defined Kubernetes cluster. +If you do not specify the annotation, by default Backstage fetches from all defined Kubernetes clusters. [1]: https://cloud.google.com/kubernetes-engine [2]: https://cloud.google.com/docs/authentication/production#linux-or-macos diff --git a/docs/features/kubernetes/installation.md b/docs/features/kubernetes/installation.md index 5111b5ad2e..bdd14098ff 100644 --- a/docs/features/kubernetes/installation.md +++ b/docs/features/kubernetes/installation.md @@ -17,7 +17,7 @@ application. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-kubernetes +yarn --cwd packages/app add @backstage/plugin-kubernetes ``` Once the package has been installed, you need to import the plugin in your app @@ -55,7 +55,7 @@ Navigate to `packages/backend` of your Backstage app, and install the ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-kubernetes-backend +yarn --cwd packages/backend add @backstage/plugin-kubernetes-backend ``` Create a file called `kubernetes.ts` inside `packages/backend/src/plugins/` and diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index 1787189e91..7989b60ae2 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -18,7 +18,7 @@ If you haven't setup Backstage already, start ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-search @backstage/plugin-search-react +yarn --cwd packages/app add @backstage/plugin-search @backstage/plugin-search-react ``` Create a new `packages/app/src/components/search/SearchPage.tsx` file in your @@ -135,7 +135,7 @@ Add the following plugins into your backend app: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend @backstage/plugin-search-backend-node +yarn --cwd packages/backend add @backstage/plugin-search-backend @backstage/plugin-search-backend-node ``` Create a `packages/backend/src/plugins/search.ts` file containing the following diff --git a/docs/features/software-catalog/api.md b/docs/features/software-catalog/api.md index 3ab3c0df96..46f32e9064 100644 --- a/docs/features/software-catalog/api.md +++ b/docs/features/software-catalog/api.md @@ -474,6 +474,34 @@ Response type is JSON, on the form ] ``` +### `GET /locations/{id}` + +Gets a location by it's location ID. + +Response type is JSON, on the form + +```json +{ + "id": "b9784c38-7118-472f-9e22-5638fc73bab0", + "target": "https://git.example.com/example-project/example-repository/blob/main/catalog-info.yaml", + "type": "url" +} +``` + +### `GET /locations/by-entity/{kind}/{namespace}/{name}` + +Gets a location referring to a given entity. + +Response type is JSON, on the form + +```json +{ + "id": "b9784c38-7118-472f-9e22-5638fc73bab0", + "target": "https://git.example.com/example-project/example-repository/blob/main/catalog-info.yaml", + "type": "url" +} +``` + ### `POST /locations` Adds a location to be ingested by the catalog. diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md index 526ba15072..054b727e78 100644 --- a/docs/features/software-catalog/descriptor-format.md +++ b/docs/features/software-catalog/descriptor-format.md @@ -838,7 +838,7 @@ The current set of well-known and common values for this field is: - `openapi` - An API definition in YAML or JSON format based on the [OpenAPI](https://swagger.io/specification/) version 2 or version 3 spec. - `asyncapi` - An API definition based on the - [AsyncAPI](https://www.asyncapi.com/docs/reference/specification/latest) spec. + [AsyncAPI](https://www.asyncapi.com/docs/reference/specification/latest) version 2 or version 3 spec. - `graphql` - An API definition based on [GraphQL schemas](https://spec.graphql.org/) for consuming [GraphQL](https://graphql.org/) based APIs. @@ -1119,7 +1119,7 @@ Some common values for this field could be: - `database` - `s3-bucket` -- `cluster` +- `kubernetes-cluster` ### `spec.system` [optional] diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index 0286b1f580..38c30bd701 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -688,3 +688,122 @@ export class SystemXReaderProcessor implements CatalogProcessor { } } ``` + +### Supporting different metadata file formats + +Sometimes you might already have files in GitHub or some provider that Backstage already supports but the metadata format that you use is not the same as `catalog-info.yaml` files. In this case you can implement a custom parser that can read the files and convert them on-the-fly to the `Entity` format that Backstage expects, and it will integrate seamlessly into Catalog so that you can use things like the `GithubEntityProvider` to read these files. + +What you will need to do is to provide a custom `CatalogProcessorParser` and provide that to `builder.setEntityDataParser`. + +Let's say my format looks something like this: + +```yaml +id: my-service +type: service +author: user@backstage.com +``` + +We need to build a custom parser that can read this format and convert it to the `Entity` format that Backstage expects. + +```ts title="packages/backend/src/lib/customEntityDataParser.ts" +import { + CatalogProcessorParser, + CatalogProcessorResult, + LocationSpec, + processingResult, +} from '@backstage/plugin-catalog-node'; +import yaml from 'yaml'; +import { + Entity, + stringifyLocationRef, + ANNOTATION_ORIGIN_LOCATION, + ANNOTATION_LOCATION, +} from '@backstage/catalog-model'; +import _ from 'lodash'; +import parseGitUrl from 'git-url-parse'; + +// This implementation will map whatever your own format is into valid Entity objects. +const makeEntityFromCustomFormatJson = ( + component: { id: string; type: string; author: string }, + location: LocationSpec, +): Entity => { + return { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: component.id, + namespace: 'default', + annotations: { + [ANNOTATION_LOCATION]: `${location.type}:${location.target}`, + [ANNOTATION_ORIGIN_LOCATION]: `${location.type}:${location.target}`, + }, + } + spec: { + type: component.type, + owner: component.author, + lifecycle: 'experimental' + } + } +}; + +export const customEntityDataParser: CatalogProcessorParser = async function* ({ + data, + location, +}) { + let documents: yaml.Document.Parsed[]; + try { + // let's treat the incoming file always as yaml, you can of course change this if your format is not yaml. + documents = yaml.parseAllDocuments(data.toString('utf8')).filter(d => d); + } catch (e) { + // if we failed to parse as yaml throw some errors. + const loc = stringifyLocationRef(location); + const message = `Failed to parse YAML at ${loc}, ${e}`; + yield processingResult.generalError(location, message); + return; + } + + for (const document of documents) { + // If there's errors parsing the document as yaml, we should throw an error. + if (document.errors?.length) { + const loc = stringifyLocationRef(location); + const message = `YAML error at ${loc}, ${document.errors[0]}`; + yield processingResult.generalError(location, message); + } else { + // Convert the document to JSON + const json = document.toJSON(); + if (_.isPlainObject(json)) { + // Is this a catalog-info.yaml file? + if (json.apiVersion) { + yield processingResult.entity(location, json as Entity); + + // let's treat this like it's our custom format instead. + } else { + yield processingResult.entity( + location, + makeEntityFromCustomFormatJson(json, location), + ); + } + } else if (json === null) { + // Ignore null values, these happen if there is an empty document in the + // YAML file, for example if --- is added to the end of the file. + } else { + // We don't support this format. + const message = `Expected object at root, got ${typeof json}`; + yield processingResult.generalError(location, message); + } + } + } +} +``` + +This is a lot of code right now, as this is a pretty niche use-case, so we don't currently provide many helpers for you to be able to provide custom implementations easier or to compose together different parsers. + +You then should be able to provide this `customEntityDataParser` to the `CatalogBuilder`: + +```ts title="packages/backend/src/plugins/catalog.ts" +import { customEntityDataParser } from '../lib/customEntityDataParser'; + +... + +builder.setEntityDataParser(customEntityDataParser); +``` diff --git a/docs/features/software-catalog/index.md b/docs/features/software-catalog/index.md index 0596d64ee4..ae3a4ef4c2 100644 --- a/docs/features/software-catalog/index.md +++ b/docs/features/software-catalog/index.md @@ -36,7 +36,7 @@ The Software Catalog is available to browse at `/catalog`. If you've followed [Getting Started with Backstage](../../getting-started), you should be able to browse the catalog at `http://localhost:3000`. -![](../../assets/software-catalog/software-catalog-home.png) +![screenshot of software catalog](../../assets/software-catalog/software-catalog-home.png) ## Adding components to the catalog @@ -55,7 +55,7 @@ There are 3 ways to add components to the catalog: Users can register new components by going to `/create` and clicking the **REGISTER EXISTING COMPONENT** button: -![](../../assets/software-catalog/bsc-register-1.png) +![screenshot of manually register existing component](../../assets/software-catalog/bsc-register-1.png) Backstage expects the full URL to the YAML in your source control. Example: @@ -66,7 +66,7 @@ https://github.com/backstage/backstage/blob/master/packages/catalog-model/exampl _More examples can be found [here](https://github.com/backstage/backstage/tree/master/packages/catalog-model/examples)._ -![](../../assets/software-catalog/bsc-register-2.png) +![screenshot of creating new components](../../assets/software-catalog/bsc-register-2.png) It is important to note that any kind of software can be registered in Backstage. Even if the software is not maintained by your company (SaaS @@ -100,7 +100,7 @@ More information about catalog configuration can be found Teams owning the components are responsible for maintaining the metadata about them, and do so using their normal Git workflow. -![](../../assets/software-catalog/bsc-edit.png) +![screenshot of updating component metadata](../../assets/software-catalog/bsc-edit.png) Once the change has been merged, Backstage will automatically show the updated metadata in the software catalog after a short while. @@ -112,14 +112,14 @@ in user. But you can also switch to _All_ to see all the components across your company's software ecosystem. Basic inline _search_ and _column filtering_ makes it easy to browse a big set of components. -![](../../assets/software-catalog/bsc-search.png) +![screenshot of finding software in the catalog](../../assets/software-catalog/bsc-search.png) ## Starring components For easy and quick access to components you visit frequently, Backstage supports _starring_ of components: -![](../../assets/software-catalog/bsc-starred.png) +![screenshot of starred components](../../assets/software-catalog/bsc-starred.png) ## Integrated tooling through plugins @@ -130,7 +130,7 @@ infrastructure UIs (and incurring additional cognitive overhead each time they make a context switch), most of these tools can be organized around the entities in the catalog. -![tools](https://backstage.io/assets/images/tabs-abfdf72185d3ceb1d92c4237f7f78809.png) +![screenshot of tools](https://backstage.io/assets/images/tabs-abfdf72185d3ceb1d92c4237f7f78809.png) The Backstage platform can be customized by incorporating [existing open source plugins](https://github.com/backstage/backstage/tree/master/plugins), diff --git a/docs/features/software-templates/ui-options-examples.md b/docs/features/software-templates/ui-options-examples.md index b402f68aee..7f0e5b225f 100644 --- a/docs/features/software-templates/ui-options-examples.md +++ b/docs/features/software-templates/ui-options-examples.md @@ -119,6 +119,117 @@ entity: defaultNamespace: payment ``` +## MultiEntityPicker + +The input props that can be specified under `ui:options` for the `MultiEntityPicker` field extension. + +### `allowArbitraryValues` + +Whether to allow arbitrary user input. Defaults to true. + +`allowArbitraryValues` provides input validation when selecting an entity as the values you enter will correspond to a valid entity. + +- Adding a valid entity with `allowArbitraryValues` as `false` + +```yaml +entity: + title: Entities + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + allowArbitraryValues: false +``` + +- Adding an arbitrary entity with `allowArbitraryValues` as `true` (default value) + +```yaml +entity: + title: Entities + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + allowArbitraryValues: true +``` + +### `catalogFilter` + +`catalogFilter` supports filtering options by any field(s) of an entity. + +- Get all entities of kind `Group` + +```yaml +entity: + title: Entities + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + catalogFilter: + - kind: Group +``` + +- Get entities of kind `Group` and spec.type `team` + +```yaml +entity: + title: Entities + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + catalogFilter: + - kind: Group + spec.type: team +``` + +For the full details on the spec.\* values see [here](../software-catalog/descriptor-format.md#kind-group). + +### `defaultKind` + +The default entity kind. + +```yaml +system: + title: System + type: array + description: Systems of the component + ui:field: MultiEntityPicker + ui:options: + catalogFilter: + kind: System + defaultKind: System +``` + +### `defaultNamespace` + +The ID of a namespace that the entity belongs to. The default value is `default`. + +- Listing all entities in the `default` namespace (default value) + +```yaml +entity: + title: Entity + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + defaultNamespace: default +``` + +- Listing all entities in the `payment` namespace + +```yaml +entity: + title: Entity + type: array + description: Entities of the component + ui:field: MultiEntityPicker + ui:options: + defaultNamespace: payment +``` + ## `OwnerPicker` The input props that can be specified under `ui:options` for the `OwnerPicker` field extension. diff --git a/docs/features/software-templates/writing-custom-step-layouts.md b/docs/features/software-templates/writing-custom-step-layouts.md index b965f60f6b..d3c7c8fe82 100644 --- a/docs/features/software-templates/writing-custom-step-layouts.md +++ b/docs/features/software-templates/writing-custom-step-layouts.md @@ -20,11 +20,11 @@ The [createScaffolderLayout](https://backstage.io/docs/reference/plugin-scaffold ```ts import React from 'react'; +import { scaffolderPlugin } from '@backstage/plugin-scaffolder'; import { createScaffolderLayout, LayoutTemplate, - scaffolderPlugin, -} from '@backstage/plugin-scaffolder'; +} from '@backstage/plugin-scaffolder-react'; import { Grid } from '@material-ui/core'; const TwoColumn: LayoutTemplate = ({ properties, description, title }) => { diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 35458446c2..ad542ba4a3 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -274,35 +274,6 @@ spec: password: ${{ secrets.password }} ``` -### Hide or mask sensitive data on Review step - -> Note: this approach is soon to be deprecated, please mark things as secret by using the `Secret` field extension instead as mentioned above. - -Sometimes, specially in custom fields, you collect some data on Create form that -must not be shown to the user on Review step. To hide or mask this data, you can -use `ui:widget: password` or set some properties of `ui:backstage`: - -```yaml -- title: Hide or mask values - properties: - password: - title: Password - type: string - ui:widget: password # will print '******' as value for property 'password' on Review Step - masked: - title: Masked - type: string - ui:backstage: - review: - mask: '' # will print '' as value for property 'Masked' on Review Step - hidden: - title: Hidden - type: string - ui:backstage: - review: - show: false # won't print any info about 'hidden' property on Review Step -``` - ### Custom step layouts If you find that the default layout of the form used in a particular step does not meet your needs then you can supply your own [custom step layout](./writing-custom-step-layouts.md). diff --git a/docs/features/techdocs/addons.md b/docs/features/techdocs/addons.md index 2e17891917..471e62a57f 100644 --- a/docs/features/techdocs/addons.md +++ b/docs/features/techdocs/addons.md @@ -54,7 +54,7 @@ Addons are rendered in the order in which they are registered. ## Installing and using Addons -To start using Addons you need to add the `@backstage/plugin-techdocs-module-addons-contrib` package to your app. You can do that by running this command from the root of your project: `yarn add --cwd packages/app @backstage/plugin-techdocs-module-addons-contrib` +To start using Addons you need to add the `@backstage/plugin-techdocs-module-addons-contrib` package to your app. You can do that by running this command from the root of your project: `yarn --cwd packages/app add @backstage/plugin-techdocs-module-addons-contrib` Addons can be installed and configured in much the same way as extensions for other Backstage plugins: by adding them underneath an extension registry diff --git a/docs/features/techdocs/getting-started.md b/docs/features/techdocs/getting-started.md index f798384697..eaa6c2de72 100644 --- a/docs/features/techdocs/getting-started.md +++ b/docs/features/techdocs/getting-started.md @@ -23,7 +23,7 @@ Navigate to your new Backstage application directory. And then to your ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-techdocs +yarn --cwd packages/app add @backstage/plugin-techdocs ``` Once the package has been installed, you need to import the plugin in your app. @@ -108,7 +108,7 @@ Navigate to `packages/backend` of your Backstage app, and install the ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-techdocs-backend +yarn --cwd packages/backend add @backstage/plugin-techdocs-backend ``` Create a file called `techdocs.ts` inside `packages/backend/src/plugins/` and diff --git a/docs/frontend-system/architecture/03-extensions.md b/docs/frontend-system/architecture/03-extensions.md index 6d86415817..061c695abb 100644 --- a/docs/frontend-system/architecture/03-extensions.md +++ b/docs/frontend-system/architecture/03-extensions.md @@ -81,8 +81,6 @@ const extension = createExtension({ Note that while the `createExtension` is public API and used in many places, it is not typically what you use when building plugins and features. Instead there are many extension creator functions exported by both the core APIs and plugins that make it easier to create extensions for more specific usages. -... TODO ... - ## Extension Data Communication between extensions happens in one direction, from one child extension through the attachment point to its parent. The child extension outputs data which is then passed as inputs to the parent extension. This data is called Extension Data, where the shape of each individual piece of data is described by an Extension Data Reference. These references are created separately from the extensions themselves, and can be shared across multiple different kinds of extensions. Each reference consists of an ID and a TypeScript type that the data needs to conform to, and represents one type of data that can be shared between extensions. @@ -114,7 +112,7 @@ const extension = createExtension({ ### Extension Data Uniqueness -Note that the key used in the output map, in this case `element`, is only used internally within the definition of the extension itself. That actual identifier for the data when consumed by other extensions is the ID of the reference, in this case `core.reactElement`. This means that you can not output multiple different values for the same extension data reference, as they would conflict with each other. That in turn makes overly generic extension data references a bad idea, for example a generic "string" type. Instead create separate references for each type of data that you want to share. +Note that the key used in the output map, in this case `element`, is only used internally within the definition of the extension itself. That actual identifier for the data when consumed by other extensions is the ID of the reference, in this case [`core.reactElement`](https://github.com/backstage/backstage/blob/916da47e8abdb880877daa18881eb8fdbb33e70a/packages/frontend-plugin-api/src/wiring/coreExtensionData.ts#L23). This means that you can not output multiple different values for the same extension data reference, as they would conflict with each other. That in turn makes overly generic extension data references a bad idea, for example a generic "string" type. Instead create separate references for each type of data that you want to share. ```tsx const extension = createExtension({ @@ -137,7 +135,7 @@ const extension = createExtension({ We provide default `coreExtensionData`, which provides commonly used `ExtensionDataRef`s - e.g. for `React.JSX.Element` and `RouteRef`. They can be used when creating your own extension. For example, the React Element extension data that we defined above is already provided as `coreExtensionData.reactElement`. - +For a full list and explanations of all types of core extension data, see the [core extension data reference](../building-plugins/04-built-in-data-refs.md). ### Optional Extension Data @@ -160,7 +158,7 @@ const extension = createExtension({ ## Extension Inputs -The Extension Data can be passed up to other extensions through their extension inputs. Similar to the outputs seen before, let's create an example an extension with a extension input: +The Extension Data can be passed up to other extensions through their extension inputs. Similar to the outputs seen before, let's create an example of an extension with a extension input: ```tsx const navigationExtension = createExtension({ @@ -254,7 +252,7 @@ With the `inputs` not only the `output` of an extensions item is passed to the e ## Extension Configuration -With the `app-config.yaml` there is already the option to pass configuration to plugins or the app to e.g. define the `baseURL` of your app. For extensions this concept would be limiting as an extension can be independent of the plugin & initiated several times. Therefor we created a possibility to configure each extension individually through config. The extension config schema is created using the [`zod`](https://zod.dev/) library, which in addition to TypeScript type checking also provides runtime validation and coercion. If we continue with the example of the `navigationExtension` and now want it to contain a configurable title, we could make it available like the following: +With the `app-config.yaml` there is already the option to pass configuration to plugins or the app to e.g. define the `baseURL` of your app. For extensions this concept would be limiting as an extension can be independent of the plugin & initiated several times. Therefore we created a possibility to configure each extension individually through config. The extension config schema is created using the [`zod`](https://zod.dev/) library, which in addition to TypeScript type checking also provides runtime validation and coercion. If we continue with the example of the `navigationExtension` and now want it to contain a configurable title, we could make it available like the following: ```tsx const navigationExtension = createExtension({ @@ -297,7 +295,7 @@ app: With creating an extension by using `createExtension(...)` you have the advantage that the extension can be anything in your Backstage application. We realised that this comes with the trade-off of having to repeat boilerplate code for similar building blocks. Here extension creators come into play for covering common building blocks in Backstage like pages using `createPageExtension`, themes using the `createThemeExtension` or items for the navigation using `createNavItemExtension`. -If we follow the example from above all items of the navigation have similarities, like they all want to be attached to the same extension with the same input as well as rendering the same navigation item component. Therefor `createExtension` can be abstracted for this use case to `createNavItemExtension` and if we add the extension to the app it will end up in the right place & looks like we expect a navigation item to look. +If we follow the example from above all items of the navigation have similarities, like they all want to be attached to the same extension with the same input as well as rendering the same navigation item component. Therefore `createExtension` can be abstracted for this use case to `createNavItemExtension` and if we add the extension to the app it will end up in the right place & looks like we expect a navigation item to look. ```tsx export const HomeNavIcon = createNavItemExtension({ diff --git a/docs/frontend-system/architecture/05-extension-overrides.md b/docs/frontend-system/architecture/05-extension-overrides.md index e722145552..21028627bc 100644 --- a/docs/frontend-system/architecture/05-extension-overrides.md +++ b/docs/frontend-system/architecture/05-extension-overrides.md @@ -10,38 +10,158 @@ description: Frontend extension overrides ## Introduction - +In order to override an app extension, you must create a new extension and add it to the list of overridden features. The steps are: create your extension overrides and use them in Backstage. -## Creating a Extension Override +### Example - +Now we are able to use the overrides in a Backstage app: -## Overriding Existing Extensions +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +import themeOverrides from './themes'; - +## Override Plugin Extensions + +To override an extension that is provided by a plugin, you need to provide a new extension that has the same ID as the existing extension. That is, all kind, namespace, and name options must match the extension you want to replace. This means that you typically need to provide an explicit `namespace` when overriding extensions from a plugin. + +:::info +We recommend that plugin developers share the extension IDs in their plugin documentation, but usually you can infer the ID by following the [naming patterns](./08-naming-patterns.md) documentation. +::: + +### Example + +Imagine you have a plugin with the ID `'search'`, and the plugin provides a page extension that you want to fully override with your own custom component. To do so, you need to create your page extension with an explicit `namespace` option that matches that of the plugin that you want to override, in this case `'search'`. If the existing extension also has an explicit `name` you'd need to set the `name` of your override extension to the same value as well. + +```tsx title="packages/app/src/search.ts" +import { createPageExtension } from '@backstage/frontend-plugin-api'; + +// Creating a custom search page extension +const customSearchPage = createPageExtension({ + // highlight-next-line + namespace: 'search', + // Omitting name since it is the index plugin page + defaultPath: '/search', + loader: () => import('./SearchPage').then(m => m.), +}); + +export createExtensionOverrides({ + extensions: [customSearchPage] +}); +``` + +Don't forget to configure your overrides in the `createApp` function: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +import searchOverrides from './search'; + +const app = createApp({ + // highlight-next-line + features: [searchOverrides], +}); + +export default app.createRoot(); +``` + +Now let's talk about the last override case, orphan extensions. + +## Create Standalone Extensions + +Sometimes you just need to quickly create a new extension and not overwrite an app extension or plugin. You can also use overrides to create extensions, but remember that if you want to make this extension available for installation by other users, we recommend providing it via a plugin in a separate package. + +### Example + +Imagine you want to create a page that is currently only used by your application, like an Institutional page, for example. You can use overrides to extend the Backstage app to render it. To do so, simply create a page extension and pass it to the app as an override: + +```tsx title="packages/app/src/App.ts" +import { createApp } from '@backstage/frontend-app-api'; +import { + createPageExtension, + createExtensionOverrides, +} from '@backstage/frontend-plugin-api'; + +const app = createApp({ + features: [ + createExtensionOverrides({ + extensions: [ + // highlight-start + createPageExtension({ + name: 'institutional', + defaultPath: '/institutional', + loader: () => + import('./institutional').then(m => ), + }), + // highlight-end + ], + }), + ], +}); + +export default app.createRoot(); +``` + +Note that we are omitting `namespace` when creating the page extension. When we omit `namespace`, we are telling the system the new extension is standalone and not an application or plugin extension! diff --git a/docs/frontend-system/architecture/06-utility-apis.md b/docs/frontend-system/architecture/06-utility-apis.md index fe714793d7..49e5854b65 100644 --- a/docs/frontend-system/architecture/06-utility-apis.md +++ b/docs/frontend-system/architecture/06-utility-apis.md @@ -14,7 +14,7 @@ Utility APIs are pieces of standalone functionality, interfaces that can be requ A common example of a utility API is a client interface to interact with the backend part of a plugin, such as the catalog client. Any frontend plugin can then request an implementation of that interface to make requests through. -The following diagram shows a hypothetical application, which depends on two plugins and also provides some extra overrides. Note that both the plugins and the core framework provide utility APIs, and that they depended on each other. The app also chooses to use its overrides mechanism to supply a replacement implementation of one API, which takes precedence over the default one. Thus, all consumers of that API will be sure to get that new implementation provided to them. +The following diagram shows a hypothetical application, which depends on two plugins and also provides some extra overrides. Note that both the plugins and the core framework provide utility APIs, and that they depend on each other. The app also chooses to use its overrides mechanism to supply a replacement implementation of one API, which takes precedence over the default one. Thus, all consumers of that API will be sure to get that new implementation provided to them. ![frontend system utility apis diagram](../../assets/frontend-system/architecture-utility-apis.drawio.svg) diff --git a/docs/frontend-system/architecture/07-routes.md b/docs/frontend-system/architecture/07-routes.md index 1402796077..7fb053aa56 100644 --- a/docs/frontend-system/architecture/07-routes.md +++ b/docs/frontend-system/architecture/07-routes.md @@ -8,143 +8,430 @@ description: Frontend routes > **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** -See [routing system docs](../../plugins/composability.md#routing-system) - ## Introduction - +The Backstage routing system makes it possible to implement navigation across plugin boundaries, without each individual plugin knowing the concrete path or location of other plugins in the routing hierarchy, or even its own. This is achieved through the concept of route references, which are opaque reference values that can be shared and used to create concrete links to different parts of an app. The route ref paths can be configured both at plugin level (by plugin developers) and at the app level (by integrators). It is up to plugin developers to create route references for any page content in their plugin that they want it to be possible to link to or from. ## Route References - +There are three types of route references: regular route, sub route, and external route, and we will cover both the concept and code definition for each. ### Creating a Route Reference - +// Creates a route reference, which is not yet associated with any plugin page +export const indexRouteRef = createRouteRef(); +``` -### Using a Route Reference +Note that you often want to create the route references themselves in a different file than the one that creates the plugin instance, for example a top-level `routes.ts`. This is to avoid circular imports when you use the route references from other parts of the same plugin. - - -### Route Path Parameters - - +Route refs do not have any behavior themselves. They are an opaque value that represents route targets in an app, which are bound to specific paths at runtime. Their role is to provide a level of indirection to help link together different pages that otherwise wouldn't know how to route to each other. ### Providing Route References to Plugins - +The code snippet in the previous section does not indicate which plugin the route belongs to. To do so, you have to use it in the creation of any kind of routable extension, such as a page extension: -## External Router References +```tsx title="plugins/catalog/src/plugin.tsx" +import React from 'react'; +import { + createPlugin, + createPageExtension, +} from '@backstage/frontend-plugin-api'; +import { indexRouteRef } from './routes'; - +In the example above we associated the `indexRouteRef` with the `catalogIndexPage` extension and provided both the route ref and page via the Catalog plugin. So, when this plugin is installed in the app, the index page will become associated with the newly created `RouteRef`, making it possible to use the route ref to navigate the page extension. + +It may seem unclear why we configure the `routes` option when creating a plugin as the route has already been passed to the extension. We do that to make it possible for other plugins to route to our page, which is explained in detail in the [binding routes](#binding-external-route-references) section. + +### Defining References with Path Parameters + +Route references optionally accept a `params` option, which will require the listed parameter names to be present in the route path. Here is how you create a reference for a route that requires a `kind`, `namespace` and `name` parameters, like in this path `/entities/:kind/:namespace/:name`: + +```tsx title="plugins/catalog/src/routes.ts" +import { createRouteRef } from '@backstage/frontend-plugin-api'; + +export const detailsRouteRef = createRouteRef({ + // The parameters that must be included in the path of this route reference + // highlight-next-line + params: ['kind', 'namespace', 'name'], +}); +``` + +### Using a Route Reference + +Route references can be used to link to page in the same plugin, or to pages in different plugins. In this section we will cover the first scenario. If you are interested in linking to a page of a different plugin, please go to the [external routes](#external-route-references) section below. + +Suppose we are creating a plugin that renders a Catalog index page with a link to a "Foo" component details page. Here is the code for the index page: + +```tsx title="plugins/catalog/src/components/IndexPage.tsx" +import React from 'react'; +import { useRouteRef } from '@backstage/frontend-plugin-api'; +import { detailsRouteRef } from '../routes'; + +export const IndexPage = () => { + // highlight-next-line + const getDetailsPath = useRouteRef(detailsRouteRef); + return ( +
+

Index Page

+ + See "Foo" details + +
+ ); +}; +``` + +We use the `useRouteRef` hook to create a link generator function that returns the details page path. We then call the link generator, passing it an object with the kind, namespace, and name. These parameters are used to construct a concrete path to the "Foo" details page. + +Let's see how the details page can get the parameters from the URL: + +```tsx title="plugins/catalog/src/components/DetailsPage.tsx" +import React from 'react'; +import { useRouteRefParams } from '@backstage/frontend-plugin-api'; +import { detailsRouteRef } from '../routes'; + +export const DetailsPage = () => { + // highlight-next-line + const params = useRouteRefParams(detailsRouteRef); + return ( +
+

Details Page

+
    + {/* highlight-start */} +
  • Kind: {params.kind}
  • +
  • Namespace: {params.namespace}
  • +
  • Name: {params.name}
  • + {/* highlight-end */} +
+
+ ); +}; +``` + +In the code above, we are using the `useRouteRefParams` hook to retrieve the entity-composed id from the URL. The parameter object contains three values: kind, namespace, and name. We can display these values or call an API using them. + +Since we are linking to pages of the same package, we are using a route ref directly. However, in the following sections, you will see how to link to pages of different plugins. + +## External Route References + +External routes are made for linking to a page of an external plugin. +For this section example, let's assume that we want to link from the Catalog entities list page to the Scaffolder create component page. + +We don't want to reference the Scaffolder plugin directly, since that would create an unnecessary dependency. It would also provide little flexibility in allowing the app to tie plugins together, with the links instead being dictated by the plugins themselves. To solve this, we use an `ExternalRouteRef`. Much like regular route references, they can be passed to `useRouteRef` to create concrete URLs, but they can not be used in page extensions and instead have to be associated with a target route using route bindings in the app. + +We create a new `RouteRef` inside the Scaffolder plugin, using a neutral name that describes its role in the plugin rather than a specific plugin page that it might be linking to, allowing the app to decide the final target. If the Catalog entity list page for example wants to link the Scaffolder create component page in the header, it might declare an `ExternalRouteRef` similar to this: + +```tsx title="plugins/catalog/src/routes.ts" +import { createExternalRouteRef } from '@backstage/frontend-plugin-api'; + +export const createComponentExternalRouteRef = createExternalRouteRef(); +``` + +External routes are also used in a similar way as regular routes: + +```tsx title="plugins/catalog/src/components/IndexPage.tsx" +import React from 'react'; +import { useRouteRef } from '@backstage/frontend-plugin-api'; +import { createComponentExternalRouteRef } from '../routes'; + +export const IndexPage = () => { + // highlight-next-line + const getCreateComponentPath = useRouteRef(createComponentExternalRouteRef); + return ( +
+

Index Page

+ {/* highlight-next-line */} + Create Component +
+ ); +}; +``` + +Given the above binding, using `useRouteRef(createComponentExternalRouteRef)` within the Catalog plugin will let us create a link to whatever path the Scaffolder create component page is mounted at. Note that there is no direct dependency between the Catalog plugin and Scaffolder, that is, we are not importing the `createComponentExternalRouteRef` from the Scaffolder package. + +Now the only thing left is to provide the page and external route via a plugin: + +```tsx title="plugins/catalog/src/plugin.tsx" +import React from 'react'; +import { + createPlugin, + createPageExtension, + useRouteRef, +} from '@backstage/frontend-plugin-api'; +import { indexRouteRef, createComponentExternalRouteRef } from './routes'; + +const catalogIndexPage = createPageExtension({ + defaultPath: '/entities', + routeRef: indexRouteRef, + loader: () => import('./components').then(m => ), +}); + +export default createPlugin({ + id: 'catalog', + routes: { + index: indexRouteRef, + }, + // highlight-start + externalRoutes: { + createComponent: createComponentExternalRouteRef, + }, + extensions: [catalogIndexPage], + // highlight-end +}); +``` + +External routes can also have parameters. For example, if you want to link to an entity's details page from Scaffolder, you'll need to create an external route that receives the same parameters the Catalog details page expects: + +```tsx title="plugins/scaffolder/src/routes.ts" +import { createExternalRouteRef } from '@backstage/frontend-plugin-api'; + +export const entityDetailsExternalRouteRef = createExternalRouteRef({ + // highlight-next-line + params: ['kind', 'namespace', 'name'], +}); +``` + +Now let's move on and configure the app to resolve these external routes, so that the Scaffolder links to the Catalog entity page, and the Catalog links to the Scaffolder page. ### Binding External Route References - +```yaml title="app-config.yaml" +app: + routes: + bindings: + # point to the Scaffolder create component page when the Catalog create component ref is used + # highlight-next-line + catalog.createComponent: scaffolder.index + # point to the Catalog details page when the Scaffolder component details ref is used + # highlight-next-line + scaffolder.componentDetails: catalog.details +``` + +We also have the ability to express this in code as an option to `createApp`, but you of course only need to use one of these two methods: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +import catalog from '@backstage/plugin-catalog'; +import scaffolder from '@backstage/plugin-scaffolder'; + +const app = createApp({ + // highlight-start + bindRoutes({ bind }) { + bind(catalog.externalRoutes, { + createComponent: scaffolder.routes.createComponent, + }); + bind(scaffolder.externalRoutes, { + componentDetails: catalog.routes.details, + }); + }, + // highlight-end +}); + +export default app.createRoot(); +``` + +Note that we are not importing and using the `RouteRef`s directly in the app, and instead rely on the plugin instance to access routes of the plugins. This provides better namespacing and discoverability of routes, as well as reduce the number of separate exports from each plugin package. + +Another thing to note is that this indirection in the routing is particularly useful for open source plugins that need to provide flexibility in how they are integrated. For plugins that you build internally for your own Backstage application, you can choose to use direct imports or even concrete route path strings directly. Although there can be some benefits to using the full routing system even in internal plugins: it can help you structure your routes, and as you will see further down it also helps you manage route parameters. ### Optional External Route References - +```tsx title="plugins/catalog/src/routes.ts" +import { createExternalRouteRef } from '@backstage/frontend-plugin-api'; + +export const createComponentExternalRouteRef = createExternalRouteRef({ + // highlight-next-line + optional: true, +}); +``` + +When calling `useRouteRef` with an optional external route, its return signature is changed to `RouteFunc | undefined`, and the returned value can be used to decide whether a certain link should be displayed or if an action should be taken: + +```tsx title="plugins/catalog/src/components/IndexPage.tsx" +import React from 'react'; +import { useRouteRef } from '@backstage/frontend-plugin-api'; +import { createComponentExternalRouteRef } from '../routes'; + +export const IndexPage = () => { + const getCreateComponentPath = useRouteRef(createComponentExternalRouteRef); + return ( +
+

Index Page

+ {/* Rendering the link only if the getCreateComponentPath is defined */} + {/* highlight-start */} + {getCreateComponentPath && ( + Create Component + )} + {/* highlight-end */} +
+ ); +}; +``` ## Sub Route References - - -```ts -/* - -Some examples - -export const indexPageRouteRef = createRouteRef() - -export const catalogPlugin = createPlugin({ - id: 'catalog, - routes: { - index: indexPageRouteRef, - }, -}) - -// in catalog plugin - -import {indexPageRouteRef} from '../../routes - -const link = useRouteRef(indexPageRouteRef) - -// scaffolder - -export const catalogIndexPageRouteRef = createExternalRouteRef({ - defaultTarget: 'catalog/index', -}) - -export const scaffolderPlugin = createPlugin({ - id: 'scaffolder, - externalRoutes: { - catalogIndex: catalogIndexPageRouteRef, - }, -}) - - -import {catalogIndexPageRouteRef} from '../../routes - -const link = useRouteRef(catalogIndexPageRouteRef) - -// app - -import {catalogPlugin} from '@backstage/plugin-catalog' - -const app = createApp({ - bindRoutes({bind}) { - bind(scaffolderPlugin, { - catalogIndex: catalogPlugin.routes.index, - }) - }, -}) -*/ +export const indexRouteRef = createRouteRef(); +// highlight-start +export const detailsSubRouteRef = createSubRouteRef({ + parent: indexRouteRef, + path: '/details', +}); +// highlight-end +``` + +There are substantial differences between creating subroutes and regular or external routes because subroutes are associated with regular routes, and the sub route path must be specified. The path string must include the parameters if this sub route has them: + +```tsx title ="plugins/catalog/src/routes.ts" +// Omitting rest of the previous example file +export const detailsSubRouteRef = createSubRouteRef({ + parent: indexRouteRef, + // highlight-next-line + path: '/:name/:namespace/:kind', +}); +``` + +Using subroutes in a page extension is as simple as this: + +```tsx title="plugins/catalog/src/components/IndexPage.ts" +import React from 'react'; +import { Routes, Route, useLocation } from 'react-router-dom'; +import { useRouteRef } from '@backstage/frontend-plugin-api'; +import { indexRouteRef, detailsSubRouteRef } from '../routes'; +import { DetailsPage } from './DetailsPage'; + +export const IndexPage = () => { + const { pathname } = useLocation(); + const getIndexPath = useRouteRef(indexRouteRef); + const getDetailsPath = useRouteRef(detailsSubRouteRef); + return ( +
+

Index Page

+ {/* Linking to the details sub route */} + {pathname === getIndexPath() ? ( + // highlight-start + + Show details + + // highlight-end + ) : ( + // highlight-next-line + Hide details + )} + {/* Registering the details sub route */} + + } /> + +
+ ); +}; +``` + +This is how you can get the parameters of a sub route URL: + +```tsx title="plugins/catalog/src/components/DetailsPage.ts" +import React from 'react'; +import { useParams } from 'react-router-dom'; + +export const DetailsPage = () => { + // highlight-next-line + const params = useParams(); + return ( +
+

Details Sub Page

+
    + {/* highlight-start */} +
  • Kind: {params.kind}
  • +
  • Namespace: {params.namespace}
  • +
  • Name: {params.name}
  • + {/* highlight-end */} +
+
+ ); +}; +``` + +Finally, see how a plugin can provide subroutes: + +```tsx title="plugins/catalog/src/plugin.ts" +import React from 'react'; +import { + createPlugin, + createPageExtension, +} from '@backstage/frontend-plugin-api'; +import { indexRouteRef, detailsSubRouteRef } from './routes'; + +const catalogIndexPage = createPageExtension({ + defaultPath: '/entities', + routeRef: indexRouteRef, + loader: () => import('./components').then(m => ), +}); + +export default createPlugin({ + id: 'catalog', + routes: { + index: indexRouteRef, + // highlight-next-line + details: detailsSubRouteRef, + }, + extensions: [catalogIndexPage], +}); ``` diff --git a/docs/frontend-system/building-apps/01-index.md b/docs/frontend-system/building-apps/01-index.md new file mode 100644 index 0000000000..e23f628fb6 --- /dev/null +++ b/docs/frontend-system/building-apps/01-index.md @@ -0,0 +1,148 @@ +--- +id: index +title: Building Frontend Apps +sidebar_label: Overview +# prettier-ignore +description: Building frontend apps using the new frontend system +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +To get set up quickly with your own Backstage project you can create a Backstage App. + +A Backstage App is a monorepo setup that includes everything you need to run Backstage in your own environment. + +## Creating a new app + +To create a new Backstage app we recommend using the `@backstage/create-app` command line, and the easiest way to run this package is with `npx`: + +:::note +The create-app CLI requires Node.js Active LTS Release. +::: + +```sh +# The command bellow creates a Backstage App inside the current folder. +# The name of the app-folder is the name that was provided when prompted. +npx @backstage/create-app@latest +``` + +The created-app is currently templated for legacy frontend system applications, so the app wiring code it creates needs to be migrated, see [the app instance](#the-app-instance) section for an example. + +## The app instance + +The starting point of a frontend app is the `createApp` function, which accepts a single options object as its only parameter. It is imported from `@backstage/frontend-app-api`, which is where you will find most of the common APIs for building apps. + +This is how to create a minimal app: + +```tsx title="in src/index.ts" +import ReactDOM from 'react-dom/client'; +import { createApp } from '@backstage/frontend-app-api'; +import catalogPlugin from '@backstage/plugin-catalog/alpha'; + +// Create your app instance +const app = createApp({ + // Features such as plugins can be installed explicitly, but we will explore other options later on + features: [catalogPlugin], +}); + +// This creates a React element that renders the entire app +const root = app.createRoot(); + +// Just like any other React we need a root element. No server side rendering is used. +const rootEl = document.getElementById('root')!; + +ReactDOM.createRoot(rootEl).render(root); +``` + +Note that `createRoot` returns the root element that is rendered by React. The above example is installing a catalog plugin and using default settings for the app, as no options other than the `features` array are passed to the `createApp` function. + +Visit the [built-in extensions](#customize-or-override-built-in-extensions) section to see what is installed by default in a Backstage application. + +## Configure your app + +### Bind external routes + +Linking routes from different plugins requires this configuration. You can do this either through a configuration file or by coding, visit [this](https://backstage.io/docs/frontend-system/architecture/routes#binding-external-route-references) page for instructions. + +### Enable feature discovery + +Use this setting to enable experimental feature discovery when building your app with `@backstage/cli`. With this configuration your application tries to discover and install package extensions automatically, check [here](../architecture/02-app.md#feature-discovery) for more details. + +:::warning +Remember that package extensions that are not auto-discovered must be manually added to the application when creating an app. See [features](#install-features-manually) for more details. +::: + +### Configure extensions individually + +It is possible to enable, disable and configure extensions individually in the `app-config.yaml` config file. To get familiar with what is available for app extensions personalization, go to the [built-in extensions](./02-built-in-extensions.md) documentation. For plugin customizations, we recommend that you read the instructions in each plugin's README file. + +### Customize or override built-in extensions + +Previously you would customize the application route, components, apis, sidebar, etc. through the code in `App.tsx`. Now we want you to write less code and install more extensions to customize your Backstage instance. See [here](../building-plugins/03-extension-types.md) which types of extensions are available for you to customize your application. + +## Use code to customize the app at a more granular level + +### Install features manually + +A manual installation is required if your packages are not discovered automatically, either because you are not using `@backstage/cli` to build your application or because the features are defined in local modules in the app package. In order to manually install a feature, you must import it and pass it to the `createApp` function: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +// This plugin was create as a local module in the app +import { somePlugin } from './plugins'; + +const app = createApp({ + features: [somePlugin], +}); + +export default app.createRoot(); +``` + +:::info +You can also pass overrides to the features array, for more details, please read the [extension overrides](../architecture/05-extension-overrides.md) documentation. +::: + +### Using an async features loader + +In case you need to perform asynchronous operations before passing features to the `createApp` function, define a [feature loader](https://backstage.io/docs/reference/frontend-app-api.createappfeatureloader/) object and pass it to the `features` option: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; + +const app = createApp({ + features: { + getLoaderName: () => '', + // there is a reference to the config api in the options param + load: async _options => { + // returning a lazy loaded plugins and overrides array + // could be util for module federation + return import('./features').then(m => m.default); + }, + }, +}); + +export default app.createRoot(); +``` + +### Lazy load your configuration file + +In some cases we want to load our configuration from a backend server and to do so, you can pass an callback to the `configLoader` option when calling the `createApp` function, the callback should return a promise of an object with the config object: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +import { getConfigFromServer } from './utils'; + +// Example lazy loading the app configuration +const app = createApp({ + // Returns Promise<{ config: ConfigApi }> + configLoader: async () => { + // Calls an async utility method that fetches the config object from the server + const config = await getConfigFromServer(); + // Feel free to manipulate the config object before returning it + // A common example is conditionally modify the config based on the running enviroment + return { config }; + }, +}); + +export default app.createRoot(); +``` diff --git a/docs/frontend-system/building-apps/02-built-in-extensions.md b/docs/frontend-system/building-apps/02-built-in-extensions.md new file mode 100644 index 0000000000..4f8417f74f --- /dev/null +++ b/docs/frontend-system/building-apps/02-built-in-extensions.md @@ -0,0 +1,190 @@ +--- +id: built-in-extensions +title: App Built-in Extensions +sidebar_label: Built-in extensions +# prettier-ignore +description: Configuring or overriding built-in extensions +--- + +Built-in extensions are default app extensions that are always installed when you create a Backstage app. + +## Disable built-in extensions + +All built-in extensions can be disabled in the same way as you disable any other extension: + +```yaml title="app-config.yaml" +extensions: + # Disabling the built-in app root alert element + - app-root-element:app/alert-display: false +``` + +:::warning +Be careful when disabling built-in extensions, as there may be other extensions depending on their existence. For example, the built-in "alert display" extension displays messages retrieved via [AlertApi](https://backstage.io/docs/reference/core-plugin-api.alertapi) and disabling this extension will cause the application to no longer display these messages unless you install another extension that displays messages from `AlertApi`. +::: + +## Override built-in extensions + +You can override any built-in extension whenever their customizations, whether through configuration or input, do not meet a use case for your Backstage instance. Check out [this](../architecture/05-extension-overrides.md) documentation on how to override application extensions. + +:::warning +Be aware there could be some implementation requirements to properly override an built-in extension, such as using same apis and do not remove inputs or configurations otherwise you can cause a side effect in other parts of the system that expects same minimal behavior. +::: + +## Default built-in extensions + +### App + +This extension is the first extension attached to the extension tree. It is responsible for receiving the application's root element and other Frontend framework inputs. + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| root | The app root element. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | The [`App/Root`](#app-root) extension output. | No creator available, configure or override the [`App/Root`](#app-root) extension. | +| apis | The app apis factories. | [createApiExtension.factoryDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createapiextension.factorydataref) | false | See [default apis](#default-apis-extensions). | [createApiExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapiextension) | +| themes | The app themes list. | [createThemeExtension.themeDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createthemeextension.themedataref) | false | See [default themes](#default-theme-extensions). | [createThemeExtension](https://backstage.io/docs/reference/frontend-plugin-api.createthemeextension) | +| components | The app components list. | [createComponentExtension.componentDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createcomponentextension.componentdataref) | false | See [default components](#default-components-extensions). | [createComponentExtension](https://backstage.io/docs/reference/frontend-plugin-api.createcomponentextension) | +| translations | The app translations list. | [createTranslationExtension.translationDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createtranslationextension.translationdataref) | false | - | [createTranslationExtension](https://backstage.io/docs/reference/frontend-plugin-api.createtranslationextension) | + +#### Default theme extensions + +Extensions that provides default theme inputs for the `App` extension. + +| kind | namespace | name | id | +| :---: | :-------: | :---: | :---------------: | +| theme | app | light | `theme:app/light` | +| theme | app | dark | `theme:app/dark` | + +#### Default components extensions + +Extensions that provides default components inputs for the `App` extension. + +| kind | namespace | name | id | +| :--------: | :-------: | :-----------------------------------: | :----------------------------------------------------: | +| components | app | core.components.progress | `components:app/core.components.progress` | +| components | app | core.components.notFoundErrorPage | `components:app/core.components.notFoundErrorPage` | +| components | app | core.components.errorBoundaryFallback | `components:app/core.components.errorBoundaryFallback` | + +#### Default apis extensions + +Extensions that provides default apis inputs for the `App` extension. + +| kind | namespace | name | id | +| :--: | :------------------------: | :--: | :------------------------------: | +| api | core.discovery | - | `api:core.discovery` | +| api | core.alert | - | `api:core.alert` | +| api | core.analytics | - | `api:core.analytics` | +| api | core.error | - | `api:core.error` | +| api | core.storage | - | `api:core.storage` | +| api | core.fetch | - | `api:core.fetch` | +| api | core.oauthrequest | - | `api:core.oauthrequest` | +| api | core.auth.google | - | `api:core.auth.google` | +| api | core.auth.microsoft | - | `api:core.auth.microsoft` | +| api | core.auth.github | - | `api:core.auth.github` | +| api | core.auth.okta | - | `api:core.auth.okta` | +| api | core.auth.gitlab | - | `api:core.auth.gitlab` | +| api | core.auth.onelogin | - | `api:core.auth.onelogin` | +| api | core.auth.bitbucket | - | `api:core.auth.bitbucket` | +| api | core.auth.bitbucket-server | - | `api:core.auth.bitbucket-server` | +| api | core.auth.atlassian | - | `api:core.auth.atlassian` | +| api | plugin.permission.api | - | `api:plugin.permission.api` | + +### App root + +This is the extension that creates the app root element, so it renders root level components such as app router and layout. + +#### Inputs + +| Name | Description | Requirements | Optional | Default | Extension creator | +| ---------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| router | A React component that should manager the app routes context. | It must be one [router](https://reactrouter.com/en/main/routers/picking-a-router#web-projects) component or a custom component compatible with the 'react-router' library. | true | [BrowserRouter](https://reactrouter.com/en/main/router-components/browser-router) | [createRouterExtension](https://backstage.io/docs/reference/frontend-plugin-api.createrouterextension) | +| signInPage | A React component that should render the app sign-in page. | Should call the `onSignInSuccess` prop when the user has been successfully authorized, otherwise the user will not be correctly redirected to the application home page. | true | The default `AppRoot` extension does not use a default component for this input, it bypasses the user authentication check and always renders all routes when a login page is not installed. | [createSignInPageExtension](https://backstage.io/docs/reference/frontend-plugin-api.createsigninpageextension/) | +| children | A React component that renders the app sidebar and main content in a particular layout. | - | false | The [`App/Layout`](#app-layout) extension output. | No creator available, configure or override the [`App/Layout`](#app-layout) extension. | +| elements | React elements to be rendered outside of the app layout, such as shared popups. | - | false | See [default elements](#default-app-root-elements-extensions). | [createAppRootElementExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapprootelementextension/) | +| wrappers | React components that should wrap the root element. | - | true | - | [createAppRootWrapperExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapprootwrapperextension/) | + +#### Default app root elements extensions + +##### Alert Display + +An app root element extension that displays messages posted via the [`AlertApi`](https://backstage.io/docs/reference/core-plugin-api.alertapi). + +| kind | namespace | name | id | +| :--------------: | :-------: | :-----------: | :----------------------------------: | +| app-root-element | app | alert-display | `app-root-element:app/alert-display` | + +###### Configurations + +| Key | Type | Default value | Description | +| -------------------- | -------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------- | +| `transientTimeoutMs` | number | 5000 | Time in milliseconds to wait before displaying messages. | +| `anchorOrigin` | { vertical: 'top' \| 'bottom', horizontal: 'left' \| 'center' \| 'right' } | { vertical: 'top', horizontal: 'center' } | Position on the screen where the message alert will be displayed. | + +###### Override or disable the extension + +If you do not want to display alerts, disable this extension or if the available settings do not meet your needs, override this extension. + +:::warning +The built-in "alert display" extension displays messages retrieved via [AlertApi](https://backstage.io/docs/reference/core-plugin-api.alertapi) and disabling this extension will cause the application to no longer display these messages unless you install another extension that displays messages from `AlertApi`. +::: + +##### OAuth Request Dialog + +An app root element extension that renders the oauth request dialog, it is based on the [oauthRequestApi](https://backstage.io/docs/reference/core-plugin-api.oauthrequestapi/). + +| kind | namespace | name | id | +| :--------------: | :-------: | :------------------: | :-----------------------------------------: | +| app-root-element | app | oauth-request-dialog | `app-root-element:app/oauth-request-dialog` | + +### App layout + +Renders the app's sidebar and content in a specific layout. + +| kind | namespace | name | id | +| :--: | :-------: | :----: | :----------: | +| - | app | layout | `app/layout` | + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------ | +| nav | A React element that renders the app sidebar. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | - | Override the `App/Nav` extension. | +| content | A React element that renders the app content. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | - | Override the `App/Routes` extension. | + +### App nav + +Extension responsible for rendering the logo and items in the app's sidebar. + +| kind | namespace | name | id | +| :--: | :-------: | :--: | :-------: | +| - | app | nav | `app/nav` | + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ----- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------- | +| logos | A nav logos object. | [createNavLogoExtension.logoElementsDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createnavlogoextension.logoelementsdataref) | true | - | [createNavLogoExtension](https://backstage.io/docs/reference/frontend-plugin-api.createnavlogoextension) | +| items | Nav items target objects. | [createNavItemExtension.targetDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createnavitemextension.targetdataref) | true | - | [createNavItemExtension](https://backstage.io/docs/reference/frontend-plugin-api.createnavitemextension) | + +### App routes + +Renders a route element for each route received as input and a `NotFoundErrorPage` component. + +| kind | namespace | name | id | +| :--: | :-------: | :----: | :----------: | +| - | app | routes | `app/routes` | + +#### Caveats + +Be careful when overriding this extension, as to do so correctly you must consider these implementation requirements: + +- The routing system is managed by more than one extension, and they all use `react-router` behind the scenes. There are also some utilities that are based on the same `routing` library like `useRouteRefParams`. Therefore, you cannot use a different library without causing side effects in these other extensions and helper utilities; +- Don't remove configs or inputs, just extend these things yourself with optional new options, otherwise it will cause breaking changes for extensions like `createPageExtension` that depend on this type of inputs; +- Remember to user the route refs for getting paths dynamically, otherwise if an adopter modifies a path through configuration, the route is not going to point to the configured path; +- Adopters expect to be able to customize the `NotFoundErrorPage` component via Components API, you should render this component for routes not configured. + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------- | +| routes | The route objects list. | `{ path: coreExtensionData.routePath, ref: coreExtensionData.routeRef.optional(), element: coreExtensionData.reactElement }` | false | - | [createPageExtension](https://backstage.io/docs/reference/frontend-plugin-api.createpageextension) | diff --git a/docs/frontend-system/building-plugins/01-index.md b/docs/frontend-system/building-plugins/01-index.md new file mode 100644 index 0000000000..f8d80f9382 --- /dev/null +++ b/docs/frontend-system/building-plugins/01-index.md @@ -0,0 +1,222 @@ +--- +id: index +title: Building Frontend Plugins +sidebar_label: Overview +# prettier-ignore +description: Building frontend plugins using the new frontend system +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +This section covers how to build your own frontend [plugins](../architecture/04-plugins.md) and +[overrides](../architecture/05-extension-overrides.md). They are sometimes collectively referred to as +frontend _features_, and what you install to build up a Backstage frontend [app](../architecture/02-app.md). + +## Creating a new plugin + +This guide assumes that you already have a Backstage project set up. Even if you only want to develop a single plugin for publishing, we still recommend that you do so in a standard Backstage monorepo project, as you often end up needing multiple packages. For instructions on how to set up a new project, see our [getting started](../../getting-started/index.md#prerequisites) documentation. + +To create a frontend plugin, run `yarn new`, select `plugin`, and fill out the rest of the prompts. This will create a new package at `plugins/`, which will be the main entrypoint for your plugin. + +:::info +The created plugin will currently be templated for use in the legacy frontend system, and you will need to replace the existing plugin wiring code. +::: + +## The plugin instance + +The starting point of a frontend plugin is the `createPlugin` function, which accepts a single options object as its only parameter. It is imported from `@backstage/frontend-plugin-api`, which is where you will find most of the common APIs for building plugins. + +This is how to create a minimal plugin: + +```tsx title="in src/plugin.ts" +import { createPlugin } from '@backstage/frontend-plugin-api'; + +export const examplePlugin = createPlugin({ + id: 'example', + extensions: [], +}); +``` + +```tsx title="in src/index.ts" +export { examplePlugin as default } from './plugin'; +``` + +Note that we export the plugin as the default export of our package from `src/index.ts`. This is important, as it is how users of our plugin are able to seamlessly install the plugin package in a Backstage app without having to reference the plugin instance through code. + +The plugin ID should be a lowercase dash-separated string, while the plugin instance variable should be the camel case version of the ID with a `Plugin` suffix. For more details on naming patterns within the frontend system, see [the article on naming patterns](../architecture/08-naming-patterns.md). By sticking to these naming patterns you ensure that users of your plugin more easily recognize the exports and features provided by your plugin. + +## Adding extensions + +The plugin that we created above is empty, and doesn't provide any actual functionality. To add functionality to a plugin you need to create and provide it with one or more [extensions](../architecture/03-extensions.md). Let's continue by adding a standalone page to our plugin, as well as a navigation item that allows users to navigate to the page. + +To create a new extension you typically use pre-defined [extension creators](../architecture/03-extensions.md#extension-creators), provided either by the framework itself or by other plugins. In this case we'll need to use `createPageExtension` and `createNavItemExtension`, both from `@backstage/frontend-plugin-api`. We will also need to [create a route reference](../architecture/07-routes.md#creating-a-route-reference) to use as a reference for out page, allowing us to dynamically create URLs that link to our page. + +```tsx title="in src/routes.ts" +import { createRouteRef } from '@backstage/frontend-plugin-api'; + +// Typically all routes are defined in src/routes.ts, in order to avoid circular imports. + +// This will be the route reference for our example page. If you want to link +// to the page from somewhere else, you can use this reference to generate the target path. +export const rootRouteRef = createRouteRef(); +``` + +```tsx title="in src/plugin.ts" +import { + createPlugin, + createPageExtension, + createNavItemExtension, +} from '@backstage/frontend-plugin-api'; +import { rootRouteRef } from './routes'; + +// Note that these extensions aren't exported, only the plugin itself is. +// You can export it locally for testing purposes, but don't export it from the plugin package. +const examplePage = createPageExtension({ + routeRef: rootRouteRef, + + // This is the default path of this page, but integrators are free to override it + defaultPath: '/example', + + // Page extensions are always dynamically loaded using React.lazy(). + // All of the functionality of this page is implemented in the + // ExamplePage component, which is a regular React component. + // highlight-next-line + loader: () => import('./components/ExamplePage').then(m => ), +}); + +// This nav item is provided to the app.nav extension, and will by default be rendered as a sidebar item +const exampleNavItem = createNavItemExtension({ + routeRef: rootRouteRef, + title: 'Example', + icon: ExampleIcon, // Custom SvgIcon, or one from the Material UI icon library +}); + +// The same plugin as above, now with the extensions added +export const examplePlugin = createPlugin({ + id: 'example', + extensions: [examplePage, exampleNavItem], + // We can also make routes available to other plugins. + // highlight-start + routes: { + root: rootRouteRef, + }, + // highlight-end +}); +``` + +What we've built here is a very common type of plugin. It's a top-level tool that provides a single page, along with a method for navigating to that page. The implementation of the page component, in this case the highlighted `ExamplePage`, can be arbitrarily complex. It can be anything from a single simple information page, to a full-blown application with multiple sub-pages. + +We have also provided external access to our route reference by passing it to the plugin `routes` option. This makes it possible for app integrators to bind an external link from a different plugin to our plugin page. You can read more about how this works in the [External Route References](../architecture/07-routes.md#external-route-references) section. + +## Utility APIs + +Another type of extensions that is commonly used are [Utility APIs](../utility-apis/01-index.md). They can encapsulate shared pieces of functionality of your plugin, for example an API client for a backend service. You can optionally export your Utility API for other plugins to use, or allow integrators to replace the implementation of your Utility API with their own. For details on how to define and provide your own Utility API in your plugin, see the section on [creating Utility APIs](../utility-apis/02-creating.md). + +What we'll show here is a complete example of a simple Utility API used only within the plugin itself: + +```tsx title="src/api.ts - Defining an interface, API reference, and default implementation" +import { createApiRef } from '@backstage/frontend-plugin-api'; + +export interface ExampleApi { + getExample(): { example: string }; +} + +export const exampleApiRef = createApiRef({ + id: 'plugin.example', +}); + +export class DefaultExampleApi implements ExampleApi { + getExample(): { example: string } { + return { example: 'Hello World!' }; + } +} +``` + +```tsx title="src/components/ExamplePage.tsx - Using the API in our page component" +import { useApi } from '@backstage/frontend-plugin-api'; +import { exampleApiRef } from '../api'; + +export function ExamplePage() { + // highlight-next-line + const exampleApi = useApi(exampleApiRef); + + return ( +
+

Example Page

+

Example: {exampleApi.getExample().example}

+
+ ); +} +``` + +```tsx title="in src/plugin.ts - Registering a factory for our API" +import { + createApiFactory, + createApiExtension, +} from '@backstage/frontend-plugin-api'; +import { exampleApiRef, DefaultExampleApi } from './api'; + +// highlight-add-start +const exampleApi = createApiExtension({ + factory: createApiFactory({ + api: exampleApiRef, + deps: {}, + factory: () => new DefaultExampleApi(), + }), +}); +// highlight-add-end + +/* Omitted definitions for examplePage, exampleNavItem, and rootRouteRef. */ + +export const examplePlugin = createPlugin({ + id: 'example', + extensions: [ + // highlight-add-next-line + exampleApi, + examplePage, + exampleNavItem, + ], + routes: { + root: rootRouteRef, + }, +}); +``` + +## Plugin specific extensions + +There are many different plugins that you can extend with additional functionality through extensions. One such plugin is [the catalog plugin](../../features/software-catalog/), one of the core features of Backstage. It lets you catalog the software in your organization, where each item in the catalog has its own page that can be populated with tools and information relating to that catalog entity. In this example we will explore how our plugin can provide such a tool to display on an entity page. + +```tsx title="in src/plugin.ts - An example entity content extension" +import { createEntityContentExtension } from '@backstage/plugin-catalog-react'; + +// Entity content extensions are similar to page extensions in that they are rendered at a route, +// although they also have a title to support in-line navigation between the different content. +// Just like a page extension the content is lazy loaded, and you can also provide a +// route reference if you want to be able to generate a URL that links to the content. +const exampleEntityContent = createEntityContentExtension({ + defaultPath: 'example', + defaultTitle: 'Example', + loader: () => + import('./components/ExampleEntityContent').then(m => ( + + )), +}); + +export const examplePlugin = createPlugin({ + id: 'example', + extensions: [ + // highlight-add-next-line + exampleEntityContent + exampleApi, + examplePage, + exampleNavItem, + ], + routes: { + root: rootRouteRef, + }, +}); +``` + +The `ExampleEntityContent` itself is again a regular React component where you can implement any functionality you want. To access the entity that the content is being rendered for, you can use the `useEntity` hook from `@backstage/plugin-catalog-react`. You can see a full list of APIs provided by the catalog React library in [the API reference](../../reference/plugin-catalog-react.md). + +For a more complete list of the different types of extensions that you can create for your plugin, see the [extension types](./03-extension-types.md) section. diff --git a/docs/frontend-system/building-plugins/testing.md b/docs/frontend-system/building-plugins/02-testing.md similarity index 99% rename from docs/frontend-system/building-plugins/testing.md rename to docs/frontend-system/building-plugins/02-testing.md index c6621d6584..fa29918311 100644 --- a/docs/frontend-system/building-plugins/testing.md +++ b/docs/frontend-system/building-plugins/02-testing.md @@ -70,7 +70,7 @@ describe('Entity details component', () => { await renderInTestApp( - + , ); diff --git a/docs/frontend-system/building-plugins/03-extension-types.md b/docs/frontend-system/building-plugins/03-extension-types.md new file mode 100644 index 0000000000..2bea073ed6 --- /dev/null +++ b/docs/frontend-system/building-plugins/03-extension-types.md @@ -0,0 +1,59 @@ +--- +id: extension-types +title: Frontend System Extension Types +sidebar_label: Extension Types +# prettier-ignore +description: Extension types provided by the frontend system and core features +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +This section covers many of the [extension types](../architecture/03-extensions.md#extension-creators) available at your disposal when building Backstage frontend plugins. + +## Built-in extension types + +These are the extension types provided by the Backstage frontend framework itself. + +### Api - [Reference](../../reference/frontend-plugin-api.createapiextension.md) + +An API extension is used to add or override [Utility API factories](../utility-apis/01-index.md) in the app. They are commonly used by plugins for both internal and shared APIs. There are also many built-in Api extensions provided by the framework that you are able to override. + +### Component - [Reference](../../reference/frontend-plugin-api.createcomponentextension.md) + +Components extensions are used to override the component associated with a component reference throughout the app. + +### NavItem - [Reference](../../reference/frontend-plugin-api.createnavitemextension.md) + +Navigation item extensions are used to provide menu items that link to different parts of the app. By default nav items are attached to the app nav extension, which by default is rendered as the left sidebar in the app. + +### Page - [Reference](../../reference/frontend-plugin-api.createpageextension.md) + +Page extensions provide content for a particular route in the app. By default pages are attached to the app routes extensions, which renders the root routes. + +### SignInPage - [Reference](../../reference/frontend-plugin-api.createsigninpageextension.md) + +Sign-in page extension have a single purpose - to implement a custom sign-in page. They are always attached to the app root extension and are rendered before the rest of the app until the user is signed in. + +### Theme - [Reference](../../reference/frontend-plugin-api.createthemeextension.md) + +Theme extensions provide custom themes for the app. They are always attached to the app extension and you can have any number of themes extensions installed in an app at once, letting the user choose which theme to use. + +### Translation - [Reference](../../reference/frontend-plugin-api.createtranslationextension.md) + +Translation extension provide custom translation messages for the app. They can be used both to override the default english messages to custom ones, as well as provide translations for additional languages. + +## Core feature extension types + +These are the extension types provided by the Backstage core feature plugins. + +### EntityCard - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/api-report-alpha.md) + +Creates entity cards to be displayed on the entity pages of the catalog plugin. + +### EntityContent - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/api-report-alpha.md) + +Creates entity content to be displayed on the entity pages of the catalog plugin. + +### SearchResultListItem - [Reference](https://github.com/backstage/backstage/blob/master/plugins/search-react/api-report-alpha.md) + +Creates search result list items for different types of search results, to be displayed in search result lists. diff --git a/docs/frontend-system/building-plugins/04-built-in-data-refs.md b/docs/frontend-system/building-plugins/04-built-in-data-refs.md new file mode 100644 index 0000000000..dacbbf30f1 --- /dev/null +++ b/docs/frontend-system/building-plugins/04-built-in-data-refs.md @@ -0,0 +1,61 @@ +--- +id: built-in-data-refs +title: Built-in data refs +sidebar_label: Built-in data refs +# prettier-ignore +description: Configuring or overriding built-in extension data references +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +To have a better understanding of extension data references please read [the corresponding architecture section](../architecture/03-extensions.md#extension-data) first. + +## Built-in extension data references + +Data references help to define the inputs and outputs of an extension. A data ref is uniquely identified through its `id`. Through the data ref, strong typing is enforced for the input/output of the extension. + +### `reactElement` + +| id | type | +| :-----------------: | :-----------: | +| `core.reactElement` | `JSX.Element` | + +The `reactElement` data reference can be used for defining the extension input/output of React elements. Example usage could be something like this: + +```tsx +import { + coreExtensionData, + createExtensionInput, + createPageExtension, +} from '@backstage/frontend-plugin-api'; + +const homePage = createPageExtension({ + defaultPath: '/home', + routeRef: rootRouteRef, + inputs: { + props: createExtensionInput({ + children: coreExtensionData.reactElement.optional(), + }), + }, +}); +``` + +### `routePath` + +| id | type | +| :-----------------: | :------: | +| `core.routing.path` | `string` | + +The `routePath` data reference can be used for defining the extension input/output of string paths. + +### `routeRef` + +| id | type | +| :----------------: | :--------: | +| `core.routing.ref` | `RouteRef` | + +The `routeRef` data reference can be used for defining the extension input/output of route references. + +### Other data references + +There are other data refs in the frontend system you might stumble upon while building your plugin. Most of them were created for use cases inside the core of the system, but they can be used also in your plugin. diff --git a/docs/frontend-system/index.md b/docs/frontend-system/index.md index 0dda44555c..201718f6d3 100644 --- a/docs/frontend-system/index.md +++ b/docs/frontend-system/index.md @@ -12,4 +12,4 @@ description: The Frontend System The new frontend system is in alpha, and only a few plugins support the system so far. We do not yet recommend migrating any apps to the new system. If you add support for the new system to your plugin, please do so under a `/alpha` sub-path export. -You can find an example app setup in [the `app-next` package](https://github.com/backstage/backstage/tree/master/packages/app-next). +You can find an example app setup in the [`app-next` package](https://github.com/backstage/backstage/tree/master/packages/app-next). diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 5d797ecb4b..0c813b1aee 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -67,7 +67,7 @@ App. Use the following commands to start the PostgreSQL client installation: ```bash # From your Backstage root directory -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg ``` Use your favorite editor to open `app-config.yaml` and add your PostgreSQL diff --git a/docs/getting-started/configure-app-with-plugins.md b/docs/getting-started/configure-app-with-plugins.md index 5611117636..724746ca16 100644 --- a/docs/getting-started/configure-app-with-plugins.md +++ b/docs/getting-started/configure-app-with-plugins.md @@ -23,7 +23,7 @@ to an entity in the software catalog. ```bash # From your Backstage root directory - yarn add --cwd packages/app @circleci/backstage-plugin + yarn --cwd packages/app add @circleci/backstage-plugin ``` Note the plugin is added to the `app` package, rather than the root diff --git a/docs/getting-started/contributors.md b/docs/getting-started/contributors.md index 123958d440..9ba338af96 100644 --- a/docs/getting-started/contributors.md +++ b/docs/getting-started/contributors.md @@ -11,4 +11,4 @@ Therefore we want to create a strong community of contributors -- all working to Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. ❤️ -To get you started we've put together a [Contributors Guide in the Backstage GitHub repo](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) that has all the information you need +To get you started we've put together a [Contributors Guide in the Backstage GitHub repo](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) that has all the information you need. diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 04dfb13d6a..18f23f6607 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -30,7 +30,7 @@ Now, let's get started by installing the home plugin and creating a simple homep ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-home +yarn --cwd packages/app add @backstage/plugin-home ``` #### 2. Create a new HomePage component diff --git a/docs/integrations/aws-s3/discovery.md b/docs/integrations/aws-s3/discovery.md index ceb780141f..d664466a16 100644 --- a/docs/integrations/aws-s3/discovery.md +++ b/docs/integrations/aws-s3/discovery.md @@ -64,7 +64,7 @@ the AWS catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-aws +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-aws ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index 3b25a9ac75..742fbb6076 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -98,7 +98,7 @@ the Azure catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-azure +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-azure ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 061baf7301..38c2e7618a 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -16,7 +16,7 @@ The package is not installed by default, therefore you have to add `@backstage/p ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-msgraph +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-msgraph ``` Next add the basic configuration to `app-config.yaml` diff --git a/docs/integrations/bitbucketCloud/discovery.md b/docs/integrations/bitbucketCloud/discovery.md index 53315a4c48..a7477a2a61 100644 --- a/docs/integrations/bitbucketCloud/discovery.md +++ b/docs/integrations/bitbucketCloud/discovery.md @@ -21,7 +21,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-bitbucket-cloud +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-cloud ``` ### Installation without Events Support diff --git a/docs/integrations/bitbucketServer/discovery.md b/docs/integrations/bitbucketServer/discovery.md index ad59006ff1..f37732b600 100644 --- a/docs/integrations/bitbucketServer/discovery.md +++ b/docs/integrations/bitbucketServer/discovery.md @@ -21,7 +21,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-bitbucket-server +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-server ``` And then add the entity provider to your catalog builder: diff --git a/docs/integrations/gerrit/discovery.md b/docs/integrations/gerrit/discovery.md index ee843d2454..e2922c1f76 100644 --- a/docs/integrations/gerrit/discovery.md +++ b/docs/integrations/gerrit/discovery.md @@ -18,7 +18,7 @@ the Gerrit provider plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gerrit +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gerrit ``` Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index 3c3d90d6e9..461fab8af8 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -23,7 +23,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` And then add the entity provider to your catalog builder: @@ -250,7 +250,7 @@ package, plus `@backstage/integration` for the basic credentials management: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/integration @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/integration @backstage/plugin-catalog-backend-module-github ``` And then add the processors to your catalog builder: diff --git a/docs/integrations/github/github-apps.md b/docs/integrations/github/github-apps.md index cc84704799..96363bc719 100644 --- a/docs/integrations/github/github-apps.md +++ b/docs/integrations/github/github-apps.md @@ -139,3 +139,13 @@ integration: - `Variables`: `Read & write` (if templates include GitHub Action Repository Variables) - `Secrets`: `Read & write` (if templates include GitHub Action Repository Secrets) - `Environments`: `Read & write` (if templates include GitHub Environments) + +### Troubleshooting + +`HttpError: This endpoint requires you to be authenticated.` + +This message tends to wrap a `NotFoundError: No app installation found` under the hood, which +is the result of not installing the app in your organization. Even if created via the `backstage-cli` +as a member and app manager of your organization, the app will not automatically install. You +must possess the `Owner` role in the organization to see the `Install` menu under your +app settings, then manually press `Install` to authorize the application. diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 1404b20559..263ceda6c6 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -27,7 +27,7 @@ to `@backstage/plugin-catalog-backend-module-github` to your backend package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` > Note: When configuring to use a Provider instead of a Processor you do not @@ -308,7 +308,7 @@ install and register it in the catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` ```typescript title="packages/backend/src/plugins/catalog.ts" diff --git a/docs/integrations/gitlab/discovery.md b/docs/integrations/gitlab/discovery.md index 235d93ab03..d41f4f8de5 100644 --- a/docs/integrations/gitlab/discovery.md +++ b/docs/integrations/gitlab/discovery.md @@ -39,7 +39,7 @@ the gitlab catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gitlab ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index ca40cefa9e..f2a483c9d1 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -15,7 +15,7 @@ As this provider is not one of the default providers, you will first need to ins ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gitlab ``` Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index 7306ab4105..9bc2667aa7 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -26,7 +26,7 @@ to `@backstage/plugin-catalog-backend-module-ldap` to your backend package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-ldap +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-ldap ``` > Note: When configuring to use a Provider instead of a Processor you do not diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md index 51c328c871..ddcfa44cf5 100644 --- a/docs/local-dev/cli-build-system.md +++ b/docs/local-dev/cli-build-system.md @@ -258,7 +258,7 @@ When building CommonJS or ESM output, the build commands will always use `src/index.ts` as the entrypoint. All non-relative modules imports are considered external, meaning the Rollup build will only compile the source code of the package itself. All import statements of external dependencies, even within the same -monorepo, will stay intact. +[monorepo](../references/glossary.md#monorepo), will stay intact. The build of the type definitions works quite differently. The entrypoint of the type definition build is the relative location of the package within the @@ -307,11 +307,12 @@ support for them instead. ### Frontend Production -The frontend production bundling creates your typical web content bundle, all -contained within a single folder, ready for static serving. It is used when building -packages with the `'frontend'` role, and unlike the development bundling there is no way to -build a production bundle of an individual plugin. The output of the bundling -process is written to the `dist` folder in the package. +The frontend production bundling creates your typical web content +[bundle](../references/glossary.md#bundle), all contained within a single +folder, ready for static serving. It is used when building packages with the +`'frontend'` role, and unlike the development bundling there is no way to +build a production bundle of an individual plugin. +The output of the bundling process is written to the `dist` folder in the package. Just like the development bundling, the production bundling is based on [Webpack](https://webpack.js.org/). It uses the diff --git a/docs/local-dev/cli-overview.md b/docs/local-dev/cli-overview.md index 74c09d2865..4ab8bb21ac 100644 --- a/docs/local-dev/cli-overview.md +++ b/docs/local-dev/cli-overview.md @@ -7,11 +7,12 @@ description: Overview of the Backstage CLI ## Introduction A goal of Backstage is to provide a delightful developer experience in and -around the project. Creating new apps and plugins should be simple, iteration +around the project. Creating new [apps](../references/glossary.md#app) and +[plugins](../references/glossary.md#plugin) should be simple, iteration speed should be fast, and the overhead of maintaining custom tooling should be minimal. As a part of accomplishing this goal, Backstage provides its own build system and tooling, delivered primarily through the -[`@backstage/cli`](https://www.npmjs.com/package/@backstage/cli) package. When +[`@backstage/cli`](https://www.npmjs.com/package/@backstage/cli) [package](../references/glossary.md#package). When creating an app using [`@backstage/create-app`](https://www.npmjs.com/package/@backstage/create-app), you receive a project that's already prepared with a typical setup and package @@ -36,18 +37,3 @@ The Backstage CLI intentionally does not provide many hooks for overriding or customizing the build process. This is to allow for evolution of the CLI without having to take a wide API surface into account. This allows us to iterate and improve the tooling, as well as to more easily keep the system up to date. - -## Glossary - -- **Package** - A package in the Node.js ecosystem, often published to a package - registry such as [NPM](https://www.npmjs.com/). -- **Monorepo** - A project layout that consists of multiple packages within a - single project, where packages are able to have local dependencies on each - other. Often enabled through tooling such as [lerna](https://lerna.js.org/) - and [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) -- **Local Package** - One of the packages within a monorepo. These package may - or may not also be published to a package registry. -- **Bundle** - A collection of the deployment artifacts. The output of the - bundling process, which brings a collection of packages into a single - collection of deployment artifacts. -- **Package Role** - The declared role of a package, see [package roles](./cli-build-system.md#package-roles). diff --git a/docs/local-dev/debugging.md b/docs/local-dev/debugging.md index 17a98b1c1c..39981f2e54 100644 --- a/docs/local-dev/debugging.md +++ b/docs/local-dev/debugging.md @@ -71,3 +71,20 @@ In your `launch.json`, add a new entry with the following, "console": "integratedTerminal" }, ``` + +### WebStorm + +This section describes the process for enabling run configurations for Backstage in WebStorm. +Run configurations enable the use of debugging functionality such as steppers and breakpoints. + +1. Select `Edit Configurations` in the `Run` dropdown menu. Click the plus sign to add a new + configuration, then select `Node.js`. +2. In `Working directory`, input `{PROJECT_DIR}/packages/backend`. + Replace `{PROJECT_DIR}` with the path to your Backstage repo. +3. In `JavaScript file`, input `{PROJECT_DIR}/node_modules/@backstage/cli/bin/backstage-cli`. + Replace `{PROJECT_DIR}` with the path to your Backstage repo. +4. In `Application parameters`, input `package start`. +5. Optionally, for `Environment Variables`, input `LOG_LEVEL=debug`. +6. Click `Apply` to save the changes. +7. With the newly-created configuration selected, use the `Run` or `Debug` icons on the + toolbar to execute the newly created configuration. diff --git a/docs/openapi/01-getting-started.md b/docs/openapi/01-getting-started.md index eb3b1c1209..5b9908756f 100644 --- a/docs/openapi/01-getting-started.md +++ b/docs/openapi/01-getting-started.md @@ -45,7 +45,7 @@ You should create a new folder, `src/schema` in your backend plugin to store you ## Generating a typed express router from a spec -Run `yarn backstage-repo-tools schema openapi generate `. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. +Run `yarn backstage-repo-tools package schema openapi generate --server` from the directory with your plugin. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. You should add this command to your `package.json` for future use and you can combine both the server generation and the client generation below like so, `yarn backstage-repo-tools package schema openapi generate --server --client-package ` Use it like so, update your `router.ts` or `createRouter.ts` file with the following content, @@ -63,7 +63,7 @@ export async function createRouter( ## Generating a typed client from a spec -Run `yarn backstage-repo-tools schema openapi generate-client --input-spec /src/schema/openapi.yaml --output-directory `. `` should match the same backend plugin we've been using so far. `` is a new directory and npm package that you should create. The general pattern is `plugins/-client`. +From your current backend plugin directory, run `yarn backstage-repo-tools package schema openapi generate --client-package `. `` is a new directory and npm package that you should create. The general pattern is `plugins/-client` or if you want to co-locate this with your other shared types, use `plugins/-common`. You should add this command to your `package.json` for future use. The generated client will have a directory `src/generated` that exports a `DefaultApiClient` class and all generated types. You can use the client like so, @@ -108,7 +108,7 @@ describe('createRouter', () => { + app = wrapInOpenApiTestServer(express().use(router)); ``` -This adds a wrapper around the express server that allows it to reroute traffic for `supertest`. Run `yarn backstage-repo-tools schema openapi init` to create some required config files. Now, when you run `yarn backstage-repo-tools schema openapi test` your schema will now be tested against your test data. Any errors will be reported. +This adds a wrapper around the express server that allows it to reroute traffic for `supertest`. Run `yarn backstage-repo-tools package schema openapi init` to create some required files. Now, when you run `yarn backstage-repo-tools repo schema openapi test` your schema will now be tested against your test data. Any errors will be reported. Our command is a small wrapper over [`Optic`](https://github.com/opticdev/optic) which does all of the heavy lifting. diff --git a/docs/openapi/generate-client.md b/docs/openapi/generate-client.md index 4afa7d64d7..640036960e 100644 --- a/docs/openapi/generate-client.md +++ b/docs/openapi/generate-client.md @@ -4,26 +4,23 @@ title: Generate a client from your OpenAPI spec description: Documentation on how to create a client for a given OpenAPI spec --- -## How to generate a client with `repo-tools schema openapi generate-client`? +## How to generate a client with `repo-tools package schema openapi generate client`? ### Prerequisites -1. Add your plugin ID as the last `servers` item, like this, +1. Set your OpenAPI file's `info.title` to your pluginID like so, ```yaml -servers: - # first value, used for OpenAPI router validation. - - url: / - - # final value, pluginId. - - url: catalog +info: + # your pluginId + title: catalog ``` 2. Find or create a new plugin to house your new generated client. Currently, we do not support generating an entirely new plugin and instead just generate client files. ### Generating your client -1. Run `yarn backstage-repo-tools schema openapi generate-client --input-spec --output-directory `. This will create a new folder in `/src/generated` to house the generated content. +1. Run `yarn backstage-repo-tools schema openapi generate client --output-package `. This will create a new folder in `/src/generated` to house the generated content. 2. You should use the generated files as follows, - `apis/DefaultApi.client.ts` - this is the client that you should use. It has types for all of the various operations on your API. diff --git a/docs/openapi/test-case-validation.md b/docs/openapi/test-case-validation.md index 0d93b6d5b5..28d0eb5470 100644 --- a/docs/openapi/test-case-validation.md +++ b/docs/openapi/test-case-validation.md @@ -1,15 +1,15 @@ --- id: test-case-validation title: Validate your OpenAPI spec against test data -description: Documentation on how to use the `schema openapi test` command. +description: Documentation on how to use the `repo schema openapi test` command. --- ## OpenAPI Validation using Test Cases -This is primarily performed by `backstage-repo-tools schema openapi test`. Any errors found in the generated specs can be either +This is primarily performed by `backstage-repo-tools repo schema openapi test`. Any errors found in the generated specs can be either 1. Fixed manually, this is usually relevant for request body or response body changes. -2. Fixed automatically with `backstage-repo-tools schema openapi test --update`. +2. Fixed automatically with `backstage-repo-tools repo schema openapi test --update`. 3. Fixing the test case. This can happen where a response is mocked as ```ts diff --git a/docs/overview/background.md b/docs/overview/background.md index b74a2e0272..5e59967b21 100644 --- a/docs/overview/background.md +++ b/docs/overview/background.md @@ -35,4 +35,4 @@ Backstage was originally built by Spotify and then donated to the CNCF. Backstage is currently in the Incubation phase. Read the announcement [here](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation). - +CNCF logo diff --git a/docs/overview/glossary.md b/docs/overview/glossary.md deleted file mode 100644 index ab7d224f4d..0000000000 --- a/docs/overview/glossary.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -id: glossary -title: Backstage Glossary -# prettier-ignore -description: List of terms, abbreviations, and phrases used in Backstage, together with their explanations. ---- - -The Backstage Glossary lists terms, abbreviations, and phrases used in -Backstage, together with their explanations. We encourage you to use the -terminology below for clarity and consistency when discussing Backstage. - -See also [Authentication Glossary](../auth/glossary.md), a separate glossary of terms and phrases -specifically related to the authentication and identity section of Backstage. - -### Backstage User Profiles - -There are three main user profiles for Backstage: the integrator, the -contributor, and the end user (typically a software engineer). - -| Term | Explanation | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Integrator | The **integrator** hosts the Backstage app and configures which plugins are available to use in the app. | -| Contributor | The **contributor** adds functionality to the app by writing plugins. | -| End user | The **end user** uses the app's functionality and interacts with its plugins. This profile covers the various roles that help deliver software. The typical end user is a **software engineer**, but users might also consider themselves _designers_, _data scientists_, _product owners_, _engineering managers_, _technical writers_, and so on. | -| Software engineer | The **software engineer** is an **end user** who uses the app's functionality and interacts with its plugins in the course of writing and documenting code. This user is more likely to embed documentation in the code files they produce, and create rough drafts of conceptual pages in collaboration with a **technical writer** or _technical editor_. | -| Technical writer | The **technical writer** is an **end user** who uses the app's functionality and interacts with its plugins in the course of writing and editing documentation. This user is more likely to produce and customize templates and produce conceptual pages to supplement documentation embedded in code files. | diff --git a/docs/overview/logos.md b/docs/overview/logos.md index ac54640e33..fe993cc378 100644 --- a/docs/overview/logos.md +++ b/docs/overview/logos.md @@ -12,31 +12,31 @@ The assets below are all in `.svg` format. Other formats are available in the ## Backstage logo - - + + Backstage White logo - - + + Backstage Teal logo - - + + Backstage Black logo ## Backstage icon diff --git a/docs/overview/support.md b/docs/overview/support.md index c968405a99..0433683406 100644 --- a/docs/overview/support.md +++ b/docs/overview/support.md @@ -6,12 +6,12 @@ description: Support and Community Details and Links - [Discord chatroom](https://discord.gg/backstage-687207715902193673) - Get support or discuss the project. -- [Stack Overflow](https://stackoverflow.com/questions/tagged/backstage) - Browse or ask questions on Stack Overflow. - [Good First Issues](https://github.com/backstage/backstage/contribute) - Start here if you want to contribute. - [RFCs](https://github.com/backstage/backstage/labels/rfc) - Help shape the technical direction by reviewing _Request for Comments_ issues. -- [FAQ](../FAQ.md) - Frequently Asked Questions. +- [BEPs](https://github.com/backstage/backstage/tree/master/beps#backstage-enhancement-proposals-beps) - A Backstage Enhancement Proposal (BEP) is a way to propose, communicate and coordinate on new efforts for the Backstage project. +- [FAQ](../faq/index.md) - Frequently Asked Questions. - [Code of Conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md) - This is how we roll. - [Blog](https://backstage.io/blog/) - Announcements and updates. @@ -23,41 +23,3 @@ description: Support and Community Details and Links ## Community Hub Check out the Backstage.io [Backstage Community Hub](https://backstage.io/community) for the Community Sessions, recordings, and community resources. - -### Adding a recording to the meetup page - -To add a new recording to the [meetup page](https://backstage.io/on-demand) -create a file in -[`microsite/data/on-demand`](https://github.com/backstage/backstage/tree/master/microsite/data/on-demand) -with your recording's information. Filenames should be in the format `yyyymmdd-xx.yaml`. The page will sort using the filename. Example file content: - -```yaml ---- -title: # name of the meetup -date: February 23, 2022 # date, format: Month day, year. -category: Meetup # Can be Event, Meetup, Webinar -description: # description, summary -youtubeUrl: # Url to youtube video -youtubeImgUrl: # Url to the preview image, for Youtube this is the format: https://i1.ytimg.com/vi//mqdefault.jpg -``` - -### Adding an upcoming meetup to the meetup page - -To add an upcoming meetup to the [meetup page](https://backstage.io/on-demand) -create a file in -[`microsite/data/on-demand`](https://github.com/backstage/backstage/tree/master/microsite/data/on-demand) -with your meetup's information. Filenames should be in the format `yyyymmdd-xx.yaml`, the page will sort using the filename. Example file content: - -```yaml ---- -title: # name of the meetup -date: February 23, 2022 # date, format: Month day, year. -category: Upcoming # Should be "Upcoming" -description: # description, summary -youtubeUrl: # Url to youtube video -youtubeImgUrl: # Url to the preview image, for Youtube this is the format: https://i1.ytimg.com/vi//mqdefault.jpg -rsvpUrl: # Link to registration, calendar item, etc -eventUrl: # Link to event landing page -``` - -After the meetup is done, and the recording is ready you can change it to a meetup recording. diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index cb1379aa27..442d51985c 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -34,7 +34,7 @@ The integrator is also responsible for maintaining the resolved NPM dependencies There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseManager` that provides access to a SQL database, `TaskScheduler` for scheduling long-running tasks, `Logger` as a general logging facility, and `UrlReader` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. -In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database access. Any plugin that is running on a host that has access to the logical database of any other plugin should be considered to have full access to that other plugin. For example, if you deploy the `auth` and `catalog` plugins on separate hosts with separate configuration and credentials, the `catalog` plugin is still considered to have full access to the `auth` plugin if the `catalog` plugin has access to the `auth` plugin's logical database. The only way to create a boundary between the two plugins is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. +In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database access. Any plugin that is running on a host that has access to the logical database of any other plugin should be considered to have full access to that other plugin. For example, even if you deploy the `auth` and `catalog` plugins on separate hosts with separate configuration and credentials, the `catalog` plugin is still considered to have full access to the `auth` plugin as long as the `catalog` plugin has access to the `auth` plugin's logical database. The only way to create a boundary between the two plugins is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. The `UrlReader` facility is of particular interest for a secure Backstage configuration. In particular the `backend.reading.allow` configuration lists the hosts that you trust the backend to be able to read content from on behalf of users. It is extremely important that this list does not, for example, allow access to instance metadata endpoints of cloud providers, or other endpoints that your Backstage instance may have access to which contain sensitive information. In general it is recommended to keep the list minimal and only allow reading from required endpoints. The same concerns apply to custom implementations of the `UrlReader` interface, if you need to implement these through code. @@ -52,7 +52,7 @@ As part of signing in with an identity resolver, a Backstage Token is issued con The token is used to prove the identity of the user within the Backstage system, and is used throughout Backstage plugins to control access. It is important that the ownership resolution logic is consistent across the entire Backstage ecosystem, with no possibility of misinterpreting the ownership information. -For cross backend communication the Backstage Token is typically forwarded or in strict backend to backend communication without a user party the backend itself issues a service token based on a pre-shared secret which is then validated on the receiving end. There are no unique service identities tied to these tokens at this point, meaning the tokens can be used across all services in a Backstage installation, this is something that we aim to improve in the future. +For cross-backend communication, the Backstage Token is typically forwarded or, in strict backend-to-backend communication without a user party, the backend itself issues a service token based on a pre-shared secret which is then validated on the receiving end. There are no unique service identities tied to these tokens at this point, meaning the tokens can be used across all services in a Backstage installation. This is something that we aim to improve in the future. Backstage also supports authentication through a proxy where the user identity is read from the incoming request from the proxy, which has been decorated by an authenticating reverse proxy such as [AWS ALB](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/). The following proxy auth providers verify the signature of incoming requests, and are therefore safe to deploy with direct access by users: `awsAlb`, `cfAccess`, and `gcpIap`. Providers like `oauth2Proxy` does not verify the incoming request and can therefore be spoofed by a malicious internal user to supply the `auth` backend with forged identity information. It’s therefore highly recommended to restrict access to the `oauth2Proxy` endpoints, or use a different provider. diff --git a/docs/overview/what-is-backstage.md b/docs/overview/what-is-backstage.md index f18993770a..e91b9774d7 100644 --- a/docs/overview/what-is-backstage.md +++ b/docs/overview/what-is-backstage.md @@ -40,7 +40,7 @@ Out of the box, Backstage includes: Backstage is a CNCF Incubation project after graduating from Sandbox. Read the announcement [here](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation). - +CNCF logo ## Benefits diff --git a/docs/permissions/concepts.md b/docs/permissions/concepts.md index e7d65b3583..7c8b9e9f69 100644 --- a/docs/permissions/concepts.md +++ b/docs/permissions/concepts.md @@ -6,11 +6,11 @@ description: A list of important permission framework concepts ### Permission -Any action that a user performs within Backstage may be represented as a permission. More complex actions, like executing a software template, may require authorization for multiple permissions throughout the flow. Permissions are identified by a unique name and optionally include a set of attributes that describe the corresponding action. Plugins are responsible for defining and exposing the permissions they enforce. +Any action that a user performs within Backstage may be represented as a permission. More complex actions, like executing a [software template](../references/glossary.md#software-templates), may require [authorization](../references/glossary.md#authorization) for multiple permissions throughout the flow. Permissions are identified by a unique name and optionally include a set of attributes that describe the corresponding action. [Plugins](../references/glossary.md#plugin) are responsible for defining and exposing the permissions they enforce as well as enforcing restrictions from the permission framework. ### Policy -User permissions are authorized by a central, user-defined permission policy. At a high level, a policy is a function that receives a Backstage user and permission, and returns a decision to allow or deny. Policies are expressed as code, which decouples the framework from any particular authorization model, like role-based access control (RBAC) or attribute-based access control (ABAC). +User [permissions](../references/glossary.md#permission-permission-plugin) are authorized by a central, user-defined permission policy. At a high level, a policy is a function that receives a Backstage user and permission, and returns a decision to allow or deny. Policies are expressed as code, which decouples the framework from any particular [authorization](../references/glossary.md#authorization) model, like role-based access control (RBAC) or attribute-based access control (ABAC). ### Policy decision versus enforcement @@ -18,8 +18,10 @@ Two important responsibilities of any authorization system are to decide if a us ### Resources and rules -In many cases, a permission represents a user's interaction with another object. This object likely has information that policy authors can use to define more granular access. The permission framework introduces two abstractions to account for this: resources and rules. Resources represent the objects that users interact with. Rules are predicate-based controls that tap into a resource's data. For example, the catalog plugin defines a resource for catalog entities and a rule to check if an entity has a given annotation. +In many cases, a permission represents a user's interaction with another object. This object likely has information that policy authors can use to define more granular access. The permission framework introduces two abstractions to account for this: [resources](../references/glossary.md#resource-permission-plugin) and [rules](../references/glossary.md#rule-permission-plugin). For example, the catalog plugin defines a resource for catalog entities and a rule to check if an entity has a given annotation. ### Conditional decisions -Rules need additional data before they can be used in a decision. For example, the catalog plugin's "has annotation" rule needs to know what annotation to look for on a given entity. Once a rule is bound to relevant information it forms a condition. Conditions are then used to return a conditional decision from a policy. Conditional decisions tell the permission framework to delegate evaluation to the plugin that owns the corresponding resource. Permission requests that result in a conditional decision are allowed if all of the provided conditions evaluate to be true. This conditional behavior avoids coupling between policies and resource schemas, and allows plugins to evaluate complex rules in an efficient way. For example, a plugin may convert a conditional decision to a database query instead of loading and filtering objects in memory. +[Rules](../references/glossary.md#rule-permission-plugin) need additional data before they can be used in a decision. Once a [rule](../references/glossary.md#rule-permission-plugin) is bound to relevant information it forms a [condition](../references/glossary.md#condition-permission-plugin). Conditional decisions tell the [permission framework](#permission) to delegate evaluation to the [plugin](#plugin) that owns the corresponding [resource](#resource-permission-plugin). Permission requests that result in a conditional decision are allowed if all of the provided conditions evaluate to be true. + +A good example would be the catalog plugin's "has annotation" rule which needs to know what annotation to look for on a given entity. The permission framework would respond to a request by the catalog plugin in this case with a condition decision. The catalog plugin would then need to correctly filter for entities matching the "has annotations" condition. This conditional behavior avoids coupling between policies and resource schemas, and allows plugins to evaluate complex rules in an efficient way. For example, a plugin may convert a conditional decision to a database query instead of loading and filtering objects in memory. diff --git a/docs/permissions/custom-rules.md b/docs/permissions/custom-rules.md index c0f4e3e156..9063ed7257 100644 --- a/docs/permissions/custom-rules.md +++ b/docs/permissions/custom-rules.md @@ -4,7 +4,7 @@ title: Defining custom permission rules description: How to define custom permission rules for existing resources --- -For some use cases, you may want to define custom [rules](./concepts.md#resources-and-rules) in addition to the ones provided by a plugin. In the [previous section](./writing-a-policy.md) we used the `isEntityOwner` rule to control access for catalog entities. Let's extend this policy with a custom rule that checks what [system](https://backstage.io/docs/features/software-catalog/system-model#system) an entity is part of. +For some use cases, you may want to define custom [rules](../references/glossary.md#rule-permission-plugin) in addition to the ones provided by a plugin. In the [previous section](./writing-a-policy.md) we used the `isEntityOwner` rule to control access for catalog entities. Let's extend this policy with a custom rule that checks what [system](https://backstage.io/docs/features/software-catalog/system-model#system) an entity is part of. ## Define a custom rule diff --git a/docs/permissions/getting-started.md b/docs/permissions/getting-started.md index 01a268f7ef..e241f0e38e 100644 --- a/docs/permissions/getting-started.md +++ b/docs/permissions/getting-started.md @@ -48,7 +48,7 @@ The permissions framework uses a new `permission-backend` plugin to accept autho ```bash # From your Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-permission-backend + yarn --cwd packages/backend add @backstage/plugin-permission-backend ``` 2. Add the following to a new file, `packages/backend/src/plugins/permission.ts`. This adds the permission-backend router, and configures it with a policy which allows everything. diff --git a/docs/permissions/overview.md b/docs/permissions/overview.md index 693f848c82..8630b85e23 100644 --- a/docs/permissions/overview.md +++ b/docs/permissions/overview.md @@ -22,7 +22,7 @@ The permission framework was designed with a few key properties in mind: - **Integrators** can author or configure policies that define which users can take certain actions upon which resources. -![](../assets/permissions/permission-framework-overview.drawio.svg) +![backstage framework overview](../assets/permissions/permission-framework-overview.drawio.svg) 1. The user triggers a request to perform some action. The request specifies the authorization details using the permission specified by the plugin (in this case, a resource read action). diff --git a/docs/permissions/plugin-authors/01-setup.md b/docs/permissions/plugin-authors/01-setup.md index 8134fc0c39..a674d82e25 100644 --- a/docs/permissions/plugin-authors/01-setup.md +++ b/docs/permissions/plugin-authors/01-setup.md @@ -41,8 +41,8 @@ The source code is available here: ```sh # From your Backstage root directory - yarn add --cwd packages/backend @internal/plugin-todo-list-backend @internal/plugin-todo-list-common - yarn add --cwd packages/app @internal/plugin-todo-list + yarn --cwd packages/backend add @internal/plugin-todo-list-backend @internal/plugin-todo-list-common + yarn --cwd packages/app add @internal/plugin-todo-list ``` 3. Include the backend and frontend plugin in your application: diff --git a/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md b/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md index 23bc4e84f1..f3380bdb6f 100644 --- a/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md +++ b/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md @@ -4,9 +4,9 @@ title: 2. Adding a basic permission check description: Explains how to add a basic permission check to a Backstage plugin --- -If the outcome of a permission check doesn't need to change for different [resources](../concepts.md#resources-and-rules), you can use a _basic permission check_. For this kind of check, we simply need to define a [permission](../concepts.md#resources-and-rules), and call `authorize` with it. +If the outcome of a permission check doesn't need to change for different [resources](../../references/glossary.md#resource-permission-plugin), you can use a _basic permission check_. For this kind of check, we simply need to define a permission, and call `authorize` with it. -For this tutorial, we'll use a basic permission check to authorize the `create` endpoint in our todo-backend. This will allow Backstage integrators to control whether each of their users is authorized to create todos by adjusting their [permission policy](../concepts.md#policy). +For this tutorial, we'll use a basic permission check to authorize the `create` endpoint in our todo-backend. This will allow Backstage integrators to control whether each of their users is authorized to create todos by adjusting their [permission policy](../../references/glossary.md#policy-permission-plugin). We'll start by creating a new permission, and then we'll use the permission api to call `authorize` with it during todo creation. diff --git a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md index a4d51b64d0..76c1a85e24 100644 --- a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md +++ b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md @@ -4,7 +4,7 @@ title: 3. Adding a resource permission check description: Explains how to add a resource permission check to a Backstage plugin --- -When performing updates (or other operations) on specific [resources](../concepts.md#resources-and-rules), the permissions framework allows for the decision to be based on characteristics of the resource itself. This means that it's possible to write policies that (for example) allow the operation for users that own a resource, and deny the operation otherwise. +When performing updates (or other operations) on specific [resources](../../references/glossary.md#resource-permission-plugin), the permissions framework allows for the decision to be based on characteristics of the resource itself. This means that it's possible to write policies that (for example) allow the operation for users that own a resource, and deny the operation otherwise. ## Creating the update permission diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index d2e93bb08c..22d4bae371 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -69,7 +69,7 @@ to your backend. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @internal/plugin-carmen-backend@^0.1.0 # Change this to match the plugin's package.json +yarn --cwd packages/backend add @internal/plugin-carmen-backend@^0.1.0 # Change this to match the plugin's package.json ``` Create a new file named `packages/backend/src/plugins/carmen.ts`, and add the diff --git a/docs/plugins/new-backend-system.md b/docs/plugins/new-backend-system.md index 0fc44f283f..08ed7e73c7 100644 --- a/docs/plugins/new-backend-system.md +++ b/docs/plugins/new-backend-system.md @@ -26,7 +26,7 @@ const backend = createBackend(); backend.add(import('@backstage/plugin-catalog-backend')); // Start up the backend -await backend.start(); +backend.start(); ``` One notable change that helped achieve this much slimmer backend setup is the introduction of a system for dependency injection, which is very similar to the one in the Backstage frontend. diff --git a/docs/plugins/plugin-development.md b/docs/plugins/plugin-development.md index 8d8db8c387..5ba1de4a7d 100644 --- a/docs/plugins/plugin-development.md +++ b/docs/plugins/plugin-development.md @@ -40,7 +40,7 @@ import { createRouteRef } from '@backstage/core-plugin-api'; // Note: This route ref is for internal use only, don't export it from the plugin export const rootRouteRef = createRouteRef({ - title: 'Example Page', + id: 'Example Page', }); ``` diff --git a/docs/publishing.md b/docs/publishing.md index 15813275de..29853955f1 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -140,4 +140,26 @@ process is used to release an emergency fix as version `6.5.1` in the patch rele ### When the release workflow is not triggered for some reason, such as a GitHub incident -Ask one of the maintainers to force push master back to a previous commit and then push the release merge commit again. +Ask one of the maintainers to trigger [the Deploy packages](https://github.com/backstage/backstage/actions/workflows/deploy_packages.yml) workflow with the "Unconditionally trigger the release job to run" checkbox set, on the `master` branch. Please validate first that nothing substantial has been pushed to master since the original failed release attempt! For this reason, it is wise to have the master branch locked until each release has gone through. + +### The release successfully published packages but failed when finalizing the release + +If it's an intermittent failure then it is safe to re-trigger the release workflow again. + +If re-triggering doesn't or won't help, the following steps can be taken to complete the release: + +- Manually create a git tag for the release if it doesn't already exist +- Manually create a [new GitHub release](https://github.com/backstage/backstage/releases/new). +- Trigger the repository dispatch workflow using the following request, replace `` with the release version **without** the `v` prefix: + + ```shell + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(gh auth token)" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/backstage/backstage/dispatches \ + -d '{"event_type":"release-published","client_payload":{"version":""}}' + ``` + +- Manually post a message on Discord in the #announcements channel diff --git a/docs/references/glossary.md b/docs/references/glossary.md new file mode 100644 index 0000000000..8266dd02f7 --- /dev/null +++ b/docs/references/glossary.md @@ -0,0 +1,314 @@ +--- +id: glossary +title: Glossary +# prettier-ignore +description: List of terms, abbreviations, and phrases used in Backstage, together with their explanations. +--- + +## Access Token + +A [token](#token) that gives access to perform actions on behalf of a user. It will commonly have a short expiry time, and be limited to a set of [scopes](#scope). Part of the [OAuth](#oauth) protocol, see [their docs](https://oauth.net/2/access-tokens/) for more information. + +## Administrator + +Someone responsible for installing and maintaining a Backstage [app](#app) for an organization. A [user role](#user-role). + +## API (catalog plugin) + +An [entity](#entity) representing a schema that two [components](#component) use to communicate. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## App + +An installed instance of Backstage. An app can be local, intended for a single development group or individual developer, or organizational, for use by an entire enterprise. + +## Authorization Code + +A type of [OAuth flow](#oauth) used by confidential and public clients to get an [access token](#access-token). See [the OAuth docs](https://oauth.net/2/grant-types/authorization-code/) for more details. + +## Backstage + +1. A platform for creating and deploying [developer portals](#developer-portal), originally created at Spotify. Backstage is an incubation-stage open source project of the [Cloud Native Computing Foundation](#cloud-native-computing-foundation). + +2. [The Backstage Framework](#backstage-framework). + +## Backstage Framework + +The actual framework that Backstage [plugins](#plugin) sit on. This spans both the frontend and the backend, and includes core functionality such as declarative integration, config reading, database management, and many more. + +## Bundle + +1. A collection of [deployment artifacts](#deployment-artifacts). + +2. The output of the bundling process, which brings a collection of [packages](#package) into a single collection of [deployment artifacts](#deployment-artifacts). + +## Catalog + +1. The core Backstage plugin that handle ingestion and display of your organizations software products. + +2. An organization's portfolio of software products managed in Backstage. + +## Cloud Native Computing + +A set of technologies that "empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach." ([CNCF Cloud Native Definition v1.0](https://github.com/cncf/toc/blob/main/DEFINITION.md)). + +## Cloud Native Computing Foundation + +A foundation dedicated to the promotion and advancement of [Cloud Native Computing](#Cloud-Native-Computing). The mission of the Cloud Native Computing Foundation (CNCF) is "to make cloud native computing ubiquitous" ([CNCF Charter](https://github.com/cncf/foundation/blob/main/charter.md)). + +CNCF is part of the [Linux Foundation](https://www.linuxfoundation.org/). + +## CNCF + +Cloud Native Computing Foundation. + +## Code Grant + +[OAuth](#oauth) flow where the client receives an [authorization code](#code) that is passed to the backend to be exchanged for an [access token](#access-token) and possibly a [refresh token](#refresh-token). + +## Collator (search plugin) + +A transformer that takes streams of [documents](#documents) and outputs searchable texts. They're usually responsible for the data transformation and definition and collection process for specific [documents](#documents). + +## Component (catalog plugin) + +A software product that is managed in the Backstage [Software Catalog](#software-catalog). A component can be a service, website, library, data pipeline, or any other piece of software managed as a single project. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## Condition (permission plugin) + +A mapping from a given entity to criteria a user must fulfill to perform an action on that entity. Examples include `isOwner`, `hasRole`, etc. + +## Conditional Decision (permission plugin) + +A type of [decision](#policy-decision-permission-plugin) that allows for per-user evaluation of [conditions](#condition-permission-plugin) against a [resource](#resource-permission-plugin). See [Conditional Decisions](../permissions/concepts.md#conditional-decisions) + +## Contributor + +A volunteer who helps to improve an OSS product such as Backstage. This volunteer effort includes coding, testing, technical writing, user support, and other work. A [user role](#user-role). + +## Declarative Integration + +A new paradigm for Backstage frontend plugins, allowing definition in config files instead of hosting complete React pages. See [the Frontend System](https://backstage.io/docs/frontend-system). + +## Decorator (search plugin) + +A transform stream that allows you to add additional information to [documents](#document-search-plugin). + +## Deployment Artifacts + +An executable or package file with all of the necessary information required to deploy the application at runtime. Deployment artifacts can be hosted on [package registries](#package-registry). + +## Developer + +1. Someone who writes code and develops software. + +2. A [user role](#user-role) defined as someone who uses a Backstage [app](#app). Might or might not actually be a software developer. + +## Developer Portal + +A centralized system comprising a user interface and database used to facilitate and document all the software projects within an organization. Backstage is both a developer portal and (by virtue of being based on plugins) a platform for creating developer portals. + +## Document (search plugin) + +An abstract concept representing something that can be found by searching for it. A document can represent a software entity, a TechDocs page, etc. Documents are made up of metadata fields, at a minimum -- a title, text, and location (as in a URL). + +## Domain + +An area that relates systems or entities to a business unit. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## Entity + +What is cataloged in the Backstage Software Catalog. An entity is identified by a unique combination of [kind](#Kind), [namespace](#Namespace), and name. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## Evaluator + +Someone who assesses whether Backstage is a suitable solution for their organization. The only [user role](#user-role) with a pre-deployment [use case](#use-case). + +## ID Token + +A [JWT](#jwt) used to prove a user's identity, containing for example the user's email. Part of [OpenID Connect](#openid-connect). + +## Index (search plugin) + +An index is a collection of [documents](#documents) of a given type. + +## Indexer (search plugin) + +A write stream of [documents](#documents). + +## Integrator + +Someone who develops one or more plugins that enable Backstage to interoperate with another software system. A [user role](#user-role). + +## JWT + +JSON Web Token. + +A popular JSON based token format that is commonly encrypted and/or signed, see [the Wikipedia article](https://en.wikipedia.org/wiki/JSON_Web_Token) for more details. + +## Kind + +Classification of an [entity](#Entity) in the Backstage Software Catalog, for example _service_, _database_, and _team_. + +## Kubernetes (CNCF Project) + +An open-source system for automating deployment, scaling, and management of containerized applications. + +## Kubernetes (Backstage plugin) + +A core Backstage plugin enabling a service owner-focused view of Kubernetes resources. + +## Local Package + +One of the [packages](#package) within a [monorepo](#monorepo). These package may or may not also be published to a [package registry](#package-registry). + +## Monorepo + +1. A single repository for a collection of related software projects, such as all projects belonging to an organization. + +2. A project layout that consists of multiple [packages](#package) within a single project, where packages are able to have local dependencies on each other. Often enabled through tooling such as [lerna](https://lerna.js.org/) and [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) + +## Namespace (catalog plugin) + +An optional attribute that can be used to organize [entities](#entity). + +## Objective + +A high level goal of a [user role](#User-Role) interacting with Backstage. Some goals of the _administrator_ user role, for example, are to maintain an instance ("app") of Backstage; to add and update functionality via plugins; and to troubleshoot issues. + +## OAuth + +Refers to: OAuth 2.0, a standard protocol for authorization. See [oauth.net/2/](https://oauth.net/2/). + +## Offline Access + +[OAuth](#oauth) flow that results in both a refresh token and [access token](#access-token), where the refresh token has a long expiration or never expires, and can be used to request more access tokens in the future. This lets the user go "offline" with respect to the token issuer, but still be able to request more tokens at a later time without further direct interaction for the user. + +## OpenID Connect + +A layer on top of [OAuth](#oauth) which standardises authentication. See [the Wikipedia article](https://en.wikipedia.org/wiki/OpenID_Connect) for more details. + +## OSS + +Open source software. + +## Package + +A package in the Node.js ecosystem, often published to a [package registry](#package-registry). + +## Package Registry + +A service that hosts [packages](#package). The most prominent example is [NPM](https://www.npmjs.com/). + +## Package Role + +The declared role of a package, see [package roles](../local-dev/cli-build-system.md#package-roles). + +## Permission (core Backstage plugin) + +A core Backstage plugin and framework that allows restriction of actions to specific users. See [their docs](https://backstage.io/docs/permissions/overview) for more information. + +## Permission (permission plugin) + +A restriction on any action that a user can perform against a specific [resource](#resource-permission-plugin) or set of resources. See [the permission framework docs](../permissions/concepts.md#permission) for more details. + +## Persona (use cases) + +Alternative term for a [User Role](#user-role). + +## Plugin + +A module in Backstage that adds a feature. All functionality outside of [the Backstage framework](#backstage-framework), even the core features, are implemented as plugins. + +## Policy (permission plugin) + +A construct that takes in a Backstage user and a [permission](#permission-permission-plugin) and returns a [policy decision](#policy-decision-permission-plugin). + +## Policy Decision (permission plugin) + +A specific response to a user's request to perform an action on a list of [resources](#resource-permission-plugin). Can be either `Approve`, `Deny` or [`Conditional`](#conditional-decision-permission-plugin). + +## Popup + +A separate browser window opened on top of the previous one. + +## Procedure (use cases) + +A set of actions that accomplish a goal, usually as part of a [use case](#Use-Case). A procedure can be high-level, containing other procedures, or can be as simple as a single [task](#Task). + +## Query Translators (search plugin) + +An abstraction layer between a search engine and the [Backstage Search](#search) backend. Allows for translation into queries against your search engine. + +## Refresh token + +A special token that an [OAuth](#oauth) client can use to get a new [access token](#access-token) when the latter expires. + +https://oauth.net/2/refresh-tokens/ + +## Resource (catalog plugin) + +An [entity](#entity) that represents a piece of physical or virtual infrastructure, for example a database, required by a component. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## Resource (permission plugin) + +A representation of an object that a user interacts with and that can be permissioned. Not to be confused with [Software Catalog resources](#resource-catalog-plugin). + +## Rule (permission plugin) + +A predicate-based control that taps into a [resource](#resource-permission-plugin)'s data. + +## Role + +See [User Role](#User-Role). + +## Scaffolder + +Known as [Software Templates](#software-templates). + +## Scope + +A string that describes a certain type of access that can be granted to a user using OAuth, usually in conjunction with [access tokens](#access-token). + +## Search + +A Backstage plugin that provides a framework for searching a Backstage [app](#app), including the [Software Catalog](#Software-Catalog) and [TechDocs](#TechDocs). A core feature of Backstage. + +## Search Engine (Backstage search) + +Existing search technology that [Backstage Search](#search) can take advantage of through its modular design. Lunr is the default search in Backstage Search. + +## Software Catalog + +A Backstage plugin that provides a framework to keep track of ownership and metadata for any number and type of software [components](#component). A core feature of Backstage. + +## Software Templates + +A Backstage plugin with which to create [components](#component) in Backstage. A core feature of Backstage. Also known as the scaffolder. + +## Software Template + +A "skeleton" software project created and managed in the Backstage Software Templates tool. + +## System (catalog plugin) + +A system is a collection of [entities](#entity) that cooperate to perform a function. A system generally provides one or a few public APIs and consists of a handful of components, resources and private APIs. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. + +## Task (use cases) + +A low-level step-by-step [Procedure](#Procedure). + +## TechDocs + +A documentation solution that manages and generates a technical documentation from Markdown files stored with software component code. A core feature of Backstage. + +## Token + +A string containing information. + +## Use Case + +A purpose for which a [user role](#User-Role) interacts with Backstage. Related to [Objective](#objective): An objective is _what_ the user wants to do; a use case is _how_ the user does it. + +## User Role + +A class of Backstage user for purposes of analyzing [use cases](#use-case). One of: evaluator; administrator; developer; integrator; and contributor. diff --git a/docs/references/writing-a-glossary-entry.md b/docs/references/writing-a-glossary-entry.md new file mode 100644 index 0000000000..90a13e9675 --- /dev/null +++ b/docs/references/writing-a-glossary-entry.md @@ -0,0 +1,89 @@ + + +## Entry format + +A glossary entry should consist of two required things and two optional things, + +1. a header, +2. a sentence defining what the thing is, and +3. an optional additional sentence or two giving more context into what the thing is and possible pointers on where to find more information, and possibly +4. links out to additional information. + +### The header + +The header (and first sentence) are the way users will discover your entry. The header has two parts, + +1. The actual term, this should be as minimal as possible. You can fit more information into the body of the entry. +2. A disambiguator, this allows users to understand when certain entries are context specific or may have different meanings in different contexts. + +### The term + +Think of this as a dictionary. Single words are the base units and most definitions refer to a single word. Acronyms are acceptable. An adjective and a noun are also useful, `conditional decision`, `backstage framework`, etc. After 3 or _maybe_ 4 words, you should be trying to simplify and place more content in your entry instead. + +In the title, your term should be in Title Case. It should also be in the singular. + +### The disambiguator + +The goal of a disambiguator is to differentiate terms that may have context specific meanings. This can have two interpretations, either + +1. There are multiple terms and we need to create clear boundaries between their contexts, or +2. There are single terms that have meanings that are specific to a single context. + +A good example for the first would be resources. Both the catalog plugin and permission plugin have the idea of resources, but they do not refer to the same thing. + +A good example for the second would be `Query translators`. In our case, this refers to _search_ query translators, but it may refer to database query translators or the latter. By disambiguating early, we avoid confusion. + +Beyond the above advice, there are no strong rules for when or when not to use a disambiguator. It is up to the entry writer and the reviewer. + +Your disambiguator should be short, but need not be a single word -- examples include "use cases", "search plugin", "catalog plugin". When used the disambiguator should have the following form, `({disambiguator})` (a parenthesis enclosed term) and will sit to the right of the title. Your disambiguator should use lower case. + +### Putting it together + +Your title should look like `{word} ({disambiguator})`. Entries are not nested besides the disambiguator and should sit at `##`. + +## The first sentence + +Your first sentence should include the what for your word. Your goal should be to answer the question, "What is x?". Do _not_ use the word in your first sentence. If you are using other words in the glossary in your definition, you should reference them following [the Referencing section](#referencing). + +If you have a term that could mean multiple things in the same context or the context is difficult to add boundaries for, you should separate each meaning into a separate section of the entry using an ordered list. For example, + +```md +## Bundle + +1. A deployment artifact. +2. A collection of packages. +``` + +## Additional sentences + +You may not be able to fully define what you want in a single sentence. Use more sentences to flush out the meaning; however, if you start to get into the weeds, you should reconsider rehousing that information into a plugin specific "concepts" section. It's okay for words to be duplicated across both if the concepts section adds meaningful technical or architectural discussion. + +## Linking out to additional resources + +If the term you're defining has a better or more in depth source for that information, link to it. This can include plugin specific concept documents, external documentation, or core framework documentation. + +You should format these links as + +```md +See [the glossary](./glossary.md) for more details. +``` + +. Additional links beyond the first one should be appended with `and` or `or` as necessary. + +## Putting it all together + +```md +## Component (catalog plugin) + +A software product that is managed in the Backstage [Software Catalog](#software-catalog). A component can be a service, website, library, data pipeline, or any other piece of software managed as a single project. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. +``` + +## Referencing + +### In the glossary + +You should reference often. Words are defined recursively, especially in tech and un-nesting some terms requires additional glossary items. It's okay if your terms require multiple other terms to build on. Your goal with referencing is to provide small reusable words that you can trust users know the definition of. + +### In the text + +You should reference (and create a new entry if it doesn't exist) whenever you see a new word that a reasonable reader may not know. If you've already added a reference in your current passage -- in the glossary this will be your entry -- don't add a new reference. References should point initially to the glossary and if there is additional information (like a concepts page), the glossary should have a link to that page. diff --git a/docs/releases/v1.22.0.md b/docs/releases/v1.22.0.md index e5ce345ccc..9f9295fb96 100644 --- a/docs/releases/v1.22.0.md +++ b/docs/releases/v1.22.0.md @@ -39,7 +39,7 @@ Contributed by [@davidfestal](https://github.com/davidfestal) in [#18862](https: ### New Scaffolder action `gitlab:issues:create` -You can now create GitHub issues in your scaffolder flows! Contributed by [@elaine-mattos](https://github.com/elaine-mattos) in [#21929](https://github.com/backstage/backstage/pull/21929) +You can now create GitLab issues in your scaffolder flows! Contributed by [@elaine-mattos](https://github.com/elaine-mattos) in [#21929](https://github.com/backstage/backstage/pull/21929) ### New Scaffolder action `gitlab:repo:push` diff --git a/docs/releases/v1.23.0-next.0-changelog.md b/docs/releases/v1.23.0-next.0-changelog.md new file mode 100644 index 0000000000..59257b1030 --- /dev/null +++ b/docs/releases/v1.23.0-next.0-changelog.md @@ -0,0 +1,2958 @@ +# Release v1.23.0-next.0 + +## @backstage/backend-common@0.21.0-next.0 + +### Minor Changes + +- e85aa98: drop databases after unit tests if the database instance is not running in docker + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.5.11-next.0 + - @backstage/config-loader@1.6.1 + - @backstage/backend-dev-utils@0.1.3 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.0 + +### Minor Changes + +- e85aa98: drop databases after unit tests if the database instance is not running in docker + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-app-api@0.5.11-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/catalog-client@1.6.0-next.0 + +### Minor Changes + +- 04907c3: Updates the OpenAPI specification title to plugin ID instead of package name. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/frontend-app-api@0.6.0-next.0 + +### Minor Changes + +- 86346c2: **BREAKING**: The `app.routes.bindings` app-config mapping has been simplified. You now only need to specify the plugin ID and route ID on both sides of the mapping. + + Old form: + + ```yaml + app: + routes: + bindings: + plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot + plugin.catalog.externalRoutes.createComponent: plugin.catalog-import.routes.importPage + ``` + + New form: + + ```yaml + app: + routes: + bindings: + catalog.viewTechDoc: techdocs.docRoot + catalog.createComponent: catalog-import.importPage + ``` + +### Patch Changes + +- 42ebf27: Added `IconsApi` implementation and the ability to configure icons through the `icons` option for `createApp` and `createSpecializedApp`. This is not a long-term solution as icons should be installable via extensions instead. This is just a stop-gap to make sure there is feature parity with the existing frontend system. +- e0a4dd1: Improved the error message when data input/output shapes do not match +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/repo-tools@0.6.0-next.0 + +### Minor Changes + +- 04907c3: Updates the OpenAPI client template to support the new format for identifying plugin ID. You should now use `info.title` like so, + + ```diff + info: + + title: yourPluginId + - title: @internal/plugin-*-backend + + servers: + - / + - - yourPluginId + ``` + +- b10c603: Add support for `oneOf` in client generated by `schema openapi generate-client`. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/cli-node@0.2.2 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## @backstage/test-utils@1.5.0-next.0 + +### Minor Changes + +- bb40898: Added `components` option to `TestAppOptions`, which will be forwarded as the `components` option to `createApp`. + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.0 + +### Minor Changes + +- 5d2fcba: Created new `@backstage/plugin-auth-backend-module-oidc-provider` module package to house oidc auth provider migration. + +### Patch Changes + +- 8afb6f4: Updated dependency `passport` to `^0.7.0`. +- Updated dependencies + - @backstage/plugin-auth-backend@0.20.4-next.0 + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-catalog@1.17.0-next.0 + +### Minor Changes + +- e541c0e: Exported `CatalogTable.defaultColumnsFunc` for defining the columns in `` of some Kinds while using the default columns for the others. + +### Patch Changes + +- 916da47: Change default icon for unknown entities to nothing instead of the help icon. +- f899eec: Change default icon for `kind:resource` to the storage icon. +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- 797a329: Fixed inconsistencies in icons used for System and Template +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration-react@1.1.23 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-backend@1.17.0-next.0 + +### Minor Changes + +- 126c2f9: Updates the OpenAPI spec to use plugin as `info.title` instead of package name. +- 04907c3: Updates the OpenAPI specification title to plugin ID instead of package name. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-events-node@0.2.19-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-cloudbuild@0.4.0-next.0 + +### Minor Changes + +- 0328d1b: Changed build list view to automatically filter builds based on repository name matching component-info's metadata.name. + Added optional `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. + Added optional `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. + Updated the ReadMe with information about the filtering and some other minor verbiage updates. + Changed `substitutions.BRANCH_NAME` to `substitutions.REF_NAME` so that the Ref field is populated properly. + Added optional `google.com/cloudbuild-location` annotation which allows you to specify the Cloud Build location of your builds. Default is global scope. + Changed build list view to show builds in a specific location if the location annotation is used. + Updated ReadMe with information about the use of the location filtering. + +### Patch Changes + +- ef3cad4: Add telemetry HTTP header Google Cloud Platform +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-kubernetes-react@0.3.0-next.0 + +### Minor Changes + +- 0d526c8: **BREAKING** The pod exec terminal is now disabled by default since there are several scenarios where it is known not to work. It can be re-enabled at your own risk by setting the config parameter `kubernetes.podExecTerminal.enabled` to `true`. + +### Patch Changes + +- 536f67d: Fix broken XtermJS CSS import +- db1054b: Fixed a bug where the logs dialog and any other functionality depending on the proxy endpoint would fail for clusters configured with the OIDC auth provider. +- Updated dependencies + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder@1.18.0-next.0 + +### Minor Changes + +- c56f1a2: Remove the old legacy exports from `/alpha` +- a86920b: Introduced a new `MultiEntityPicker` field that supports selecting multiple Entities + +### Patch Changes + +- b0d1d80: Added basic support for the new frontend system, exported from the `/alpha` subpath. +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- da059d7: Removed alpha symbol from Task List header +- 6a74ffd: Updated dependency `@rjsf/utils` to `5.16.1`. + Updated dependency `@rjsf/core` to `5.16.1`. + Updated dependency `@rjsf/material-ui` to `5.16.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. +- 11b9a08: Introduced the first version of recoverable tasks. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-scaffolder-react@1.8.0-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.0 + +### Minor Changes + +- 11b9a08: Introduced the first version of recoverable tasks. +- e9a5228: The built-in module list has been trimmed down when using the new Backend System. Provider specific modules should now be installed with `backend.add` to provide additional actions to the scaffolder. These modules are as follows: + + - `@backstage/plugin-scaffolder-backend-module-github` + - `@backstage/plugin-scaffolder-backend-module-gitlab` + - `@backstage/plugin-scaffolder-backend-module-bitbucket` + - `@backstage/plugin-scaffolder-backend-module-gitea` + - `@backstage/plugin-scaffolder-backend-module-gerrit` + - `@backstage/plugin-scaffolder-backend-module-confluence-to-markdown` + - `@backstage/plugin-scaffolder-backend-module-cookiecutter` + - `@backstage/plugin-scaffolder-backend-module-rails` + - `@backstage/plugin-scaffolder-backend-module-sentry` + - `@backstage/plugin-scaffolder-backend-module-yeoman` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.1.2-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.0 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-scaffolder-common@1.5.0-next.0 + +### Minor Changes + +- 11b9a08: Introduced the first version of recoverable tasks. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-scaffolder-node@0.3.0-next.0 + +### Minor Changes + +- 3a9ba42: Added functions to clone a repo, create a branch, add files and push and commit to the branch. This allows for files to be added to the a PR for use in the bitbucket pull request action for issue #21762 +- 11b9a08: Introduced the first version of recoverable tasks. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.0 + +### Minor Changes + +- c56f1a2: Remove the old legacy exports from `/alpha` +- 11b9a08: Introduced the first version of recoverable tasks. + +### Patch Changes + +- 0b0c6b6: Allow defining default output text to be shown +- 6a74ffd: Updated dependency `@rjsf/utils` to `5.16.1`. + Updated dependency `@rjsf/core` to `5.16.1`. + Updated dependency `@rjsf/material-ui` to `5.16.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-search-backend@1.5.0-next.0 + +### Minor Changes + +- 126c2f9: Updates the OpenAPI spec to use plugin as `info.title` instead of package name. +- 04907c3: Updates the OpenAPI specification title to plugin ID instead of package name. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/app-defaults@1.4.8-next.0 + +### Patch Changes + +- f899eec: Change default icon for `kind:resource` to the storage icon. +- Updated dependencies + - @backstage/core-components@0.13.10 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/backend-app-api@0.5.11-next.0 + +### Patch Changes + +- e0c18ef: Include the extension point ID and the module ID in the backend init error message. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-app-api@0.5.11-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/backend-dynamic-feature-service@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/cli-node@0.2.2 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-events-backend@0.2.19-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/backend-openapi-utils@0.1.3-next.0 + +### Patch Changes + +- 2067689: Internal updates due to `json-schema-to-ts` +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.0 + +### Patch Changes + +- c624938: Add experimental support for optional `auth` app entry point. +- acd2860: Updated dependency `vite-plugin-node-polyfills` to `^0.19.0`. +- 35725e2: Updated dependencies in frontend plugin templates +- c7259dc: Updated the backend module template to make the module instance the package default export. +- Updated dependencies + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.1.2-next.0 + +### Patch Changes + +- 1fa5041: The backwards compatibility provider will now use the new `ComponentsApi` and `IconsApi` when implementing the old `AppContext`. +- 7155c30: Added `convertLegacyRouteRefs` for bulk conversion of plugin routes. +- 2f2a1d2: Plugins converted by `convertLegacyApp` now have their `routes` and `externalRoutes` included as well, allowing them to be used to bind external routes in configuration. +- 1184990: collectLegacyRoutes throws in case invalid element is found +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.0 + +### Patch Changes + +- aeec29c: Updated `packages/app` as well as the root `package.json` type resolutions to use React v18. + + The `@testing-library/*` dependencies have also been updated to the ones compatible with React v18, and the test at `packages/app/src/App.test.tsx` had been updated to use more modern patterns that work better with these new versions. + + For information on how to migrate existing apps to React v18, see the [migration guide](https://backstage.io/docs/tutorials/react18-migration) + +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + +## @backstage/eslint-plugin@0.1.5-next.0 + +### Patch Changes + +- 995d280: Added new `@backstage/no-top-level-material-ui-4-imports` rule that forbids top level imports from Material UI v4 packages + +## @backstage/frontend-plugin-api@0.5.1-next.0 + +### Patch Changes + +- 7eae3e0: Added initial `IconsApi` definition. +- Updated dependencies + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-test-utils@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/test-utils@1.5.0-next.0 + - @backstage/types@1.1.1 + +## @techdocs/cli@1.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-techdocs-node@1.11.2-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + +## @backstage/plugin-adr@0.6.13-next.0 + +### Patch Changes + +- 0b03962: Updated README +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/plugin-adr-common@0.2.19 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-backend@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/plugin-adr-common@0.2.19 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/test-utils@1.5.0-next.0 + - @backstage/dev-utils@1.0.27-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-airbrake-backend@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-api-docs@0.10.4-next.0 + +### Patch Changes + +- 170c023: Adding `supportedSubmitMethods` prop to `api-docs` to pass to the Swagger UI. This allows users to specify which HTTP methods they wish to allow end-users to make requests through the `Try It Out` button on the Swagger UI. +- c03f977: Updated dependency `graphiql` to `3.1.0`. +- 49b3b5e: Updated dependency `@asyncapi/react-component` to `1.2.13`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/plugin-app-backend@0.3.58-next.0 + +### Patch Changes + +- 9dfd57d: Do not force caching of the Javascript asset that contains the injected config. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config-loader@1.6.1 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.10-next.0 + +## @backstage/plugin-app-node@0.1.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-app-visualizer@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-auth-backend@0.20.4-next.0 + +### Patch Changes + +- a3f1fa3: Use the externalized `auth-backend-module-microsoft-provider` again. +- 5d2fcba: Migrated oidc auth provider to new `@backstage/plugin-auth-backend-module-oidc-provider` module package. +- Updated dependencies + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.0 + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.0 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.0 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.0 + +### Patch Changes + +- 1ff2684: Added the possibility to use custom scopes for performing login with Microsoft EntraID. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.0 + +### Patch Changes + +- cd5114c: Added missing `additionalScopes` option to configuration schema. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-auth-node@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.0 + +### Patch Changes + +- 995d280: Updated imports from named to default imports to help with the Material UI v4 to v5 migration +- cb0afaa: Prefer `dev.azure.com/build-definition` annotation when it is provided, as it is more specific than `dev.azure.com/project-repo`. This can also be used as a filter for mono-repos. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.0 + +### Patch Changes + +- 353244d: Added a note about Service Principles +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-azure-sites@0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-azure-sites-common@0.1.1 + +## @backstage/plugin-azure-sites-backend@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-sites-common@0.1.1 + +## @backstage/plugin-badges@0.2.54-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar@0.2.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-bitbucket-cloud-common@0.2.16-next.0 + +### Patch Changes + +- 2e6af00: Updated dependency `ts-morph` to `^21.0.0`. +- Updated dependencies + - @backstage/integration@1.8.0 + +## @backstage/plugin-bitrise@0.1.57-next.0 + +### Patch Changes + +- e24e4d3: Update README +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.0 + +### Patch Changes + +- a81b1ba: The default EKS cluster entity transformer now sets the new + `kubernetes.io/x-k8s-aws-id` annotation. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-catalog-backend-module-github@0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-backend-module-github@0.4.8-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.0 + +### Patch Changes + +- 60e4c2a: Added the option to provide custom `groupTransformer`, `userTransformer` and `groupNameTransformer` to allow custom transformations of groups and users +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-events-node@0.2.19-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.5.0-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-catalog-graph@0.3.4-next.0 + +### Patch Changes + +- 916da47: Change default icon for unknown entities to nothing instead of the help icon. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.10.6-next.0 + +### Patch Changes + +- 916da47: Change default icon for unknown entities to nothing instead of the help icon. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-catalog-node@1.6.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-react@1.9.4-next.0 + +### Patch Changes + +- 916da47: Change default icon for unknown entities to nothing instead of the help icon. +- 71c6d7a: Overflowing labels in OwnerPicker (Catalog) are now truncated. Hovering over them shows the full label +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration-react@1.1.23 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/plugin-cicd-statistics@0.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-cicd-statistics@0.1.32-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-circleci@0.3.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-code-climate@0.1.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-code-coverage@0.2.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-cost-insights@0.12.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.0 + +### Patch Changes + +- c12a86c: Refactored code to improve accessibility by moving elements outside the `ul` tag and placing them appropriately. Also adjusted theme to offer better contrast. +- b89d8be: Added alpha support for the New Frontend System (Declarative Integration) +- 995d280: Updated imports from named to default imports to help with the Material UI v4 to v5 migration +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-react@0.4.19 + +## @backstage/plugin-devtools-backend@0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config-loader@1.6.1 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-dynatrace@8.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-entity-feedback@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.0 + +### Patch Changes + +- 916da47: Change default icon for unknown entities to nothing instead of the help icon. +- 1f70e46: Improves UX of the EntityValidationPage: Moves the validate button below the EntityTextArea which is actually validated, the location TextField can now be hidden to prevent confusion about what is validated and additional content can be added to the top of the validation page. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-events-backend@0.2.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-events-node@0.2.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + +## @backstage/plugin-explore@0.4.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-explore-react@0.0.35 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-explore-backend@0.0.20-next.0 + +### Patch Changes + +- fd3d51c: Add support for the new backend system. + + A new backend plugin for the explore backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-explore-backend')); + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-fossa@0.2.62-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-actions@0.6.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + +## @backstage/plugin-github-deployments@0.1.61-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + +## @backstage/plugin-github-issues@0.2.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration@1.8.0 + +## @backstage/plugin-gocd@0.1.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.0 + +### Patch Changes + +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-home@0.6.2-next.0 + +### Patch Changes + +- 6a74ffd: Updated dependency `@rjsf/utils` to `5.16.1`. + Updated dependency `@rjsf/core` to `5.16.1`. + Updated dependency `@rjsf/material-ui` to `5.16.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. +- e9cdfd3: Fix typo in VisitsStorageApi +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-home-react@0.1.8-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + +## @backstage/plugin-home-react@0.1.8-next.0 + +### Patch Changes + +- 6a74ffd: Updated dependency `@rjsf/utils` to `5.16.1`. + Updated dependency `@rjsf/core` to `5.16.1`. + Updated dependency `@rjsf/material-ui` to `5.16.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. +- Updated dependencies + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-ilert@0.2.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.23 + +## @backstage/plugin-jenkins-backend@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.23 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-kafka-backend@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-kubernetes-backend@0.14.2-next.0 + +### Patch Changes + +- 7233f57: Fixed an issue where a misleading error message would be logged when an + unsupported service locator method was specified. +- a775596: Enabled a way to include custom auth metadata info on the clusters endpoint. If you want to implement a Kubernetes auth strategy which requires surfacing custom auth metadata to the frontend, use the new presentAuthMetadata method on the AuthenticationStrategy interface. +- 7278d80: The purpose of this patch is to add a new login method which is `googleServiceAccount` configuring the kubernetes properties in the app-config.yaml file with authProvider key +- daad576: Clusters configured with the `aws` authentication strategy can now customize the + `x-k8s-aws-id` header value used to generate tokens. This value can be specified + specified via the `kubernetes.io/x-k8s-aws-id` parameter (in + `metadata.annotations` for clusters in the catalog, or the `authMetadata` block + on clusters in the app-config). This is particularly helpful when a Backstage + instance contains multiple AWS clusters with the same name in different regions + \-- using this new parameter, the clusters can be given different logical names + to distinguish them but still use the same ID for the purposes of generating + tokens. +- f180cba: Enabling authentication to kubernetes clusters with mTLS x509 client certs +- 7f6ff25: Custom per-cluster auth metadata (mainly for use with custom `AuthenticationStrategy` implementations) can now be specified in the `authMetadata` property of clusters in the app-config. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-kubernetes-node@0.1.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-kubernetes-common@0.7.4-next.0 + +### Patch Changes + +- daad576: Clusters configured with the `aws` authentication strategy can now customize the + `x-k8s-aws-id` header value used to generate tokens. This value can be specified + specified via the `kubernetes.io/x-k8s-aws-id` parameter (in + `metadata.annotations` for clusters in the catalog, or the `authMetadata` block + on clusters in the app-config). This is particularly helpful when a Backstage + instance contains multiple AWS clusters with the same name in different regions + \-- using this new parameter, the clusters can be given different logical names + to distinguish them but still use the same ID for the purposes of generating + tokens. +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-node@0.1.4-next.0 + +### Patch Changes + +- a775596: Enabled a way to include custom auth metadata info on the clusters endpoint. If you want to implement a Kubernetes auth strategy which requires surfacing custom auth metadata to the frontend, use the new presentAuthMetadata method on the AuthenticationStrategy interface. +- f180cba: Enabling authentication to kubernetes clusters with mTLS x509 client certs +- Updated dependencies + - @backstage/plugin-kubernetes-common@0.7.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-lighthouse@0.4.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.0 + +### Patch Changes + +- 995d280: Updated imports from named to default imports to help with the Material UI v4 to v5 migration +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-nomad-backend@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-octopus-deploy@0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-org@0.6.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-catalog-common@1.0.20 + +## @backstage/plugin-org-react@0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-pagerduty@0.7.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-home-react@0.1.8-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-node@0.7.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-playlist-backend@0.3.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-rollbar-backend@0.1.55-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- fc98bb6: Enhanced the pull request action to allow for adding new content to the PR as described in this issue #21762 +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.1.2-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.0 + +### Patch Changes + +- e9a5228: Make `containerRunner` argument optional +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.0 + +### Patch Changes + +- e9a5228: Exporting a default module for the new Backend System +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.3.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-search@1.4.6-next.0 + +### Patch Changes + +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-techdocs-node@1.11.2-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-signals@0.0.1-next.0 + +### Patch Changes + +- 047bead: Add support to subscribe and publish messages through signals plugins +- Updated dependencies + - @backstage/plugin-signals-react@0.0.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-backend@0.0.1-next.0 + +### Patch Changes + +- 047bead: Add support to subscribe and publish messages through signals plugins +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-signals-node@0.0.1-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-signals-node@0.0.1-next.0 + +### Patch Changes + +- 047bead: Add support to subscribe and publish messages through signals plugins +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.0 + +## @backstage/plugin-signals-react@0.0.1-next.0 + +### Patch Changes + +- 047bead: Add support to subscribe and publish messages through signals plugins +- Updated dependencies + - @backstage/core-plugin-api@1.8.2 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-sonarqube-react@0.1.12 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-splunk-on-call@0.4.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-stack-overflow@0.1.25-next.0 + +### Patch Changes + +- c1bc331: Fixes a bug that made the API return questions not related to the tags provided +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/plugin-home-react@0.1.8-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.8.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.0 + +## @backstage/plugin-tech-insights@0.3.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-tech-insights-node@0.4.16-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-tech-insights-node@0.4.16-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-node@0.4.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.0 + +### Patch Changes + +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + +## @backstage/plugin-techdocs@1.9.4-next.0 + +### Patch Changes + +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-techdocs-react@1.1.15 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/test-utils@1.5.0-next.0 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/plugin-techdocs-react@1.1.15 + +## @backstage/plugin-techdocs-backend@1.9.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.0 + - @backstage/plugin-techdocs-node@1.11.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.0 + +### Patch Changes + +- 131ffdc: Fix position of the ReportIssue component when is displaying at the top of the container. +- Updated dependencies + - @backstage/core-components@0.13.10 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration@1.8.0 + - @backstage/integration-react@1.1.23 + - @backstage/plugin-techdocs-react@1.1.15 + +## @backstage/plugin-techdocs-node@1.11.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-todo@0.2.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.0 + +### Patch Changes + +- 126c2f9: Updates the OpenAPI spec to use plugin as `info.title` instead of package name. +- 04907c3: Updates the OpenAPI specification title to plugin ID instead of package name. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.8.0 + +## @backstage/plugin-user-settings@0.8.1-next.0 + +### Patch Changes + +- 912ca7b: Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-vault@0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-vault-node@0.1.3-next.0 + +## @backstage/plugin-vault-node@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.0 + +## example-app@0.2.92-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.6-next.0 + - @backstage/plugin-catalog-graph@0.3.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/plugin-adr@0.6.13-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/frontend-app-api@0.6.0-next.0 + - @backstage/plugin-scaffolder-react@1.8.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.0 + - @backstage/plugin-devtools@0.1.9-next.0 + - @backstage/plugin-user-settings@0.8.1-next.0 + - @backstage/plugin-tech-radar@0.6.13-next.0 + - @backstage/plugin-graphiql@0.3.3-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/plugin-search@1.4.6-next.0 + - @backstage/plugin-api-docs@0.10.4-next.0 + - @backstage/cli@0.25.2-next.0 + - @backstage/plugin-stack-overflow@0.1.25-next.0 + - @backstage/plugin-signals@0.0.1-next.0 + - @backstage/plugin-home@0.6.2-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.0 + - @backstage/plugin-azure-devops@0.3.12-next.0 + - @backstage/plugin-linguist@0.1.15-next.0 + - @backstage/plugin-airbrake@0.3.30-next.0 + - @backstage/plugin-azure-sites@0.1.19-next.0 + - @backstage/plugin-badges@0.2.54-next.0 + - @backstage/plugin-code-coverage@0.2.23-next.0 + - @backstage/plugin-cost-insights@0.12.19-next.0 + - @backstage/plugin-dynatrace@8.0.4-next.0 + - @backstage/plugin-entity-feedback@0.2.13-next.0 + - @backstage/plugin-explore@0.4.16-next.0 + - @backstage/plugin-github-actions@0.6.11-next.0 + - @backstage/plugin-gocd@0.1.36-next.0 + - @backstage/plugin-jenkins@0.9.5-next.0 + - @backstage/plugin-kafka@0.3.30-next.0 + - @backstage/plugin-kubernetes@0.11.5-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.0 + - @backstage/plugin-lighthouse@0.4.15-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.0 + - @backstage/plugin-nomad@0.1.11-next.0 + - @backstage/plugin-octopus-deploy@0.2.12-next.0 + - @backstage/plugin-org@0.6.20-next.0 + - @backstage/plugin-pagerduty@0.7.2-next.0 + - @backstage/plugin-playlist@0.2.4-next.0 + - @backstage/plugin-puppetdb@0.1.13-next.0 + - @backstage/plugin-rollbar@0.4.30-next.0 + - @backstage/plugin-sentry@0.5.15-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.0 + - @backstage/plugin-todo@0.2.34-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-apache-airflow@0.2.19 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-catalog-unprocessed-entities@0.1.7 + - @backstage/plugin-gcalendar@0.3.22 + - @backstage/plugin-gcp-projects@0.3.45 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-microsoft-calendar@0.1.11 + - @backstage/plugin-newrelic@0.3.44 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-shortcuts@0.3.18 + - @backstage/plugin-stackstorm@0.1.10 + - @backstage/plugin-techdocs-react@1.1.15 + +## example-app-next@0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-import@0.10.6-next.0 + - @backstage/plugin-catalog-graph@0.3.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/plugin-adr@0.6.13-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/frontend-app-api@0.6.0-next.0 + - @backstage/plugin-scaffolder-react@1.8.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.0 + - @backstage/plugin-devtools@0.1.9-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/plugin-user-settings@0.8.1-next.0 + - @backstage/plugin-tech-radar@0.6.13-next.0 + - @backstage/plugin-graphiql@0.3.3-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/plugin-search@1.4.6-next.0 + - @backstage/plugin-api-docs@0.10.4-next.0 + - @backstage/cli@0.25.2-next.0 + - @backstage/plugin-home@0.6.2-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.0 + - @backstage/plugin-azure-devops@0.3.12-next.0 + - @backstage/plugin-linguist@0.1.15-next.0 + - @backstage/plugin-airbrake@0.3.30-next.0 + - @backstage/plugin-azure-sites@0.1.19-next.0 + - @backstage/plugin-badges@0.2.54-next.0 + - @backstage/plugin-code-coverage@0.2.23-next.0 + - @backstage/plugin-cost-insights@0.12.19-next.0 + - @backstage/plugin-dynatrace@8.0.4-next.0 + - @backstage/plugin-entity-feedback@0.2.13-next.0 + - @backstage/plugin-explore@0.4.16-next.0 + - @backstage/plugin-github-actions@0.6.11-next.0 + - @backstage/plugin-gocd@0.1.36-next.0 + - @backstage/plugin-jenkins@0.9.5-next.0 + - @backstage/plugin-kafka@0.3.30-next.0 + - @backstage/plugin-kubernetes@0.11.5-next.0 + - @backstage/plugin-lighthouse@0.4.15-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.0 + - @backstage/plugin-octopus-deploy@0.2.12-next.0 + - @backstage/plugin-org@0.6.20-next.0 + - @backstage/plugin-pagerduty@0.7.2-next.0 + - @backstage/plugin-playlist@0.2.4-next.0 + - @backstage/plugin-puppetdb@0.1.13-next.0 + - @backstage/plugin-rollbar@0.4.30-next.0 + - @backstage/plugin-sentry@0.5.15-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.0 + - @backstage/plugin-todo@0.2.34-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - app-next-example-plugin@0.0.6-next.0 + - @backstage/plugin-app-visualizer@0.1.1-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-apache-airflow@0.2.19 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-catalog-unprocessed-entities@0.1.7 + - @backstage/plugin-gcalendar@0.3.22 + - @backstage/plugin-gcp-projects@0.3.45 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-microsoft-calendar@0.1.11 + - @backstage/plugin-newrelic@0.3.44 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-shortcuts@0.3.18 + - @backstage/plugin-stackstorm@0.1.10 + - @backstage/plugin-techdocs-react@1.1.15 + +## app-next-example-plugin@0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + +## example-backend@0.2.92-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.0 + - @backstage/plugin-azure-devops-backend@0.5.2-next.0 + - @backstage/plugin-explore-backend@0.0.20-next.0 + - @backstage/plugin-auth-backend@0.20.4-next.0 + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-kubernetes-backend@0.14.2-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/plugin-search-backend@1.5.0-next.0 + - @backstage/plugin-todo-backend@0.3.8-next.0 + - @backstage/catalog-client@1.6.0-next.0 + - @backstage/plugin-signals-backend@0.0.1-next.0 + - @backstage/plugin-signals-node@0.0.1-next.0 + - @backstage/plugin-scaffolder-backend@1.21.0-next.0 + - @backstage/plugin-app-backend@0.3.58-next.0 + - example-app@0.2.92-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-badges-backend@0.3.7-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.0 + - @backstage/plugin-events-backend@0.2.19-next.0 + - @backstage/plugin-linguist-backend@0.5.7-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/plugin-playlist-backend@0.3.14-next.0 + - @backstage/plugin-proxy-backend@0.4.8-next.0 + - @backstage/plugin-rollbar-backend@0.1.55-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.0 + - @backstage/plugin-tech-insights-backend@0.5.24-next.0 + - @backstage/plugin-techdocs-backend@1.9.3-next.0 + - @backstage/plugin-adr-backend@0.4.7-next.0 + - @backstage/plugin-azure-sites-backend@0.1.20-next.0 + - @backstage/plugin-code-coverage-backend@0.2.24-next.0 + - @backstage/plugin-devtools-backend@0.2.7-next.0 + - @backstage/plugin-jenkins-backend@0.3.4-next.0 + - @backstage/plugin-kafka-backend@0.3.8-next.0 + - @backstage/plugin-lighthouse-backend@0.4.2-next.0 + - @backstage/plugin-nomad-backend@0.1.12-next.0 + - @backstage/plugin-permission-backend@0.5.33-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.0 + - @backstage/plugin-tech-insights-node@0.4.16-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.0 + - @backstage/plugin-events-node@0.2.19-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## example-backend-next@0.0.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops-backend@0.5.2-next.0 + - @backstage/plugin-kubernetes-backend@0.14.2-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.0 + - @backstage/plugin-search-backend@1.5.0-next.0 + - @backstage/plugin-todo-backend@0.3.8-next.0 + - @backstage/plugin-scaffolder-backend@1.21.0-next.0 + - @backstage/plugin-app-backend@0.3.58-next.0 + - @backstage/backend-defaults@0.2.10-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/plugin-badges-backend@0.3.7-next.0 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.0 + - @backstage/plugin-linguist-backend@0.5.7-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.0 + - @backstage/plugin-permission-node@0.7.21-next.0 + - @backstage/plugin-playlist-backend@0.3.14-next.0 + - @backstage/plugin-proxy-backend@0.4.8-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.0 + - @backstage/plugin-sonarqube-backend@0.2.12-next.0 + - @backstage/plugin-techdocs-backend@1.9.3-next.0 + - @backstage/plugin-adr-backend@0.4.7-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.0 + - @backstage/plugin-devtools-backend@0.2.7-next.0 + - @backstage/plugin-jenkins-backend@0.3.4-next.0 + - @backstage/plugin-lighthouse-backend@0.4.2-next.0 + - @backstage/plugin-nomad-backend@0.1.12-next.0 + - @backstage/plugin-permission-backend@0.5.33-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## e2e-test@0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/cli@0.25.2-next.0 + - @backstage/test-utils@1.5.0-next.0 + - @backstage/core-components@0.13.10 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-techdocs-react@1.1.15 + +## @internal/plugin-todo-list-backend@1.0.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/plugin-auth-node@0.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/errors@1.2.3 diff --git a/docs/releases/v1.23.0-next.1-changelog.md b/docs/releases/v1.23.0-next.1-changelog.md new file mode 100644 index 0000000000..19bdba21dc --- /dev/null +++ b/docs/releases/v1.23.0-next.1-changelog.md @@ -0,0 +1,3250 @@ +# Release v1.23.0-next.1 + +## @backstage/catalog-client@1.6.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- c04c42b: Internal updates to auto-generated files. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/core-compat-api@0.2.0-next.1 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- edfd3a5: Updated dependency `@oriflame/backstage-plugin-score-card` to `^0.8.0`. +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-components@0.14.0-next.0 + +### Minor Changes + +- 281e8c6: **BREAKING**: Removed the `SidebarIntro` component as it was providing instructions for features that do not exist, along with `IntroCard`. If you were relying on this component and want to keep using it you can refer to the original implementations of [`SidebarIntro`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L149) and [`IntroCard`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L100). + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-app-api@0.6.0-next.1 + +### Minor Changes + +- bdf4a8e: **BREAKING**: Removed the experimental `createExtensionTree` API. + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- e586f79: Wrap the root element with the analytics context to ensure it always exists for all extensions. +- fb9b5e7: The default `ComponentsApi` implementation now uses the `ComponentRef` ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of `@backstage/frontend-plugin-api` would break the app. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-plugin-api@0.6.0-next.1 + +### Minor Changes + +- e586f79: **BREAKING**: Replace default plugin extension and plugin ids to be `app` instead of `root`. + +### Patch Changes + +- bc621aa: Added `RouteResolutionsApi` as a replacement for the routing context. +- 1e61ad3: App component extensions are no longer wrapped in an `ExtensionBoundary`, allowing them to inherit the outer context instead. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/integration@1.9.0-next.0 + +### Minor Changes + +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-analytics-module-ga@0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-ga4@0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-newrelic-browser@0.1.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.0 + +### Minor Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-azure-sites-backend@0.2.0-next.1 + +### Minor Changes + +- 28610f4: **BREAKING**: `catalogApi` and `permissionsApi` are now a requirement to be passed through to the `createRouter` function. + + You can fix the typescript issues by passing through the required dependencies like the below `diff` shows: + + ```diff + import { + createRouter, + AzureSitesApi, + } from '@backstage/plugin-azure-sites-backend'; + import { Router } from 'express'; + import { PluginEnvironment } from '../types'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + + const catalogClient = new CatalogClient({ + + discoveryApi: env.discovery, + + }); + + return await createRouter({ + logger: env.logger, + azureSitesApi: AzureSitesApi.fromConfig(env.config), + + catalogApi: catalogClient, + + permissionsApi: env.permissions, + }); + } + ``` + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-catalog-backend@1.17.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- 89b674c: Minor performance improvement for `queryEntities` when the limit is 0. +- efa8160: Rollback the change for wildcard discovery, this fixes a bug with the `AzureUrlReader` not working with wildcard paths +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + +## @backstage/plugin-catalog-backend-module-github@0.5.0-next.1 + +### Minor Changes + +- a950ed0: Prevent Entity Providers from eliminating Users and Groups from the DB when the synchronisation fails + +### Patch Changes + +- 9477133: Decreased number of teams fetched by GraphQL Query responsible for fetching Teams and Members in organization, due to timeouts when running against big organizations +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-scaffolder@1.18.0-next.1 + +### Minor Changes + +- 9b9c05c: Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. + +### Patch Changes + +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- 09f8b31: Simple typo fix in the fetch:template action example on the word 'skeleton'. +- f6792c6: Move the `NODE_OPTIONS` messaging for `--no-node-snapshot` to the `SecureTemplater` in order to get better messaging at runtime +- e1c479d: When using node 20+ the `scaffolder-backend` will now throw an error at startup if the `--no-node-snapshot` option was + not provided to node. +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.1 + +### Minor Changes + +- fd5eb1c: Allow to force the creation of a pull request from a forked repository + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-node@0.3.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.1 + +### Minor Changes + +- b07ec70: Use more distinguishable icons for link (`Link`) and text output (`Description`). + +### Patch Changes + +- 3f60ad5: fix for: converting circular structure to JSON error +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- 82affc7: Fix issue where `ui:schema` was replaced with an empty object if `dependencies` is defined +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-techdocs@1.10.0-next.1 + +### Minor Changes + +- af4d147: Updated the styling for code tags to avoid word break. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/app-defaults@1.4.8-next.1 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/backend-app-api@0.5.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/backend-common@0.21.0-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/backend-dev-utils@0.1.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + +## @backstage/backend-dynamic-feature-service@0.1.1-next.1 + +### Patch Changes + +- 8723c5a: Fix wrong `alpha` support in dynamic plugins support: the `alpha` sub-package should not be required for the dynamic plugins to be loaded under the new backend system. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/backend-openapi-utils@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/catalog-model@1.4.4-next.0 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.1 + +### Patch Changes + +- b58673e: Upgrade jest +- 08804c3: Fixed an issue that would cause an invalid `__backstage-autodetected-plugins__.js` to be written when using experimental module discovery. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/core-app-api@1.11.4-next.0 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-plugin-api@1.8.3-next.0 + +### Patch Changes + +- e586f79: Throw a more specific exception `NotImplementedError` when an API implementation cannot be found. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.1 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/theme@0.5.0 + +## @backstage/frontend-test-utils@0.1.2-next.1 + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + +## @backstage/repo-tools@0.6.0-next.1 + +### Patch Changes + +- c04c42b: Fixes an issue where comments would be duplicated in the template. Also, removes a header with the title and version of the OpenAPI spec from generated code. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + +## @techdocs/cli@1.8.2-next.1 + +### Patch Changes + +- d8d243c: fix: mkdocs parameter casing +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + +## @backstage/test-utils@1.5.0-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-adr@0.6.13-next.1 + +### Patch Changes + +- 987f565: Fix alignment of text in `AdrSearchResultListItem`. Update size and font to match other `SearchResultListItem`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-backend@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-common@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/dev-utils@1.0.27-next.1 + +## @backstage/plugin-airbrake-backend@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-apache-airflow@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-api-docs@0.10.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-apollo-explorer@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-app-backend@0.3.58-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.10-next.1 + +## @backstage/plugin-app-node@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-app-visualizer@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-auth-backend@0.20.4-next.1 + +### Patch Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.1 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.1 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-node@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.1 + +### Patch Changes + +- 25bda45: Fixed bug with `extractPartsFromAsset` that resulted in a leading `.` being removed from the path in an otherwise valid path (ex. `.assets/image.png`). The leading `.` will now only be moved for paths beginning with `./`. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-azure-sites@0.1.19-next.1 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-azure-sites-common@0.1.2-next.0 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-badges@0.2.54-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-bazaar@0.2.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-bitrise@0.1.57-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-catalog@1.17.0-next.1 + +### Patch Changes + +- 987f565: Add line clamping to `CatalogSearchResultListItem` +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-catalog-common@1.0.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-graph@0.3.4-next.1 + +### Patch Changes + +- f937aae: use `CatalogClient.getEntitiesByRefs()` to reduce the number of backend requests from plugin `catalog-graph` +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.10.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-node@1.6.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-catalog-react@1.9.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-cicd-statistics@0.1.32-next.1 + +## @backstage/plugin-circleci@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-cloudbuild@0.4.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-code-climate@0.1.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-code-coverage@0.2.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-codescene@0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.50-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-devtools-backend@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-dynatrace@8.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-entity-feedback@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-events-backend@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-node@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-explore@0.4.16-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-explore-react@0.0.36-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-explore-backend@0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + +## @backstage/plugin-explore-react@0.0.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-fossa@0.2.62-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-git-release-manager@0.3.42-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-actions@0.6.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + +## @backstage/plugin-github-deployments@0.1.61-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-issues@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-gitops-profiles@0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-gocd@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-graphql-voyager@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-home@0.6.2-next.1 + +### Patch Changes + +- 384c132: Added filter support for HomePageVisitedByType in order to enable filtering entities from the list +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + +## @backstage/plugin-home-react@0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-ilert@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## @backstage/plugin-jenkins-backend@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-jenkins-common@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-kafka-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-backend@0.14.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-kubernetes-node@0.1.4-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-common@0.7.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-node@0.1.4-next.1 + +### Patch Changes + +- cceed8a: Introduced `PinnipedHelper` class to enable authentication to Kubernetes clusters through Pinniped +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-react@0.3.0-next.1 + +### Patch Changes + +- 3c184af: Extracted common dialog component. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-lighthouse@0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-nomad-backend@0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-octopus-deploy@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-opencost@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-org@0.6.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-org-react@0.1.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-pagerduty@0.7.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-permission-node@0.7.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-react@0.4.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-playlist-backend@0.3.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-rollbar-backend@0.1.55-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-common@1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-search@1.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend@1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-shortcuts@0.3.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-signals-react@0.0.1-next.1 + +## @backstage/plugin-signals-backend@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + +## @backstage/plugin-signals-node@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-signals-react@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-sonarqube-react@0.1.13-next.0 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-sonarqube-react@0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-splunk-on-call@0.4.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-stack-overflow@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.1 + +## @backstage/plugin-stackstorm@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + +## @backstage/plugin-tech-insights-node@0.4.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + +## @backstage/plugin-techdocs-backend@1.9.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + +## @backstage/plugin-techdocs-node@1.11.2-next.1 + +### Patch Changes + +- 77e3050: Update to a newer version of `@trendyol-js/openstack-swift-sdk` +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-react@1.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-todo@0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-user-settings@0.8.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-vault@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-vault-node@0.1.3-next.1 + +## @backstage/plugin-vault-node@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-xcmetrics@0.2.48-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## example-app@0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-stack-overflow@0.1.25-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-nomad@0.1.11-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-signals@0.0.1-next.1 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## example-app-next@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - app-next-example-plugin@0.0.6-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## app-next-example-plugin@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + +## example-backend@0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - example-app@0.2.92-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-code-coverage-backend@0.2.24-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-explore-backend@0.0.20-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kafka-backend@0.3.8-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-rollbar-backend@0.1.55-next.1 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-signals-backend@0.0.1-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + - @backstage/plugin-tech-insights-backend@0.5.24-next.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + +## example-backend-next@0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-defaults@0.2.10-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-sonarqube-backend@0.2.12-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + +## e2e-test@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + +## @internal/plugin-todo-list@1.0.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @internal/plugin-todo-list-backend@1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 diff --git a/docs/releases/v1.23.0-next.2-changelog.md b/docs/releases/v1.23.0-next.2-changelog.md new file mode 100644 index 0000000000..2830217e39 --- /dev/null +++ b/docs/releases/v1.23.0-next.2-changelog.md @@ -0,0 +1,3549 @@ +# Release v1.23.0-next.2 + +## @backstage/app-defaults@1.5.0-next.2 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 214f2da: Fix invalid HTTP status code 501 in Error Page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + +## @backstage/core-app-api@1.12.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-plugin-api@1.9.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/repo-tools@0.6.0-next.2 + +### Minor Changes + +- 4c62935: **BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. + + The following commands now live under the `package` namespace, + + - `schema openapi generate` is now `package schema openapi generate --server` + - `schema openapi generate-client` is now `package schema openapi generate --client-package` + - `schema openapi init` is now `package schema openapi init` + + And these commands live under the new `repo` namespace, + + - `schema openapi lint` is now `repo schema openapi lint` + - `schema openapi test` is now `repo schema openapi test` + - `schema openapi verify` is now `repo schema openapi verify` + + The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. + +### Patch Changes + +- aa91cd6: Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend@0.21.0-next.2 + +### Minor Changes + +- 7dd8463: **BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. + + This comes with breaking changes to config options: + + - `audience` is now mandatory + - `wantAuthnResponseSigned` is now exposed and defaults to `true` + - `wantAssertionsSigned` is now exposed and defaults to `true` + +### Patch Changes + +- 97f8724: Support additional algorithms in the `/.well-known/openid-configuration` endpoint. +- a9e0107: The auth backend will now refuse to issue user tokens are excessively large. +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- 8e8a25d: Ability for user to configure backstage token expiration +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.1 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.2 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.2 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.2 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.2 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-graph@0.4.0-next.2 + +### Minor Changes + +- 3dc64e9: Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-react@1.10.0-next.2 + +### Minor Changes + +- 3dc64e9: Add support to `configSchema` option on the `createEntityCardExtension` factory function. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-backend@0.15.0-next.2 + +### Minor Changes + +- 666eff5: **BREAKING** The backend will fail to start if two clusters in the app-config + have the same name. The requirement for unique names has been declared in the + docs for some time, but is now enforced. + +### Patch Changes + +- 1c3cb3b: Backstage will log a warning whenever duplicate cluster names are detected -- + even if clusters sharing the same name come from separate locators. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-kubernetes-node@0.1.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-scaffolder@1.18.0-next.2 + +### Minor Changes + +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.2 + +### Minor Changes + +- 5eb6882: Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into + `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and + `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + `@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. + + Please use any of the two replacements depending on your needs. + + ```diff + - backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/backend-app-api@0.5.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-common@0.21.0-next.2 + +### Patch Changes + +- 3489d05: `FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 7fb7a79: Add a config declaration for `workingDirectory` +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-dev-utils@0.1.4-next.0 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + +## @backstage/backend-dev-utils@0.1.4-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +## @backstage/backend-dynamic-feature-service@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/backend-openapi-utils@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.2 + +### Patch Changes + +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. +- 5c05f8a: Harmonize the package naming and allow custom prefix +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/release-manifests@0.0.11 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-components@0.14.0-next.1 + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +- 214f2da: Fix invalid HTTP status code 501 in Error Page + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.2 + +### Patch Changes + +- c420081: Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. +- f71352c: Bumped TypeScript to version `5.3`. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/frontend-app-api@0.6.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-plugin-api@0.6.0-next.2 + +### Patch Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-test-utils@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + +## @techdocs/cli@1.8.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + +## @backstage/test-utils@1.5.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/theme@0.5.1-next.0 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +## @backstage/plugin-adr@0.6.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-backend@0.4.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/dev-utils@1.0.27-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-airbrake-backend@0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-analytics-module-ga@0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-ga4@0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-newrelic-browser@0.1.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-apache-airflow@0.2.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-api-docs@0.10.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.6-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +## @backstage/plugin-apollo-explorer@0.1.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-app-backend@0.3.58-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 998ccf6: Support injecting config multiple times in a single bundle +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-app-node@0.1.10-next.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-app-node@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-app-visualizer@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.1 + +### Patch Changes + +- d309cad: Refactored to use the `jose` library for JWT handling. +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-auth-node@0.4.4-next.2 + +### Patch Changes + +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.2 + +### Patch Changes + +- e2083df: Added alpha support for the New Frontend System (Declarative Integration) +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-azure-sites@0.1.19-next.2 + +### Patch Changes + +- 09a9c95: Updated README +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-azure-sites-backend@0.2.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 4376655: Added `permissionIntegrationRouter` for azure-sites-backend routes +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-badges@0.2.54-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar@0.2.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-bitrise@0.1.57-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-catalog@1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-backend@1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- bc644fb: Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-catalog-import@0.10.6-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-node@1.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-cicd-statistics@0.1.32-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-circleci@0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-cloudbuild@0.4.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-code-climate@0.1.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-code-coverage@0.2.23-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-codescene@0.1.22-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.50-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + +## @backstage/plugin-devtools-backend@0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-dynatrace@9.0.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-entity-feedback@0.2.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-events-backend@0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-node@0.2.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-explore@0.4.16-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 796d427: Use the EntityDisplayName component for rendering Group nodes +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-explore-react@0.0.36-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-explore-backend@0.0.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-explore-react@0.0.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-fossa@0.2.62-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.23-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-git-release-manager@0.3.42-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-actions@0.6.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-deployments@0.1.61-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-issues@0.2.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-gitops-profiles@0.3.45-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-gocd@0.1.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## @backstage/plugin-graphql-voyager@0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-home@0.6.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- dc7ae8b: Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-home-react@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-ilert@0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## @backstage/plugin-jenkins-backend@0.3.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-kafka-backend@0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-node@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-react@0.3.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-lighthouse@0.4.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.45-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-nomad-backend@0.1.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-notifications@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-notifications-backend@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/plugin-notifications-node@0.0.1-next.0 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-notifications-common@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage + +## @backstage/plugin-notifications-node@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-octopus-deploy@0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-opencost@0.2.5-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 03c5bbe: Updated dependency `date-fns` to `^3.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-org@0.6.20-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 6e1bf50: Added basic support for the new frontend system, exported from the `/alpha` subpath. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-org-react@0.1.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-pagerduty@0.7.2-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-node@0.7.21-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-react@0.4.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-playlist-backend@0.3.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-rollbar-backend@0.1.55-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.2 + +### Patch Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.2 + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.2 + +### Patch Changes + +- 8b269e1: Provide default branch when creating repositories. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-node@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 2985186: Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-search@1.4.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend@1.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-shortcuts@0.3.19-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-backend@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-node@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-react@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-sonarqube-react@0.1.13-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-sonarqube-react@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-splunk-on-call@0.4.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-stack-overflow@0.1.25-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.2 + +## @backstage/plugin-stackstorm@0.1.11-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 + +### Patch Changes + +- 25cfb76: Add support for the new backend system. + + A new backend module for the tech-insights backend + was added and exported as `default`. + + The module will register the `JsonRulesEngineFactCheckerFactory` + as `FactCheckerFactory`, loading checks from the config. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); + ``` + +- bc72782: Support loading `TechInsightsJsonRuleCheck` instances from config. + + Uses the check `id` as key. + + Example: + + ```yaml title="app-config.yaml" + techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-node@0.4.16-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## @backstage/plugin-techdocs@1.10.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + +## @backstage/plugin-techdocs-backend@1.9.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + +### Patch Changes + +- ab9c9eb: Fixed the value label text color in dark mode for the TextSize addon. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-techdocs-node@1.11.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-react@1.1.16-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-todo@0.2.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-user-settings@0.8.1-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- d5b14a0: conditionally rendering the user name and email in user settings page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-vault@0.1.25-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-vault-node@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-node@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-xcmetrics@0.2.48-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## example-app@0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-signals@0.0.1-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-nomad@0.1.11-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/plugin-notifications@0.0.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## example-app-next@0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - app-next-example-plugin@0.0.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.2 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## app-next-example-plugin@0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## example-backend@0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-tech-insights-backend@0.5.24-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-code-coverage-backend@0.2.24-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-explore-backend@0.0.20-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/plugin-rollbar-backend@0.1.55-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - example-app@0.2.92-next.2 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-kafka-backend@0.3.8-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## example-backend-next@0.0.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/backend-defaults@0.2.10-next.2 + - @backstage/plugin-sonarqube-backend@0.2.12-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-backend@0.0.1-next.0 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## e2e-test@0.2.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.2 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @internal/plugin-todo-list@1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @internal/plugin-todo-list-backend@1.0.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 diff --git a/docs/releases/v1.23.0-next.3-changelog.md b/docs/releases/v1.23.0-next.3-changelog.md new file mode 100644 index 0000000000..e23129522d --- /dev/null +++ b/docs/releases/v1.23.0-next.3-changelog.md @@ -0,0 +1,3229 @@ +# Release v1.23.0-next.3 + +## @backstage/backend-common@0.21.0-next.3 + +### Minor Changes + +- bbe374e: **BREAKING**: `A gitilesBaseUrl` must be provided for the Gerrit integration to work. + You can disable this check by setting `DISABLE_GERRIT_GITILES_REQUIREMENT=1` but + this will be removed in a future release. If you are not able to use the Gitiles + Gerrit plugin, please open an issue towards `https://github.com/backstage/backstage` + +### Patch Changes + +- 6707216: Added a new `LegacyRootDatabaseService` interface that can be used to avoid direct dependencies on the `DatabaseManager`. +- 842171a: Fix a bug with S3 Fetch that caused all objects to be flattened within a single folder on the local file system. +- ece5a8f: Add a User-Agent header for calls towards Google Cloud Storage. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/integration-aws-node@0.1.9-next.0 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-app-api@0.5.11-next.3 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/backend-dev-utils@0.1.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-dynamic-feature-service@0.2.0-next.3 + +### Minor Changes + +- d7adbbf: Implement the discovery of additional individual configuration schemas for dynamic plugins, and provide: + + - an alternate implementation of the root logger service that takes them into account, + - an extension to the App backend plugin to set a global configuration schema that takes them into account. + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/cli-node@0.2.3-next.0 + - @backstage/backend-app-api@0.5.11-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/plugin-app-node@0.1.10-next.3 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-events-backend@0.2.19-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-api-docs@0.11.0-next.3 + +### Minor Changes + +- 172a717: Migrate the `api-docs` to the new frontend system. It is experimental and available via alpha subpath. + +### Patch Changes + +- 874e8cf: Updated README to list AsyncApi v3 as supported +- Updated dependencies + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/plugin-catalog@1.17.0-next.3 + +### Minor Changes + +- 1f8c2fa: Add entity warning components to the default entity overview page. + +### Patch Changes + +- 172a717: Fix entity content extension filtering. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-kubernetes-react@0.3.0-next.3 + +### Minor Changes + +- 0dfc185: **BREAKING** The `PodScope`, `PodAndErrors`, and `PodExecTerminalProps` types no + longer have a `clusterName` field; instead they now have the field `cluster` + which contains the full `ClusterAttributes`. + +### Patch Changes + +- 5bf0c17: Pod dialogs display cluster title when specified. +- 74770c8: The `ErrorPanel` component will display the `title` field (when specified) for + clusters with errors. +- b01c86c: The `ErrorReporting` component's cluster column now displays cluster titles when + specified. +- 8472188: Added or fixed the `repository` field in `package.json`. +- 2b305eb: The `Cluster` component now renders the cluster's title, if specified. +- Updated dependencies + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/core-components@0.14.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/app-defaults@1.5.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/backend-app-api@0.5.11-next.3 + +### Patch Changes + +- 54ad8e1: Allow the `createConfigSecretEnumerator` to take an optional `schema` argument with an already-loaded global configuration schema. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/cli-node@0.2.3-next.0 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-app-api@0.5.11-next.3 + +## @backstage/backend-openapi-utils@0.1.3-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.3 + +### Patch Changes + +- 6707216: The `TaskScheduler.fromConfig` method now accepts the `LegacyRootDatabaseService` interface rather than the full `DatabaseManager` implementation. +- b68248b: Updated dependency `cron` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-app-api@0.5.11-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.3 + +### Patch Changes + +- d557d47: Added check for the `repository` field in the `repo fix` command. +- c52e7d5: Make `http://localhost:3000` the default base URL for serving locally, and `/` the default public path for built apps. The app build no longer requires any configuration values to be present. +- ba56063: Updated dependency `fork-ts-checker-webpack-plugin` to `^9.0.0`. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- 404e82b: Updated dependency `eslint-plugin-deprecation` to `^2.0.0`. +- Updated dependencies + - @backstage/cli-node@0.2.3-next.0 + - @backstage/integration@1.9.0-next.1 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/cli-node@0.2.3-next.0 + +### Patch Changes + +- d557d47: Added `repository` field to `BackstagePackageJson` type. +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/config-loader@1.6.2-next.0 + +### Patch Changes + +- 0a9a03c: Make schema processing gracefully handle an empty config. +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-components@0.14.0-next.2 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.3 + +### Patch Changes + +- 03e55b1: Updated the default app index template at `packages/app/public/index.html` to have a fallback value for the `app.title` config. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + +## @backstage/e2e-test-utils@0.1.1-next.0 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. + +## @backstage/frontend-app-api@0.6.0-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-plugin-api@0.6.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-test-utils@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/test-utils@1.5.0-next.3 + - @backstage/types@1.1.1 + +## @backstage/integration@1.9.0-next.1 + +### Patch Changes + +- 6d898f7: All single-line secrets read from config will now have both leading and trailing whitespace trimmed. This is done to ensure that the secrets are always valid HTTP header values, since many fetch implementations will include the header value itself when an error is thrown due to invalid header values. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/integration-aws-node@0.1.9-next.0 + +### Patch Changes + +- 6d898f7: All single-line secrets read from config will now have both leading and trailing whitespace trimmed. This is done to ensure that the secrets are always valid HTTP header values, since many fetch implementations will include the header value itself when an error is thrown due to invalid header values. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/integration-react@1.1.24-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/repo-tools@0.6.0-next.3 + +### Patch Changes + +- 60a68f1: Introduced `knip` to the `knip-reports` command, which generates a `knip-report.md` file for your packages with dependency warnings, if any. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/cli-node@0.2.3-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## @techdocs/cli@1.8.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-techdocs-node@1.11.2-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + +## @backstage/test-utils@1.5.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/theme@0.5.1-next.1 + +### Patch Changes + +- dd5d7cc: Fixed missing extra variables like `applyDarkStyles` in Mui V5 theme after calling `createUnifiedThemeFromV4` function + +## @backstage/plugin-adr@0.6.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-adr-common@0.2.20-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-adr-backend@0.4.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.20-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-common@0.2.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/dev-utils@1.0.27-next.3 + - @backstage/test-utils@1.5.0-next.3 + +## @backstage/plugin-airbrake-backend@0.3.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-analytics-module-ga@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-analytics-module-ga4@0.2.0-next.2 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-analytics-module-newrelic-browser@0.1.0-next.2 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-apache-airflow@0.2.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-apollo-explorer@0.1.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-app-backend@0.3.58-next.3 + +### Patch Changes + +- 54ad8e1: Allow the `app-backend` plugin to use a global configuration schema provided externally through an extension. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/plugin-app-node@0.1.10-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-app-node@0.1.10-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- 54ad8e1: Allow the `app-backend` plugin to use a global configuration schema provided externally through an extension. +- Updated dependencies + - @backstage/config-loader@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-app-visualizer@0.1.1-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-auth-backend@0.21.0-next.3 + +### Patch Changes + +- 8321c97: Added `experimentalExtraAllowedOrigins` to config +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.3 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.3 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.3 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.3 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.3 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.3 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.3 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.2 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.3 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.3 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-backend@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.3 + +### Patch Changes + +- e471890: Fixed a bug where the OIDC authenticator did not properly persist granted OAuth scopes. +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-backend@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-auth-node@0.4.4-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-azure-sites@0.1.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/plugin-azure-sites-backend@0.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-badges@0.2.54-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.3 + +### Patch Changes + +- 6991e5f: Updating the `authorization` middleware to call the Catalog to check that the requesting user has permission to see the Entity before generating the UUID. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar@0.2.22-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-bitbucket-cloud-common@0.2.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + +## @backstage/plugin-bitrise@0.1.57-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-catalog-backend@1.17.0-next.3 + +### Patch Changes + +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. + +- 9b2eb3f: Add support for `onProcessingError` handler at the catalog plugin (new backend system). + + You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` + as replacement for + + ```ts + catalogBuilder.subscribe({ + onProcessingError: hander, + }); + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/repo-tools@0.6.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.3 + - @backstage/backend-openapi-utils@0.1.3-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-events-node@0.2.19-next.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.3 + +### Patch Changes + +- 22927c4: Move the AWS account e-mail from labels to annotations to fix the creation of `cloud-account` resources. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/integration-aws-node@0.1.9-next.0 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-openapi-utils@0.1.3-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-github@0.5.0-next.3 + +### Patch Changes + +- 785ff24: Added `validateLocationsExist` to the config +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-events-node@0.2.19-next.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-catalog-graph@0.4.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.10.6-next.3 + +### Patch Changes + +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-node@1.6.2-next.3 + +### Patch Changes + +- 9b2eb3f: Add support for `onProcessingError` handler at the catalog plugin (new backend system). + + You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` + as replacement for + + ```ts + catalogBuilder.subscribe({ + onProcessingError: hander, + }); + ``` + +- Updated dependencies + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-react@1.10.0-next.3 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.32-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-cicd-statistics@0.1.32-next.3 + +## @backstage/plugin-circleci@0.3.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-cloudbuild@0.4.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-code-climate@0.1.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-code-coverage@0.2.23-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-codescene@0.1.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.50-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## @backstage/plugin-devtools-backend@0.2.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/config-loader@1.6.2-next.0 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-dynatrace@9.0.0-next.3 + +### Patch Changes + +- 0930c9e: Fixed Dynatrace plugin proxy configuration +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-entity-feedback@0.2.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.3 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-events-backend@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-events-node@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-explore@0.4.16-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-explore-react@0.0.36-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-explore-backend@0.0.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-fossa@0.2.62-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.23-next.2 + +### Patch Changes + +- 3631fb4: Updated dependency `dompurify` to `^3.0.0`. + Updated dependency `@types/dompurify` to `^3.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.46-next.2 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-git-release-manager@0.3.42-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-github-actions@0.6.11-next.3 + +### Patch Changes + +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + +## @backstage/plugin-github-deployments@0.1.61-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/integration-react@1.1.24-next.2 + +## @backstage/plugin-github-issues@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-gitops-profiles@0.3.45-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-gocd@0.1.36-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-graphql-voyager@0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-home@0.6.2-next.3 + +### Patch Changes + +- e6f0831: Updated dependency `@rjsf/utils` to `5.17.0`. + Updated dependency `@rjsf/core` to `5.17.0`. + Updated dependency `@rjsf/material-ui` to `5.17.0`. + Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-home-react@0.1.8-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-home-react@0.1.8-next.3 + +### Patch Changes + +- e6f0831: Updated dependency `@rjsf/utils` to `5.17.0`. + Updated dependency `@rjsf/core` to `5.17.0`. + Updated dependency `@rjsf/material-ui` to `5.17.0`. + Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-ilert@0.2.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## @backstage/plugin-jenkins-backend@0.3.4-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-kafka-backend@0.3.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.3 + +### Patch Changes + +- b01c86c: The `ErrorReporting` component's cluster column now displays cluster titles when + specified. +- Updated dependencies + - @backstage/plugin-kubernetes-react@0.3.0-next.3 + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-kubernetes-backend@0.15.0-next.3 + +### Patch Changes + +- afe9473: The `/clusters` API now surfaces cluster titles. +- 2a50cbf: adds a x-goog-api-client header to existing API requests in this plugin to clearly identify API requests from this GKE plugin. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GKE plugin and `libName` represent the current Google API used at backstage. +- 3b3d549: Responses from the `/api/kubernetes/services/:serviceId` endpoint now include the cluster title. +- a2e7fc6: Organized imports in plugin.ts +- 6009d2a: Clusters in the catalog can now specify a human-readable title via `metadata.title`. +- 7ee5b30: Clusters in the app-config can now specify a `title` property for human readability. +- ceda378: On LocalKubectlProxyClusterLocator, when resolving localhost, IPv4 address is placed before IPv6 address, ignoring the order from the DNS resolver. This change is necessary since by default kubectl proxy listen on IPv4 +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/integration-aws-node@0.1.9-next.0 + - @backstage/plugin-kubernetes-node@0.1.4-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-react@0.3.0-next.3 + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-kubernetes-common@0.7.4-next.2 + +### Patch Changes + +- a643af8: The `ClusterAttributes` type now includes the cluster title. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-node@0.1.4-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- 043cf88: The `ClusterDetails` type now has a `title` field, which should be a + human-readable name. +- Updated dependencies + - @backstage/plugin-kubernetes-common@0.7.4-next.2 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-lighthouse@0.4.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.12-next.2 + +### Patch Changes + +- 3631fb4: Updated dependency `dompurify` to `^3.0.0`. + Updated dependency `@types/dompurify` to `^3.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.45-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-nomad-backend@0.1.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-notifications@0.0.1-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-notifications-common@0.0.1-next.1 + - @backstage/plugin-signals-react@0.0.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-notifications-backend@0.0.1-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-notifications-common@0.0.1-next.1 + - @backstage/plugin-notifications-node@0.0.1-next.1 + - @backstage/plugin-signals-node@0.0.1-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-notifications-common@0.0.1-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. + +## @backstage/plugin-notifications-node@0.0.1-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-notifications-common@0.0.1-next.1 + - @backstage/plugin-signals-node@0.0.1-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-octopus-deploy@0.2.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-opencost@0.2.5-next.2 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-org@0.6.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-org-react@0.1.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-pagerduty@0.7.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-home-react@0.1.8-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-node@0.7.21-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.3 + +### Patch Changes + +- 5a03537: Conditionally render playlist description only when it's non-empty +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist-common@0.1.14 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-playlist-backend@0.3.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-rollbar-backend@0.1.55-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder@1.18.0-next.3 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- e6f0831: Updated dependency `@rjsf/utils` to `5.17.0`. + Updated dependency `@rjsf/core` to `5.17.0`. + Updated dependency `@rjsf/material-ui` to `5.17.0`. + Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-scaffolder-react@1.8.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.3 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.3 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.3 + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.3 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.1 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.3 + +### Patch Changes + +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.3 + +### Patch Changes + +- 1cd2740: Use the Gitbeaker library for `gitlab:projectAccessToken:create` action, enabling the `expiresAt` option +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.3.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-node@0.3.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.3 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- e6f0831: Updated dependency `@rjsf/utils` to `5.17.0`. + Updated dependency `@rjsf/core` to `5.17.0`. + Updated dependency `@rjsf/material-ui` to `5.17.0`. + Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-search@1.4.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-search-backend@1.5.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-openapi-utils@0.1.3-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration-aws-node@0.1.9-next.0 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-techdocs-node@1.11.2-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-shortcuts@0.3.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals@0.0.1-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- 1ab22c4: Allow defining signal type to publish and receive +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-signals-react@0.0.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-backend@0.0.1-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-signals-node@0.0.1-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-signals-node@0.0.1-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- 1ab22c4: Allow defining signal type to publish and receive +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.3 + +## @backstage/plugin-signals-react@0.0.1-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- 1ab22c4: Allow defining signal type to publish and receive +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-sonarqube-react@0.1.13-next.1 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-splunk-on-call@0.4.19-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-stack-overflow@0.1.25-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-home-react@0.1.8-next.3 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.3 + +## @backstage/plugin-stackstorm@0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.22-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-tech-insights-node@0.4.16-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-tech-insights-node@0.4.16-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-node@0.4.16-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## @backstage/plugin-techdocs@1.10.0-next.3 + +### Patch Changes + +- 3631fb4: Updated dependency `dompurify` to `^3.0.0`. + Updated dependency `@types/dompurify` to `^3.0.0`. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/test-utils@1.5.0-next.3 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + +## @backstage/plugin-techdocs-backend@1.9.3-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.3 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.3 + +### Patch Changes + +- 09cedb9: Updated dependency `@react-hookz/web` to `^24.0.0`. +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/integration@1.9.0-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + +## @backstage/plugin-techdocs-node@1.11.2-next.3 + +### Patch Changes + +- 1cae748: Updated dependency `git-url-parse` to `^14.0.0`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration-aws-node@0.1.9-next.0 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-react@1.1.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-todo@0.2.34-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/repo-tools@0.6.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-openapi-utils@0.1.3-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-user-settings@0.8.1-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-vault@0.1.25-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-vault-node@0.1.3-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-node@0.1.3-next.3 + +### Patch Changes + +- 8472188: Added or fixed the `repository` field in `package.json`. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.3 + +## @backstage/plugin-xcmetrics@0.2.48-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## example-app@0.2.92-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-api-docs@0.11.0-next.3 + - @backstage/cli@0.25.2-next.3 + - @backstage/plugin-kubernetes@0.11.5-next.3 + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-playlist@0.2.4-next.3 + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/frontend-app-api@0.6.0-next.3 + - @backstage/plugin-notifications@0.0.1-next.1 + - @backstage/plugin-signals@0.0.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-gcp-projects@0.3.46-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.3 + - @backstage/plugin-scaffolder@1.18.0-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.3 + - @backstage/plugin-home@0.6.2-next.3 + - @backstage/plugin-gcalendar@0.3.23-next.2 + - @backstage/plugin-microsoft-calendar@0.1.12-next.2 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/plugin-catalog-import@0.10.6-next.3 + - @backstage/plugin-github-actions@0.6.11-next.3 + - @backstage/plugin-dynatrace@9.0.0-next.3 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-adr@0.6.13-next.3 + - @backstage/plugin-airbrake@0.3.30-next.3 + - @backstage/plugin-apache-airflow@0.2.20-next.2 + - @backstage/plugin-azure-devops@0.3.12-next.3 + - @backstage/plugin-azure-sites@0.1.19-next.3 + - @backstage/plugin-badges@0.2.54-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-graph@0.4.0-next.3 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.2 + - @backstage/plugin-cloudbuild@0.4.0-next.3 + - @backstage/plugin-code-coverage@0.2.23-next.3 + - @backstage/plugin-cost-insights@0.12.19-next.3 + - @backstage/plugin-devtools@0.1.9-next.3 + - @backstage/plugin-entity-feedback@0.2.13-next.3 + - @backstage/plugin-explore@0.4.16-next.3 + - @backstage/plugin-gocd@0.1.36-next.3 + - @backstage/plugin-graphiql@0.3.3-next.3 + - @backstage/plugin-jenkins@0.9.5-next.3 + - @backstage/plugin-kafka@0.3.30-next.3 + - @backstage/plugin-lighthouse@0.4.15-next.3 + - @backstage/plugin-linguist@0.1.15-next.3 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-newrelic@0.3.45-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.3 + - @backstage/plugin-nomad@0.1.11-next.3 + - @backstage/plugin-octopus-deploy@0.2.12-next.3 + - @backstage/plugin-org@0.6.20-next.3 + - @backstage/plugin-pagerduty@0.7.2-next.3 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.3 + - @backstage/plugin-rollbar@0.4.30-next.3 + - @backstage/plugin-search@1.4.6-next.3 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-sentry@0.5.15-next.3 + - @backstage/plugin-shortcuts@0.3.19-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.3 + - @backstage/plugin-stackstorm@0.1.11-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.3 + - @backstage/plugin-tech-radar@0.6.13-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + - @backstage/plugin-todo@0.2.34-next.3 + - @backstage/plugin-user-settings@0.8.1-next.3 + +## example-app-next@0.0.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-api-docs@0.11.0-next.3 + - @backstage/cli@0.25.2-next.3 + - @backstage/plugin-kubernetes@0.11.5-next.3 + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-playlist@0.2.4-next.3 + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/frontend-app-api@0.6.0-next.3 + - @backstage/plugin-app-visualizer@0.1.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-gcp-projects@0.3.46-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.3 + - @backstage/plugin-scaffolder@1.18.0-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.3 + - @backstage/plugin-home@0.6.2-next.3 + - @backstage/plugin-gcalendar@0.3.23-next.2 + - @backstage/plugin-microsoft-calendar@0.1.12-next.2 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/plugin-catalog-import@0.10.6-next.3 + - @backstage/plugin-github-actions@0.6.11-next.3 + - @backstage/plugin-dynatrace@9.0.0-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - app-next-example-plugin@0.0.6-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-adr@0.6.13-next.3 + - @backstage/plugin-airbrake@0.3.30-next.3 + - @backstage/plugin-apache-airflow@0.2.20-next.2 + - @backstage/plugin-azure-devops@0.3.12-next.3 + - @backstage/plugin-azure-sites@0.1.19-next.3 + - @backstage/plugin-badges@0.2.54-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-graph@0.4.0-next.3 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.2 + - @backstage/plugin-cloudbuild@0.4.0-next.3 + - @backstage/plugin-code-coverage@0.2.23-next.3 + - @backstage/plugin-cost-insights@0.12.19-next.3 + - @backstage/plugin-devtools@0.1.9-next.3 + - @backstage/plugin-entity-feedback@0.2.13-next.3 + - @backstage/plugin-explore@0.4.16-next.3 + - @backstage/plugin-gocd@0.1.36-next.3 + - @backstage/plugin-graphiql@0.3.3-next.3 + - @backstage/plugin-jenkins@0.9.5-next.3 + - @backstage/plugin-kafka@0.3.30-next.3 + - @backstage/plugin-lighthouse@0.4.15-next.3 + - @backstage/plugin-linguist@0.1.15-next.3 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-newrelic@0.3.45-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.3 + - @backstage/plugin-octopus-deploy@0.2.12-next.3 + - @backstage/plugin-org@0.6.20-next.3 + - @backstage/plugin-pagerduty@0.7.2-next.3 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.3 + - @backstage/plugin-rollbar@0.4.30-next.3 + - @backstage/plugin-search@1.4.6-next.3 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-sentry@0.5.15-next.3 + - @backstage/plugin-shortcuts@0.3.19-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.3 + - @backstage/plugin-tech-radar@0.6.13-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + - @backstage/plugin-todo@0.2.34-next.3 + - @backstage/plugin-user-settings@0.8.1-next.3 + +## app-next-example-plugin@0.0.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## example-backend@0.2.92-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-badges-backend@0.3.7-next.3 + - @backstage/plugin-kubernetes-backend@0.15.0-next.3 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.3 + - @backstage/plugin-signals-backend@0.0.1-next.3 + - @backstage/plugin-signals-node@0.0.1-next.3 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.3 + - @backstage/plugin-app-backend@0.3.58-next.3 + - @backstage/plugin-auth-backend@0.21.0-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/plugin-adr-backend@0.4.7-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-azure-devops-backend@0.5.2-next.3 + - @backstage/plugin-code-coverage-backend@0.2.24-next.3 + - @backstage/plugin-devtools-backend@0.2.7-next.3 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.3 + - @backstage/plugin-events-backend@0.2.19-next.3 + - @backstage/plugin-explore-backend@0.0.20-next.3 + - @backstage/plugin-jenkins-backend@0.3.4-next.3 + - @backstage/plugin-kafka-backend@0.3.8-next.3 + - @backstage/plugin-lighthouse-backend@0.4.2-next.3 + - @backstage/plugin-linguist-backend@0.5.7-next.3 + - @backstage/plugin-nomad-backend@0.1.12-next.3 + - @backstage/plugin-permission-backend@0.5.33-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-playlist-backend@0.3.14-next.3 + - @backstage/plugin-proxy-backend@0.4.8-next.3 + - @backstage/plugin-rollbar-backend@0.1.55-next.3 + - @backstage/plugin-scaffolder-backend@1.21.0-next.3 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.3 + - @backstage/plugin-search-backend@1.5.0-next.3 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.3 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.3 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.3 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.3 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/plugin-tech-insights-backend@0.5.24-next.3 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.3 + - @backstage/plugin-tech-insights-node@0.4.16-next.3 + - @backstage/plugin-techdocs-backend@1.9.3-next.3 + - @backstage/plugin-todo-backend@0.3.8-next.3 + - example-app@0.2.92-next.3 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.3 + - @backstage/plugin-events-node@0.2.19-next.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## example-backend-next@0.0.20-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-badges-backend@0.3.7-next.3 + - @backstage/plugin-kubernetes-backend@0.15.0-next.3 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.3 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.3 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.3 + - @backstage/plugin-notifications-backend@0.0.1-next.1 + - @backstage/plugin-signals-backend@0.0.1-next.3 + - @backstage/plugin-catalog-backend@1.17.0-next.3 + - @backstage/plugin-app-backend@0.3.58-next.3 + - @backstage/backend-defaults@0.2.10-next.3 + - @backstage/plugin-adr-backend@0.4.7-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/plugin-azure-devops-backend@0.5.2-next.3 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.3 + - @backstage/plugin-devtools-backend@0.2.7-next.3 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.3 + - @backstage/plugin-jenkins-backend@0.3.4-next.3 + - @backstage/plugin-lighthouse-backend@0.4.2-next.3 + - @backstage/plugin-linguist-backend@0.5.7-next.3 + - @backstage/plugin-nomad-backend@0.1.12-next.3 + - @backstage/plugin-permission-backend@0.5.33-next.3 + - @backstage/plugin-permission-node@0.7.21-next.3 + - @backstage/plugin-playlist-backend@0.3.14-next.3 + - @backstage/plugin-proxy-backend@0.4.8-next.3 + - @backstage/plugin-scaffolder-backend@1.21.0-next.3 + - @backstage/plugin-search-backend@1.5.0-next.3 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.3 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.3 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.3 + - @backstage/plugin-search-backend-node@1.2.14-next.3 + - @backstage/plugin-sonarqube-backend@0.2.12-next.3 + - @backstage/plugin-techdocs-backend@1.9.3-next.3 + - @backstage/plugin-todo-backend@0.3.8-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.3 + - @backstage/plugin-permission-common@0.7.12 + +## e2e-test@0.2.12-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.3 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.25.2-next.3 + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/test-utils@1.5.0-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + +## @internal/plugin-todo-list@1.0.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @internal/plugin-todo-list-backend@1.0.22-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/plugin-auth-node@0.4.4-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/errors@1.2.3 diff --git a/docs/tutorials/configuring-plugin-databases.md b/docs/tutorials/configuring-plugin-databases.md index 8cd5ce99a9..528d2c6325 100644 --- a/docs/tutorials/configuring-plugin-databases.md +++ b/docs/tutorials/configuring-plugin-databases.md @@ -39,10 +39,10 @@ both of them. ```bash # From your Backstage root directory # install pg if you need PostgreSQL -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg # install SQLite 3 if you intend to set it as the client -yarn add --cwd packages/backend better-sqlite3 +yarn --cwd packages/backend add better-sqlite3 ``` From an operational perspective, you only need to install drivers for clients diff --git a/docs/tutorials/migrate-to-mui5.md b/docs/tutorials/migrate-to-mui5.md index aaf8cff7f5..c65abbc680 100644 --- a/docs/tutorials/migrate-to-mui5.md +++ b/docs/tutorials/migrate-to-mui5.md @@ -19,7 +19,7 @@ By default, the `UnifiedThemeProvider` is already used. If you add a custom them themes: [ { // ... - provider: ({ children }) => ( + Provider: ({ children }) => ( - . - {children}. - , document.getElementById('root')); +// highlight-add-next-line +ReactDOM.createRoot(document.getElementById('root')!).render(); +``` + +Once these steps are done you should be able to run your app and see it working as before, except now using React 18. + +### TypeScript Errors + +When upgrading to React 18 you are likely to see a fair number of TypeScript type errors. A summary of the breaking changes can be found in the [Pull Request that introduced them](https://github.com/DefinitelyTyped/DefinitelyTyped/pull/56210). A codemod is also provided to help with the migration. + +Run `yarn tsc:full` to asses the damage. + +The good news is that these errors can be fixed while still staying on React 17. If you have a large number of errors to fix you can address as few or many is you like at a time and merge them into your main branch **without** the version bumps from step 1. This lets you gradually migrate the types in your project while not yet fully moving over to React 18. Once all type breakages are fixed you can move on to the next step of migrating tests. + +### Migrating Tests + +At this point the app hopefully works and you have no type errors, but if you run your tests you may see that a lot of them are failing. This is because the current version of the `@testing-library/react` package does not support React 18. Unfortunately the new version that we will be moving to does not support React 17, which is why we need to do this all at once. + +:::info +If migrating your entire project at once is not feasible, you can try to add `devDependencies` for `react` and `react-dom` v17 to individual plugins to be migrated later. This is not something we have tried ourselves in practice, so let us know in the community Discord if you attempt this and how it goes. +::: + +#### Dependency Upgrades + +To get the tests working again we need to update `@testing-library/react` to at least v13, although while at it is sensible to move at least all the way to v14 since the additional breaking changes have low impact. For more information on the changes in v13, see the [release notes](https://github.com/testing-library/react-testing-library/releases/tag/v13.0.0). + +In addition to bumping `@testing-library/react` you also need to remove the `@testing-library/react-hooks` package, since it is now included in `@testing-library/react` itself. You can find more information on this change in the `@testing-library/react-hooks` [README.md](https://github.com/testing-library/react-hooks-testing-library?tab=readme-ov-file#a-note-about-react-18-support). + +The following search-and-replace RegEx patterns may by helpful in updating your `package.json` files: + +Find: `"@testing-library/react": ".*"`
+Replace: `"@testing-library/react": "^14.0.0"` + +Find: `"@testing-library/react-hooks": ".*",?`
+Replace: `` + +#### Test Updates + +Once you have installed the new versions of the dependencies this turns into a fairly mechanical process of updating the tests. Use your own favorite method for this, running all tests once to find the breakages and then focusing on one test file at a time was fairly smooth. + +When updating the tests in the Backstage project we found the following patterns to be useful: + +- Many existing `act(...)` calls can be removed, it is built into most testing utilities like `waitFor`, `.findBy*`, and `@testing-library/user-event`. +- Use `.findBy*` to wait for elements to appear. +- Use `waitFor(...)` to wait for any other expected state changes or multiple elements. +- Use `@testing-library/user-event` for user interactions. +- The `renderHook` API has changes in several ways: + - It no longer returns `waitForValueToChange` or `waitForNextUpdate`, you'll likely want to use `waitFor` instead. + - It now throws errors rather than returns them as part of the result. + - It no longer forwards `initialProps` to the `wrapper`, a workaround for this is provided in the [docs](https://testing-library.com/docs/react-testing-library/api/#renderhook-options-initialprops). +- Waiting for mock functions to be called by a component and then expecting render state to be updated is no longer reliable. +- Rendered components often don't immediately update on user input, it's more common to need to use `waitFor` or other utilities to wait for the expected state to be reached. + +You can also refer to the test changes in this [PR](https://github.com/backstage/backstage/pull/20598/files?file-filters%5B%5D=.ts&file-filters%5B%5D=.tsx), which was the migration to React 18 for the Backstage project itself. + +Best of luck! For question please join the [community Discord](https://discord.gg/backstage-687207715902193673). If you think this documentation could be improved we welcome you to [open an issue](https://github.com/backstage/backstage/issues/new/choose) or submit a pull request. diff --git a/docs/tutorials/setup-opentelemetry.md b/docs/tutorials/setup-opentelemetry.md index b85cbd4398..aa96e2ad40 100644 --- a/docs/tutorials/setup-opentelemetry.md +++ b/docs/tutorials/setup-opentelemetry.md @@ -18,7 +18,8 @@ The `auto-instrumentations-node` will automatically create spans for code called ```bash yarn --cwd packages/backend add @opentelemetry/sdk-node \ @opentelemetry/auto-instrumentations-node \ - @opentelemetry/sdk-metrics + @opentelemetry/sdk-metrics \ + @opentelemetry/sdk-trace-node ``` ## Configure diff --git a/docs/tutorials/switching-sqlite-postgres.md b/docs/tutorials/switching-sqlite-postgres.md index 87afabda60..2ef481dbf3 100644 --- a/docs/tutorials/switching-sqlite-postgres.md +++ b/docs/tutorials/switching-sqlite-postgres.md @@ -21,7 +21,7 @@ First, add PostgreSQL to your `backend` package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg ``` ## Add PostgreSQL configuration diff --git a/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx b/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx index 4884762560..b59f943245 100644 --- a/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx +++ b/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx @@ -102,7 +102,7 @@ Install in your app’s package folder (`/packages/app`) with: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin- +yarn --cwd packages/app add @backstage/plugin- ``` After that, you inject the plugin into the application where you want it to be exposed. Please read the documentation for the specific plugin you are installing for more information. diff --git a/microsite/data/on-demand/20211117-1.yaml b/microsite/data/on-demand/20211117-1.yaml deleted file mode 100644 index 21410fc85f..0000000000 --- a/microsite/data/on-demand/20211117-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: November 17, 2021 -category: Meetup -description: At this month’s adopters session, get the scoop on Spotify’s plan for paid plugins, a first look at Box’s DevPortal, and answers to big questions, like “How will I know if Backstage will work at a large company like mine?” -youtubeUrl: https://youtu.be/apCDT3_DmFk -youtubeImgUrl: https://i1.ytimg.com/vi/apCDT3_DmFk/mqdefault.jpg diff --git a/microsite/data/on-demand/20211118-1.yaml b/microsite/data/on-demand/20211118-1.yaml deleted file mode 100644 index 754344a62e..0000000000 --- a/microsite/data/on-demand/20211118-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: November 18, 2021 -category: Meetup -description: In the contributors track for this month’s community session, hear about upcoming deprecations, the fruits of Hacktoberfest, the future of both the Kubernetes plugin and the Tech Insights plugin, tips on contributing, and more. -youtubeUrl: https://youtu.be/n1OWGwYAOiI -youtubeImgUrl: https://i1.ytimg.com/vi/n1OWGwYAOiI/mqdefault.jpg diff --git a/microsite/data/on-demand/20211215-1.yaml b/microsite/data/on-demand/20211215-1.yaml deleted file mode 100644 index ce51fe3a9c..0000000000 --- a/microsite/data/on-demand/20211215-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: December 15, 2021 -category: Meetup -description: At our final adopters session of 2021, the community received a grab bag of end-of-year treats, including eye-catching infographics, a presentation from finance startup Brex about their path to adopting Backstage, and tips on branding your Backstage portal. Plus, get your official Backstage Zoom background. But first up, a quick look back at the year that was. -youtubeUrl: https://youtu.be/0QMQYSTKAx0 -youtubeImgUrl: https://i1.ytimg.com/vi/0QMQYSTKAx0/mqdefault.jpg diff --git a/microsite/data/on-demand/20211216-1.yaml b/microsite/data/on-demand/20211216-1.yaml deleted file mode 100644 index 9600a5f13b..0000000000 --- a/microsite/data/on-demand/20211216-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: December 16, 2021 -category: Meetup -description: At our final contributors session of 2021, see how the new Backstage Upgrade Helper works and enjoy smoother upgrades, hear updates from the maintainers, and meet our contributor of the month. As in the adopters session, first we celebrate the year’s milestones and share a few resources you can use to spread the word about Backstage. -youtubeUrl: https://youtu.be/nYjI2j-lWEM -youtubeImgUrl: https://i1.ytimg.com/vi/nYjI2j-lWEM/mqdefault.jpg diff --git a/microsite/data/on-demand/20220216-1.yaml b/microsite/data/on-demand/20220216-1.yaml deleted file mode 100644 index 1fc7371345..0000000000 --- a/microsite/data/on-demand/20220216-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: February 16, 2022 -category: Meetup -description: This community session marks one year of Backstage community sessions! In this session, we celebrate one year of the Backstage community, hear from Patrik on stabilizing core APIs, learn more about Homepage Templates, find hidden info about your catalog entities, and Q&A. -youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: https://i1.ytimg.com/vi/evf_LV0KzIk/mqdefault.jpg diff --git a/microsite/data/on-demand/20220223-1.yaml b/microsite/data/on-demand/20220223-1.yaml deleted file mode 100644 index 6efc9fe22c..0000000000 --- a/microsite/data/on-demand/20220223-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: February 23, 2022 -category: Meetup -description: Community Sessions Anniversary , SWAG opportunity❗, TechDocs add-on framework, URL Reader demo 👨‍💻, Q&A -youtubeUrl: https://youtu.be/Buu_KWdIFwU -youtubeImgUrl: https://i1.ytimg.com/vi/Buu_KWdIFwU/mqdefault.jpg diff --git a/microsite/data/on-demand/20220316-1.yaml b/microsite/data/on-demand/20220316-1.yaml deleted file mode 100644 index b4ecc1f696..0000000000 --- a/microsite/data/on-demand/20220316-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopter Community Sessions -date: March 16, 2022 -category: Meetup -description: In this community session, we celebrate Backstage’s 2nd birthday and a few other milestones that Backstage reached in March! The amazing Suzanne Daniels also put together a panel from some of our community members to discuss all things developer experience! -youtubeUrl: https://youtu.be/2s98-sxJT1c -youtubeImgUrl: https://i1.ytimg.com/vi/2s98-sxJT1c/mqdefault.jpg -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220323-1.yaml b/microsite/data/on-demand/20220323-1.yaml deleted file mode 100644 index 2f198775e8..0000000000 --- a/microsite/data/on-demand/20220323-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: March 23, 2022 -category: Meetup -description: In this Community Session, we review the recent milestones our Backstage community hit, chat with Djamaile Rahamat, our contributor spotlight, and watch three demos ranging from new plugins to test environments. -youtubeUrl: https://youtu.be/BAzxljI765U -youtubeImgUrl: https://i1.ytimg.com/vi/BAzxljI765U/mqdefault.jpg -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220420-1.yaml b/microsite/data/on-demand/20220420-1.yaml deleted file mode 100644 index 96560ec436..0000000000 --- a/microsite/data/on-demand/20220420-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: April 20, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/mFi_X58igzk -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/44 diff --git a/microsite/data/on-demand/20220427-1.yaml b/microsite/data/on-demand/20220427-1.yaml deleted file mode 100644 index 80ec8eae00..0000000000 --- a/microsite/data/on-demand/20220427-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: April 27, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/44 diff --git a/microsite/data/on-demand/20220518-1.yaml b/microsite/data/on-demand/20220518-1.yaml deleted file mode 100644 index e8d70df2d9..0000000000 --- a/microsite/data/on-demand/20220518-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: May 18, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/dEd1fl3wRvo -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/46 diff --git a/microsite/data/on-demand/20220525-1.yaml b/microsite/data/on-demand/20220525-1.yaml deleted file mode 100644 index f9a3f87a8a..0000000000 --- a/microsite/data/on-demand/20220525-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: May 25, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/neNipVE5ffY -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/46 diff --git a/microsite/data/on-demand/20220615-1.yaml b/microsite/data/on-demand/20220615-1.yaml deleted file mode 100644 index fb296dd6ce..0000000000 --- a/microsite/data/on-demand/20220615-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: June 15, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/aKZnjnE5Wy8 -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/49 diff --git a/microsite/data/on-demand/20220622-1.yaml b/microsite/data/on-demand/20220622-1.yaml deleted file mode 100644 index 27634609cb..0000000000 --- a/microsite/data/on-demand/20220622-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: June 22, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/E-jWqWXBxUY -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/49 diff --git a/microsite/data/on-demand/20220720-1.yaml b/microsite/data/on-demand/20220720-1.yaml deleted file mode 100644 index a7c0386a56..0000000000 --- a/microsite/data/on-demand/20220720-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: July 20, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/4VFNlPxWcx8 -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/52 diff --git a/microsite/data/on-demand/20220727-1.yaml b/microsite/data/on-demand/20220727-1.yaml deleted file mode 100644 index b25b2e0789..0000000000 --- a/microsite/data/on-demand/20220727-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: July 27, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/pNLLrNN_hkE -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/52 diff --git a/microsite/data/on-demand/20220817-1.yaml b/microsite/data/on-demand/20220817-1.yaml deleted file mode 100644 index f67c8cf4cd..0000000000 --- a/microsite/data/on-demand/20220817-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Adopters Community Sessions -date: August 17, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/qYnvc8ge1kg -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220824-1.yaml b/microsite/data/on-demand/20220824-1.yaml deleted file mode 100644 index a2387a8aad..0000000000 --- a/microsite/data/on-demand/20220824-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Contributor Community Sessions -date: August 24, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/8ydEFFiuHAc -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220921-1.yaml b/microsite/data/on-demand/20220921-1.yaml deleted file mode 100644 index fe3dda08c0..0000000000 --- a/microsite/data/on-demand/20220921-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Adopters Community Sessions -date: September 21, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/K44RQAVWWnY -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220928-1.yaml b/microsite/data/on-demand/20220928-1.yaml deleted file mode 100644 index 31ae752e3a..0000000000 --- a/microsite/data/on-demand/20220928-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Contributor Community Sessions -date: September 28, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/jmNT5x3mKaQ -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/plugins/api-spectral-linter.yaml b/microsite/data/plugins/api-spectral-linter.yaml index 292279e324..5f1682c71b 100644 --- a/microsite/data/plugins/api-spectral-linter.yaml +++ b/microsite/data/plugins/api-spectral-linter.yaml @@ -4,7 +4,7 @@ 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 +documentation: https://github.com/dweber019/backstage-plugins/tree/main/plugins/api-docs-spectral-linter +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugins/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/api-wsdl.yaml b/microsite/data/plugins/api-wsdl.yaml index 6523531f1d..219227c509 100644 --- a/microsite/data/plugins/api-wsdl.yaml +++ b/microsite/data/plugins/api-wsdl.yaml @@ -4,7 +4,7 @@ author: dweber019 authorUrl: https://github.com/dweber019 category: Discovery description: An API docs extension to render WSDL / SOAP web services human readable. -documentation: https://github.com/dweber019/backstage-plugin-api-docs-module-wsdl -iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugin-api-docs-module-wsdl/main/docs/logo.png +documentation: https://github.com/dweber019/backstage-plugins/tree/main/plugins/api-docs-module-wsdl +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugins/main/plugins/api-docs-module-wsdl/docs/logo.png npmPackageName: '@dweber019/backstage-plugin-api-docs-module-wsdl' addedDate: '2023-12-22' diff --git a/microsite/data/plugins/aws-app-development.yaml b/microsite/data/plugins/aws-app-development.yaml index 3944bbb4e0..47b40b8b3b 100644 --- a/microsite/data/plugins/aws-app-development.yaml +++ b/microsite/data/plugins/aws-app-development.yaml @@ -1,10 +1,10 @@ --- -title: AWS App Developer Tools +title: OPA on AWS author: Amazon Web Services authorUrl: https://aws.amazon.com/ category: Infrastructure -description: Create and manage AWS Apps within Backstage -documentation: https://github.com/awslabs/app-development-for-backstage-io-on-aws#readme -iconUrl: https://github.com/awslabs/app-development-for-backstage-io-on-aws/blob/main/docs/images/AWS_logo.png?raw=true +description: Orchestrate Platforms and Applications (OPA) allows customers to build and manage AWS Apps & Environments within Backstage +documentation: https://opaonaws.io +iconUrl: https://github.com/awslabs/app-development-for-backstage-io-on-aws/blob/main/website/static/img/white_OPA_text02.png?raw=true npmPackageName: '@aws/plugin-aws-apps-for-backstage' addedDate: '2023-05-10' diff --git a/microsite/data/plugins/backchat.yaml b/microsite/data/plugins/backchat.yaml new file mode 100644 index 0000000000..b375ad26bc --- /dev/null +++ b/microsite/data/plugins/backchat.yaml @@ -0,0 +1,10 @@ +--- +title: Backchat GenAI +author: benwilcock +authorUrl: https://github.com/benwilcock +category: Services +description: Access your favorite open source GenAI GUIs privately from Backstage. Chat wth large language models in your portal. Choose from hundreds of LLMs. Run inferencing wherever you like - local or remote, CPU or GPU - it's up to you! +documentation: https://github.com/benwilcock/backstage-plugin-backchat +iconUrl: /img/backchat-logo.png +npmPackageName: '@benbravo73/backstage-plugin-backchat' +addedDate: '2024-01-12' diff --git a/microsite/data/plugins/end-of-life.yaml b/microsite/data/plugins/end-of-life.yaml new file mode 100644 index 0000000000..ddf4b26341 --- /dev/null +++ b/microsite/data/plugins/end-of-life.yaml @@ -0,0 +1,10 @@ +--- +title: End of life +author: dweber019 +authorUrl: https://github.com/dweber019 +category: Quality +description: Display end of life data for entities from endoflife.data +documentation: https://github.com/dweber019/backstage-plugins/tree/main/plugins/endoflife +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugins/main/plugins/endoflife/docs/pluginIcon.png +npmPackageName: '@dweber019/backstage-plugin-endoflife' +addedDate: '2024-01-18' diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml new file mode 100644 index 0000000000..d846235bd6 --- /dev/null +++ b/microsite/data/plugins/github-codespaces.yaml @@ -0,0 +1,15 @@ +--- +title: GitHub Codespaces +author: Aditya Singhal - Lab45 +authorUrl: https://github.com/adityasinghal26 +category: Development +description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. +documentation: https://github.com/adityasinghal26/backstage-plugins/tree/main/plugins/github-codespaces +iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/00c9c00ba9acc3135014d6454ccf04f573195eef/plugins/github-codespaces/images/GitHubLogo.png +npmPackageName: '@adityasinghal26/plugin-github-codespaces' +tags: + - github + - codespaces + - development + - devcontainers +addedDate: '2023-12-30' diff --git a/microsite/data/plugins/revision.yaml b/microsite/data/plugins/revision.yaml new file mode 100644 index 0000000000..aeb0273602 --- /dev/null +++ b/microsite/data/plugins/revision.yaml @@ -0,0 +1,10 @@ +--- +title: Revision +author: Revision +authorUrl: https://github.com/revision-org +category: Visualization +description: Access Revision architecture diagrams from within Backstage +documentation: https://github.com/revision-org/backstage-plugins/tree/main/plugins/revision +iconUrl: https://raw.githubusercontent.com/revision-org/revision-assets/b4895ae036e99341576caf1c9bbf92ec89fb65dc/logo-black-full.svg +npmPackageName: '@revisionapp/backstage-revision-plugin' +addedDate: '2024-01-26' diff --git a/microsite/data/plugins/statuspage.yaml b/microsite/data/plugins/statuspage.yaml new file mode 100644 index 0000000000..652052defc --- /dev/null +++ b/microsite/data/plugins/statuspage.yaml @@ -0,0 +1,10 @@ +--- +title: Statuspage.io Plugin +author: AxisCommunications +authorUrl: https://github.com/AxisCommunications +category: Monitoring +description: The Statuspage plugin allows you to embedd https://statuspage.io components, component groups and dashboards in Backstage. +documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/statuspage/README.md +iconUrl: https://raw.githubusercontent.com/AxisCommunications/backstage-plugins/main/plugins/statuspage/media/logo.png +npmPackageName: '@axis-backstage/plugin-statuspage' +addedDate: '2024-02-06' diff --git a/microsite/data/plugins/time-saver.yaml b/microsite/data/plugins/time-saver.yaml new file mode 100644 index 0000000000..02f088ffa1 --- /dev/null +++ b/microsite/data/plugins/time-saver.yaml @@ -0,0 +1,10 @@ +--- +title: TimeSaver +author: tduniec +authorUrl: https://github.com/tduniec +category: Discovery +description: Visualise your time saved using Backstage Scaffolder templates +documentation: https://github.com/tduniec/backstage-timesaver-plugin/blob/main/README.md +iconUrl: https://raw.githubusercontent.com/tduniec/backstage-timesaver-plugin/main/img/tsLogo.png +npmPackageName: '@tduniec/backstage-plugin-time-saver' +addedDate: 2024-01-30 diff --git a/microsite/data/plugins/tips.yaml b/microsite/data/plugins/tips.yaml index e58ad0fb46..03327f3e41 100644 --- a/microsite/data/plugins/tips.yaml +++ b/microsite/data/plugins/tips.yaml @@ -4,7 +4,7 @@ author: dweber019 authorUrl: https://github.com/dweber019 category: Discovery description: The tips plugin will show the end user some helpful information for entities. -documentation: https://github.com/dweber019/backstage-plugin-tips -iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugin-tips/main/plugins/tips/docs/pluginIcon.png +documentation: https://github.com/dweber019/backstage-plugins/tree/main/plugins/tips +iconUrl: https://raw.githubusercontent.com/dweber019/backstage-plugins/main/plugins/tips/docs/pluginIcon.png npmPackageName: '@dweber019/backstage-plugin-tips' addedDate: '2023-10-08' diff --git a/microsite/data/plugins/umami.yaml b/microsite/data/plugins/umami.yaml new file mode 100644 index 0000000000..5f1fc208d4 --- /dev/null +++ b/microsite/data/plugins/umami.yaml @@ -0,0 +1,10 @@ +--- +title: Umami Analytics +author: AxisCommunications +authorUrl: https://github.com/AxisCommunications +category: Monitoring +description: Track usage of your Backstage instance using Umami Analytics. +documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/analytics-module-umami/README.md +iconUrl: /img/umami-logo.svg +npmPackageName: '@axis-backstage/plugin-analytics-module-umami' +addedDate: '2024-02-05' diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js index 3d175fb892..34d882c110 100644 --- a/microsite/docusaurus.config.js +++ b/microsite/docusaurus.config.js @@ -69,7 +69,7 @@ module.exports = { ], ], markdown: { - preprocessor({ filePath, fileContent }) { + preprocessor({ fileContent }) { // Replace all HTML comments with emtpy strings as these are not supported by MDXv2. return fileContent.replace(//gs, ''); }, @@ -144,6 +144,14 @@ module.exports = { from: '/docs/features/software-templates/testing-scaffolder-alpha', to: '/docs/features/software-templates/migrating-to-rjsf-v5', }, + { + from: '/docs/auth/glossary', + to: '/docs/references/glossary', + }, + { + from: '/docs/overview/glossary', + to: '/docs/references/glossary', + }, ], }, ], @@ -277,14 +285,14 @@ module.exports = { to: 'https://developer.spotify.com/', }, { - label: 'Github', + label: 'GitHub', to: 'https://github.com/backstage/', }, ], }, ], copyright: - '

Made with ❤️ at Spotify

', + '

Made with ❤️ at Spotify

', }, algolia: { apiKey: '1f0ba86672ccfc3576faa94583e5b318', diff --git a/microsite/lighthouserc.js b/microsite/lighthouserc.js new file mode 100644 index 0000000000..f0024ee0b3 --- /dev/null +++ b/microsite/lighthouserc.js @@ -0,0 +1,68 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var sidebars = require('./sidebars.json'); + +module.exports = { + ci: { + collect: { + url: [ + /** Home */ + 'http://localhost:3000', + /** Docs - Getting Started */ + 'http://localhost:3000/docs/getting-started', + /** Docs - Software Catalog */ + 'http://localhost:3000/docs/features/software-catalog', + /** Docs - Create a Plugin */ + 'http://localhost:3000/docs/plugins/create-a-plugin', + /** Docs - Designing for Backstage */ + 'http://localhost:3000/docs/dls/design', + /** Blog */ + 'http://localhost:3000/blog', + /** Plugins */ + 'http://localhost:3000/plugins', + /** Demos */ + 'http://localhost:3000/demos', + /** Community */ + 'http://localhost:3000/community', + /** Releases */ + ...sidebars.releases['Release Notes'].map( + path => `http://localhost:3000/docs/${path}`, + ), + ], + settings: { + onlyCategories: ['accessibility'], + output: ['html', 'json'], + outputPath: './.lighthouseci/reports', + preset: 'desktop', + }, + // refers to root package scripts + startServerCommand: 'yarn run start:microsite', + startServerReadyPattern: 'compiled successfully', + startServerReadyTimeout: 600000, + numberOfRuns: 1, + }, + assert: { + assertions: { + 'categories:performance': 'off', + 'categories:pwa': 'off', + 'categories:best-practices': 'off', + 'categories:seo': 'off', + 'categories:accessibility': ['error', { minScore: 0.95 }], + }, + }, + }, +}; diff --git a/microsite/package.json b/microsite/package.json index 53309fb358..dadc06518d 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -18,21 +18,21 @@ "docusaurus": "docusaurus" }, "devDependencies": { - "@docusaurus/module-type-aliases": "0.0.0-5703", + "@docusaurus/module-type-aliases": "^3.1.1", "@spotify/prettier-config": "^14.0.0", "@tsconfig/docusaurus": "^2.0.0", "@types/luxon": "^3.0.0", "@types/webpack-env": "^1.18.0", "js-yaml": "^4.1.0", "prettier": "^2.6.2", - "typescript": "~5.0.0", + "typescript": "~5.1.0", "yaml-loader": "^0.8.0" }, "prettier": "@spotify/prettier-config", "dependencies": { - "@docusaurus/core": "0.0.0-5703", - "@docusaurus/plugin-client-redirects": "0.0.0-5703", - "@docusaurus/preset-classic": "0.0.0-5703", + "@docusaurus/core": "^3.1.1", + "@docusaurus/plugin-client-redirects": "^3.1.1", + "@docusaurus/preset-classic": "^3.1.1", "@swc/core": "^1.3.46", "clsx": "^2.0.0", "docusaurus-plugin-sass": "^0.2.3", diff --git a/microsite/sidebars.json b/microsite/sidebars.json index c54e59f45c..146d8db059 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -37,7 +37,6 @@ "overview/versioning-policy", "overview/threat-model", "overview/support", - "overview/glossary", "overview/logos" ], "Getting Started": [ @@ -309,7 +308,8 @@ "auth/google/gcp-iap-auth", "auth/okta/provider", "auth/oauth2-proxy/provider", - "auth/onelogin/provider" + "auth/onelogin/provider", + "auth/vmware-cloud/provider" ] }, "auth/identity-resolver", @@ -318,8 +318,7 @@ "auth/add-auth-provider", "auth/service-to-service-auth", "auth/autologout", - "auth/troubleshooting", - "auth/glossary" + "auth/troubleshooting" ], "Permissions": [ "permissions/overview", @@ -411,7 +410,20 @@ { "type": "category", "label": "Building Plugins", - "items": ["frontend-system/building-plugins/testing"] + "items": [ + "frontend-system/building-plugins/index", + "frontend-system/building-plugins/testing", + "frontend-system/building-plugins/extension-types", + "frontend-system/building-plugins/built-in-data-refs" + ] + }, + { + "type": "category", + "label": "Building Apps", + "items": [ + "frontend-system/building-apps/index", + "frontend-system/building-apps/built-in-extensions" + ] }, { "type": "category", @@ -448,6 +460,7 @@ "tutorials/journey", "tutorials/quickstart-app-plugin", "tutorials/react-router-stable-migration", + "tutorials/react18-migration", "tutorials/package-role-migration", "tutorials/migrating-away-from-core", "tutorials/configuring-plugin-databases", @@ -473,7 +486,8 @@ "architecture-decisions/adrs-adr012", "architecture-decisions/adrs-adr013" ], - "FAQ": ["FAQ"], - "Accessibility": ["accessibility/index"] + "FAQ": ["faq/index", "faq/product", "faq/technical"], + "Accessibility": ["accessibility/index"], + "References": ["references/glossary"] } } diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index 9b10183ea4..42c42ae0c3 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -36,19 +36,14 @@ const Community = () => { label: 'Community newsletter', link: 'https://info.backstage.spotify.com/newsletter_subscribe', }, - { - content: 'Join the', - label: 'Twitter community', - link: 'https://twitter.com/i/communities/1494019781716062215', - }, ]; const officialInitiatives: ICollectionItem[] = [ { title: 'Community sessions', content: - 'Maintainers and adopters meet monthly to share updates, demos, and ideas. Yep, all sessions are recorded!', - link: '/on-demand', + 'Maintainers and adopters meet monthly to share updates, demos, and ideas. You can find recorded session on our YouTube channel!', + link: 'https://github.com/backstage/community/tree/main/backstage-community-sessions#backstage-community-sessions', label: 'Join a session', }, { @@ -58,45 +53,11 @@ const Community = () => { link: 'https://info.backstage.spotify.com/newsletter_subscribe', label: 'Subscribe', }, - { - title: 'Contributor Spotlight', - content: - "A recognition for valuable community work. Nominate contributing members for their efforts! We'll put them in the spotlight ❤️", - link: '/nominate', - label: 'Nominate now', - }, - ]; - - const communityInitiatives: ICollectionItem[] = [ - { - title: 'Open Mic Meetup', - content: ( - <> - A casual get together of Backstage users sharing their experiences and - helping each other. Hosted by{' '} - Roadie.io and{' '} - Frontside Software. - - ), - link: 'https://backstage-openmic.com/', - label: 'Learn more', - }, - { - title: 'Backstage Weekly Newsletter', - content: ( - <> - A weekly newsletter with news, updates and things community from your - friends at Roadie.io. - - ), - link: 'https://roadie.io/backstage-weekly/', - label: 'Learn more', - }, ]; const trainingNCertifications: ICollectionItem[] = [ { - title: 'Open Mic Meetup', + title: 'Introduction to Backstage: Developer Portals Made Easy (LFS142x)', content: 'This is a course produced and curated by the Linux Foundation. This course introduces you to Backstage and how to get started with the project.', link: 'https://training.linuxfoundation.org/training/introduction-to-backstage-developer-portals-made-easy-lfs142x/', @@ -127,8 +88,8 @@ const Community = () => { }, { name: 'VMWare', - url: 'https://www.vmware.com', - logo: 'img/partner-logo-vmware.png', + url: 'https://tanzu.vmware.com/', + logo: 'img/partner-logo-tanzubybroadcom.png', }, ]; //#endregion @@ -204,30 +165,6 @@ const Community = () => { - - Community initiatives} - > - {communityInitiatives.map( - ({ title, content, link, label }, index) => ( - -

{content}

-
- ), - )} -
-
- { - return ( - -
- - Contributor Spotlight nomination}> - - - -
-
- ); -}; - -export default Nominate; diff --git a/microsite/src/pages/nominate/nominate.module.scss b/microsite/src/pages/nominate/nominate.module.scss deleted file mode 100644 index cdec103a8a..0000000000 --- a/microsite/src/pages/nominate/nominate.module.scss +++ /dev/null @@ -1,32 +0,0 @@ -.nominatePage { - font-size: 1.25rem; - - &, - & > section, - & > section > div { - flex: 1; - display: flex; - flex-direction: column; - } - - & > section > div > div { - flex: 1; - grid-template-rows: auto 1fr; - } - - h1 { - font-size: 54px; - line-height: 56px; - word-break: break-word; - } - - p { - text-align: justify; - } - - iframe { - width: 100%; - height: 100%; - min-height: 400px; - } -} diff --git a/microsite/src/pages/on-demand/_onDemandCard.tsx b/microsite/src/pages/on-demand/_onDemandCard.tsx deleted file mode 100644 index e203c80f9a..0000000000 --- a/microsite/src/pages/on-demand/_onDemandCard.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import Link from '@docusaurus/Link'; -import { SimpleCard } from '@site/src/components/simpleCard/simpleCard'; -import React from 'react'; - -export interface IOnDemandData { - title: string; - category: string; - description: string; - date: string; - youtubeUrl: string; - youtubeImgUrl: string; - rsvpUrl: string; - eventUrl: string; -} - -export const OnDemandCard = ({ - title, - category, - description, - date, - youtubeUrl, - youtubeImgUrl, - rsvpUrl, - eventUrl, -}: IOnDemandData) => ( - -

{title}

- -

on {date}

- - {category} - - {title} - - } - body={

{description}

} - footer={ - category.toLowerCase() === 'upcoming' ? ( - <> - - Event page - - - - Remind me - - - ) : ( - - Watch on YouTube - - ) - } - /> -); diff --git a/microsite/src/pages/on-demand/index.tsx b/microsite/src/pages/on-demand/index.tsx deleted file mode 100644 index 8d78c393ce..0000000000 --- a/microsite/src/pages/on-demand/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import Layout from '@theme/Layout'; -import clsx from 'clsx'; -import React from 'react'; - -import { IOnDemandData, OnDemandCard } from './_onDemandCard'; -import pluginsStyles from './onDemand.module.scss'; -import { truncateDescription } from '@site/src/util/truncateDescription'; -import Link from '@docusaurus/Link'; - -//#region Plugin data import -const onDemandContext = require.context( - '../../../data/on-demand', - false, - /\.ya?ml/, -); - -const onDemandData = onDemandContext.keys().reduce( - (acum, id) => { - const pluginData: IOnDemandData = onDemandContext(id).default; - - acum[ - pluginData.category === 'Upcoming' ? 'upcomingEvents' : 'onDemandEvents' - ].push(truncateDescription(pluginData)); - - return acum; - }, - { - upcomingEvents: [] as IOnDemandData[], - onDemandEvents: [] as IOnDemandData[], - }, -); -//#endregion - -const Plugins = () => ( - -
-
-
-

Community sessions

- -

- Upcoming events and recorded sessions about updates, demos and - discussions. -

-
- - - Add an event or recording - -
- -
- -

Upcoming live events

- -
- {onDemandData.upcomingEvents.map(eventData => ( - - ))} -
- -

Community on demand

- -
- {onDemandData.onDemandEvents.map(eventData => ( - - ))} -
-
-
-); - -export default Plugins; diff --git a/microsite/src/pages/on-demand/onDemand.module.scss b/microsite/src/pages/on-demand/onDemand.module.scss deleted file mode 100644 index ff5797b687..0000000000 --- a/microsite/src/pages/on-demand/onDemand.module.scss +++ /dev/null @@ -1,44 +0,0 @@ -.onDemandPage { - :global(.communityBanner) { - display: flex; - align-items: center; - } - - :global(.communityContent) { - flex: 1; - } - - :global(.card) { - max-width: 100%; - } - - :global(.card .card__header) { - display: grid; - row-gap: 0.25rem; - column-gap: 1rem; - justify-items: start; - - > * { - margin: 0; - } - - :global(img) { - width: 250px; - max-width: 100%; - justify-self: center; - } - } - - :global(.card .card__footer) { - gap: 1rem; - display: grid; - grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); - } - - :global(.cardsContainer) { - gap: 1rem; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); - justify-items: start; - } -} diff --git a/microsite/src/pages/plugins/plugins.module.scss b/microsite/src/pages/plugins/plugins.module.scss index 80ac60cf98..fb17e90625 100644 --- a/microsite/src/pages/plugins/plugins.module.scss +++ b/microsite/src/pages/plugins/plugins.module.scss @@ -32,6 +32,7 @@ position: absolute; text-align: center; font-weight: bold; + color: black; transform: translateY(var(--translateY)) translateX(var(--translateX)) rotate(var(--rotation)); @@ -78,6 +79,8 @@ :global(.dropdown) { float: right; margin-bottom: 1rem; + text-overflow: ellipsis; + white-space: nowrap; } :global(.button--info) { diff --git a/microsite/src/theme/customTheme.scss b/microsite/src/theme/customTheme.scss index 57e1f8828e..b29f76d3c0 100644 --- a/microsite/src/theme/customTheme.scss +++ b/microsite/src/theme/customTheme.scss @@ -7,7 +7,7 @@ --ifm-color-primary-darker: #2e9e8a; --ifm-color-primary-darkest: #268271; } - +// for docs and releases #__docusaurus { .theme-doc-markdown { a { @@ -15,7 +15,36 @@ } } } - +// for blog +#__docusaurus { + .row { + .col { + &--7 { + a { + text-decoration: underline; + } + } + } + } +} +// for community page +#__docusaurus { + div[class^='communityPage'], + div[class*='communityPage'] { + a:not([class]) { + text-decoration: underline; + } + } +} +// for plugin page +#__docusaurus { + div[class^='pluginsPage'], + div[class*='pluginsPage'] { + a:not([class]) { + text-decoration: underline; + } + } +} .footerLogo { background-image: url(/img/logo.svg); background-repeat: no-repeat; diff --git a/microsite/static/css/on-demand.css b/microsite/static/css/on-demand.css deleted file mode 100644 index 909459796c..0000000000 --- a/microsite/static/css/on-demand.css +++ /dev/null @@ -1,143 +0,0 @@ -.VideoCard { - background-color: #282828; - height: 100%; - padding: 16px; - display: flex; - flex-direction: column; -} - -.VideoGrid { - display: grid; - grid-gap: 1rem; - grid-template-columns: repeat(4, 1fr); - grid-auto-rows: 1fr; -} - -@media (max-width: 1200px) { - .VideoGrid { - grid-template-columns: repeat(3, 1fr); - } -} - -@media only screen and (max-width: 815px) { - .VideoGrid { - grid-template-columns: repeat(2, 1fr); - } -} - -@media only screen and (max-width: 485px) { - .VideoGrid { - grid-template-columns: 1fr; - } -} - -.VideoCard img { - float: left; - margin: 0px 16px 8px 0px; - height: 160px; - width: 300px; -} - -.VideoCardHeader { - display: flex; - flex-direction: row; - align-items: center; - max-height: fit-content; - min-height: fit-content; -} - -.VideoCardImage { - width: 200px; - height: 80px; - margin-right: 16px; -} - -.VideoCardImage img { - width: 100%; - max-width: 100%; -} - -.VideoCardTitle { - color: white; - vertical-align: top; - margin: 8px 0 0; -} - -.VideoCardInfo { - flex: 1; -} - -.VideoAddNewButton { - position: absolute; - bottom: 16px; - right: 0px; -} - -@media only screen and (max-width: 485px) { - .VideoAddNewButton { - bottom: -4px; - } -} - -.VideoButtonFilled { - padding: 4px 8px; - border-radius: 4px; - color: #69ddc7; -} - -.VideoButtonFilled:hover { - border: 1px solid #69ddc7; - background-color: transparent; -} - -.VideoCardChipOutlined { - font-size: small; - border-radius: 16px; - padding: 2px 8px; - border: 1px solid #69ddc7; - color: #69ddc7; -} - -.VideoCardFooter { - display: flex; - justify-content: flex-end; - align-items: flex-end; - margin-top: auto; - min-height: 2em; -} - -.VideoCardFooter a { - padding: 2px 8px; -} - -.VideoPageLayout { - margin: auto; - max-width: 1430px; - padding: 20px; -} - -.VideoPageHeader { - position: relative; -} - -.VideoPageHeader h2 { - display: inline-block; -} - -.VideoCardBody { - padding-top: 8px; -} - -.VideoCardDate, -.VideoCardDate a { - margin-bottom: 0.25em; - color: rgba(255, 255, 255, 0.6); -} - -.VideoCardDate a:hover { - color: white; -} - -#add-video-card { - border: 1px solid #69ddc7; -} diff --git a/microsite/static/img/backchat-logo.png b/microsite/static/img/backchat-logo.png new file mode 100644 index 0000000000..2d58948007 Binary files /dev/null and b/microsite/static/img/backchat-logo.png differ diff --git a/microsite/static/img/partner-logo-redhat.png b/microsite/static/img/partner-logo-redhat.png index ad9bc9ceba..0b98532c2c 100644 Binary files a/microsite/static/img/partner-logo-redhat.png and b/microsite/static/img/partner-logo-redhat.png differ diff --git a/microsite/static/img/partner-logo-tanzubybroadcom.png b/microsite/static/img/partner-logo-tanzubybroadcom.png new file mode 100644 index 0000000000..0bd5586203 Binary files /dev/null and b/microsite/static/img/partner-logo-tanzubybroadcom.png differ diff --git a/microsite/static/img/partner-logo-vmware.png b/microsite/static/img/partner-logo-vmware.png deleted file mode 100644 index 049975ca15..0000000000 Binary files a/microsite/static/img/partner-logo-vmware.png and /dev/null differ diff --git a/microsite/static/img/umami-logo.svg b/microsite/static/img/umami-logo.svg new file mode 100644 index 0000000000..b139531324 --- /dev/null +++ b/microsite/static/img/umami-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 36c4f4bdac..6b522f9cf8 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -197,55 +197,55 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.8.3": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.8.3": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" dependencies: - "@babel/highlight": ^7.22.13 + "@babel/highlight": ^7.23.4 chalk: ^2.4.2 - checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + checksum: d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.20, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.20 - resolution: "@babel/compat-data@npm:7.22.20" - checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 +"@babel/compat-data@npm:^7.22.20, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/compat-data@npm:7.23.5" + checksum: 06ce244cda5763295a0ea924728c09bae57d35713b675175227278896946f922a63edf803c322f855a3878323d48d0255a2a3023409d2a123483c8a69ebb4744 languageName: node linkType: hard -"@babel/core@npm:^7.19.6, @babel/core@npm:^7.22.9": - version: 7.23.0 - resolution: "@babel/core@npm:7.23.0" +"@babel/core@npm:^7.19.6, @babel/core@npm:^7.23.3": + version: 7.23.9 + resolution: "@babel/core@npm:7.23.9" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.23.0 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helpers": ^7.23.0 - "@babel/parser": ^7.23.0 - "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.0 - "@babel/types": ^7.23.0 + "@babel/code-frame": ^7.23.5 + "@babel/generator": ^7.23.6 + "@babel/helper-compilation-targets": ^7.23.6 + "@babel/helper-module-transforms": ^7.23.3 + "@babel/helpers": ^7.23.9 + "@babel/parser": ^7.23.9 + "@babel/template": ^7.23.9 + "@babel/traverse": ^7.23.9 + "@babel/types": ^7.23.9 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: cebd9b48dbc970a7548522f207f245c69567e5ea17ebb1a4e4de563823cf20a01177fe8d2fe19b6e1461361f92fa169fd0b29f8ee9d44eeec84842be1feee5f2 + checksum: 634a511f74db52a5f5a283c1121f25e2227b006c095b84a02a40a9213842489cd82dc7d61cdc74e10b5bcd9bb0a4e28bab47635b54c7e2256d47ab57356e2a76 languageName: node linkType: hard -"@babel/generator@npm:^7.22.9, @babel/generator@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/generator@npm:7.23.0" +"@babel/generator@npm:^7.23.3, @babel/generator@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" dependencies: - "@babel/types": ^7.23.0 + "@babel/types": ^7.23.6 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + checksum: 1a1a1c4eac210f174cd108d479464d053930a812798e09fee069377de39a893422df5b5b146199ead7239ae6d3a04697b45fc9ac6e38e0f6b76374390f91fc6c languageName: node linkType: hard @@ -267,16 +267,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/helper-compilation-targets@npm:7.22.15" +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.15 - browserslist: ^4.21.9 + "@babel/compat-data": ^7.23.5 + "@babel/helper-validator-option": ^7.23.5 + browserslist: ^4.22.2 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 + checksum: c630b98d4527ac8fe2c58d9a06e785dfb2b73ec71b7c4f2ddf90f814b5f75b547f3c015f110a010fd31f76e3864daaf09f3adcd2f6acdbfb18a8de3a48717590 languageName: node linkType: hard @@ -371,9 +371,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-module-transforms@npm:7.23.0" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0, @babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" dependencies: "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-module-imports": ^7.22.15 @@ -382,7 +382,7 @@ __metadata: "@babel/helper-validator-identifier": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 + checksum: 5d0895cfba0e16ae16f3aa92fee108517023ad89a855289c4eb1d46f7aef4519adf8e6f971e1d55ac20c5461610e17213f1144097a8f932e768a9132e2278d71 languageName: node linkType: hard @@ -455,10 +455,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: c0641144cf1a7e7dc93f3d5f16d5327465b6cf5d036b48be61ecba41e1eece161b48f46b7f960951b67f8c3533ce506b16dece576baef4d8b3b49f8c65410f90 languageName: node linkType: hard @@ -469,10 +469,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-validator-option@npm:7.22.15" - checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d +"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 537cde2330a8aede223552510e8a13e9c1c8798afee3757995a7d4acae564124fe2bf7e7c3d90d62d3657434a74340a274b3b3b1c6f17e9a2be1f48af29cb09e languageName: node linkType: hard @@ -487,34 +487,34 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.0": - version: 7.23.1 - resolution: "@babel/helpers@npm:7.23.1" +"@babel/helpers@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/helpers@npm:7.23.9" dependencies: - "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.0 - "@babel/types": ^7.23.0 - checksum: acfc345102045c24ea2a4d60e00dcf8220e215af3add4520e2167700661338e6a80bd56baf44bb764af05ec6621101c9afc315dc107e18c61fa6da8acbdbb893 + "@babel/template": ^7.23.9 + "@babel/traverse": ^7.23.9 + "@babel/types": ^7.23.9 + checksum: 2678231192c0471dbc2fc403fb19456cc46b1afefcfebf6bc0f48b2e938fdb0fef2e0fe90c8c8ae1f021dae5012b700372e4b5d15867f1d7764616532e4a6324 languageName: node linkType: hard -"@babel/highlight@npm:^7.22.13": - version: 7.22.20 - resolution: "@babel/highlight@npm:7.22.20" +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" dependencies: "@babel/helper-validator-identifier": ^7.22.20 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + checksum: 643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89 languageName: node linkType: hard -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/parser@npm:7.23.0" +"@babel/parser@npm:^7.22.7, @babel/parser@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/parser@npm:7.23.9" bin: parser: ./bin/babel-parser.js - checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + checksum: e7cd4960ac8671774e13803349da88d512f9292d7baa952173260d3e8f15620a28a3701f14f709d769209022f9e7b79965256b8be204fc550cfe783cdcabe7c7 languageName: node linkType: hard @@ -1593,7 +1593,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.8.4": +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.8.4": version: 7.23.1 resolution: "@babel/runtime@npm:7.23.1" dependencies: @@ -1602,43 +1602,43 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/template@npm:7.23.9" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/parser": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + "@babel/code-frame": ^7.23.5 + "@babel/parser": ^7.23.9 + "@babel/types": ^7.23.9 + checksum: 6e67414c0f7125d7ecaf20c11fab88085fa98a96c3ef10da0a61e962e04fdf3a18a496a66047005ddd1bb682a7cc7842d556d1db2f3f3f6ccfca97d5e445d342 languageName: node linkType: hard -"@babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.23.0": - version: 7.23.2 - resolution: "@babel/traverse@npm:7.23.2" +"@babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/traverse@npm:7.23.9" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.23.0 + "@babel/code-frame": ^7.23.5 + "@babel/generator": ^7.23.6 "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-function-name": ^7.23.0 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.23.0 - "@babel/types": ^7.23.0 - debug: ^4.1.0 + "@babel/parser": ^7.23.9 + "@babel/types": ^7.23.9 + debug: ^4.3.1 globals: ^11.1.0 - checksum: 26a1eea0dde41ab99dde8b9773a013a0dc50324e5110a049f5d634e721ff08afffd54940b3974a20308d7952085ac769689369e9127dea655f868c0f6e1ab35d + checksum: a932f7aa850e158c00c97aad22f639d48c72805c687290f6a73e30c5c4957c07f5d28310c9bf59648e2980fe6c9d16adeb2ff92a9ca0f97fa75739c1328fc6c3 languageName: node linkType: hard -"@babel/types@npm:^7.20.0, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.23.0 - resolution: "@babel/types@npm:7.23.0" +"@babel/types@npm:^7.20.0, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.9 + resolution: "@babel/types@npm:7.23.9" dependencies: - "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-string-parser": ^7.23.4 "@babel/helper-validator-identifier": ^7.22.20 to-fast-properties: ^2.0.0 - checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + checksum: 0a9b008e9bfc89beb8c185e620fa0f8ed6c771f1e1b2e01e1596870969096fec7793898a1d64a035176abf1dd13e2668ee30bf699f2d92c210a8128f4b151e65 languageName: node linkType: hard @@ -1689,12 +1689,12 @@ __metadata: languageName: node linkType: hard -"@docusaurus/core@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/core@npm:0.0.0-5703" +"@docusaurus/core@npm:3.1.1, @docusaurus/core@npm:^3.1.1": + version: 3.1.1 + resolution: "@docusaurus/core@npm:3.1.1" dependencies: - "@babel/core": ^7.22.9 - "@babel/generator": ^7.22.9 + "@babel/core": ^7.23.3 + "@babel/generator": ^7.23.3 "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-transform-runtime": ^7.22.9 "@babel/preset-env": ^7.22.9 @@ -1703,13 +1703,13 @@ __metadata: "@babel/runtime": ^7.22.6 "@babel/runtime-corejs3": ^7.22.6 "@babel/traverse": ^7.22.8 - "@docusaurus/cssnano-preset": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/mdx-loader": 0.0.0-5703 + "@docusaurus/cssnano-preset": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/mdx-loader": 3.1.1 "@docusaurus/react-loadable": 5.5.2 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 "@slorber/static-site-generator-webpack-plugin": ^4.0.7 "@svgr/webpack": ^6.5.1 autoprefixer: ^10.4.14 @@ -1736,7 +1736,6 @@ __metadata: html-minifier-terser: ^7.2.0 html-tags: ^3.3.1 html-webpack-plugin: ^5.5.3 - import-fresh: ^3.3.0 leven: ^3.1.0 lodash: ^4.17.21 mini-css-extract-plugin: ^2.7.6 @@ -1758,7 +1757,6 @@ __metadata: tslib: ^2.6.0 update-notifier: ^6.0.2 url-loader: ^4.1.1 - wait-on: ^7.0.1 webpack: ^5.88.1 webpack-bundle-analyzer: ^4.9.0 webpack-dev-server: ^4.15.1 @@ -1769,76 +1767,75 @@ __metadata: react-dom: ^18.0.0 bin: docusaurus: bin/docusaurus.mjs - checksum: 0e2912a09964778db626dc190317badb074f2f5e09157b8070f281eff69ce2e89846529584ce9bf6e6898293409c353adc80572484aceda1d2136aa2b0b334ca + checksum: a35851dd6dc5ff5d2c8a8efb36b9875dc33a9e067a4677e5c9437a8635970e55a3cf14bb6eba9c9e356f4189283fb401b39423d497eb17bb09a16dd0ed84b1da languageName: node linkType: hard -"@docusaurus/cssnano-preset@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/cssnano-preset@npm:0.0.0-5703" +"@docusaurus/cssnano-preset@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/cssnano-preset@npm:3.1.1" dependencies: cssnano-preset-advanced: ^5.3.10 postcss: ^8.4.26 postcss-sort-media-queries: ^4.4.1 tslib: ^2.6.0 - checksum: 5f6e2a69765fb18de7d8f5e3037bf4f08695034762fca092229ae0ba9a40e9b76048914ffbf6b1d339d496e23580f47aa419f51f446c98fca0ba8d500a06e396 + checksum: 562d96c2ff60826459c255831cd57b12393e6f41b3827c499d43d00ec1887fbeebfea7c68aa72d9e56a5d64419847d11a5d66021acb4f1e3ce4c87b781f33954 languageName: node linkType: hard -"@docusaurus/logger@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/logger@npm:0.0.0-5703" +"@docusaurus/logger@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/logger@npm:3.1.1" dependencies: chalk: ^4.1.2 tslib: ^2.6.0 - checksum: 9ee30b054388e5a618876316df50b73a7c4c8300ce205ace3c09f689a1a38b85d51891a1f0613341fd038a0d06290f0675d64c3e9e5b87f1eee3cb76fd45b55c + checksum: d9673035a7eff14c1820b6c07a07e92a21e7f8e824305a784250d025c79bf9cfc51d0e6007b7660da4f810b78793572d382db48033201902c335c916d735433b languageName: node linkType: hard -"@docusaurus/mdx-loader@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/mdx-loader@npm:0.0.0-5703" +"@docusaurus/mdx-loader@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/mdx-loader@npm:3.1.1" dependencies: "@babel/parser": ^7.22.7 "@babel/traverse": ^7.22.8 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 - "@mdx-js/mdx": ^2.1.5 + "@docusaurus/logger": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 + "@mdx-js/mdx": ^3.0.0 "@slorber/remark-comment": ^1.0.0 escape-html: ^1.0.3 - estree-util-value-to-estree: ^2.1.0 + estree-util-value-to-estree: ^3.0.1 file-loader: ^6.2.0 fs-extra: ^11.1.1 - hastscript: ^7.1.0 image-size: ^1.0.2 - mdast-util-mdx: ^2.0.0 - mdast-util-to-string: ^3.2.0 - rehype-raw: ^6.1.1 - remark-directive: ^2.0.1 - remark-emoji: ^2.2.0 + mdast-util-mdx: ^3.0.0 + mdast-util-to-string: ^4.0.0 + rehype-raw: ^7.0.0 + remark-directive: ^3.0.0 + remark-emoji: ^4.0.0 remark-frontmatter: ^5.0.0 - remark-gfm: ^3.0.1 + remark-gfm: ^4.0.0 stringify-object: ^3.3.0 tslib: ^2.6.0 - unified: ^10.1.2 - unist-util-visit: ^2.0.3 + unified: ^11.0.3 + unist-util-visit: ^5.0.0 url-loader: ^4.1.1 - vfile: ^5.3.7 + vfile: ^6.0.1 webpack: ^5.88.1 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: d57b08d7d676b9246be129af06a803fc55162359578e486456cb96a2372809c2093ef4115c926cf8e8be35e285b35d3ea444d808d46afb78edf66b49f58474fb + checksum: e6b2483b20db41c8264c47edc42e2a738239fbad9b69eb520c7dab421dc2cde4f73f6ec871ccf277dfbc285ae9b202af892771ce800c4ce56739bff6c4c3c231 languageName: node linkType: hard -"@docusaurus/module-type-aliases@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/module-type-aliases@npm:0.0.0-5703" +"@docusaurus/module-type-aliases@npm:3.1.1, @docusaurus/module-type-aliases@npm:^3.1.1": + version: 3.1.1 + resolution: "@docusaurus/module-type-aliases@npm:3.1.1" dependencies: "@docusaurus/react-loadable": 5.5.2 - "@docusaurus/types": 0.0.0-5703 + "@docusaurus/types": 3.1.1 "@types/history": ^4.7.11 "@types/react": "*" "@types/react-router-config": "*" @@ -1848,19 +1845,19 @@ __metadata: peerDependencies: react: "*" react-dom: "*" - checksum: b0dbf719f3c6510b6706f36310b185bdf8a8a2ab5d3b0b76f8962b08d3b1a86783c3f4c23455c03d528500871f0a18ede4e03a0df8c7a44096b91097a5ffda7d + checksum: 937e52b57af5e459df26621dba57a1e399c48ebb1bc0fe10450c0238a79ef76d26a69ba9a42317e236d50bbd6c3e0fbb10fe97f8153373331947b90125aeee38 languageName: node linkType: hard -"@docusaurus/plugin-client-redirects@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-client-redirects@npm:0.0.0-5703" +"@docusaurus/plugin-client-redirects@npm:^3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-client-redirects@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 eta: ^2.2.0 fs-extra: ^11.1.1 lodash: ^4.17.21 @@ -1868,21 +1865,21 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: ac246eeb75028acd6a1d8804572fb89bac5575facf82c35ca3c8441d916980c183f5342a768d31cccc95f2034657bd25cfda24d480a2b8b4abdd693a51d9754e + checksum: 48a101b88e0f537323cb54c0de6d0a711f7987358699929f0bba17ae60038205a154b2ce179e1a1e065d2732186d23b53f4a1922ca8d875f6aea364abf77bdd7 languageName: node linkType: hard -"@docusaurus/plugin-content-blog@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-content-blog@npm:0.0.0-5703" +"@docusaurus/plugin-content-blog@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-content-blog@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/mdx-loader": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/mdx-loader": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 cheerio: ^1.0.0-rc.12 feed: ^4.2.2 fs-extra: ^11.1.1 @@ -1890,31 +1887,30 @@ __metadata: reading-time: ^1.5.0 srcset: ^4.0.0 tslib: ^2.6.0 - unist-util-visit: ^2.0.3 + unist-util-visit: ^5.0.0 utility-types: ^3.10.0 webpack: ^5.88.1 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 46e4a4fac407a8014ce0918933a476b03adca3d3b7e76b27a87bf0eeeb446f20e25db60b292f743652f3ad88232824f7a1541fcb7d27bcdbf9cb6d1c94e9a1b5 + checksum: 8680e47cc1250cd0c0987c7471e8679860d867de5bf3917e0088185cfa4f5abdb7a847f652cea7c61afbce9dad8bb3cd9f8924b13b064087eab4f9654a9de05d languageName: node linkType: hard -"@docusaurus/plugin-content-docs@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-content-docs@npm:0.0.0-5703" +"@docusaurus/plugin-content-docs@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-content-docs@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/mdx-loader": 0.0.0-5703 - "@docusaurus/module-type-aliases": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/mdx-loader": 3.1.1 + "@docusaurus/module-type-aliases": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 "@types/react-router-config": ^5.0.7 combine-promises: ^1.1.0 fs-extra: ^11.1.1 - import-fresh: ^3.3.0 js-yaml: ^4.1.0 lodash: ^4.17.21 tslib: ^2.6.0 @@ -1923,133 +1919,133 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: b08fbbac78f76ca68fc4a8ba488f41709733727e073d5f2d1e671dab484c4d37729a657305b315052369292ec7ae83c32992e551eda1d0990c035aa84fecbac6 + checksum: 1d96477ca575e01e3e2de080075f07a7f35da7a839632d2ad2d06bf3b651fbd91dd4e70861bb16e1ccb8b2a99f0602461f4c181c04557e0a98ece1b5e5ba61de languageName: node linkType: hard -"@docusaurus/plugin-content-pages@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-content-pages@npm:0.0.0-5703" +"@docusaurus/plugin-content-pages@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-content-pages@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/mdx-loader": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/mdx-loader": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 fs-extra: ^11.1.1 tslib: ^2.6.0 webpack: ^5.88.1 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 9d0b904259c625d82175fa3fdeae89de8503f409a7dc47c9077f35d25f72fcf76a0a6392f5e790c3bf2604896e1aa0fced00386b9df553f6ba01247ccadd6503 + checksum: ccb9c58802b56c79f2b9bc4445dad316e50438fea995c2a6543637c472c4c2ccfbe3984abb462a1359bce3e3dfad84fecf6e4faab8e242dac4182146043ea005 languageName: node linkType: hard -"@docusaurus/plugin-debug@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-debug@npm:0.0.0-5703" +"@docusaurus/plugin-debug@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-debug@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@microlink/react-json-view": ^1.22.2 + "@docusaurus/core": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 fs-extra: ^11.1.1 + react-json-view-lite: ^1.2.0 tslib: ^2.6.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: b9bf04c27144dc797fa25cae6df95f5a8b15c888993194bf1b0fae06ce6ae55cf338270b7a914ef07d6551addd6261e628a465c4f277a4e13753c207e533557d + checksum: 843780bf7eb57d41d198832ad9a7a53e45302c2a10f0221a77c4340e3b1c1dd4e92f77f2ecae3fdb8eef0aed1b7314f2ce1c8323fe25eec759bcde10e0e50149 languageName: node linkType: hard -"@docusaurus/plugin-google-analytics@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-google-analytics@npm:0.0.0-5703" +"@docusaurus/plugin-google-analytics@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-google-analytics@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 tslib: ^2.6.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: ad98ea301caa4908197a3c460ae88dd5598c1485d8643708e8fb3f757ae3bf854efc1b5a1ab9c8ba15371c3a989704d7f9fdb55dd25d1d1b81936526068a877b + checksum: 4efcaf9f95353485965e299a971e761b3dadac1370d6d8a6582d653535ce76e36b6788283aa1a6dfd7f55ac64fca3d7e97239f94a5163e4cf192a5c2854b1d61 languageName: node linkType: hard -"@docusaurus/plugin-google-gtag@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-google-gtag@npm:0.0.0-5703" +"@docusaurus/plugin-google-gtag@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-google-gtag@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 "@types/gtag.js": ^0.0.12 tslib: ^2.6.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 9fbdbc0569f1ff634c357d197c1442da17c4a09c03163640db1d1bde0be8612dd432e494a4f02eb43ac58dd7df2cbd335911fdb7fa315a9de95e173090daf5dc + checksum: 65ede5352fa16492b23ac37343eb62f4855c4e306ce07552f3257894ddc2329a6244d371bf989bd034cd685965ef8c667d87322497e475d1e54f014fa44225f1 languageName: node linkType: hard -"@docusaurus/plugin-google-tag-manager@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-google-tag-manager@npm:0.0.0-5703" +"@docusaurus/plugin-google-tag-manager@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-google-tag-manager@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 tslib: ^2.6.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 3ed2c6eb05087db3877ffe98cc6eca59be80889411e3cdbd981ac4d951a5efa269a1011a39a94c997d93474fd916e3634905a6537e10575e5d5a954a9bb00c5d + checksum: 9a1a014a39da0e5ef234c0eb427b7d97b59fd797152c24e05c13a6a11db4269a0223ad474d17714d02a3ad14a97a9072b6757554b3f274b5f0480d7409749a7c languageName: node linkType: hard -"@docusaurus/plugin-sitemap@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/plugin-sitemap@npm:0.0.0-5703" +"@docusaurus/plugin-sitemap@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/plugin-sitemap@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 fs-extra: ^11.1.1 sitemap: ^7.1.1 tslib: ^2.6.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 1afbd2e3575ae09428fb4c53a2563e313c3e1a2323c79bdc256779c56f8d796c2c94473d055d6d7a97d477f06e35f0922bed441f7c3e1467feeb5329e1f7761b + checksum: 69b584dc9143b816a06eac7bbd13501c201c24dadd339dfd18179f7a7ddcabfe76640fd87ab14f73f624916e74b7192eee5f3aca7e745f2d6a92b5754c8d7bb3 languageName: node linkType: hard -"@docusaurus/preset-classic@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/preset-classic@npm:0.0.0-5703" +"@docusaurus/preset-classic@npm:^3.1.1": + version: 3.1.1 + resolution: "@docusaurus/preset-classic@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/plugin-content-blog": 0.0.0-5703 - "@docusaurus/plugin-content-docs": 0.0.0-5703 - "@docusaurus/plugin-content-pages": 0.0.0-5703 - "@docusaurus/plugin-debug": 0.0.0-5703 - "@docusaurus/plugin-google-analytics": 0.0.0-5703 - "@docusaurus/plugin-google-gtag": 0.0.0-5703 - "@docusaurus/plugin-google-tag-manager": 0.0.0-5703 - "@docusaurus/plugin-sitemap": 0.0.0-5703 - "@docusaurus/theme-classic": 0.0.0-5703 - "@docusaurus/theme-common": 0.0.0-5703 - "@docusaurus/theme-search-algolia": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/plugin-content-blog": 3.1.1 + "@docusaurus/plugin-content-docs": 3.1.1 + "@docusaurus/plugin-content-pages": 3.1.1 + "@docusaurus/plugin-debug": 3.1.1 + "@docusaurus/plugin-google-analytics": 3.1.1 + "@docusaurus/plugin-google-gtag": 3.1.1 + "@docusaurus/plugin-google-tag-manager": 3.1.1 + "@docusaurus/plugin-sitemap": 3.1.1 + "@docusaurus/theme-classic": 3.1.1 + "@docusaurus/theme-common": 3.1.1 + "@docusaurus/theme-search-algolia": 3.1.1 + "@docusaurus/types": 3.1.1 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: d4c2e6e02b828b248351819410fe03e94a4b4fd8489e398b60d128ba8f173548f8353a3875ff0347179ee59e84df7e3e9e1e5b0be24b84f015c8c02b650eb80c + checksum: c0fba593e9d1670ea21b6caefe297ee35ca22f6b8bc63037d8f3fa652d62516494d0a557f8949520424d01a4e92b563800599ec16a1a33655324b42d5f15c55a languageName: node linkType: hard @@ -2065,30 +2061,30 @@ __metadata: languageName: node linkType: hard -"@docusaurus/theme-classic@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/theme-classic@npm:0.0.0-5703" +"@docusaurus/theme-classic@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/theme-classic@npm:3.1.1" dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/mdx-loader": 0.0.0-5703 - "@docusaurus/module-type-aliases": 0.0.0-5703 - "@docusaurus/plugin-content-blog": 0.0.0-5703 - "@docusaurus/plugin-content-docs": 0.0.0-5703 - "@docusaurus/plugin-content-pages": 0.0.0-5703 - "@docusaurus/theme-common": 0.0.0-5703 - "@docusaurus/theme-translations": 0.0.0-5703 - "@docusaurus/types": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 - "@mdx-js/react": ^2.1.5 - clsx: ^1.2.1 + "@docusaurus/core": 3.1.1 + "@docusaurus/mdx-loader": 3.1.1 + "@docusaurus/module-type-aliases": 3.1.1 + "@docusaurus/plugin-content-blog": 3.1.1 + "@docusaurus/plugin-content-docs": 3.1.1 + "@docusaurus/plugin-content-pages": 3.1.1 + "@docusaurus/theme-common": 3.1.1 + "@docusaurus/theme-translations": 3.1.1 + "@docusaurus/types": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 + "@mdx-js/react": ^3.0.0 + clsx: ^2.0.0 copy-text-to-clipboard: ^3.2.0 infima: 0.2.0-alpha.43 lodash: ^4.17.21 nprogress: ^0.2.0 postcss: ^8.4.26 - prism-react-renderer: ^2.1.0 + prism-react-renderer: ^2.3.0 prismjs: ^1.29.0 react-router-dom: ^5.3.4 rtlcss: ^4.1.0 @@ -2097,51 +2093,51 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: ba078e06a07bbcc4a474f67938760852146e0cb612e44bc81b22879d374372eeea076de6e46e9f955dd351f37dadd98ced2e70b6b8a476b88684fae40855ecb9 + checksum: 8d64676351408e0a378bf9b226cb9cc8f52c8b1f1e03811431de0c7af2aa80445a825267933a4c44ee92d6a975a549c47f4d28798d99cfc0b731f4c4e38f0ba3 languageName: node linkType: hard -"@docusaurus/theme-common@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/theme-common@npm:0.0.0-5703" +"@docusaurus/theme-common@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/theme-common@npm:3.1.1" dependencies: - "@docusaurus/mdx-loader": 0.0.0-5703 - "@docusaurus/module-type-aliases": 0.0.0-5703 - "@docusaurus/plugin-content-blog": 0.0.0-5703 - "@docusaurus/plugin-content-docs": 0.0.0-5703 - "@docusaurus/plugin-content-pages": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-common": 0.0.0-5703 + "@docusaurus/mdx-loader": 3.1.1 + "@docusaurus/module-type-aliases": 3.1.1 + "@docusaurus/plugin-content-blog": 3.1.1 + "@docusaurus/plugin-content-docs": 3.1.1 + "@docusaurus/plugin-content-pages": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-common": 3.1.1 "@types/history": ^4.7.11 "@types/react": "*" "@types/react-router-config": "*" - clsx: ^1.2.1 + clsx: ^2.0.0 parse-numeric-range: ^1.3.0 - prism-react-renderer: ^2.1.0 + prism-react-renderer: ^2.3.0 tslib: ^2.6.0 utility-types: ^3.10.0 peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: f9b23318dbb504bcce0992de475f1ab32860620523dfe749bfdb00ac8e7fc75be705fd5177db2ce893ed269de40cef7f6a7290d44a12c6a160d9461bbca05552 + checksum: ba7d2c4032c8d7f822e77bd39a77f712f258e9d4aa44aac75a72ad27c0eaa7400746025ba59e445c9c1b083d2ae02802a759361d67e80b9f7295521520ada1bc languageName: node linkType: hard -"@docusaurus/theme-search-algolia@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/theme-search-algolia@npm:0.0.0-5703" +"@docusaurus/theme-search-algolia@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/theme-search-algolia@npm:3.1.1" dependencies: "@docsearch/react": ^3.5.2 - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/plugin-content-docs": 0.0.0-5703 - "@docusaurus/theme-common": 0.0.0-5703 - "@docusaurus/theme-translations": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 - "@docusaurus/utils-validation": 0.0.0-5703 + "@docusaurus/core": 3.1.1 + "@docusaurus/logger": 3.1.1 + "@docusaurus/plugin-content-docs": 3.1.1 + "@docusaurus/theme-common": 3.1.1 + "@docusaurus/theme-translations": 3.1.1 + "@docusaurus/utils": 3.1.1 + "@docusaurus/utils-validation": 3.1.1 algoliasearch: ^4.18.0 algoliasearch-helper: ^3.13.3 - clsx: ^1.2.1 + clsx: ^2.0.0 eta: ^2.2.0 fs-extra: ^11.1.1 lodash: ^4.17.21 @@ -2150,24 +2146,25 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 2e8ccc603126634488332ae108f9ac9ad3d2e1e46b5abef48720f2a25ae5cfc93850301d4ea30a6dc66034877b6abedd31229f622c6fd181347c3c14f7ba3c66 + checksum: 42686e29faf14c482161eb399b1bc9960322f61298b2e6694d1b89374b2f4c352147b2299cf830abb0db8a9eba0bf5d342adfd1ad71101d1aad17f0955856145 languageName: node linkType: hard -"@docusaurus/theme-translations@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/theme-translations@npm:0.0.0-5703" +"@docusaurus/theme-translations@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/theme-translations@npm:3.1.1" dependencies: fs-extra: ^11.1.1 tslib: ^2.6.0 - checksum: 1f952386982008e2e7b07d6b95b1a902a57891321ae2670f13f391a541944ec2c82f5e03d3ed2c459a17113387a51cb5efe824d03037a3cc0b25251451287d1d + checksum: 4fbf12aef4b6e49182b5fd6ee0c357b4cd1811490713a7cddeb7714eacebf1972dac10f3bb4ee56f6c5e62c297a9a7a17f4e3724e56ad28fa8125073e0c3258e languageName: node linkType: hard -"@docusaurus/types@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/types@npm:0.0.0-5703" +"@docusaurus/types@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/types@npm:3.1.1" dependencies: + "@mdx-js/mdx": ^3.0.0 "@types/history": ^4.7.11 "@types/react": "*" commander: ^5.1.0 @@ -2179,13 +2176,13 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 46ca6a27c8a0d1b69f744375ee2c24be2deed20c2801231a462b2e37b7a6e1f73ab17b6a5506e05f628957be8be74e4cd960780b9986c8fa4ac1757bd8c74231 + checksum: 5041bca00cc887cc3ac8dd8c0895cc778dced2943b2d026fe7d1b8828756257093ad3df05706f344e91710b054f9df0e56d2d369a448472ec173bd81c4a8956f languageName: node linkType: hard -"@docusaurus/utils-common@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/utils-common@npm:0.0.0-5703" +"@docusaurus/utils-common@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/utils-common@npm:3.1.1" dependencies: tslib: ^2.6.0 peerDependencies: @@ -2193,28 +2190,28 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: 8f70f176a99bcbbde22abd759621087ad555e7967cddf85662402f6d55c84d5f44cc1a90bf4e64670fc75b6db646dca4f573b3656a1718d1596d60e0e6c2d23a + checksum: 787d930456e4034f7f57186172ad5d214c2473d135ec8c12cf19af8fc64e87eb35a684137e8b813f61e224243c7e3d122c6c646cb20e12ef216048be6a817f44 languageName: node linkType: hard -"@docusaurus/utils-validation@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/utils-validation@npm:0.0.0-5703" +"@docusaurus/utils-validation@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/utils-validation@npm:3.1.1" dependencies: - "@docusaurus/logger": 0.0.0-5703 - "@docusaurus/utils": 0.0.0-5703 + "@docusaurus/logger": 3.1.1 + "@docusaurus/utils": 3.1.1 joi: ^17.9.2 js-yaml: ^4.1.0 tslib: ^2.6.0 - checksum: e0d6df549644d8e732daf5407ce110dbccba17dcf84fe1a80091119675d2ce515e26bf6612fefa60b7df2c65dbaeee7ceb1a9f2b947a3705fe1efc7c229794e2 + checksum: 57d348a4bb2ecac34d84676674c3dc78d6e2821487d5c8a0b9945cab7a4362db5ee2ad084e4bb031b5c4ea674c5136c35090abea2272f57f3b25473c3b1680de languageName: node linkType: hard -"@docusaurus/utils@npm:0.0.0-5703": - version: 0.0.0-5703 - resolution: "@docusaurus/utils@npm:0.0.0-5703" +"@docusaurus/utils@npm:3.1.1": + version: 3.1.1 + resolution: "@docusaurus/utils@npm:3.1.1" dependencies: - "@docusaurus/logger": 0.0.0-5703 + "@docusaurus/logger": 3.1.1 "@svgr/webpack": ^6.5.1 escape-string-regexp: ^4.0.0 file-loader: ^6.2.0 @@ -2222,6 +2219,7 @@ __metadata: github-slugger: ^1.5.0 globby: ^11.1.0 gray-matter: ^4.0.3 + jiti: ^1.20.0 js-yaml: ^4.1.0 lodash: ^4.17.21 micromatch: ^4.0.5 @@ -2235,7 +2233,7 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: 91f53b17393e29fadb01c039f5394fc257c54bd7d80068f3a3e8a5e52d635d2e3de9fe781340de2ff4eaf691a2d4104865291c05c22ffc8b48a0894f588f3a9e + checksum: 45c39767d1adcc793515109edcb6cfbecd9cf5f979d5dda95a729809b9c30f6288fa5adba757ce131b91b3d77ff24bb7e06ad1b0011d37b45be0035b76ed7ba3 languageName: node linkType: hard @@ -2344,55 +2342,46 @@ __metadata: languageName: node linkType: hard -"@mdx-js/mdx@npm:^2.1.5": - version: 2.3.0 - resolution: "@mdx-js/mdx@npm:2.3.0" +"@mdx-js/mdx@npm:^3.0.0": + version: 3.0.1 + resolution: "@mdx-js/mdx@npm:3.0.1" dependencies: + "@types/estree": ^1.0.0 "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 "@types/mdx": ^2.0.0 - estree-util-build-jsx: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - estree-util-to-js: ^1.1.0 + collapse-white-space: ^2.0.0 + devlop: ^1.0.0 + estree-util-build-jsx: ^3.0.0 + estree-util-is-identifier-name: ^3.0.0 + estree-util-to-js: ^2.0.0 estree-walker: ^3.0.0 - hast-util-to-estree: ^2.0.0 - markdown-extensions: ^1.0.0 + hast-util-to-estree: ^3.0.0 + hast-util-to-jsx-runtime: ^2.0.0 + markdown-extensions: ^2.0.0 periscopic: ^3.0.0 - remark-mdx: ^2.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - unified: ^10.0.0 - unist-util-position-from-estree: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - checksum: d918766a326502ec0b54adee61dc2930daf5b748acb9107f9bfd1ab0dbc4d7b1a4d0dbb9e21da9dd2a9fc2f9950b2973a43c6ba62d3a72eb67a30f6c953e5be8 + remark-mdx: ^3.0.0 + remark-parse: ^11.0.0 + remark-rehype: ^11.0.0 + source-map: ^0.7.0 + unified: ^11.0.0 + unist-util-position-from-estree: ^2.0.0 + unist-util-stringify-position: ^4.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 82221662279c39a755b88f63b031a30b9bc04365e5bfc3e45590f4fa7bf6bff12364f4caee31c768ae588145eed74fda10c327d53f9272b1a2cffbc8bd537ce6 languageName: node linkType: hard -"@mdx-js/react@npm:^2.1.5": - version: 2.3.0 - resolution: "@mdx-js/react@npm:2.3.0" +"@mdx-js/react@npm:^3.0.0": + version: 3.0.1 + resolution: "@mdx-js/react@npm:3.0.1" dependencies: "@types/mdx": ^2.0.0 + peerDependencies: "@types/react": ">=16" - peerDependencies: react: ">=16" - checksum: f45fe779556e6cd9a787f711274480e0638b63c460f192ebdcd77cc07ffa61e23c98cb46dd46e577093e1cb4997a232a848d1fb0ba850ae204422cf603add524 - languageName: node - linkType: hard - -"@microlink/react-json-view@npm:^1.22.2": - version: 1.22.2 - resolution: "@microlink/react-json-view@npm:1.22.2" - dependencies: - flux: ~4.0.1 - react-base16-styling: ~0.6.0 - react-lifecycles-compat: ~3.0.4 - react-textarea-autosize: ~8.3.2 - peerDependencies: - react: ">= 15" - react-dom: ">= 15" - checksum: 7cc31fcc06f6bac2062aedda565e55a03e1275f5b810f0efee27de8ea60967713f3a13859a16ba775b9b3e8782c044928cf3faee48902a19ce1c58d7ecc6e8d0 + checksum: 1063a597264f6a8840aa13274a99beef8983a88dd45b0c5b8e48e6216bc23d33e247da8e2d95d6e1874483f8b4e0903b166ce5046874aa7ffa2b1333057dcddf languageName: node linkType: hard @@ -2507,6 +2496,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^4.6.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^5.2.0": version: 5.3.0 resolution: "@sindresorhus/is@npm:5.3.0" @@ -2701,91 +2697,91 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-darwin-arm64@npm:1.3.102" +"@swc/core-darwin-arm64@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-darwin-arm64@npm:1.4.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-darwin-x64@npm:1.3.102" +"@swc/core-darwin-x64@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-darwin-x64@npm:1.4.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.102" +"@swc/core-linux-arm-gnueabihf@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.102" +"@swc/core-linux-arm64-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.102" +"@swc/core-linux-arm64-musl@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.102" +"@swc/core-linux-x64-gnu@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-linux-x64-musl@npm:1.3.102" +"@swc/core-linux-x64-musl@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-linux-x64-musl@npm:1.4.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.102" +"@swc/core-win32-arm64-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.102" +"@swc/core-win32-ia32-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.102": - version: 1.3.102 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.102" +"@swc/core-win32-x64-msvc@npm:1.4.1": + version: 1.4.1 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.102 - resolution: "@swc/core@npm:1.3.102" + version: 1.4.1 + resolution: "@swc/core@npm:1.4.1" dependencies: - "@swc/core-darwin-arm64": 1.3.102 - "@swc/core-darwin-x64": 1.3.102 - "@swc/core-linux-arm-gnueabihf": 1.3.102 - "@swc/core-linux-arm64-gnu": 1.3.102 - "@swc/core-linux-arm64-musl": 1.3.102 - "@swc/core-linux-x64-gnu": 1.3.102 - "@swc/core-linux-x64-musl": 1.3.102 - "@swc/core-win32-arm64-msvc": 1.3.102 - "@swc/core-win32-ia32-msvc": 1.3.102 - "@swc/core-win32-x64-msvc": 1.3.102 - "@swc/counter": ^0.1.1 + "@swc/core-darwin-arm64": 1.4.1 + "@swc/core-darwin-x64": 1.4.1 + "@swc/core-linux-arm-gnueabihf": 1.4.1 + "@swc/core-linux-arm64-gnu": 1.4.1 + "@swc/core-linux-arm64-musl": 1.4.1 + "@swc/core-linux-x64-gnu": 1.4.1 + "@swc/core-linux-x64-musl": 1.4.1 + "@swc/core-win32-arm64-msvc": 1.4.1 + "@swc/core-win32-ia32-msvc": 1.4.1 + "@swc/core-win32-x64-msvc": 1.4.1 + "@swc/counter": ^0.1.2 "@swc/types": ^0.1.5 peerDependencies: "@swc/helpers": ^0.5.0 @@ -2813,14 +2809,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 45c0edb06f87a811e28fb3ed587fbe6b7ca67ff2440fe15666d43729788903a4af61e3b57842aecc0b2b70e3c9981b698d8233746ba94dfb5a19e1c62eea33ad + checksum: 3549b4a0ba8201be2dd39954ef8375df5d028da5688a68211dc5cbf69ff7a43533e9ffd36f629095f51555552f4df52116384ef779d5ec45c2b9de938e651d57 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.2, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard @@ -2855,9 +2851,9 @@ __metadata: linkType: hard "@tsconfig/docusaurus@npm:^2.0.0": - version: 2.0.1 - resolution: "@tsconfig/docusaurus@npm:2.0.1" - checksum: 63bebda70d83c56f95a90176d2e188e1ea9c08c23b499e5e7b292ebfae0ce7117f712809828ed21ae3b8440daf22191d6bf71bf2575f9bd474a51b1770ca30cc + version: 2.0.2 + resolution: "@tsconfig/docusaurus@npm:2.0.2" + checksum: 129f2532172496c108f53a15082e410b418e664c1761902664558059541a6cf7faff2b3d2953e2d507a7e3688afacf2479e17adcb35b89cae04ddb0415d0397a languageName: node linkType: hard @@ -2983,12 +2979,12 @@ __metadata: languageName: node linkType: hard -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" +"@types/hast@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" dependencies: "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e + checksum: 7a973e8d16fcdf3936090fa2280f408fb2b6a4f13b42edeb5fbd614efe042b82eac68e298e556d50f6b4ad585a3a93c353e9c826feccdc77af59de8dd400d044 languageName: node linkType: hard @@ -3061,21 +3057,12 @@ __metadata: languageName: node linkType: hard -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" +"@types/mdast@npm:^4.0.0, @types/mdast@npm:^4.0.2": + version: 4.0.3 + resolution: "@types/mdast@npm:4.0.3" dependencies: "@types/unist": "*" - checksum: 3f587bfc0a9a2403ecadc220e61031b01734fedaf82e27eb4d5ba039c0eb54db8c85681ccc070ab4df3f7ec711b736a82b990e69caa14c74bf7ac0ccf2ac7313 - languageName: node - linkType: hard - -"@types/mdast@npm:^4.0.0": - version: 4.0.1 - resolution: "@types/mdast@npm:4.0.1" - dependencies: - "@types/unist": "*" - checksum: 3d8fe54a6fb747376c4cc2f05c319730a5737b77844d8ea58d2d696417fa933cd270c20e197f531fc1b4be5e340dc416129f8b4f5fa2f0d2d0cf51850928340a + checksum: 345c5a22fccf05f35239ea6313ee4aaf6ebed5927c03ac79744abccb69b9ba5e692f9b771e36a012b79e17429082cada30f579e9c43b8a54e0ffb365431498b6 languageName: node linkType: hard @@ -3121,13 +3108,6 @@ __metadata: languageName: node linkType: hard -"@types/parse5@npm:^6.0.0": - version: 6.0.3 - resolution: "@types/parse5@npm:6.0.3" - checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 - languageName: node - linkType: hard - "@types/prismjs@npm:^1.26.0": version: 1.26.1 resolution: "@types/prismjs@npm:1.26.1" @@ -3188,7 +3168,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:>=16": +"@types/react@npm:*": version: 18.2.0 resolution: "@types/react@npm:18.2.0" dependencies: @@ -3296,6 +3276,13 @@ __metadata: languageName: node linkType: hard +"@ungap/structured-clone@npm:^1.0.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.11.5, @webassemblyjs/ast@npm:^1.11.5": version: 1.11.5 resolution: "@webassemblyjs/ast@npm:1.11.5" @@ -3768,13 +3755,6 @@ __metadata: languageName: node linkType: hard -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d - languageName: node - linkType: hard - "astring@npm:^1.8.0": version: 1.8.4 resolution: "astring@npm:1.8.4" @@ -3784,13 +3764,6 @@ __metadata: languageName: node linkType: hard -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - "at-least-node@npm:^1.0.0": version: 1.0.0 resolution: "at-least-node@npm:1.0.0" @@ -3816,16 +3789,6 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.27.2": - version: 0.27.2 - resolution: "axios@npm:0.27.2" - dependencies: - follow-redirects: ^1.14.9 - form-data: ^4.0.0 - checksum: 38cb7540465fe8c4102850c4368053c21683af85c5fdf0ea619f9628abbcb59415d1e22ebc8a6390d2bbc9b58a9806c874f139767389c862ec9b772235f06854 - languageName: node - linkType: hard - "babel-loader@npm:^9.1.3": version: 9.1.3 resolution: "babel-loader@npm:9.1.3" @@ -3888,10 +3851,10 @@ __metadata: version: 0.0.0-use.local resolution: "backstage-microsite@workspace:." dependencies: - "@docusaurus/core": 0.0.0-5703 - "@docusaurus/module-type-aliases": 0.0.0-5703 - "@docusaurus/plugin-client-redirects": 0.0.0-5703 - "@docusaurus/preset-classic": 0.0.0-5703 + "@docusaurus/core": ^3.1.1 + "@docusaurus/module-type-aliases": ^3.1.1 + "@docusaurus/plugin-client-redirects": ^3.1.1 + "@docusaurus/preset-classic": ^3.1.1 "@spotify/prettier-config": ^14.0.0 "@swc/core": ^1.3.46 "@tsconfig/docusaurus": ^2.0.0 @@ -3907,7 +3870,7 @@ __metadata: react-dom: ^18.0.0 sass: ^1.57.1 swc-loader: ^0.2.3 - typescript: ~5.0.0 + typescript: ~5.1.0 yaml-loader: ^0.8.0 languageName: unknown linkType: soft @@ -3926,13 +3889,6 @@ __metadata: languageName: node linkType: hard -"base16@npm:^1.0.0": - version: 1.0.0 - resolution: "base16@npm:1.0.0" - checksum: 0cd449a2db0f0f957e4b6b57e33bc43c9e20d4f1dd744065db94b5da35e8e71fa4dc4bc7a901e59a84d5f8b6936e3c520e2471787f667fc155fb0f50d8540f5d - languageName: node - linkType: hard - "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" @@ -4053,17 +4009,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.22.1, browserslist@npm:^4.22.2": + version: 4.22.3 + resolution: "browserslist@npm:4.22.3" dependencies: - caniuse-lite: ^1.0.30001541 - electron-to-chromium: ^1.4.535 - node-releases: ^2.0.13 + caniuse-lite: ^1.0.30001580 + electron-to-chromium: ^1.4.648 + node-releases: ^2.0.14 update-browserslist-db: ^1.0.13 bin: browserslist: cli.js - checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + checksum: e62b17348e92143fe58181b02a6a97c4a98bd812d1dc9274673a54f73eec53dbed1c855ebf73e318ee00ee039f23c9a6d0e7629d24f3baef08c7a5b469742d57 languageName: node linkType: hard @@ -4189,10 +4145,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001546 - resolution: "caniuse-lite@npm:1.0.30001546" - checksum: d3ef82f5ee94743002c5b2dd61c84342debcc94b2d5907b64ade3514ecfc4f20bbe86a6bc453fd6436d5fbcf6582e07405d7c2077565675a71c83adc238a11fa +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001580": + version: 1.0.30001587 + resolution: "caniuse-lite@npm:1.0.30001587" + checksum: fb50aa9beaaae42f9feae92ce038f6ff71e97510f024ef1bef2666f3adcfd36d6c59e5675442e5fe795575193f71bc826cb7721d4b0f6d763e82d193bea57863 languageName: node linkType: hard @@ -4231,6 +4187,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" @@ -4375,17 +4338,17 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.2.1": - version: 1.2.1 - resolution: "clsx@npm:1.2.1" - checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 +"clsx@npm:^2.0.0": + version: 2.1.0 + resolution: "clsx@npm:2.1.0" + checksum: 43fefc29b6b49c9476fbce4f8b1cc75c27b67747738e598e6651dd40d63692135dc60b18fa1c5b78a2a9ba8ae6fd2055a068924b94e20b42039bd53b78b98e1d languageName: node linkType: hard -"clsx@npm:^2.0.0": - version: 2.0.0 - resolution: "clsx@npm:2.0.0" - checksum: a2cfb2351b254611acf92faa0daf15220f4cd648bdf96ce369d729813b85336993871a4bf6978ddea2b81b5a130478339c20d9d0b5c6fc287e5147f0c059276e +"collapse-white-space@npm:^2.0.0": + version: 2.1.0 + resolution: "collapse-white-space@npm:2.1.0" + checksum: c8978b1f4e7d68bf846cfdba6c6689ce8910511df7d331eb6e6757e51ceffb52768d59a28db26186c91dcf9594955b59be9f8ccd473c485790f5d8b90dc6726f languageName: node linkType: hard @@ -4451,15 +4414,6 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 resolution: "comma-separated-tokens@npm:2.0.3" @@ -4724,15 +4678,6 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.5": - version: 3.1.5 - resolution: "cross-fetch@npm:3.1.5" - dependencies: - node-fetch: 2.6.7 - checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -4963,7 +4908,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.3": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -5056,13 +5001,6 @@ __metadata: languageName: node linkType: hard -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -5131,7 +5069,7 @@ __metadata: languageName: node linkType: hard -"devlop@npm:^1.0.0": +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" dependencies: @@ -5140,13 +5078,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -5302,10 +5233,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.544 - resolution: "electron-to-chromium@npm:1.4.544" - checksum: 78e88e4c56fc4faaa9a405de5e0b51305531e9cdf2c71bcc9296c2c59fb68001472e5b924f8701c873bc855ab5174cf0340642712d7af05c1d8e92356529397e +"electron-to-chromium@npm:^1.4.648": + version: 1.4.665 + resolution: "electron-to-chromium@npm:1.4.665" + checksum: 6c863300909a2712a79bd8a00ff2d3747fb72edf3dfda892449aabd42a12448e8e215e318d628421bbdfc7e4e3bc1fb38a81bbd530a71036bb86a75868e9eb8a languageName: node linkType: hard @@ -5323,6 +5254,13 @@ __metadata: languageName: node linkType: hard +"emojilib@npm:^2.4.0": + version: 2.4.0 + resolution: "emojilib@npm:2.4.0" + checksum: ea241c342abda5a86ffd3a15d8f4871a616d485f700e03daea38c6ce38205847cea9f6ff8d5e962c00516b004949cc96c6e37b05559ea71a0a496faba53b56da + languageName: node + linkType: hard + "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" @@ -5330,10 +5268,10 @@ __metadata: languageName: node linkType: hard -"emoticon@npm:^3.2.0": - version: 3.2.0 - resolution: "emoticon@npm:3.2.0" - checksum: f30649d18b672ab3139e95cb04f77b2442feb95c99dc59372ff80fbfd639b2bf4018bc68ab0b549bd765aecf8230d7899c43f86cfcc7b6370c06c3232783e24f +"emoticon@npm:^4.0.1": + version: 4.0.1 + resolution: "emoticon@npm:4.0.1" + checksum: 991ab6421927601af4eb44036b60e3125759a4d81f32d2ad96b66e3491e2fdb6a026eeb6bffbfa66724592dca95235570785963607d16961ea73a62ecce715e2 languageName: node linkType: hard @@ -5492,61 +5430,62 @@ __metadata: languageName: node linkType: hard -"estree-util-attach-comments@npm:^2.0.0": - version: 2.1.1 - resolution: "estree-util-attach-comments@npm:2.1.1" +"estree-util-attach-comments@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-attach-comments@npm:3.0.0" dependencies: "@types/estree": ^1.0.0 - checksum: c5c2c41c9a55a169fb4fba9627057843f0d2e21e47a2e3e24318a11ffcf6bc704c0f96f405a529bddac7969b7c44f6cf86711505faaf0c5862c2024419b19704 + checksum: 56254eaef39659e6351919ebc2ae53a37a09290a14571c19e373e9d5fad343a3403d9ad0c23ae465d6e7d08c3e572fd56fb8c793efe6434a261bf1489932dbd5 languageName: node linkType: hard -"estree-util-build-jsx@npm:^2.0.0": - version: 2.2.2 - resolution: "estree-util-build-jsx@npm:2.2.2" +"estree-util-build-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "estree-util-build-jsx@npm:3.0.1" dependencies: "@types/estree-jsx": ^1.0.0 - estree-util-is-identifier-name: ^2.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 estree-walker: ^3.0.0 - checksum: d008ac36a45d797eadca696f41b4c1ac0587ec0e0b52560cfb0e76d14ef15fc18e526f9023b6e5457dafa9cf3f010c9bb1dfc9c727ebd7cf0ba2ebbaa43919ac + checksum: 185eff060eda2ba32cecd15904db4f5ba0681159fbdf54f0f6586cd9411e77e733861a833d0aee3415e1d1fd4b17edf08bc9e9872cee98e6ec7b0800e1a85064 languageName: node linkType: hard -"estree-util-is-identifier-name@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-is-identifier-name@npm:2.1.0" - checksum: cab317a071fafb99cf83b57df7924bccd2e6ab4e252688739e49f00b16cefd168e279c171442b0557c80a1c80ffaa927d670dadea65bb3c9b151efb8e772e89d +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: ea3909f0188ea164af0aadeca87c087e3e5da78d76da5ae9c7954ff1340ea3e4679c4653bbf4299ffb70caa9b322218cc1128db2541f3d2976eb9704f9857787 languageName: node linkType: hard -"estree-util-to-js@npm:^1.1.0": - version: 1.2.0 - resolution: "estree-util-to-js@npm:1.2.0" +"estree-util-to-js@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-to-js@npm:2.0.0" dependencies: "@types/estree-jsx": ^1.0.0 astring: ^1.8.0 source-map: ^0.7.0 - checksum: 93a75e1051a6a4f5c631597ecd2ed95129fadbc80a58a10475d6d6b1b076a69393ba4a8d2bb71f698401f64ccca47e3f3828dd0042cac81439b988fae0f5f8e0 + checksum: 833edc94ab9978e0918f90261e0a3361bf4564fec4901f326d2237a9235d3f5fc6482da3be5acc545e702c8c7cb8bc5de5c7c71ba3b080eb1975bcfdf3923d79 languageName: node linkType: hard -"estree-util-value-to-estree@npm:^2.1.0": - version: 2.1.0 - resolution: "estree-util-value-to-estree@npm:2.1.0" +"estree-util-value-to-estree@npm:^3.0.1": + version: 3.0.1 + resolution: "estree-util-value-to-estree@npm:3.0.1" dependencies: "@types/estree": ^1.0.0 is-plain-obj: ^4.0.0 - checksum: 6a930e9c8b85c27845ecca010b5b6b64d3b3a4e7d61117d8342fad7b2b595d7052c671616d1c2269e0954a200666834227ce0abb8488ded49700dfde54167ebb + checksum: 7ab89084aa2c5677aeb0d7350ff21e71c9bbc424dc872a55bb4f25f63a7fd99fc7861626dd89b5544db3d3696212154bcf2b12b63ecd5a59dbfd07915c88aee4 languageName: node linkType: hard -"estree-util-visit@npm:^1.0.0": - version: 1.2.1 - resolution: "estree-util-visit@npm:1.2.1" +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" dependencies: "@types/estree-jsx": ^1.0.0 - "@types/unist": ^2.0.0 - checksum: 6feea4fdc43b0ba0f79faf1d57cf32373007e146d4810c7c09c13f5a9c1b8600c1ac57a8d949967cedd2a9a91dddd246e19b59bacfc01e417168b4ebf220f691 + "@types/unist": ^3.0.0 + checksum: 6444b38f224322945a6d19ea81a8828a0eec64aefb2bf1ea791fe20df496f7b7c543408d637df899e6a8e318b638f66226f16378a33c4c2b192ba5c3f891121f languageName: node linkType: hard @@ -5739,37 +5678,6 @@ __metadata: languageName: node linkType: hard -"fbemitter@npm:^3.0.0": - version: 3.0.0 - resolution: "fbemitter@npm:3.0.0" - dependencies: - fbjs: ^3.0.0 - checksum: 069690b8cdff3521ade3c9beb92ba0a38d818a86ef36dff8690e66749aef58809db4ac0d6938eb1cacea2dbef5f2a508952d455669590264cdc146bbe839f605 - languageName: node - linkType: hard - -"fbjs-css-vars@npm:^1.0.0": - version: 1.0.2 - resolution: "fbjs-css-vars@npm:1.0.2" - checksum: 72baf6d22c45b75109118b4daecb6c8016d4c83c8c0f23f683f22e9d7c21f32fff6201d288df46eb561e3c7d4bb4489b8ad140b7f56444c453ba407e8bd28511 - languageName: node - linkType: hard - -"fbjs@npm:^3.0.0, fbjs@npm:^3.0.1": - version: 3.0.4 - resolution: "fbjs@npm:3.0.4" - dependencies: - cross-fetch: ^3.1.5 - fbjs-css-vars: ^1.0.0 - loose-envify: ^1.0.0 - object-assign: ^4.1.0 - promise: ^7.1.1 - setimmediate: ^1.0.5 - ua-parser-js: ^0.7.30 - checksum: 8b23a3550fcda8a9109fca9475a3416590c18bb6825ea884192864ed686f67fcd618e308a140c9e5444fbd0168732e1ff3c092ba3d0c0ae1768969f32ba280c7 - languageName: node - linkType: hard - "feed@npm:^4.2.2": version: 4.2.2 resolution: "feed@npm:4.2.2" @@ -5861,19 +5769,7 @@ __metadata: languageName: node linkType: hard -"flux@npm:~4.0.1": - version: 4.0.4 - resolution: "flux@npm:4.0.4" - dependencies: - fbemitter: ^3.0.0 - fbjs: ^3.0.1 - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - checksum: 8fa5c2f9322258de3e331f67c6f1078a7f91c4dec9dbe8a54c4b8a80eed19a4f91889028b768668af4a796e8f2ee75e461e1571b8615432a3920ae95cc4ff794 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.9": +"follow-redirects@npm:^1.0.0": version: 1.15.4 resolution: "follow-redirects@npm:1.15.4" peerDependenciesMeta: @@ -5921,17 +5817,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c - languageName: node - linkType: hard - "format@npm:^0.2.0": version: 0.2.2 resolution: "format@npm:0.2.2" @@ -6309,103 +6194,133 @@ __metadata: languageName: node linkType: hard -"hast-util-from-parse5@npm:^7.0.0": - version: 7.1.2 - resolution: "hast-util-from-parse5@npm:7.1.2" +"hast-util-from-parse5@npm:^8.0.0": + version: 8.0.1 + resolution: "hast-util-from-parse5@npm:8.0.1" dependencies: - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - hastscript: ^7.0.0 + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + hastscript: ^8.0.0 property-information: ^6.0.0 - vfile: ^5.0.0 - vfile-location: ^4.0.0 + vfile: ^6.0.0 + vfile-location: ^5.0.0 web-namespaces: ^2.0.0 - checksum: 7b4ed5b508b1352127c6719f7b0c0880190cf9859fe54ccaf7c9228ecf623d36cef3097910b3874d2fe1aac6bf4cf45d3cc2303daac3135a05e9ade6534ddddb + checksum: fdd1ab8b03af13778ecb94ef9a58b1e3528410cdfceb3d6bb7600508967d0d836b451bc7bc3baf66efb7c730d3d395eea4bb1b30352b0162823d9f0de976774b languageName: node linkType: hard -"hast-util-parse-selector@npm:^3.0.0": - version: 3.1.1 - resolution: "hast-util-parse-selector@npm:3.1.1" +"hast-util-parse-selector@npm:^4.0.0": + version: 4.0.0 + resolution: "hast-util-parse-selector@npm:4.0.0" dependencies: - "@types/hast": ^2.0.0 - checksum: 511d373465f60dd65e924f88bf0954085f4fb6e3a2b062a4b5ac43b93cbfd36a8dce6234b5d1e3e63499d936375687e83fc5da55628b22bd6b581b5ee167d1c4 + "@types/hast": ^3.0.0 + checksum: 76087670d3b0b50b23a6cb70bca53a6176d6608307ccdbb3ed18b650b82e7c3513bfc40348f1389dc0c5ae872b9a768851f4335f44654abd7deafd6974c52402 languageName: node linkType: hard -"hast-util-raw@npm:^7.2.0": - version: 7.2.3 - resolution: "hast-util-raw@npm:7.2.3" +"hast-util-raw@npm:^9.0.0": + version: 9.0.2 + resolution: "hast-util-raw@npm:9.0.2" dependencies: - "@types/hast": ^2.0.0 - "@types/parse5": ^6.0.0 - hast-util-from-parse5: ^7.0.0 - hast-util-to-parse5: ^7.0.0 - html-void-elements: ^2.0.0 - parse5: ^6.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + "@ungap/structured-clone": ^1.0.0 + hast-util-from-parse5: ^8.0.0 + hast-util-to-parse5: ^8.0.0 + html-void-elements: ^3.0.0 + mdast-util-to-hast: ^13.0.0 + parse5: ^7.0.0 + unist-util-position: ^5.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 web-namespaces: ^2.0.0 zwitch: ^2.0.0 - checksum: 21857eea3ffb8fd92d2d9be7793b56d0b2c40db03c4cfa14828855ae41d7c584917aa83efb7157220b2e41e25e95f81f24679ac342c35145e5f1c1d39015f81f + checksum: 27fd7c723b3b1e06481cd85ca20b447d58d340c53abd2bd61f4a502982109d16aa17b3d71db2ef7c9d24bd627e306ad81cbcaf98c146a3641ba150db731e644c languageName: node linkType: hard -"hast-util-to-estree@npm:^2.0.0": - version: 2.3.2 - resolution: "hast-util-to-estree@npm:2.3.2" +"hast-util-to-estree@npm:^3.0.0": + version: 3.1.0 + resolution: "hast-util-to-estree@npm:3.1.0" dependencies: "@types/estree": ^1.0.0 "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 + "@types/hast": ^3.0.0 comma-separated-tokens: ^2.0.0 - estree-util-attach-comments: ^2.0.0 - estree-util-is-identifier-name: ^2.0.0 - hast-util-whitespace: ^2.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdxjs-esm: ^1.0.0 + devlop: ^1.0.0 + estree-util-attach-comments: ^3.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 property-information: ^6.0.0 space-separated-tokens: ^2.0.0 - style-to-object: ^0.4.1 - unist-util-position: ^4.0.0 + style-to-object: ^0.4.0 + unist-util-position: ^5.0.0 zwitch: ^2.0.0 - checksum: 721167e275c1b0b9b1dcb35964a39f6180e22983ee7b56748ecab9f6cc35fe5229fd6e30a8eb4826caeee7eed88014ce4710bd79146c080d4dd281058ba09a39 + checksum: 61272f7c18c9d2a5e34df7cfd2c97cbf12f6e9d05114d60e4dedd64e5576565eb1e35c78b9213c909bb8f984f0f8e9c49b568f04bdb444b83d0bca9159e14f3c languageName: node linkType: hard -"hast-util-to-parse5@npm:^7.0.0": - version: 7.1.0 - resolution: "hast-util-to-parse5@npm:7.1.0" +"hast-util-to-jsx-runtime@npm:^2.0.0": + version: 2.3.0 + resolution: "hast-util-to-jsx-runtime@npm:2.3.0" dependencies: - "@types/hast": ^2.0.0 + "@types/estree": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + style-to-object: ^1.0.0 + unist-util-position: ^5.0.0 + vfile-message: ^4.0.0 + checksum: 599a97c6ec61c1430776813d7fb42e6f96032bf4a04dfcbb8eceef3bc8d1845ecf242387a4426b9d3f52320dbbfa26450643b81124b3d6a0b9bbb0fff4d0ba83 + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^8.0.0": + version: 8.0.0 + resolution: "hast-util-to-parse5@npm:8.0.0" + dependencies: + "@types/hast": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 property-information: ^6.0.0 space-separated-tokens: ^2.0.0 web-namespaces: ^2.0.0 zwitch: ^2.0.0 - checksum: 3a7f2175a3db599bbae7e49ba73d3e5e688e5efca7590ff50130ba108ad649f728402815d47db49146f6b94c14c934bf119915da9f6964e38802c122bcc8af6b + checksum: 137469209cb2b32b57387928878dc85310fbd5afa4807a8da69529199bb1d19044bfc95b50c3dc68d4fb2b6cb8bf99b899285597ab6ab318f50422eefd5599dd languageName: node linkType: hard -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.1 - resolution: "hast-util-whitespace@npm:2.0.1" - checksum: 431be6b2f35472f951615540d7a53f69f39461e5e080c0190268bdeb2be9ab9b1dddfd1f467dd26c1de7e7952df67beb1307b6ee940baf78b24a71b5e0663868 - languageName: node - linkType: hard - -"hastscript@npm:^7.0.0, hastscript@npm:^7.1.0": - version: 7.2.0 - resolution: "hastscript@npm:7.2.0" +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" dependencies: - "@types/hast": ^2.0.0 + "@types/hast": ^3.0.0 + checksum: 41d93ccce218ba935dc3c12acdf586193c35069489c8c8f50c2aa824c00dec94a3c78b03d1db40fa75381942a189161922e4b7bca700b3a2cc779634c351a1e4 + languageName: node + linkType: hard + +"hastscript@npm:^8.0.0": + version: 8.0.0 + resolution: "hastscript@npm:8.0.0" + dependencies: + "@types/hast": ^3.0.0 comma-separated-tokens: ^2.0.0 - hast-util-parse-selector: ^3.0.0 + hast-util-parse-selector: ^4.0.0 property-information: ^6.0.0 space-separated-tokens: ^2.0.0 - checksum: 928a21576ff7b9a8c945e7940bcbf2d27f770edb4279d4d04b33dc90753e26ca35c1172d626f54afebd377b2afa32331e399feb3eb0f7b91a399dca5927078ae + checksum: ae3c20223e7b847320c0f98b6fb3c763ebe1bf3913c5805fbc176cf84553a9db1117ca34cf842a5235890b4b9ae0e94501bfdc9a9b870a5dbf5fc52426db1097 languageName: node linkType: hard @@ -6501,10 +6416,10 @@ __metadata: languageName: node linkType: hard -"html-void-elements@npm:^2.0.0": - version: 2.0.1 - resolution: "html-void-elements@npm:2.0.1" - checksum: 06d41f13b9d5d6e0f39861c4bec9a9196fa4906d56cd5cf6cf54ad2e52a85bf960cca2bf9600026bde16c8331db171bedba5e5a35e2e43630c8f1d497b2fb658 +"html-void-elements@npm:^3.0.0": + version: 3.0.0 + resolution: "html-void-elements@npm:3.0.0" + checksum: 59be397525465a7489028afa064c55763d9cccd1d7d9f630cca47137317f0e897a9ca26cef7e745e7cff1abc44260cfa407742b243a54261dfacd42230e94fce languageName: node linkType: hard @@ -6818,6 +6733,13 @@ __metadata: languageName: node linkType: hard +"inline-style-parser@npm:0.2.2": + version: 0.2.2 + resolution: "inline-style-parser@npm:0.2.2" + checksum: 698893d6542d4e7c0377936a1c7daec34a197765bd77c5599384756a95ce8804e6b79347b783aa591d5e9c6f3d33dae74c6d4cad3a94647eb05f3a785e927a3f + languageName: node + linkType: hard + "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -6888,13 +6810,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - "is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" @@ -7182,16 +7097,16 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.18.2": - version: 1.20.0 - resolution: "jiti@npm:1.20.0" +"jiti@npm:^1.18.2, jiti@npm:^1.20.0": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" bin: jiti: bin/jiti.js - checksum: 7924062b5675142e3e272a27735be84b7bfc0a0eb73217fc2dcafa034f37c4f7b4b9ffc07dd98bcff0f739a8811ce1544db205ae7e97b1c86f0df92c65ce3c72 + checksum: a7bd5d63921c170eaec91eecd686388181c7828e1fa0657ab374b9372bfc1f383cf4b039e6b272383d5cb25607509880af814a39abdff967322459cca41f2961 languageName: node linkType: hard -"joi@npm:^17.7.0, joi@npm:^17.9.2": +"joi@npm:^17.9.2": version: 17.11.0 resolution: "joi@npm:17.11.0" dependencies: @@ -7325,13 +7240,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - "klona@npm:^2.0.4": version: 2.0.6 resolution: "klona@npm:2.0.6" @@ -7432,13 +7340,6 @@ __metadata: languageName: node linkType: hard -"lodash.curry@npm:^4.0.1": - version: 4.1.1 - resolution: "lodash.curry@npm:4.1.1" - checksum: 9192b70fe7df4d1ff780c0260bee271afa9168c93fe4fa24bc861900240531b59781b5fdaadf4644fea8f4fbcd96f0700539ab294b579ffc1022c6c15dcc462a - languageName: node - linkType: hard - "lodash.debounce@npm:^4.0.8": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" @@ -7460,13 +7361,6 @@ __metadata: languageName: node linkType: hard -"lodash.flow@npm:^3.3.0": - version: 3.5.0 - resolution: "lodash.flow@npm:3.5.0" - checksum: a9a62ad344e3c5a1f42bc121da20f64dd855aaafecee24b1db640f29b88bd165d81c37ff7e380a7191de6f70b26f5918abcebbee8396624f78f3618a0b18634c - languageName: node - linkType: hard - "lodash.invokemap@npm:^4.6.0": version: 4.6.0 resolution: "lodash.invokemap@npm:4.6.0" @@ -7599,10 +7493,10 @@ __metadata: languageName: node linkType: hard -"markdown-extensions@npm:^1.0.0": - version: 1.1.1 - resolution: "markdown-extensions@npm:1.1.1" - checksum: 8a6dd128be1c524049ea6a41a9193715c2835d3d706af4b8b714ff2043a82786dbcd4a8f1fa9ddd28facbc444426c97515aef2d1f3dd11d5e2d63749ba577b1e +"markdown-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-extensions@npm:2.0.0" + checksum: ec4ffcb0768f112e778e7ac74cb8ef22a966c168c3e6c29829f007f015b0a0b5c79c73ee8599a0c72e440e7f5cfdbf19e80e2d77b9a313b8f66e180a330cf1b2 languageName: node linkType: hard @@ -7613,61 +7507,31 @@ __metadata: languageName: node linkType: hard -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.2 - resolution: "mdast-util-definitions@npm:5.1.2" +"mdast-util-directive@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-directive@npm:3.0.0" dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 2544daccab744ea1ede76045c2577ae4f1cc1b9eb1ea51ab273fe1dca8db5a8d6f50f87759c0ce6484975914b144b7f40316f805cb9c86223a78db8de0b77bae - languageName: node - linkType: hard - -"mdast-util-directive@npm:^2.0.0": - version: 2.2.4 - resolution: "mdast-util-directive@npm:2.2.4" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - mdast-util-from-markdown: ^1.3.0 - mdast-util-to-markdown: ^1.5.0 + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 parse-entities: ^4.0.0 stringify-entities: ^4.0.0 - unist-util-visit-parents: ^5.1.3 - checksum: d04112761659c912b5d7db8f8c035918da52e79ce8cb598c7c270c6f678db0c22f3dea7894b30dec46852409f926306b84ca95683dd1e28731835eb5cb4fbda4 + unist-util-visit-parents: ^6.0.0 + checksum: 593afdc4f39f99bb198f3774bf4648cb546cb99a055e40c82262a7faab10926d2529a725d0d3945300ed0a1f07c6c84215a3f76b899a89b3f410ec7375bbab17 languageName: node linkType: hard -"mdast-util-find-and-replace@npm:^2.0.0": - version: 2.2.2 - resolution: "mdast-util-find-and-replace@npm:2.2.2" +"mdast-util-find-and-replace@npm:^3.0.0, mdast-util-find-and-replace@npm:^3.0.1": + version: 3.0.1 + resolution: "mdast-util-find-and-replace@npm:3.0.1" dependencies: - "@types/mdast": ^3.0.0 + "@types/mdast": ^4.0.0 escape-string-regexp: ^5.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.0.0 - checksum: b4ce463c43fe6e1c38a53a89703f755c84ab5437f49bff9a0ac751279733332ca11c85ed0262aa6c17481f77b555d26ca6d64e70d6814f5b8d12d34a3e53a60b - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0, mdast-util-from-markdown@npm:^1.1.0, mdast-util-from-markdown@npm:^1.3.0": - version: 1.3.0 - resolution: "mdast-util-from-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: cc971d1ad381150f6504fd753fbcffcc64c0abb527540ce343625c2bba76104505262122ef63d14ab66eb47203f323267017c6d09abfa8535ee6a8e14069595f + unist-util-is: ^6.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 05d5c4ff02e31db2f8a685a13bcb6c3f44e040bd9dfa54c19a232af8de5268334c8755d79cb456ed4cced1300c4fb83e88444c7ae8ee9ff16869a580f29d08cd languageName: node linkType: hard @@ -7705,142 +7569,142 @@ __metadata: languageName: node linkType: hard -"mdast-util-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-autolink-literal@npm:1.0.3" +"mdast-util-gfm-autolink-literal@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.0" dependencies: - "@types/mdast": ^3.0.0 + "@types/mdast": ^4.0.0 ccount: ^2.0.0 - mdast-util-find-and-replace: ^2.0.0 - micromark-util-character: ^1.0.0 - checksum: 1748a8727cfc533bac0c287d6e72d571d165bfa77ae0418be4828177a3ec73c02c3f2ee534d87eb75cbaffa00c0866853bbcc60ae2255babb8210f7636ec2ce2 + devlop: ^1.0.0 + mdast-util-find-and-replace: ^3.0.0 + micromark-util-character: ^2.0.0 + checksum: 10322662e5302964bed7c9829c5fd3b0c9899d4f03e63fb8620ab141cf4f3de9e61fcb4b44d46aacc8a23f82bcd5d900980a211825dfe026b1dab5fdbc3e8742 languageName: node linkType: hard -"mdast-util-gfm-footnote@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-footnote@npm:1.0.2" +"mdast-util-gfm-footnote@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-footnote@npm:2.0.0" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-to-markdown: ^1.3.0 - micromark-util-normalize-identifier: ^1.0.0 - checksum: 2d77505f9377ed7e14472ef5e6b8366c3fec2cf5f936bb36f9fbe5b97ccb7cce0464d9313c236fa86fb844206fd585db05707e4fcfb755e4fc1864194845f1f6 + "@types/mdast": ^4.0.0 + devlop: ^1.1.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + checksum: 45d26b40e7a093712e023105791129d76e164e2168d5268e113298a22de30c018162683fb7893cdc04ab246dac0087eed708b2a136d1d18ed2b32b3e0cae4a79 languageName: node linkType: hard -"mdast-util-gfm-strikethrough@npm:^1.0.0": - version: 1.0.3 - resolution: "mdast-util-gfm-strikethrough@npm:1.0.3" +"mdast-util-gfm-strikethrough@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-to-markdown: ^1.3.0 - checksum: 17003340ff1bba643ec4a59fd4370fc6a32885cab2d9750a508afa7225ea71449fb05acaef60faa89c6378b8bcfbd86a9d94b05f3c6651ff27a60e3ddefc2549 + "@types/mdast": ^4.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: fe9b1d0eba9b791ff9001c008744eafe3dd7a81b085f2bf521595ce4a8e8b1b44764ad9361761ad4533af3e5d913d8ad053abec38172031d9ee32a8ebd1c7dbd languageName: node linkType: hard -"mdast-util-gfm-table@npm:^1.0.0": - version: 1.0.7 - resolution: "mdast-util-gfm-table@npm:1.0.7" +"mdast-util-gfm-table@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-table@npm:2.0.0" dependencies: - "@types/mdast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 markdown-table: ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.3.0 - checksum: 8b8c401bb4162e53f072a2dff8efbca880fd78d55af30601c791315ab6722cb2918176e8585792469a0c530cebb9df9b4e7fede75fdc4d83df2839e238836692 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 063a627fd0993548fd63ca0c24c437baf91ba7d51d0a38820bd459bc20bf3d13d7365ef8d28dca99176dd5eb26058f7dde51190479c186dfe6af2e11202957c9 languageName: node linkType: hard -"mdast-util-gfm-task-list-item@npm:^1.0.0": - version: 1.0.2 - resolution: "mdast-util-gfm-task-list-item@npm:1.0.2" +"mdast-util-gfm-task-list-item@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-to-markdown: ^1.3.0 - checksum: c9b86037d6953b84f11fb2fc3aa23d5b8e14ca0dfcb0eb2fb289200e172bb9d5647bfceb4f86606dc6d935e8d58f6a458c04d3e55e87ff8513c7d4ade976200b + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 37db90c59b15330fc54d790404abf5ef9f2f83e8961c53666fe7de4aab8dd5e6b3c296b6be19797456711a89a27840291d8871ff0438e9b4e15c89d170efe072 languageName: node linkType: hard -"mdast-util-gfm@npm:^2.0.0": - version: 2.0.2 - resolution: "mdast-util-gfm@npm:2.0.2" +"mdast-util-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-gfm@npm:3.0.0" dependencies: - mdast-util-from-markdown: ^1.0.0 - mdast-util-gfm-autolink-literal: ^1.0.0 - mdast-util-gfm-footnote: ^1.0.0 - mdast-util-gfm-strikethrough: ^1.0.0 - mdast-util-gfm-table: ^1.0.0 - mdast-util-gfm-task-list-item: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 7078cb985255208bcbce94a121906417d38353c6b1a9acbe56ee8888010d3500608b5d51c16b0999ac63ca58848fb13012d55f26930ff6c6f3450f053d56514e + mdast-util-from-markdown: ^2.0.0 + mdast-util-gfm-autolink-literal: ^2.0.0 + mdast-util-gfm-footnote: ^2.0.0 + mdast-util-gfm-strikethrough: ^2.0.0 + mdast-util-gfm-table: ^2.0.0 + mdast-util-gfm-task-list-item: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 62039d2f682ae3821ea1c999454863d31faf94d67eb9b746589c7e136076d7fb35fabc67e02f025c7c26fd7919331a0ee1aabfae24f565d9a6a9ebab3371c626 languageName: node linkType: hard -"mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.2 - resolution: "mdast-util-mdx-expression@npm:1.3.2" +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-mdx-expression@npm:2.0.0" dependencies: "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: e4c90f26deaa5eb6217b0a9af559a80de41da02ab3bcd864c56bed3304b056ae703896e9876bc6ded500f4aff59f4de5cbf6a4b109a5ba408f2342805fe6dc05 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 4e1183000e183e07a7264e192889b4fd57372806103031c71b9318967f85fd50a5dd0f92ef14f42c331e77410808f5de3341d7bc8ad4ee91b7fa8f0a30043a8a languageName: node linkType: hard -"mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.2 - resolution: "mdast-util-mdx-jsx@npm:2.1.2" +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.0 + resolution: "mdast-util-mdx-jsx@npm:3.1.0" dependencies: "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 ccount: ^2.0.0 - mdast-util-from-markdown: ^1.1.0 - mdast-util-to-markdown: ^1.3.0 + devlop: ^1.1.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 parse-entities: ^4.0.0 stringify-entities: ^4.0.0 - unist-util-remove-position: ^4.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 637e0bbd97c0c783f6b12bb05ccb1edaec076c5aa6d349147d77b8e6e10677f1be8e2870c05b1896f69095c9bc527f34be72b349b30737ab2e499bfc579b3a28 + unist-util-remove-position: ^5.0.0 + unist-util-stringify-position: ^4.0.0 + vfile-message: ^4.0.0 + checksum: b38636d003cd8ae74a87c933474bc44571606957dea5de065b7fbcc0af6c9159b35ac250a5c6bd331dc2a54acb64985afb32708711763d51c18b0d439fe50694 languageName: node linkType: hard -"mdast-util-mdx@npm:^2.0.0": - version: 2.0.1 - resolution: "mdast-util-mdx@npm:2.0.1" +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" dependencies: - mdast-util-from-markdown: ^1.0.0 - mdast-util-mdx-expression: ^1.0.0 - mdast-util-mdx-jsx: ^2.0.0 - mdast-util-mdxjs-esm: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: 7303149230a26e524e319833b782bffca94e49cdab012996618701259bd056e014ca22a35d25ffa8880ba9064ee126a2a002f01e5c90a31ca726339ed775875e + mdast-util-from-markdown: ^2.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: e2b007d826fcd49fd57ed03e190753c8b0f7d9eff6c7cb26ba609cde15cd3a472c0cd5e4a1ee3e39a40f14be22fdb57de243e093cea0c064d6f3366cff3e3af2 languageName: node linkType: hard -"mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdxjs-esm@npm:1.3.1" +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" dependencies: "@types/estree-jsx": ^1.0.0 - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - mdast-util-to-markdown: ^1.0.0 - checksum: ee78a4f58adfec38723cbc920f05481201ebb001eff3982f2d0e5f5ce5c75685e732e9d361ad4a1be8b936b4e5de0f2599cb96b92ad4bd92698ac0c4a09bbec3 - languageName: node - linkType: hard - -"mdast-util-phrasing@npm:^3.0.0": - version: 3.0.1 - resolution: "mdast-util-phrasing@npm:3.0.1" - dependencies: - "@types/mdast": ^3.0.0 - unist-util-is: ^5.0.0 - checksum: c5b616d9b1eb76a6b351d195d94318494722525a12a89d9c8a3b091af7db3dd1fc55d294f9d29266d8159a8267b0df4a7a133bda8a3909d5331c383e1e1ff328 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 1f9dad04d31d59005332e9157ea9510dc1d03092aadbc607a10475c7eec1c158b475aa0601a3a4f74e13097ca735deb8c2d9d37928ddef25d3029fd7c9e14dc3 languageName: node linkType: hard @@ -7854,35 +7718,20 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-hast@npm:^12.1.0": - version: 12.3.0 - resolution: "mdast-util-to-hast@npm:12.3.0" +"mdast-util-to-hast@npm:^13.0.0": + version: 13.1.0 + resolution: "mdast-util-to-hast@npm:13.1.0" dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@ungap/structured-clone": ^1.0.0 + devlop: ^1.0.0 + micromark-util-sanitize-uri: ^2.0.0 trim-lines: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: ea40c9f07dd0b731754434e81c913590c611b1fd753fa02550a1492aadfc30fb3adecaf62345ebb03cea2ddd250c15ab6e578fffde69c19955c9b87b10f2a9bb - languageName: node - linkType: hard - -"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0, mdast-util-to-markdown@npm:^1.5.0": - version: 1.5.0 - resolution: "mdast-util-to-markdown@npm:1.5.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - longest-streak: ^3.0.0 - mdast-util-phrasing: ^3.0.0 - mdast-util-to-string: ^3.0.0 - micromark-util-decode-string: ^1.0.0 - unist-util-visit: ^4.0.0 - zwitch: ^2.0.0 - checksum: 64338eb33e49bb0aea417591fd986f72fdd39205052563bb7ce9eb9ecc160824509bfacd740086a05af355c6d5c36353aafe95cab9e6927d674478757cee6259 + unist-util-position: ^5.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 640bc897286af8fe760cd477fb04bbf544a5a897cdc2220ce36fe2f892f067b483334610387aeb969511bd78a2d841a54851079cd676ac513d6a5ff75852514e languageName: node linkType: hard @@ -7902,15 +7751,6 @@ __metadata: languageName: node linkType: hard -"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0, mdast-util-to-string@npm:^3.2.0": - version: 3.2.0 - resolution: "mdast-util-to-string@npm:3.2.0" - dependencies: - "@types/mdast": ^3.0.0 - checksum: dc40b544d54339878ae2c9f2b3198c029e1e07291d2126bd00ca28272ee6616d0d2194eb1c9828a7c34d412a79a7e73b26512a734698d891c710a1e73db1e848 - languageName: node - linkType: hard - "mdast-util-to-string@npm:^4.0.0": version: 4.0.0 resolution: "mdast-util-to-string@npm:4.0.0" @@ -7971,30 +7811,6 @@ __metadata: languageName: node linkType: hard -"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - "micromark-core-commonmark@npm:^2.0.0": version: 2.0.0 resolution: "micromark-core-commonmark@npm:2.0.0" @@ -8019,18 +7835,18 @@ __metadata: languageName: node linkType: hard -"micromark-extension-directive@npm:^2.0.0": - version: 2.2.0 - resolution: "micromark-extension-directive@npm:2.2.0" +"micromark-extension-directive@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-directive@npm:3.0.0" dependencies: - micromark-factory-space: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-factory-whitespace: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 parse-entities: ^4.0.0 - uvu: ^0.5.0 - checksum: 1256374a1327c2aecd4b3592de2c62ddf4798441d3a953f8414ecde05da2595a47428d94959b0bdb67605d4e195b95eb0b6e18ece44a50cbdf5a9c2c25d21905 + checksum: 8350106bdf039a544cba64cf7932261a710e07d73d43d6c645dd2b16577f30ebd04abf762e8ca74266f5de19938e1eeff6c237d79f8244dea23aef7f90df2c31 languageName: node linkType: hard @@ -8046,181 +7862,172 @@ __metadata: languageName: node linkType: hard -"micromark-extension-gfm-autolink-literal@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.3" +"micromark-extension-gfm-autolink-literal@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-autolink-literal@npm:2.0.0" dependencies: - micromark-util-character: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: bb181972ac346ca73ca1ab0b80b80c9d6509ed149799d2217d5442670f499c38a94edff73d32fa52b390d89640974cfbd7f29e4ad7d599581d5e1cabcae636a2 + micromark-util-character: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: fa16d59528239262d6d04d539a052baf1f81275954ec8bfadea40d81bfc25667d5c8e68b225a5358626df5e30a3933173a67fdad2fed011d37810a10b770b0b2 languageName: node linkType: hard -"micromark-extension-gfm-footnote@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-extension-gfm-footnote@npm:1.1.0" +"micromark-extension-gfm-footnote@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-footnote@npm:2.0.0" dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 7a5408625ef2cca5cc18e6591c2522a8a409f466a6fbc0ed938950aafe5fc9bf1eada65e1a4dd4e36ec3e7b24920de1f4b3e2c365d8f5cd2d6ccb1f8c2377c49 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: a426fddecfac6144fc622b845cd2dc09d46faa75be5b76ff022cb76a03301b1d4929a5e5e41e071491787936be65e03d0b03c7aebc0e0136b3cdbfadadd6632c languageName: node linkType: hard -"micromark-extension-gfm-strikethrough@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-strikethrough@npm:1.0.5" +"micromark-extension-gfm-strikethrough@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-strikethrough@npm:2.0.0" dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 548c0f257753d735c741533411957f04253da53db31e1f398dc5dc1de9f398c45586baad5223dce8f3b55f9433c255e6eb695fc3104256b8c332dd8737136882 + devlop: ^1.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-classify-character: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 4e35fbbf364bfce08066b70acd94b9d393a8fd09a5afbe0bae70d0c8a174640b1ba86ab6b78ee38f411a813e2a718b07959216cf0063d823ba1c569a7694e5ad languageName: node linkType: hard -"micromark-extension-gfm-table@npm:^1.0.0": - version: 1.0.5 - resolution: "micromark-extension-gfm-table@npm:1.0.5" +"micromark-extension-gfm-table@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-table@npm:2.0.0" dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: f0aab3b4333cc24b1534b08dc4cce986dd606df8b7ed913e5a1de9fe2d3ae67b2435663c0bc271b528874af4928e580e1ad540ea9117d7f2d74edb28859c97ef + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 71484dcf8db7b189da0528f472cc81e4d6d1a64ae43bbe7fcb7e2e1dba758a0a4f785f9f1afb9459fe5b4a02bbe023d78c95c05204414a14083052eb8219e5eb languageName: node linkType: hard -"micromark-extension-gfm-tagfilter@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-extension-gfm-tagfilter@npm:1.0.2" +"micromark-extension-gfm-tagfilter@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" dependencies: - micromark-util-types: ^1.0.0 - checksum: 7d2441df51f890c86f8e7cf7d331a570b69c8105fa1c2fc5b737cb739502c16c8ee01cf35550a8a78f89497c5dfacc97cf82d55de6274e8320f3aec25e2b0dd2 + micromark-util-types: ^2.0.0 + checksum: cf21552f4a63592bfd6c96ae5d64a5f22bda4e77814e3f0501bfe80e7a49378ad140f827007f36044666f176b3a0d5fea7c2e8e7973ce4b4579b77789f01ae95 languageName: node linkType: hard -"micromark-extension-gfm-task-list-item@npm:^1.0.0": - version: 1.0.4 - resolution: "micromark-extension-gfm-task-list-item@npm:1.0.4" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 2575bb47b320f2479d3cc2492ba7cf79d6baa9cd0200c0ed120fd0e318e64e8ebab4a93a056a3781cb5107193f3b36ebd2d86a5928308bef45fc121291f97eb5 - languageName: node - linkType: hard - -"micromark-extension-gfm@npm:^2.0.0": +"micromark-extension-gfm-task-list-item@npm:^2.0.0": version: 2.0.1 - resolution: "micromark-extension-gfm@npm:2.0.1" + resolution: "micromark-extension-gfm-task-list-item@npm:2.0.1" dependencies: - micromark-extension-gfm-autolink-literal: ^1.0.0 - micromark-extension-gfm-footnote: ^1.0.0 - micromark-extension-gfm-strikethrough: ^1.0.0 - micromark-extension-gfm-table: ^1.0.0 - micromark-extension-gfm-tagfilter: ^1.0.0 - micromark-extension-gfm-task-list-item: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: b181479c87be38d5ae8d28e6dc52fab73c894fd2706876746f27a91fb186644ce03532a9c35dca2186327a0e2285cd5242ad0361dc89adedd4a50376ffd94e22 + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 80e569ab1a1d1f89d86af91482e9629e24b7e3f019c9d7989190f36a9367c6de723b2af48e908c1b73479f35b2215d3d38c1fdbf02ab01eb2fc90a59d1cf4465 languageName: node linkType: hard -"micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.4 - resolution: "micromark-extension-mdx-expression@npm:1.0.4" +"micromark-extension-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-gfm@npm:3.0.0" dependencies: - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: d19a31f9813dd5d4ad96b99e35b7c48067e69d75f92ec670dad5242857fb7688ba8b7c6a15616797b5df25dd89fd3b54916f93cb60ce2cfe97aca84739b45954 + micromark-extension-gfm-autolink-literal: ^2.0.0 + micromark-extension-gfm-footnote: ^2.0.0 + micromark-extension-gfm-strikethrough: ^2.0.0 + micromark-extension-gfm-table: ^2.0.0 + micromark-extension-gfm-tagfilter: ^2.0.0 + micromark-extension-gfm-task-list-item: ^2.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 2060fa62666a09532d6b3a272d413bc1b25bbb262f921d7402795ac021e1362c8913727e33d7528d5b4ccaf26922ec51208c43f795a702964817bc986de886c9 languageName: node linkType: hard -"micromark-extension-mdx-jsx@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-jsx@npm:1.0.3" +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-expression@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: abd6ba0acdebc03bc0836c51a1ec4ca28e0be86f10420dd8cfbcd6c10dd37cd3f31e7c8b9792e9276e7526748883f4a30d0803d72b6285dae47d4e5348c23a10 + languageName: node + linkType: hard + +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-jsx@npm:3.0.0" dependencies: "@types/acorn": ^4.0.0 - estree-util-is-identifier-name: ^2.0.0 - micromark-factory-mdx-expression: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 1a5566890aabc52fe96b78e3a3a507dee03a2232e44b9360b00617734e156f934e85bc6a477fbb856c793fe33c9fb7d2207a4f50e680168c0d04ba9c9336d960 + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: 5e2f45d381d1ce43afadc5376427b42ef8cd2a574ca3658473254eabe84db99ef1abc03055b3d86728fac7f1edfb1076e6f2f322ed8bfb1f2f14cafc2c8f0d0e languageName: node linkType: hard -"micromark-extension-mdx-md@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdx-md@npm:1.0.0" +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" dependencies: - micromark-util-types: ^1.0.0 - checksum: b4f205e1d5f0946b4755541ef44ffd0b3be8c7ecfc08d8b139b6a21fbd3ff62d8fdb6b7e6d17bd9a3b610450267f43a41703dc48b341da9addd743a28cdefa64 + micromark-util-types: ^2.0.0 + checksum: 7daf03372fd7faddf3f0ac87bdb0debb0bb770f33b586f72251e1072b222ceee75400ab6194c0e130dbf1e077369a5b627be6e9130d7a2e9e6b849f0d18ff246 languageName: node linkType: hard -"micromark-extension-mdxjs-esm@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdxjs-esm@npm:1.0.3" +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" dependencies: - micromark-core-commonmark: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.1.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: 756074656391a5e5bb96bc8a0e9c1df7d9f7be5299847c9719e6a90552e1c76a11876aa89986ad5da89ab485f776a4a43a61ea3acddd4f865a5cee43ac523ffd + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: fb33d850200afce567b95c90f2f7d42259bd33eea16154349e4fa77c3ec934f46c8e5c111acea16321dce3d9f85aaa4c49afe8b810e31b34effc11617aeee8f6 languageName: node linkType: hard -"micromark-extension-mdxjs@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-extension-mdxjs@npm:1.0.0" +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" dependencies: acorn: ^8.0.0 acorn-jsx: ^5.0.0 - micromark-extension-mdx-expression: ^1.0.0 - micromark-extension-mdx-jsx: ^1.0.0 - micromark-extension-mdx-md: ^1.0.0 - micromark-extension-mdxjs-esm: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: ba836c6d2dfc67597886e88f533ffa02f2029dbe216a0651f1066e70f8529a700bcc7fa2bc4201ee12fd3d1cd7da7093d5a442442daeb84b27df96aaffb7699c - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 + micromark-extension-mdx-expression: ^3.0.0 + micromark-extension-mdx-jsx: ^3.0.0 + micromark-extension-mdx-md: ^2.0.0 + micromark-extension-mdxjs-esm: ^3.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 7da6f0fb0e1e0270a2f5ad257e7422cc16e68efa7b8214c63c9d55bc264cb872e9ca4ac9a71b9dfd13daf52e010f730bac316086f4340e4fcc6569ec699915bf languageName: node linkType: hard @@ -8235,18 +8042,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - "micromark-factory-label@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-label@npm:2.0.0" @@ -8259,19 +8054,19 @@ __metadata: languageName: node linkType: hard -"micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.7 - resolution: "micromark-factory-mdx-expression@npm:1.0.7" +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-mdx-expression@npm:2.0.1" dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-events-to-acorn: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-position-from-estree: ^1.0.0 - uvu: ^0.5.0 - vfile-message: ^3.0.0 - checksum: e7893f21576bcb7755d341e45d3ff202ba466fa2278c6f31ae4db4002a28d6d13a4efad331ef46223372ec2010d9bc2ff27e2cd57a4580be6491e59ca21ba59d + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: 2ba0ae939d0174a5e5331b1a4c203b96862ccf06e8903d6bdcc2d51f75515e52d407cd394afcd182f9ff0e877dc2a14e3fa430ced0131e156650d45104de8311 languageName: node linkType: hard @@ -8295,19 +8090,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - "micromark-factory-title@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-title@npm:2.0.0" @@ -8320,18 +8102,6 @@ __metadata: languageName: node linkType: hard -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - "micromark-factory-whitespace@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-whitespace@npm:2.0.0" @@ -8364,15 +8134,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - "micromark-util-chunked@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-chunked@npm:2.0.0" @@ -8382,17 +8143,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - "micromark-util-classify-character@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-classify-character@npm:2.0.0" @@ -8404,16 +8154,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - "micromark-util-combine-extensions@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-combine-extensions@npm:2.0.0" @@ -8424,15 +8164,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - "micromark-util-decode-numeric-character-reference@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.0" @@ -8442,18 +8173,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - "micromark-util-decode-string@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-decode-string@npm:2.0.0" @@ -8466,13 +8185,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - "micromark-util-encode@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-encode@npm:2.0.0" @@ -8480,25 +8192,19 @@ __metadata: languageName: node linkType: hard -"micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.1 - resolution: "micromark-util-events-to-acorn@npm:1.2.1" +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-events-to-acorn@npm:2.0.2" dependencies: "@types/acorn": ^4.0.0 "@types/estree": ^1.0.0 - estree-util-visit: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - vfile-location: ^4.0.0 - vfile-message: ^3.0.0 - checksum: baf1cad66d860980cf20963f641c48c434e5be5802beabefdda21be136ae037845dd236b5e9ce5cf9409bf1b9ba8b4131a396d3a5bfa12098dae13e4a9724f2b - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + estree-util-visit: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: bcb3eeac52a4ae5c3ca3d8cff514de3a7d1f272d9a94cce26a08c578bef64df4d61820874c01207e92fcace9eae5c9a7ecdddef0c6e10014b255a07b7880bf94 languageName: node linkType: hard @@ -8509,15 +8215,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - "micromark-util-normalize-identifier@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-normalize-identifier@npm:2.0.0" @@ -8527,15 +8224,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - "micromark-util-resolve-all@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-resolve-all@npm:2.0.0" @@ -8545,17 +8233,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - "micromark-util-sanitize-uri@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-sanitize-uri@npm:2.0.0" @@ -8567,18 +8244,6 @@ __metadata: languageName: node linkType: hard -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - "micromark-util-subtokenize@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-subtokenize@npm:2.0.0" @@ -8605,7 +8270,7 @@ __metadata: languageName: node linkType: hard -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": +"micromark-util-types@npm:^1.0.0": version: 1.0.2 resolution: "micromark-util-types@npm:1.0.2" checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df @@ -8619,31 +8284,6 @@ __metadata: languageName: node linkType: hard -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - "micromark@npm:^4.0.0": version: 4.0.0 resolution: "micromark@npm:4.0.0" @@ -8702,7 +8342,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -8777,7 +8417,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.7": +"minimist@npm:^1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -8872,13 +8512,6 @@ __metadata: languageName: node linkType: hard -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - "mrmime@npm:^1.0.0": version: 1.0.1 resolution: "mrmime@npm:1.0.1" @@ -8952,26 +8585,15 @@ __metadata: languageName: node linkType: hard -"node-emoji@npm:^1.10.0": - version: 1.11.0 - resolution: "node-emoji@npm:1.11.0" +"node-emoji@npm:^2.1.0": + version: 2.1.3 + resolution: "node-emoji@npm:2.1.3" dependencies: - lodash: ^4.17.21 - checksum: e8c856c04a1645062112a72e59a98b203505ed5111ff84a3a5f40611afa229b578c7d50f1e6a7f17aa62baeea4a640d2e2f61f63afc05423aa267af10977fb2b - languageName: node - linkType: hard - -"node-fetch@npm:2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b + "@sindresorhus/is": ^4.6.0 + char-regex: ^1.0.2 + emojilib: ^2.4.0 + skin-tone: ^2.0.0 + checksum: 9ae5a1fb12fd5ce6885f251f345986115de4bb82e7d06fdc943845fb19260d89d0aaaccbaf85cae39fe7aaa1fc391640558865ba690c9bb8a7236c3ac10bbab0 languageName: node linkType: hard @@ -9002,10 +8624,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 languageName: node linkType: hard @@ -9085,7 +8707,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": +"object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -9342,13 +8964,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - "parse5@npm:^7.0.0": version: 7.1.2 resolution: "parse5@npm:7.1.2" @@ -9977,15 +9592,15 @@ __metadata: languageName: node linkType: hard -"prism-react-renderer@npm:^2.1.0": - version: 2.1.0 - resolution: "prism-react-renderer@npm:2.1.0" +"prism-react-renderer@npm:^2.3.0": + version: 2.3.1 + resolution: "prism-react-renderer@npm:2.3.1" dependencies: "@types/prismjs": ^1.26.0 - clsx: ^1.2.1 + clsx: ^2.0.0 peerDependencies: react: ">=16.0.0" - checksum: 61b4eb22bdbf01005a0d7ec2a24a27b69e28f124a1fbbfc2adb4d7d41a7929ea94d5ce506a361dd5a230728402f02595d521d9a5286d74ec9b34be0896c513a5 + checksum: b12a7d502c1e764d94f7d3c84aee9cd6fccc676bb7e21dee94d37eb2e7e62e097a343999e1979887cb83a57cbdea48d2046aa74d07bce05caa25f4c296df30b6 languageName: node linkType: hard @@ -10020,15 +9635,6 @@ __metadata: languageName: node linkType: hard -"promise@npm:^7.1.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: ~2.0.3 - checksum: 475bb069130179fbd27ed2ab45f26d8862376a137a57314cf53310bdd85cc986a826fd585829be97ebc0aaf10e9d8e68be1bfe5a4a0364144b1f9eedfa940cf1 - languageName: node - linkType: hard - "prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" @@ -10097,13 +9703,6 @@ __metadata: languageName: node linkType: hard -"pure-color@npm:^1.2.0": - version: 1.3.0 - resolution: "pure-color@npm:1.3.0" - checksum: 646d8bed6e6eab89affdd5e2c11f607a85b631a7fb03c061dfa658eb4dc4806881a15feed2ac5fd8c0bad8c00c632c640d5b1cb8b9a972e6e947393a1329371b - languageName: node - linkType: hard - "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -10185,18 +9784,6 @@ __metadata: languageName: node linkType: hard -"react-base16-styling@npm:~0.6.0": - version: 0.6.0 - resolution: "react-base16-styling@npm:0.6.0" - dependencies: - base16: ^1.0.0 - lodash.curry: ^4.0.1 - lodash.flow: ^3.3.0 - pure-color: ^1.2.0 - checksum: 00a12dddafc8a9025cca933b0dcb65fca41c81fa176d1fc3a6a9d0242127042e2c0a604f4c724a3254dd2c6aeb5ef55095522ff22f5462e419641c1341a658e4 - languageName: node - linkType: hard - "react-dev-utils@npm:^12.0.1": version: 12.0.1 resolution: "react-dev-utils@npm:12.0.1" @@ -10278,10 +9865,12 @@ __metadata: languageName: node linkType: hard -"react-lifecycles-compat@npm:~3.0.4": - version: 3.0.4 - resolution: "react-lifecycles-compat@npm:3.0.4" - checksum: a904b0fc0a8eeb15a148c9feb7bc17cec7ef96e71188280061fc340043fd6d8ee3ff233381f0e8f95c1cf926210b2c4a31f38182c8f35ac55057e453d6df204f +"react-json-view-lite@npm:^1.2.0": + version: 1.2.1 + resolution: "react-json-view-lite@npm:1.2.1" + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + checksum: 9441260033ec07991b0121281d846f9d3e8db9061ea0dc3938f7003630f515d47870a465d90f1f9300ebe406679986657a4062c009c2a2084e2e145e6fa05a47 languageName: node linkType: hard @@ -10345,19 +9934,6 @@ __metadata: languageName: node linkType: hard -"react-textarea-autosize@npm:~8.3.2": - version: 8.3.4 - resolution: "react-textarea-autosize@npm:8.3.4" - dependencies: - "@babel/runtime": ^7.10.2 - use-composed-ref: ^1.3.0 - use-latest: ^1.2.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 87360d4392276d4e87511a73be9b0634b8bcce8f4f648cf659334d993f25ad3d4062f468f1e1944fc614123acae4299580aad00b760c6a96cec190e076f847f5 - languageName: node - linkType: hard - "react@npm:^18.0.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -10502,14 +10078,14 @@ __metadata: languageName: node linkType: hard -"rehype-raw@npm:^6.1.1": - version: 6.1.1 - resolution: "rehype-raw@npm:6.1.1" +"rehype-raw@npm:^7.0.0": + version: 7.0.0 + resolution: "rehype-raw@npm:7.0.0" dependencies: - "@types/hast": ^2.0.0 - hast-util-raw: ^7.2.0 - unified: ^10.0.0 - checksum: a1f9d309e609f49fb1f1e06e722705f4dd2e569653a89f756eaccb33b612cf1bb511216a81d10a619d11d047afc161e4b3cb99b957df05a8ba8fdbd5843f949a + "@types/hast": ^3.0.0 + hast-util-raw: ^9.0.0 + vfile: ^6.0.0 + checksum: f9e28dcbf4c6c7d91a97c10a840310f18ef3268aa45abb3e0428b6b191ff3c4fa8f753b910d768588a2dac5c7da7e557b4ddc3f1b6cd252e8d20cb62d60c65ed languageName: node linkType: hard @@ -10520,26 +10096,28 @@ __metadata: languageName: node linkType: hard -"remark-directive@npm:^2.0.1": - version: 2.0.1 - resolution: "remark-directive@npm:2.0.1" +"remark-directive@npm:^3.0.0": + version: 3.0.0 + resolution: "remark-directive@npm:3.0.0" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-directive: ^2.0.0 - micromark-extension-directive: ^2.0.0 - unified: ^10.0.0 - checksum: 61539926813654011431cc34e3d6c5ba702a6b610a0e8210b4748828809e86614bbb3e2de5fdee59eed24501f95c41665b175b852cc26544079789db10ac6cd7 + "@types/mdast": ^4.0.0 + mdast-util-directive: ^3.0.0 + micromark-extension-directive: ^3.0.0 + unified: ^11.0.0 + checksum: 744d12bbe924bd0492a2481cbaf9250aa6622c0d2cc090bb7bc39975e355c8a46ae13cc4793204ada39f0af64c953f6b730a55420a50375e0f74a5dd5d201089 languageName: node linkType: hard -"remark-emoji@npm:^2.2.0": - version: 2.2.0 - resolution: "remark-emoji@npm:2.2.0" +"remark-emoji@npm:^4.0.0": + version: 4.0.1 + resolution: "remark-emoji@npm:4.0.1" dependencies: - emoticon: ^3.2.0 - node-emoji: ^1.10.0 - unist-util-visit: ^2.0.3 - checksum: 638d4be72eb4110a447f389d4b8c454921f188c0acabf1b6579f3ddaa301ee91010173d6eebd975ea622ae3de7ed4531c0315a4ffd4f9653d80c599ef9ec21a8 + "@types/mdast": ^4.0.2 + emoticon: ^4.0.1 + mdast-util-find-and-replace: ^3.0.1 + node-emoji: ^2.1.0 + unified: ^11.0.4 + checksum: 2c02d8c0b694535a9f0c4fe39180cb89a8fbd07eb873c94842c34dfde566b8a6703df9d28fe175a8c28584f96252121de722862baa756f2d875f2f1a4352c1f4 languageName: node linkType: hard @@ -10555,48 +10133,63 @@ __metadata: languageName: node linkType: hard -"remark-gfm@npm:^3.0.1": +"remark-gfm@npm:^4.0.0": + version: 4.0.0 + resolution: "remark-gfm@npm:4.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-gfm: ^3.0.0 + micromark-extension-gfm: ^3.0.0 + remark-parse: ^11.0.0 + remark-stringify: ^11.0.0 + unified: ^11.0.0 + checksum: 84bea84e388061fbbb697b4b666089f5c328aa04d19dc544c229b607446bc10902e46b67b9594415a1017bbbd7c811c1f0c30d36682c6d1a6718b66a1558261b + languageName: node + linkType: hard + +"remark-mdx@npm:^3.0.0": version: 3.0.1 - resolution: "remark-gfm@npm:3.0.1" + resolution: "remark-mdx@npm:3.0.1" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-gfm: ^2.0.0 - micromark-extension-gfm: ^2.0.0 - unified: ^10.0.0 - checksum: 02254f74d67b3419c2c9cf62d799ec35f6c6cd74db25c001361751991552a7ce86049a972107bff8122d85d15ae4a8d1a0618f3bc01a7df837af021ae9b2a04e + mdast-util-mdx: ^3.0.0 + micromark-extension-mdxjs: ^3.0.0 + checksum: e7fcffbe1ccb0c7dfcb01c6d9dbc48df9c668c8321745455db7346f4860c43dbcb98e36e3398a5117d773426ab5ef656a95c78a21208c59e92571f021b8e678e languageName: node linkType: hard -"remark-mdx@npm:^2.0.0": - version: 2.3.0 - resolution: "remark-mdx@npm:2.3.0" +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" dependencies: - mdast-util-mdx: ^2.0.0 - micromark-extension-mdxjs: ^1.0.0 - checksum: 98486986c5b6f6a8321eb2f3b13c70fcd5644821428c77b7bfeb5ee5d4605b9761b322b2f6b531e83883cd2d5bc7bc4623427149aee00e1eba012f538b3d5627 + "@types/mdast": ^4.0.0 + mdast-util-from-markdown: ^2.0.0 + micromark-util-types: ^2.0.0 + unified: ^11.0.0 + checksum: d83d245290fa84bb04fb3e78111f09c74f7417e7c012a64dd8dc04fccc3699036d828fbd8eeec8944f774b6c30cc1d925c98f8c46495ebcee7c595496342ab7f languageName: node linkType: hard -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" +"remark-rehype@npm:^11.0.0": + version: 11.1.0 + resolution: "remark-rehype@npm:11.1.0" dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + mdast-util-to-hast: ^13.0.0 + unified: ^11.0.0 + vfile: ^6.0.0 + checksum: f0c731f0ab92a122e7f9c9bcbd10d6a31fdb99f0ea3595d232ddd9f9d11a308c4ec0aff4d56e1d0d256042dfad7df23b9941e50b5038da29786959a5926814e1 languageName: node linkType: hard -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" +"remark-stringify@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-stringify@npm:11.0.0" dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 + "@types/mdast": ^4.0.0 + mdast-util-to-markdown: ^2.0.0 + unified: ^11.0.0 + checksum: 59e07460eb629d6c3b3c0f438b0b236e7e6858fd5ab770303078f5a556ec00354d9c7fb9ef6d5f745a4617ac7da1ab618b170fbb4dac120e183fecd9cc86bce6 languageName: node linkType: hard @@ -10752,24 +10345,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.8.0": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: ^2.1.0 - checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -10817,15 +10392,15 @@ __metadata: linkType: hard "sass@npm:^1.57.1": - version: 1.69.7 - resolution: "sass@npm:1.69.7" + version: 1.71.0 + resolution: "sass@npm:1.71.0" dependencies: chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: c67cd32b69fb26a50e4535353e4145de8cbc8187db07c467cc335157fd56d03cae98754f86efe43b880b29f20c0a168ab972c7f74ebfe234e2bd2dfb868890cb + checksum: 5ba6b4b994c7ae94286919d8be8a3692038c27175b4ad3a3ac43f51a91188590d3ddd3a0ef1022135503b9d70d0732efdbedfd56f3ee1a4651549f5b13f8942f languageName: node linkType: hard @@ -11014,13 +10589,6 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd - languageName: node - linkType: hard - "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" @@ -11137,6 +10705,15 @@ __metadata: languageName: node linkType: hard +"skin-tone@npm:^2.0.0": + version: 2.0.0 + resolution: "skin-tone@npm:2.0.0" + dependencies: + unicode-emoji-modifier-base: ^1.0.0 + checksum: 19de157586b8019cacc55eb25d9d640f00fc02415761f3e41a4527142970fd4e7f6af0333bc90e879858766c20a976107bb386ffd4c812289c01d51f2c8d182c + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -11420,12 +10997,21 @@ __metadata: languageName: node linkType: hard -"style-to-object@npm:^0.4.1": - version: 0.4.1 - resolution: "style-to-object@npm:0.4.1" +"style-to-object@npm:^0.4.0": + version: 0.4.4 + resolution: "style-to-object@npm:0.4.4" dependencies: inline-style-parser: 0.1.1 - checksum: 2ea213e98eed21764ae1d1dc9359231a9f2d480d6ba55344c4c15eb275f0809f1845786e66d4caf62414a5cc8f112ce9425a58d251c77224060373e0db48f8c2 + checksum: 41656c06f93ac0a7ac260ebc2f9d09a8bd74b8ec1836f358cc58e169235835a3a356977891d2ebbd76f0e08a53616929069199f9cce543214d3dc98346e19c9a + languageName: node + linkType: hard + +"style-to-object@npm:^1.0.0": + version: 1.0.5 + resolution: "style-to-object@npm:1.0.5" + dependencies: + inline-style-parser: 0.2.2 + checksum: 6201063204b6a94645f81b189452b2ca3e63d61867ec48523f4d52609c81e96176739fa12020d97fbbf023efb57a6f7ec3a15fb3a7fb7eb3ffea0b52b9dd6b8c languageName: node linkType: hard @@ -11500,12 +11086,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.3 - resolution: "swc-loader@npm:0.2.3" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -11631,13 +11219,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - "trim-lines@npm:^3.0.0": version: 3.0.1 resolution: "trim-lines@npm:3.0.1" @@ -11652,7 +11233,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.6.0": +"tslib@npm:^2.0.3, tslib@npm:^2.6.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -11692,30 +11273,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.0.0": - version: 5.0.4 - resolution: "typescript@npm:5.0.4" +"typescript@npm:~5.1.0": + version: 5.1.6 + resolution: "typescript@npm:5.1.6" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 82b94da3f4604a8946da585f7d6c3025fff8410779e5bde2855ab130d05e4fd08938b9e593b6ebed165bda6ad9292b230984f10952cf82f0a0ca07bbeaa08172 + checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350 languageName: node linkType: hard -"typescript@patch:typescript@~5.0.0#~builtin": - version: 5.0.4 - resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=a1c5e5" +"typescript@patch:typescript@~5.1.0#~builtin": + version: 5.1.6 + resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin::version=5.1.6&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 6a1fe9a77bb9c5176ead919cc4a1499ee63e46b4e05bf667079f11bf3a8f7887f135aa72460a4c3b016e6e6bb65a822cb8689a6d86cbfe92d22cc9f501f09213 - languageName: node - linkType: hard - -"ua-parser-js@npm:^0.7.30": - version: 0.7.33 - resolution: "ua-parser-js@npm:0.7.33" - checksum: 1510e9ec26fcaf0d8c6ae8f1078a8230e8816f083e1b5f453ea19d06b8ef2b8a596601c92148fd41899e8b3e5f83fa69c42332bd5729b931a721040339831696 + checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606 languageName: node linkType: hard @@ -11726,6 +11300,13 @@ __metadata: languageName: node linkType: hard +"unicode-emoji-modifier-base@npm:^1.0.0": + version: 1.0.0 + resolution: "unicode-emoji-modifier-base@npm:1.0.0" + checksum: 6e1521d35fa69493207eb8b41f8edb95985d8b3faf07c01d820a1830b5e8403e20002563e2f84683e8e962a49beccae789f0879356bf92a4ec7a4dd8e2d16fdb + languageName: node + linkType: hard + "unicode-match-property-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-match-property-ecmascript@npm:2.0.0" @@ -11750,24 +11331,9 @@ __metadata: languageName: node linkType: hard -"unified@npm:^10.0.0, unified@npm:^10.1.2": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"unified@npm:^11.0.0": - version: 11.0.3 - resolution: "unified@npm:11.0.3" +"unified@npm:^11.0.0, unified@npm:^11.0.3, unified@npm:^11.0.4": + version: 11.0.4 + resolution: "unified@npm:11.0.4" dependencies: "@types/unist": ^3.0.0 bail: ^2.0.0 @@ -11776,7 +11342,7 @@ __metadata: is-plain-obj: ^4.0.0 trough: ^2.0.0 vfile: ^6.0.0 - checksum: 402d6b397b98f8966993faca0e1480f5f1825cc44df6a5236b75ab099f14b10ed808e578155c3f535e60676c12ee3f52346ca08d64343a72181d7a6b4d32011d + checksum: cfb023913480ac2bd5e787ffb8c27782c43e6be4a55f8f1c288233fce46a7ebe7718ccc5adb80bf8d56b7ef85f5fc32239c7bfccda006f9f2382e0cc2e2a77e4 languageName: node linkType: hard @@ -11807,29 +11373,6 @@ __metadata: languageName: node linkType: hard -"unist-util-generated@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-generated@npm:2.0.1" - checksum: 6221ad0571dcc9c8964d6b054f39ef6571ed59cc0ce3e88ae97ea1c70afe76b46412a5ffaa91f96814644ac8477e23fb1b477d71f8d70e625728c5258f5c0d99 - languageName: node - linkType: hard - -"unist-util-is@npm:^4.0.0": - version: 4.1.0 - resolution: "unist-util-is@npm:4.1.0" - checksum: 726484cd2adc9be75a939aeedd48720f88294899c2e4a3143da413ae593f2b28037570730d5cf5fd910ff41f3bc1501e3d636b6814c478d71126581ef695f7ea - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.2.1 - resolution: "unist-util-is@npm:5.2.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: ae76fdc3d35352cd92f1bedc3a0d407c3b9c42599a52ab9141fe89bdd786b51f0ec5a2ab68b93fb532e239457cae62f7e39eaa80229e1cb94875da2eafcbe5c4 - languageName: node - linkType: hard - "unist-util-is@npm:^6.0.0": version: 6.0.0 resolution: "unist-util-is@npm:6.0.0" @@ -11839,40 +11382,31 @@ __metadata: languageName: node linkType: hard -"unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.2 - resolution: "unist-util-position-from-estree@npm:1.1.2" +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" dependencies: - "@types/unist": ^2.0.0 - checksum: e3f4060e2a9e894c6ed63489c5a7cb58ff282e5dae9497cbc2073033ca74d6e412af4d4d342c97aea08d997c908b8bce2fe43a2062aafc2bb3f266533016588b + "@types/unist": ^3.0.0 + checksum: d3b3048a5727c2367f64ef6dcc5b20c4717215ef8b1372ff9a7c426297c5d1e5776409938acd01531213e2cd2543218d16e73f9f862f318e9496e2c73bb18354 languageName: node linkType: hard -"unist-util-position@npm:^4.0.0": - version: 4.0.4 - resolution: "unist-util-position@npm:4.0.4" +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" dependencies: - "@types/unist": ^2.0.0 - checksum: e7487b6cec9365299695e3379ded270a1717074fa11fd2407c9b934fb08db6fe1d9077ddeaf877ecf1813665f8ccded5171693d3d9a7a01a125ec5cdd5e88691 + "@types/unist": ^3.0.0 + checksum: f89b27989b19f07878de9579cd8db2aa0194c8360db69e2c99bd2124a480d79c08f04b73a64daf01a8fb3af7cba65ff4b45a0b978ca243226084ad5f5d441dde languageName: node linkType: hard -"unist-util-remove-position@npm:^4.0.0": - version: 4.0.2 - resolution: "unist-util-remove-position@npm:4.0.2" +"unist-util-remove-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-remove-position@npm:5.0.0" dependencies: - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 989831da913d09a82a99ed9b47b78471b6409bde95942cde47e09da54b7736516f17e3c7e026af468684c1efcec5fb52df363381b2f9dc7fd96ce791c5a2fa4a - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.3 - resolution: "unist-util-stringify-position@npm:3.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: dbd66c15183607ca942a2b1b7a9f6a5996f91c0d30cf8966fb88955a02349d9eefd3974e9010ee67e71175d784c5a9fea915b0aa0b0df99dcb921b95c4c9e124 + "@types/unist": ^3.0.0 + unist-util-visit: ^5.0.0 + checksum: 8aabdb9d0e3e744141bc123d8f87b90835d521209ad3c6c4619d403b324537152f0b8f20dda839b40c3aa0abfbf1828b3635a7a8bb159c3ed469e743023510ee languageName: node linkType: hard @@ -11885,26 +11419,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit-parents@npm:^3.0.0": - version: 3.1.1 - resolution: "unist-util-visit-parents@npm:3.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - checksum: 1170e397dff88fab01e76d5154981666eb0291019d2462cff7a2961a3e76d3533b42eaa16b5b7e2d41ad42a5ea7d112301458283d255993e660511387bf67bc3 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.0.0, unist-util-visit-parents@npm:^5.1.1, unist-util-visit-parents@npm:^5.1.3": - version: 5.1.3 - resolution: "unist-util-visit-parents@npm:5.1.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: 8ecada5978994f846b64658cf13b4092cd78dea39e1ba2f5090a5de842ba4852712c02351a8ae95250c64f864635e7b02aedf3b4a093552bb30cf1bd160efbaa - languageName: node - linkType: hard - "unist-util-visit-parents@npm:^6.0.0": version: 6.0.1 resolution: "unist-util-visit-parents@npm:6.0.1" @@ -11915,28 +11429,6 @@ __metadata: languageName: node linkType: hard -"unist-util-visit@npm:^2.0.3": - version: 2.0.3 - resolution: "unist-util-visit@npm:2.0.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^4.0.0 - unist-util-visit-parents: ^3.0.0 - checksum: 1fe19d500e212128f96d8c3cfa3312846e586b797748a1fd195fe6479f06bc90a6f6904deb08eefc00dd58e83a1c8a32fb8677252d2273ad7a5e624525b69b8f - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.2 - resolution: "unist-util-visit@npm:4.1.2" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: 95a34e3f7b5b2d4b68fd722b6229972099eb97b6df18913eda44a5c11df8b1e27efe7206dd7b88c4ed244a48c474a5b2e2629ab79558ff9eb936840295549cee - languageName: node - linkType: hard - "unist-util-visit@npm:^5.0.0": version: 5.0.0 resolution: "unist-util-visit@npm:5.0.0" @@ -12024,41 +11516,6 @@ __metadata: languageName: node linkType: hard -"use-composed-ref@npm:^1.3.0": - version: 1.3.0 - resolution: "use-composed-ref@npm:1.3.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f771cbadfdc91e03b7ab9eb32d0fc0cc647755711801bf507e891ad38c4bbc5f02b2509acadf9c965ec9c5f2f642fd33bdfdfb17b0873c4ad0a9b1f5e5e724bf - languageName: node - linkType: hard - -"use-isomorphic-layout-effect@npm:^1.1.1": - version: 1.1.2 - resolution: "use-isomorphic-layout-effect@npm:1.1.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: a6532f7fc9ae222c3725ff0308aaf1f1ddbd3c00d685ef9eee6714fd0684de5cb9741b432fbf51e61a784e2955424864f7ea9f99734a02f237b17ad3e18ea5cb - languageName: node - linkType: hard - -"use-latest@npm:^1.2.1": - version: 1.2.1 - resolution: "use-latest@npm:1.2.1" - dependencies: - use-isomorphic-layout-effect: ^1.1.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: ed3f2ddddf6f21825e2ede4c2e0f0db8dcce5129802b69d1f0575fc1b42380436e8c76a6cd885d4e9aa8e292e60fb8b959c955f33c6a9123b83814a1a1875367 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -12096,20 +11553,6 @@ __metadata: languageName: node linkType: hard -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - "value-equal@npm:^1.0.1": version: 1.0.1 resolution: "value-equal@npm:1.0.1" @@ -12124,23 +11567,13 @@ __metadata: languageName: node linkType: hard -"vfile-location@npm:^4.0.0": - version: 4.1.0 - resolution: "vfile-location@npm:4.1.0" +"vfile-location@npm:^5.0.0": + version: 5.0.2 + resolution: "vfile-location@npm:5.0.2" dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: c894e8e5224170d1f85288f4a1d1ebcee0780823ea2b49d881648ab360ebf01b37ecb09b1c4439a75f9a51f31a9f9742cd045e987763e367c352a1ef7c50d446 - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.4 - resolution: "vfile-message@npm:3.1.4" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: d0ee7da1973ad76513c274e7912adbed4d08d180eaa34e6bd40bc82459f4b7bc50fcaff41556135e3339995575eac5f6f709aba9332b80f775618ea4880a1367 + "@types/unist": ^3.0.0 + vfile: ^6.0.0 + checksum: b61c048cedad3555b4f007f390412c6503f58a6a130b58badf4ee340c87e0d7421e9c86bbc1494c57dedfccadb60f5176cc60ba3098209d99fb3a3d8804e4c38 languageName: node linkType: hard @@ -12154,19 +11587,7 @@ __metadata: languageName: node linkType: hard -"vfile@npm:^5.0.0, vfile@npm:^5.3.7": - version: 5.3.7 - resolution: "vfile@npm:5.3.7" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 642cce703afc186dbe7cabf698dc954c70146e853491086f5da39e1ce850676fc96b169fcf7898aa3ff245e9313aeec40da93acd1e1fcc0c146dc4f6308b4ef9 - languageName: node - linkType: hard - -"vfile@npm:^6.0.0": +"vfile@npm:^6.0.0, vfile@npm:^6.0.1": version: 6.0.1 resolution: "vfile@npm:6.0.1" dependencies: @@ -12177,21 +11598,6 @@ __metadata: languageName: node linkType: hard -"wait-on@npm:^7.0.1": - version: 7.0.1 - resolution: "wait-on@npm:7.0.1" - dependencies: - axios: ^0.27.2 - joi: ^17.7.0 - lodash: ^4.17.21 - minimist: ^1.2.7 - rxjs: ^7.8.0 - bin: - wait-on: bin/wait-on - checksum: 1e8a17d8ee6436f71d3ab82781ce31267481fcd7bbccde49b0f8124871e6e40a1acac3401f04f775ba6203853a5813352fa131620fc139914351f3b2894d573f - languageName: node - linkType: hard - "watchpack@npm:^2.4.0": version: 2.4.0 resolution: "watchpack@npm:2.4.0" @@ -12218,13 +11624,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - "webpack-bundle-analyzer@npm:^4.9.0": version: 4.9.1 resolution: "webpack-bundle-analyzer@npm:4.9.1" @@ -12400,16 +11799,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - "which@npm:^1.3.1": version: 1.3.1 resolution: "which@npm:1.3.1" diff --git a/mkdocs.yml b/mkdocs.yml index bf4024759b..2a17613672 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,7 +18,6 @@ nav: - Release & Versioning Policy: 'overview/versioning-policy.md' - Backstage Threat Model: 'overview/threat-model.md' - Support and community: 'overview/support.md' - - Glossary: 'overview/glossary.md' - Logo assets: 'overview/logos.md' - Getting Started: - Getting Started: 'getting-started/index.md' @@ -171,7 +170,6 @@ nav: - Contributing New Providers: 'auth/add-auth-provider.md' - Service to Service Auth: 'auth/service-to-service-auth.md' - Troubleshooting Auth: 'auth/troubleshooting.md' - - Glossary: 'auth/glossary.md' - Deployment: - Deploying Backstage: 'deployment/index.md' - Scaling: 'deployment/scaling.md' @@ -214,4 +212,9 @@ nav: - ADR011 - Plugin Package Structure: 'architecture-decisions/adr011-plugin-package-structure.md' - ADR012 - Plugin Package Structure: 'architecture-decisions/adr012-use-luxon-locale-and-date-presets.md' - ADR013 - Plugin Package Structure: 'architecture-decisions/adr013-use-node-fetch.md' - - FAQ: FAQ.md + - FAQ: + - Overview: 'faq/index.md' + - Product FAQ: 'faq/product.md' + - Technical FAQ: 'faq/technical.md' + - References: + - Glossary: 'references/glossary.md' diff --git a/package.json b/package.json index 483e02fdb5..e224d1e58a 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,13 @@ "start-backend": "yarn workspace example-backend start", "start:next": "yarn workspace example-app-next start", "start-backend:next": "yarn workspace example-backend-next start", + "start:microsite": "cd microsite/ && yarn start", "build:backend": "yarn workspace example-backend build", "build:all": "backstage-cli repo build --all", "build:api-reports": "yarn build:api-reports:only --tsc", "build:api-reports:only": "backstage-repo-tools api-reports --allow-warnings 'packages/core-components,plugins/+(catalog|catalog-import|git-release-manager|jenkins|kubernetes)' -o ae-wrong-input-file-type --validate-release-tags", - "build:api-docs": "LANG=en_EN yarn build:api-reports --docs", + "build:knip-reports": "backstage-repo-tools knip-reports", + "build:api-docs": "LANG=en_EN yarn build:api-reports --docs --exclude 'plugins/@(adr|adr-backend|adr-common|airbrake|airbrake-backend|allure|analytics-module-ga|analytics-module-ga4|analytics-module-newrelic-browser|apache-airflow|api-docs|api-docs-module-protoc-gen-doc|apollo-explorer|app-visualizer|azure-devops|azure-devops-backend|azure-devops-common|azure-sites|azure-sites-backend|azure-sites-common|badges|badges-backend|bazaar|bazaar-backend|bitbucket-cloud-common|bitrise|catalog-graph|catalog-graphql|catalog-import|catalog-unprocessed-entities|cicd-statistics|cicd-statistics-module-gitlab|circleci|cloudbuild|code-climate|code-coverage|code-coverage-backend|codescene|config-schema|cost-insights|cost-insights-common|dynatrace|entity-feedback|entity-feedback-backend|entity-feedback-common|entity-validation|example-todo-list|example-todo-list-backend|example-todo-list-common|firehydrant|fossa|gcalendar|gcp-projects|git-release-manager|github-actions|github-deployments|github-issues|github-pull-requests-board|gitops-profiles|gocd|graphiql|graphql-backend|graphql-voyager|ilert|jenkins|jenkins-backend|jenkins-common|kafka|kafka-backend|lighthouse|lighthouse-backend|lighthouse-common|linguist|linguist-backend|linguist-common|microsoft-calendar|newrelic|newrelic-dashboard|nomad|nomad-backend|octopus-deploy|opencost|pagerduty|periskop|periskop-backend|playlist|playlist-backend|playlist-common|proxy-backend|puppetdb|rollbar|rollbar-backend|sentry|shortcuts|splunk-on-call|stack-overflow|stack-overflow-backend|stackstorm|tech-radar|tech-radar-2|todo|todo-backend|xcmetrics)'", "build:plugins-report": "node ./scripts/build-plugins-report", "tsc": "tsc", "tsc:full": "backstage-cli repo clean && tsc --skipLibCheck false --incremental false", @@ -28,7 +30,7 @@ "lint:docs": "node ./scripts/check-docs-quality", "lint:all": "backstage-cli repo lint", "lint:type-deps": "backstage-repo-tools type-deps", - "docker-build": "yarn tsc && yarn workspace example-backend build --build-dependencies && yarn workspace example-backend build-image", + "docker-build": "yarn tsc && yarn workspace example-backend build && yarn workspace example-backend build-image", "new": "backstage-cli new --scope backstage --baseVersion 0.0.0 --no-private", "create-plugin": "echo \"use 'yarn new' instead\"", "release": "node scripts/prepare-release.js && changeset version && yarn prettier --write '{packages,plugins}/*/{package.json,CHANGELOG.md}' '.changeset/*.json' && yarn install --no-immutable", @@ -40,8 +42,12 @@ "build-storybook": "yarn ./storybook run build-storybook", "techdocs-cli": "node scripts/techdocs-cli.js", "techdocs-cli:dev": "cross-env TECHDOCS_CLI_DEV_MODE=true node scripts/techdocs-cli.js", - "prepare": "husky install", - "postinstall": "husky install || true" + "prepare": "husky", + "postinstall": "husky || true" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage" }, "workspaces": { "packages": [ @@ -56,7 +62,7 @@ "@material-ui/pickers@^3.3.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch", "@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch" }, - "version": "1.22.0", + "version": "1.23.0-next.3", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3", @@ -84,16 +90,18 @@ "eslint-plugin-notice": "^0.9.10", "eslint-plugin-react": "^7.28.0", "eslint-plugin-testing-library": "^6.0.0", - "fs-extra": "10.1.0", - "husky": "^8.0.0", + "fs-extra": "^11.2.0", + "husky": "^9.0.0", + "knip": "^5.0.0", "lint-staged": "^15.0.0", "minimist": "^1.2.5", "node-gyp": "^10.0.0", "prettier": "^2.2.1", "semver": "^7.5.3", "shx": "^0.3.2", + "sloc": "^0.3.1", "ts-node": "^10.4.0", - "typescript": "~5.2.0" + "typescript": "~5.1.0" }, "prettier": "@spotify/prettier-config", "lint-staged": { diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 5f815f4b0e..0d6ad6c66f 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,61 @@ # @backstage/app-defaults +## 1.5.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.5.1-next.1 + - @backstage/core-components@0.14.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + +## 1.5.0-next.2 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 214f2da: Fix invalid HTTP status code 501 in Error Page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + +## 1.4.8-next.1 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## 1.4.8-next.0 + +### Patch Changes + +- f899eec: Change default icon for `kind:resource` to the storage icon. +- Updated dependencies + - @backstage/core-components@0.13.10 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.19 + ## 1.4.7 ### Patch Changes diff --git a/packages/app-defaults/README.md b/packages/app-defaults/README.md index cfdaf36acb..ebaaacafe3 100644 --- a/packages/app-defaults/README.md +++ b/packages/app-defaults/README.md @@ -8,7 +8,7 @@ Install the package via Yarn: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/app-defaults +yarn --cwd packages/app add @backstage/app-defaults ``` ## Documentation diff --git a/packages/app-defaults/knip-report.md b/packages/app-defaults/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/app-defaults/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index bf7b56f8c2..4f5d76829b 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.4.7", + "version": "1.5.0-next.3", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-defaults/src/defaults/apis.ts b/packages/app-defaults/src/defaults/apis.ts index 3a552c25c7..4e9e1a492c 100644 --- a/packages/app-defaults/src/defaults/apis.ts +++ b/packages/app-defaults/src/defaults/apis.ts @@ -34,6 +34,7 @@ import { AtlassianAuth, createFetchApi, FetchMiddlewares, + VMwareCloudAuth, } from '@backstage/core-app-api'; import { @@ -56,6 +57,7 @@ import { bitbucketAuthApiRef, bitbucketServerAuthApiRef, atlassianAuthApiRef, + vmwareCloudAuthApiRef, } from '@backstage/core-plugin-api'; import { permissionApiRef, @@ -224,7 +226,7 @@ export const apis = [ configApi, discoveryApi, oauthRequestApi, - defaultScopes: ['team'], + defaultScopes: ['account'], environment: configApi.getOptionalString('auth.environment'), }), }), @@ -259,6 +261,22 @@ export const apis = [ }); }, }), + createApiFactory({ + api: vmwareCloudAuthApiRef, + deps: { + discoveryApi: discoveryApiRef, + oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, + }, + factory: ({ discoveryApi, oauthRequestApi, configApi }) => { + return VMwareCloudAuth.create({ + configApi, + discoveryApi, + oauthRequestApi, + environment: configApi.getOptionalString('auth.environment'), + }); + }, + }), createApiFactory({ api: permissionApiRef, deps: { diff --git a/packages/app-defaults/src/defaults/components.tsx b/packages/app-defaults/src/defaults/components.tsx index 93a5d9cd50..9b58694f2b 100644 --- a/packages/app-defaults/src/defaults/components.tsx +++ b/packages/app-defaults/src/defaults/components.tsx @@ -49,7 +49,7 @@ const DefaultBootErrorPage = ({ step, error }: BootErrorPageProps) => { // TODO: figure out a nicer way to handle routing on the error page, when it can be done. return ( - + ); }; diff --git a/packages/app-defaults/src/defaults/icons.tsx b/packages/app-defaults/src/defaults/icons.tsx index fbdfb14e5b..1ed5bf03c6 100644 --- a/packages/app-defaults/src/defaults/icons.tsx +++ b/packages/app-defaults/src/defaults/icons.tsx @@ -34,7 +34,7 @@ import MuiMenuBookIcon from '@material-ui/icons/MenuBook'; import MuiPeopleIcon from '@material-ui/icons/People'; import MuiPersonIcon from '@material-ui/icons/Person'; import MuiWarningIcon from '@material-ui/icons/Warning'; -import MuiWorkIcon from '@material-ui/icons/Work'; +import MuiStorageIcon from '@material-ui/icons/Storage'; import MuiFeaturedPlayListIcon from '@material-ui/icons/FeaturedPlayList'; export const icons = { @@ -58,7 +58,7 @@ export const icons = { 'kind:location': MuiLocationOnIcon as IconComponent, 'kind:system': MuiCategoryIcon as IconComponent, 'kind:user': MuiPersonIcon as IconComponent, - 'kind:resource': MuiWorkIcon as IconComponent, + 'kind:resource': MuiStorageIcon as IconComponent, 'kind:template': MuiFeaturedPlayListIcon as IconComponent, user: MuiPersonIcon as IconComponent, warning: MuiWarningIcon as IconComponent, diff --git a/packages/app-next-example-plugin/CHANGELOG.md b/packages/app-next-example-plugin/CHANGELOG.md index 6f0545a801..4945a70bd6 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,37 @@ # app-next-example-plugin +## 0.0.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.2 + - @backstage/frontend-plugin-api@0.6.0-next.3 + +## 0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## 0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + +## 0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/core-components@0.13.10 + ## 0.0.5 ### Patch Changes diff --git a/packages/app-next-example-plugin/knip-report.md b/packages/app-next-example-plugin/knip-report.md new file mode 100644 index 0000000000..e01cd18c93 --- /dev/null +++ b/packages/app-next-example-plugin/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | Severity | +| :---------- | :----------- | :------- | +| cross-fetch | package.json | error | +| msw | package.json | error | + diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index c7669d93cb..1a095ea511 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -1,7 +1,7 @@ { "name": "app-next-example-plugin", "description": "Backstage internal example plugin", - "version": "0.0.5", + "version": "0.0.6-next.3", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index 6272ef11df..8c03638e13 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,309 @@ # example-app-next +## 0.0.6-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-api-docs@0.11.0-next.3 + - @backstage/cli@0.25.2-next.3 + - @backstage/plugin-kubernetes@0.11.5-next.3 + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-playlist@0.2.4-next.3 + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/frontend-app-api@0.6.0-next.3 + - @backstage/plugin-app-visualizer@0.1.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-gcp-projects@0.3.46-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.3 + - @backstage/plugin-scaffolder@1.18.0-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.3 + - @backstage/plugin-home@0.6.2-next.3 + - @backstage/plugin-gcalendar@0.3.23-next.2 + - @backstage/plugin-microsoft-calendar@0.1.12-next.2 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/plugin-catalog-import@0.10.6-next.3 + - @backstage/plugin-github-actions@0.6.11-next.3 + - @backstage/plugin-dynatrace@9.0.0-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - app-next-example-plugin@0.0.6-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-compat-api@0.2.0-next.3 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.3 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-adr@0.6.13-next.3 + - @backstage/plugin-airbrake@0.3.30-next.3 + - @backstage/plugin-apache-airflow@0.2.20-next.2 + - @backstage/plugin-azure-devops@0.3.12-next.3 + - @backstage/plugin-azure-sites@0.1.19-next.3 + - @backstage/plugin-badges@0.2.54-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-graph@0.4.0-next.3 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.2 + - @backstage/plugin-cloudbuild@0.4.0-next.3 + - @backstage/plugin-code-coverage@0.2.23-next.3 + - @backstage/plugin-cost-insights@0.12.19-next.3 + - @backstage/plugin-devtools@0.1.9-next.3 + - @backstage/plugin-entity-feedback@0.2.13-next.3 + - @backstage/plugin-explore@0.4.16-next.3 + - @backstage/plugin-gocd@0.1.36-next.3 + - @backstage/plugin-graphiql@0.3.3-next.3 + - @backstage/plugin-jenkins@0.9.5-next.3 + - @backstage/plugin-kafka@0.3.30-next.3 + - @backstage/plugin-lighthouse@0.4.15-next.3 + - @backstage/plugin-linguist@0.1.15-next.3 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-newrelic@0.3.45-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.3 + - @backstage/plugin-octopus-deploy@0.2.12-next.3 + - @backstage/plugin-org@0.6.20-next.3 + - @backstage/plugin-pagerduty@0.7.2-next.3 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.3 + - @backstage/plugin-rollbar@0.4.30-next.3 + - @backstage/plugin-search@1.4.6-next.3 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-sentry@0.5.15-next.3 + - @backstage/plugin-shortcuts@0.3.19-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.3 + - @backstage/plugin-tech-radar@0.6.13-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + - @backstage/plugin-todo@0.2.34-next.3 + - @backstage/plugin-user-settings@0.8.1-next.3 + +## 0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - app-next-example-plugin@0.0.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.2 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - app-next-example-plugin@0.0.6-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 0.0.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-compat-api@0.1.2-next.0 + - @backstage/plugin-catalog-import@0.10.6-next.0 + - @backstage/plugin-catalog-graph@0.3.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/plugin-adr@0.6.13-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/frontend-app-api@0.6.0-next.0 + - @backstage/plugin-scaffolder-react@1.8.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.0 + - @backstage/plugin-devtools@0.1.9-next.0 + - @backstage/frontend-plugin-api@0.5.1-next.0 + - @backstage/plugin-user-settings@0.8.1-next.0 + - @backstage/plugin-tech-radar@0.6.13-next.0 + - @backstage/plugin-graphiql@0.3.3-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/plugin-search@1.4.6-next.0 + - @backstage/plugin-api-docs@0.10.4-next.0 + - @backstage/cli@0.25.2-next.0 + - @backstage/plugin-home@0.6.2-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.0 + - @backstage/plugin-azure-devops@0.3.12-next.0 + - @backstage/plugin-linguist@0.1.15-next.0 + - @backstage/plugin-airbrake@0.3.30-next.0 + - @backstage/plugin-azure-sites@0.1.19-next.0 + - @backstage/plugin-badges@0.2.54-next.0 + - @backstage/plugin-code-coverage@0.2.23-next.0 + - @backstage/plugin-cost-insights@0.12.19-next.0 + - @backstage/plugin-dynatrace@8.0.4-next.0 + - @backstage/plugin-entity-feedback@0.2.13-next.0 + - @backstage/plugin-explore@0.4.16-next.0 + - @backstage/plugin-github-actions@0.6.11-next.0 + - @backstage/plugin-gocd@0.1.36-next.0 + - @backstage/plugin-jenkins@0.9.5-next.0 + - @backstage/plugin-kafka@0.3.30-next.0 + - @backstage/plugin-kubernetes@0.11.5-next.0 + - @backstage/plugin-lighthouse@0.4.15-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.0 + - @backstage/plugin-octopus-deploy@0.2.12-next.0 + - @backstage/plugin-org@0.6.20-next.0 + - @backstage/plugin-pagerduty@0.7.2-next.0 + - @backstage/plugin-playlist@0.2.4-next.0 + - @backstage/plugin-puppetdb@0.1.13-next.0 + - @backstage/plugin-rollbar@0.4.30-next.0 + - @backstage/plugin-sentry@0.5.15-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.0 + - @backstage/plugin-todo@0.2.34-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - app-next-example-plugin@0.0.6-next.0 + - @backstage/plugin-app-visualizer@0.1.1-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-apache-airflow@0.2.19 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-catalog-unprocessed-entities@0.1.7 + - @backstage/plugin-gcalendar@0.3.22 + - @backstage/plugin-gcp-projects@0.3.45 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-microsoft-calendar@0.1.11 + - @backstage/plugin-newrelic@0.3.44 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-shortcuts@0.3.18 + - @backstage/plugin-stackstorm@0.1.10 + - @backstage/plugin-techdocs-react@1.1.15 + ## 0.0.5 ### Patch Changes diff --git a/packages/app-next/app-config.yaml b/packages/app-next/app-config.yaml index 77f4284455..408b08acee 100644 --- a/packages/app-next/app-config.yaml +++ b/packages/app-next/app-config.yaml @@ -1,23 +1,48 @@ app: experimental: packages: 'all' # ✨ + routes: bindings: - plugin.pages.externalRoutes.pageX: plugin.pages.routes.pageX - plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot + catalog.viewTechDoc: techdocs.docRoot + catalog.createComponent: catalog-import.importPage + org.catalogIndex: catalog.catalogIndex extensions: # - apis.plugin.graphiql.browse.gitlab: true - graphiql-endpoint:graphiql/gitlab: true + # Entity page cards - entity-card:catalog/about - entity-card:catalog/labels - entity-card:catalog/links: config: filter: kind:component has:links - entity-card:linguist/languages + - entity-card:catalog-graph/relations: + config: + height: 300 + - entity-card:azure-devops/readme + - entity-card:api-docs/has-apis + - entity-card:api-docs/consumed-apis + - entity-card:api-docs/provided-apis + - entity-card:api-docs/providing-components + - entity-card:api-docs/consuming-components + + # - entity-card:azure-devops/readme # Entity page content + - entity-content:api-docs/definition + - entity-content:api-docs/apis - entity-content:techdocs + # - entity-content:azure-devops/pipelines + # - entity-content:azure-devops/pull-requests + # - entity-content:azure-devops/git-tags + + # Org Plugin + - entity-card:org/group-profile + - entity-card:org/members-list + - entity-card:org/ownership + - entity-card:org/user-profile # scmAuthExtension: >- # createScmAuthExtension({ diff --git a/packages/app-next/knip-report.md b/packages/app-next/knip-report.md new file mode 100644 index 0000000000..78d11bdebd --- /dev/null +++ b/packages/app-next/knip-report.md @@ -0,0 +1,81 @@ +# Knip report + +## Unused dependencies (63) + +| Name | Location | Severity | +| :----------------------------------------------- | :----------- | :------- | +| @backstage/plugin-techdocs-module-addons-contrib | package.json | error | +| @roadiehq/backstage-plugin-github-pull-requests | package.json | error | +| @backstage/plugin-catalog-unprocessed-entities | package.json | error | +| @roadiehq/backstage-plugin-github-insights | package.json | error | +| @oriflame/backstage-plugin-score-card | package.json | error | +| @backstage/plugin-newrelic-dashboard | package.json | error | +| @roadiehq/backstage-plugin-buildkite | package.json | error | +| @roadiehq/backstage-plugin-travis-ci | package.json | error | +| @backstage/plugin-permission-react | package.json | error | +| @backstage/plugin-scaffolder-react | package.json | error | +| @backstage/plugin-entity-feedback | package.json | error | +| @backstage/plugin-linguist-common | package.json | error | +| @backstage/plugin-apache-airflow | package.json | error | +| @backstage/plugin-catalog-common | package.json | error | +| @backstage/plugin-github-actions | package.json | error | +| @backstage/plugin-octopus-deploy | package.json | error | +| @backstage/plugin-techdocs-react | package.json | error | +| @backstage/plugin-catalog-graph | package.json | error | +| @backstage/plugin-catalog-react | package.json | error | +| @backstage/plugin-code-coverage | package.json | error | +| @backstage/plugin-cost-insights | package.json | error | +| @backstage/plugin-search-common | package.json | error | +| @backstage/plugin-tech-insights | package.json | error | +| @backstage/plugin-azure-devops | package.json | error | +| @backstage/plugin-gcp-projects | package.json | error | +| @backstage/plugin-search-react | package.json | error | +| @backstage/plugin-azure-sites | package.json | error | +| @backstage/plugin-cloudbuild | package.json | error | +| @backstage/plugin-kubernetes | package.json | error | +| @backstage/plugin-lighthouse | package.json | error | +| @backstage/plugin-scaffolder | package.json | error | +| @backstage/plugin-stackstorm | package.json | error | +| @backstage/plugin-dynatrace | package.json | error | +| @backstage/plugin-shortcuts | package.json | error | +| @backstage/plugin-airbrake | package.json | error | +| @backstage/plugin-api-docs | package.json | error | +| @backstage/plugin-devtools | package.json | error | +| @backstage/plugin-linguist | package.json | error | +| @backstage/plugin-newrelic | package.json | error | +| @backstage/plugin-playlist | package.json | error | +| @backstage/plugin-puppetdb | package.json | error | +| @circleci/backstage-plugin | package.json | error | +| @backstage/plugin-catalog | package.json | error | +| @backstage/plugin-explore | package.json | error | +| @backstage/plugin-jenkins | package.json | error | +| @backstage/plugin-rollbar | package.json | error | +| @backstage/catalog-model | package.json | error | +| @backstage/plugin-badges | package.json | error | +| @backstage/plugin-search | package.json | error | +| @backstage/plugin-sentry | package.json | error | +| @backstage/app-defaults | package.json | error | +| @backstage/plugin-kafka | package.json | error | +| app-next-example-plugin | package.json | error | +| @backstage/plugin-gocd | package.json | error | +| @backstage/plugin-todo | package.json | error | +| @backstage/plugin-adr | package.json | error | +| @backstage/plugin-org | package.json | error | +| @material-ui/lab | package.json | error | +| zen-observable | package.json | error | +| @octokit/rest | package.json | error | +| react-use | package.json | error | +| history | package.json | error | +| lodash | package.json | error | + +## Unused devDependencies (6) + +| Name | Location | Severity | +| :-------------------------- | :----------- | :------- | +| @testing-library/user-event | package.json | error | +| @testing-library/react | package.json | error | +| @types/zen-observable | package.json | error | +| @testing-library/dom | package.json | error | +| @types/jquery | package.json | error | +| cross-env | package.json | error | + diff --git a/packages/app-next/package.json b/packages/app-next/package.json index c51631aaa3..b5eaea967a 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,7 +1,12 @@ { "name": "example-app-next", - "version": "0.0.5", + "version": "0.0.6-next.3", "private": true, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/app-next" + }, "backstage": { "role": "frontend" }, @@ -81,7 +86,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@oriflame/backstage-plugin-score-card": "^0.7.0", + "@oriflame/backstage-plugin-score-card": "^0.8.0", "@roadiehq/backstage-plugin-buildkite": "^2.0.8", "@roadiehq/backstage-plugin-github-insights": "^2.0.5", "@roadiehq/backstage-plugin-github-pull-requests": "^2.2.7", diff --git a/packages/app-next/src/App.tsx b/packages/app-next/src/App.tsx index ec333ce38f..03a6649c27 100644 --- a/packages/app-next/src/App.tsx +++ b/packages/app-next/src/App.tsx @@ -51,8 +51,6 @@ import { import { createSignInPageExtension } from '@backstage/frontend-plugin-api'; import { SignInPage } from '@backstage/core-components'; -import linguistPlugin from '@backstage/plugin-linguist/alpha'; - /* # Notes @@ -127,7 +125,6 @@ const app = createApp({ userSettingsPlugin, homePlugin, appVisualizerPlugin, - linguistPlugin, ...collectedLegacyPlugins, createExtensionOverrides({ extensions: [ diff --git a/packages/app-next/src/examples/pagesPlugin.tsx b/packages/app-next/src/examples/pagesPlugin.tsx index c5069f99c3..826040a6cb 100644 --- a/packages/app-next/src/examples/pagesPlugin.tsx +++ b/packages/app-next/src/examples/pagesPlugin.tsx @@ -27,7 +27,9 @@ import { Route, Routes } from 'react-router-dom'; const indexRouteRef = createRouteRef(); const page1RouteRef = createRouteRef(); -export const externalPageXRouteRef = createExternalRouteRef(); +export const externalPageXRouteRef = createExternalRouteRef({ + defaultTarget: 'pages.pageX', +}); export const pageXRouteRef = createRouteRef(); // const page2RouteRef = createSubRouteRef({ // id: 'page2', diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 6cf62774c1..59cf109021 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,315 @@ # example-app +## 0.2.92-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-api-docs@0.11.0-next.3 + - @backstage/cli@0.25.2-next.3 + - @backstage/plugin-kubernetes@0.11.5-next.3 + - @backstage/theme@0.5.1-next.1 + - @backstage/plugin-playlist@0.2.4-next.3 + - @backstage/plugin-catalog@1.17.0-next.3 + - @backstage/frontend-app-api@0.6.0-next.3 + - @backstage/plugin-notifications@0.0.1-next.1 + - @backstage/plugin-signals@0.0.1-next.3 + - @backstage/core-components@0.14.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.3 + - @backstage/plugin-gcp-projects@0.3.46-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.3 + - @backstage/plugin-scaffolder@1.18.0-next.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.3 + - @backstage/plugin-home@0.6.2-next.3 + - @backstage/plugin-gcalendar@0.3.23-next.2 + - @backstage/plugin-microsoft-calendar@0.1.12-next.2 + - @backstage/plugin-techdocs@1.10.0-next.3 + - @backstage/plugin-catalog-import@0.10.6-next.3 + - @backstage/plugin-github-actions@0.6.11-next.3 + - @backstage/plugin-dynatrace@9.0.0-next.3 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.3 + - @backstage/app-defaults@1.5.0-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.2 + - @backstage/plugin-adr@0.6.13-next.3 + - @backstage/plugin-airbrake@0.3.30-next.3 + - @backstage/plugin-apache-airflow@0.2.20-next.2 + - @backstage/plugin-azure-devops@0.3.12-next.3 + - @backstage/plugin-azure-sites@0.1.19-next.3 + - @backstage/plugin-badges@0.2.54-next.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-graph@0.4.0-next.3 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.2 + - @backstage/plugin-cloudbuild@0.4.0-next.3 + - @backstage/plugin-code-coverage@0.2.23-next.3 + - @backstage/plugin-cost-insights@0.12.19-next.3 + - @backstage/plugin-devtools@0.1.9-next.3 + - @backstage/plugin-entity-feedback@0.2.13-next.3 + - @backstage/plugin-explore@0.4.16-next.3 + - @backstage/plugin-gocd@0.1.36-next.3 + - @backstage/plugin-graphiql@0.3.3-next.3 + - @backstage/plugin-jenkins@0.9.5-next.3 + - @backstage/plugin-kafka@0.3.30-next.3 + - @backstage/plugin-lighthouse@0.4.15-next.3 + - @backstage/plugin-linguist@0.1.15-next.3 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-newrelic@0.3.45-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.3 + - @backstage/plugin-nomad@0.1.11-next.3 + - @backstage/plugin-octopus-deploy@0.2.12-next.3 + - @backstage/plugin-org@0.6.20-next.3 + - @backstage/plugin-pagerduty@0.7.2-next.3 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.3 + - @backstage/plugin-rollbar@0.4.30-next.3 + - @backstage/plugin-search@1.4.6-next.3 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-search-react@1.7.6-next.3 + - @backstage/plugin-sentry@0.5.15-next.3 + - @backstage/plugin-shortcuts@0.3.19-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.3 + - @backstage/plugin-stackstorm@0.1.11-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.3 + - @backstage/plugin-tech-radar@0.6.13-next.3 + - @backstage/plugin-techdocs-react@1.1.16-next.2 + - @backstage/plugin-todo@0.2.34-next.3 + - @backstage/plugin-user-settings@0.8.1-next.3 + +## 0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-signals@0.0.1-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-nomad@0.1.11-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/plugin-notifications@0.0.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-stack-overflow@0.1.25-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-nomad@0.1.11-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-signals@0.0.1-next.1 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 0.2.92-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.6-next.0 + - @backstage/plugin-catalog-graph@0.3.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.0 + - @backstage/plugin-adr@0.6.13-next.0 + - @backstage/app-defaults@1.4.8-next.0 + - @backstage/frontend-app-api@0.6.0-next.0 + - @backstage/plugin-scaffolder-react@1.8.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.0 + - @backstage/plugin-devtools@0.1.9-next.0 + - @backstage/plugin-user-settings@0.8.1-next.0 + - @backstage/plugin-tech-radar@0.6.13-next.0 + - @backstage/plugin-graphiql@0.3.3-next.0 + - @backstage/plugin-techdocs@1.9.4-next.0 + - @backstage/plugin-search@1.4.6-next.0 + - @backstage/plugin-api-docs@0.10.4-next.0 + - @backstage/cli@0.25.2-next.0 + - @backstage/plugin-stack-overflow@0.1.25-next.0 + - @backstage/plugin-signals@0.0.1-next.0 + - @backstage/plugin-home@0.6.2-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.0 + - @backstage/plugin-azure-devops@0.3.12-next.0 + - @backstage/plugin-linguist@0.1.15-next.0 + - @backstage/plugin-airbrake@0.3.30-next.0 + - @backstage/plugin-azure-sites@0.1.19-next.0 + - @backstage/plugin-badges@0.2.54-next.0 + - @backstage/plugin-code-coverage@0.2.23-next.0 + - @backstage/plugin-cost-insights@0.12.19-next.0 + - @backstage/plugin-dynatrace@8.0.4-next.0 + - @backstage/plugin-entity-feedback@0.2.13-next.0 + - @backstage/plugin-explore@0.4.16-next.0 + - @backstage/plugin-github-actions@0.6.11-next.0 + - @backstage/plugin-gocd@0.1.36-next.0 + - @backstage/plugin-jenkins@0.9.5-next.0 + - @backstage/plugin-kafka@0.3.30-next.0 + - @backstage/plugin-kubernetes@0.11.5-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.0 + - @backstage/plugin-lighthouse@0.4.15-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.0 + - @backstage/plugin-nomad@0.1.11-next.0 + - @backstage/plugin-octopus-deploy@0.2.12-next.0 + - @backstage/plugin-org@0.6.20-next.0 + - @backstage/plugin-pagerduty@0.7.2-next.0 + - @backstage/plugin-playlist@0.2.4-next.0 + - @backstage/plugin-puppetdb@0.1.13-next.0 + - @backstage/plugin-rollbar@0.4.30-next.0 + - @backstage/plugin-sentry@0.5.15-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.0 + - @backstage/plugin-todo@0.2.34-next.0 + - @backstage/core-components@0.13.10 + - @backstage/plugin-search-react@1.7.6-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-app-api@1.11.3 + - @backstage/core-plugin-api@1.8.2 + - @backstage/integration-react@1.1.23 + - @backstage/theme@0.5.0 + - @backstage/plugin-apache-airflow@0.2.19 + - @backstage/plugin-catalog-common@1.0.20 + - @backstage/plugin-catalog-unprocessed-entities@0.1.7 + - @backstage/plugin-gcalendar@0.3.22 + - @backstage/plugin-gcp-projects@0.3.45 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-microsoft-calendar@0.1.11 + - @backstage/plugin-newrelic@0.3.44 + - @backstage/plugin-permission-react@0.4.19 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-shortcuts@0.3.18 + - @backstage/plugin-stackstorm@0.1.10 + - @backstage/plugin-techdocs-react@1.1.15 + ## 0.2.91 ### Patch Changes diff --git a/packages/app/knip-report.md b/packages/app/knip-report.md new file mode 100644 index 0000000000..118f6f14e0 --- /dev/null +++ b/packages/app/knip-report.md @@ -0,0 +1,37 @@ +# Knip report + +## Unused dependencies (14) + +| Name | Location | Severity | +| :-------------------------------- | :----------- | :------- | +| @backstage/plugin-linguist-common | package.json | error | +| @backstage/plugin-search-common | package.json | error | +| @backstage/plugin-azure-sites | package.json | error | +| @backstage/frontend-app-api | package.json | error | +| @backstage/plugin-airbrake | package.json | error | +| vite-plugin-node-polyfills | package.json | error | +| @vitejs/plugin-react | package.json | error | +| @material-ui/lab | package.json | error | +| vite-plugin-html | package.json | error | +| zen-observable | package.json | error | +| @octokit/rest | package.json | error | +| react-router | package.json | error | +| history | package.json | error | +| vite | package.json | error | + +## Unused devDependencies (5) + +| Name | Location | Severity | +| :-------------------------- | :----------- | :------- | +| @testing-library/user-event | package.json | error | +| @types/zen-observable | package.json | error | +| @testing-library/dom | package.json | error | +| @types/jquery | package.json | error | +| cross-env | package.json | error | + +## Unlisted dependencies (1) + +| Name | Location | Severity | +| :---------- | :------------------------------------------------------- | :------- | +| @rjsf/utils | src/components/scaffolder/customScaffolderExtensions.tsx | error | + diff --git a/packages/app/package.json b/packages/app/package.json index fbbe6ce09d..0cdc016b8f 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.91", + "version": "0.2.92-next.3", "private": true, "backstage": { "role": "frontend" @@ -59,6 +59,7 @@ "@backstage/plugin-newrelic": "workspace:^", "@backstage/plugin-newrelic-dashboard": "workspace:^", "@backstage/plugin-nomad": "workspace:^", + "@backstage/plugin-notifications": "workspace:^", "@backstage/plugin-octopus-deploy": "workspace:^", "@backstage/plugin-org": "workspace:^", "@backstage/plugin-pagerduty": "workspace:^", @@ -73,6 +74,7 @@ "@backstage/plugin-search-react": "workspace:^", "@backstage/plugin-sentry": "workspace:^", "@backstage/plugin-shortcuts": "workspace:^", + "@backstage/plugin-signals": "workspace:^", "@backstage/plugin-stack-overflow": "workspace:^", "@backstage/plugin-stackstorm": "workspace:^", "@backstage/plugin-tech-insights": "workspace:^", @@ -88,7 +90,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@oriflame/backstage-plugin-score-card": "^0.7.0", + "@oriflame/backstage-plugin-score-card": "^0.8.0", "@roadiehq/backstage-plugin-buildkite": "^2.0.8", "@roadiehq/backstage-plugin-github-insights": "^2.0.5", "@roadiehq/backstage-plugin-github-pull-requests": "^2.2.7", @@ -102,7 +104,7 @@ "react-use": "^17.2.4", "vite": "^4.4.9", "vite-plugin-html": "^3.2.0", - "vite-plugin-node-polyfills": "^0.17.0", + "vite-plugin-node-polyfills": "^0.21.0", "zen-observable": "^0.10.0" }, "devDependencies": { diff --git a/packages/app/public/index.html b/packages/app/public/index.html index a3c3ef19b8..231e96b309 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -41,7 +41,7 @@ href="<%= publicPath %>/safari-pinned-tab.svg" color="#5bbad5" /> - <%= config.getString('app.title') %> + <%= config.getOptionalString('app.title') ?? 'Backstage' %> <% if (config.has('app.datadogRum')) { %>