diff --git a/.changeset/afraid-flies-try.md b/.changeset/afraid-flies-try.md deleted file mode 100644 index 15d2e3942c..0000000000 --- a/.changeset/afraid-flies-try.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-cost-insights': patch ---- - -Move cost-insights data specific API types (non react) into an @backstage/plugin-cost-insights-common -isomorphic package. This allows these types to be shared in any backend packages or other cost-insight -modules. diff --git a/.changeset/beige-carpets-double.md b/.changeset/beige-carpets-double.md deleted file mode 100644 index 98e0d8d69a..0000000000 --- a/.changeset/beige-carpets-double.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-code-coverage': minor ---- - -Cleaned up API exports. - -The `Router` export has been removed; users are expected to use `EntityCodeCoverageContent` instead. - -The `isPluginApplicableToEntity` helper has been deprecated, in favor of the `isCodeCoverageAvailable` helper. diff --git a/.changeset/beige-carpets-triple.md b/.changeset/beige-carpets-triple.md deleted file mode 100644 index 5eda26fb02..0000000000 --- a/.changeset/beige-carpets-triple.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-code-coverage-backend': minor ---- - -Cleaned up API exports. - -The `CodeCoverageApi` and `makeRouter` exports have been removed from the backend, since they were not meant to be exported in the first place. diff --git a/.changeset/beige-horses-scream.md b/.changeset/beige-horses-scream.md deleted file mode 100644 index 2034491108..0000000000 --- a/.changeset/beige-horses-scream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-pull-requests-board': patch ---- - -Fix bug on fetching teams repositories where were being filtered by type service unnecessarily diff --git a/.changeset/beige-kiwis-know.md b/.changeset/beige-kiwis-know.md deleted file mode 100644 index 696b9e81cb..0000000000 --- a/.changeset/beige-kiwis-know.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-plugin-api': minor ---- - -Introduced new package for creating backend plugins using the new alpha backend plugin framework. -This package is still considered **EXPERIMENTAL** and things will change without warning. Do not use this for production. diff --git a/.changeset/blue-monkeys-explain.md b/.changeset/blue-monkeys-explain.md deleted file mode 100644 index 69382ff11d..0000000000 --- a/.changeset/blue-monkeys-explain.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Adds the ability to define the Backstage app name using a `BACKSTAGE_APP_NAME` -environment variable when running `create-app`. diff --git a/.changeset/brave-badgers-pump.md b/.changeset/brave-badgers-pump.md deleted file mode 100644 index 18dea30990..0000000000 --- a/.changeset/brave-badgers-pump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Fixed bug where catalog metrics weren't being tracked. diff --git a/.changeset/breezy-poems-grab.md b/.changeset/breezy-poems-grab.md deleted file mode 100644 index ac250b9c7e..0000000000 --- a/.changeset/breezy-poems-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': patch ---- - -TechInsightsBackend: Added missing 'scheduler' to code examples diff --git a/.changeset/breezy-seas-exist.md b/.changeset/breezy-seas-exist.md deleted file mode 100644 index 2b061f11a8..0000000000 --- a/.changeset/breezy-seas-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -The template editor now shows the cause of request errors that happen during a dry-run. diff --git a/.changeset/breezy-spiders-eat.md b/.changeset/breezy-spiders-eat.md deleted file mode 100644 index d163fc365f..0000000000 --- a/.changeset/breezy-spiders-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Fix Error Code in Register Component DryRun diff --git a/.changeset/bright-balloons-hide.md b/.changeset/bright-balloons-hide.md deleted file mode 100644 index 5163e72dc1..0000000000 --- a/.changeset/bright-balloons-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Change BackstageIconLinkVertical style to use pallette instead of explicit color diff --git a/.changeset/calm-experts-buy.md b/.changeset/calm-experts-buy.md deleted file mode 100644 index d95844e298..0000000000 --- a/.changeset/calm-experts-buy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': minor ---- - -Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` diff --git a/.changeset/chilled-mirrors-grab.md b/.changeset/chilled-mirrors-grab.md deleted file mode 100644 index ecc95680e2..0000000000 --- a/.changeset/chilled-mirrors-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Fix parsing of S3 URLs for the default region. diff --git a/.changeset/cold-coins-tickle.md b/.changeset/cold-coins-tickle.md deleted file mode 100644 index 301a9d0a84..0000000000 --- a/.changeset/cold-coins-tickle.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': minor ---- - -Added an option to be able to trigger refreshes on entities based on a prestored arbitrary key. - -The UrlReaderProcessor, FileReaderProcessor got updated to store the absolute URL of the catalog file as a refresh key. In the format of `:` -The PlaceholderProcessor got updated to store the resolverValues as refreshKeys for the entities. - -The custom resolvers will need to be updated to pass in a `CatalogProcessorEmit` function as parameter and they should be updated to emit their refresh processingResults. You can see the updated resolvers in the `PlaceholderProcessor.ts` - -```ts - // yamlPlaceholderResolver - ... - const { content, url } = await readTextLocation(params); - - params.emit(processingResult.refresh(`url:${url}`)); - ... -``` diff --git a/.changeset/cool-toys-flow.md b/.changeset/cool-toys-flow.md deleted file mode 100644 index 799bf3ace4..0000000000 --- a/.changeset/cool-toys-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': minor ---- - -Add `transformLinkUri` and `transformImageUri` to `MarkdownContent` diff --git a/.changeset/create-app-1656408352.md b/.changeset/create-app-1656408352.md deleted file mode 100644 index b50d431d4b..0000000000 --- a/.changeset/create-app-1656408352.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Bumped create-app version. diff --git a/.changeset/create-app-1657631847.md b/.changeset/create-app-1657631847.md deleted file mode 100644 index b50d431d4b..0000000000 --- a/.changeset/create-app-1657631847.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Bumped create-app version. diff --git a/.changeset/cuddly-comics-pump.md b/.changeset/cuddly-comics-pump.md deleted file mode 100644 index 6d224bd34c..0000000000 --- a/.changeset/cuddly-comics-pump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Fixed that adding more than one `allowedOwner` or `allowedRepo` in the template config will now still set the first value as default in the initial form state of `RepoUrlPicker`. diff --git a/.changeset/cuddly-flowers-provide.md b/.changeset/cuddly-flowers-provide.md deleted file mode 100644 index 729ac96cda..0000000000 --- a/.changeset/cuddly-flowers-provide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-fossa': patch ---- - -Allow configuration of base URL for Fossa links diff --git a/.changeset/curly-candles-battle.md b/.changeset/curly-candles-battle.md deleted file mode 100644 index 9a4d850fd1..0000000000 --- a/.changeset/curly-candles-battle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Bumped `codemirror` dependencies to `v6.0.0`. diff --git a/.changeset/curvy-weeks-matter.md b/.changeset/curvy-weeks-matter.md deleted file mode 100644 index a0a9c43076..0000000000 --- a/.changeset/curvy-weeks-matter.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/catalog-model': patch -'@backstage/core-components': patch -'@backstage/plugin-techdocs-react': patch ---- - -Updated JSDoc to be MDX compatible. diff --git a/.changeset/eight-suits-fail.md b/.changeset/eight-suits-fail.md deleted file mode 100644 index 742154da91..0000000000 --- a/.changeset/eight-suits-fail.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-common': patch ---- - -Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api diff --git a/.changeset/eighty-windows-brush.md b/.changeset/eighty-windows-brush.md deleted file mode 100644 index 753b53fbb4..0000000000 --- a/.changeset/eighty-windows-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': minor ---- - -Allow FactRetrieverRegistry to be injected into buildTechInsightsContext so that we can override default registry implementation. diff --git a/.changeset/fifty-cars-compare.md b/.changeset/fifty-cars-compare.md deleted file mode 100644 index 86115a4b02..0000000000 --- a/.changeset/fifty-cars-compare.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@backstage/plugin-kubernetes': minor -'@backstage/plugin-kubernetes-backend': minor ---- - -Add `localKubectlProxy` cluster locator method to make local development simpler to setup. - -Consolidated no-op server side auth decorators. -The following Kubernetes auth decorators are now one class (`ServerSideKubernetesAuthProvider`): - -- `AwsKubernetesAuthProvider` -- `AzureKubernetesAuthProvider` -- `ServiceAccountKubernetesAuthProvider` diff --git a/.changeset/fifty-vans-drum.md b/.changeset/fifty-vans-drum.md deleted file mode 100644 index 6b1b920bb9..0000000000 --- a/.changeset/fifty-vans-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-radar': patch ---- - -Update tech-radar documentation on how to use an external json data source with dates. diff --git a/.changeset/five-fireants-run.md b/.changeset/five-fireants-run.md deleted file mode 100644 index 589d46cc81..0000000000 --- a/.changeset/five-fireants-run.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Fix the EntityLayout header style so that EntityContextMenu button can display in correct shape when user hover on it diff --git a/.changeset/forty-seals-complain.md b/.changeset/forty-seals-complain.md deleted file mode 100644 index b2435b2d3a..0000000000 --- a/.changeset/forty-seals-complain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Improve error messaging when passing in malformed auth diff --git a/.changeset/funny-fireants-shop.md b/.changeset/funny-fireants-shop.md deleted file mode 100644 index 8e6d997aa2..0000000000 --- a/.changeset/funny-fireants-shop.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-newrelic-dashboard': minor ---- - -Fix bug where the default time window/snapshot duration was supposed to be 30 days, but ended up being 43 weeks - -**BREAKING**: Add a select input to change the time window of the snapshot displayed. This removes the duration prop from the `DashboardSnapshot` component. diff --git a/.changeset/great-roses-pump.md b/.changeset/great-roses-pump.md deleted file mode 100644 index 0e15d186d4..0000000000 --- a/.changeset/great-roses-pump.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Previously, the color of the Entity Context Menu (in the Entity Page Header) was hardcoded as `white`. - -This was an issue for themes that use a header with a white background. By default, the color of the icon is now `theme.page.fontColor`. - -It can now also be overridden in the theme, which is only necessary if the header title, subtitle and three-dots icon need to have different colors. For example: - -```typescript -export function createThemeOverrides(theme: BackstageTheme): Overrides { - return { - PluginCatalogEntityContextMenu: { - button: { - color: 'blue', - }, - }, - ... - }, - ... - } -``` diff --git a/.changeset/green-actors-argue.md b/.changeset/green-actors-argue.md deleted file mode 100644 index e21fbb040c..0000000000 --- a/.changeset/green-actors-argue.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@backstage/cli': minor ---- - -**BREAKING**: Removed the following deprecated package commands: - -- `app:build` - Use `package build` instead -- `app:serve` - Use `package start` instead -- `backend:build` - Use `package build` instead -- `backend:bundle` - Use `package build` instead -- `backend:dev` - Use `package start` instead -- `plugin:build` - Use `package build` instead -- `plugin:serve` - Use `package start` instead -- `build` - Use `package build` instead -- `lint` - Use `package lint` instead -- `prepack` - Use `package prepack` instead -- `postpack` - Use `package postpack` instead - -In order to replace these you need to have [migrated to using package roles](https://backstage.io/docs/tutorials/package-role-migration). diff --git a/.changeset/happy-boxes-melt.md b/.changeset/happy-boxes-melt.md deleted file mode 100644 index c478e783d3..0000000000 --- a/.changeset/happy-boxes-melt.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@techdocs/cli': patch -'@backstage/plugin-techdocs-node': patch ---- - -Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag. diff --git a/.changeset/hip-ways-shop.md b/.changeset/hip-ways-shop.md deleted file mode 100644 index 74646b7b3a..0000000000 --- a/.changeset/hip-ways-shop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch ---- - -expose detectErrors function publicly diff --git a/.changeset/hot-rice-sin.md b/.changeset/hot-rice-sin.md deleted file mode 100644 index 5a3d6fdb7a..0000000000 --- a/.changeset/hot-rice-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': minor ---- - -Add `allowedRepos` `ui:option` to `RepoUrlPicker` component, and move `repoName` field to own component diff --git a/.changeset/hungry-cougars-press.md b/.changeset/hungry-cougars-press.md deleted file mode 100644 index c99e1f4c76..0000000000 --- a/.changeset/hungry-cougars-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-ldap': patch ---- - -Fix mapping between users and groups for FreeIPA when using the LdapOrgProcessor diff --git a/.changeset/large-kangaroos-poke.md b/.changeset/large-kangaroos-poke.md deleted file mode 100644 index 3a9444cfa1..0000000000 --- a/.changeset/large-kangaroos-poke.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Added an explicit `node-gyp` dependency to the root `package.json`. This is to work around a bug in older versions of `node-gyp` that causes Python execution to fail on macOS. - -You can add this workaround to your existing project by adding `node-gyp` as a `devDependency` in your root `package.json` file: - -```diff - "devDependencies": { -+ "node-gyp": "^9.0.0" - }, -``` diff --git a/.changeset/lazy-steaks-tell.md b/.changeset/lazy-steaks-tell.md deleted file mode 100644 index 5e63816ada..0000000000 --- a/.changeset/lazy-steaks-tell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-node': minor ---- - -Added alpha exports for the new experimental backend system. diff --git a/.changeset/lemon-goats-obey.md b/.changeset/lemon-goats-obey.md deleted file mode 100644 index 7bdb59bd61..0000000000 --- a/.changeset/lemon-goats-obey.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-apache-airflow': minor ---- - -Exposed DagTableComponent as standalone component + added a prop to get only select DAGs instead of the full list diff --git a/.changeset/light-hornets-eat.md b/.changeset/light-hornets-eat.md deleted file mode 100644 index 795e51fb67..0000000000 --- a/.changeset/light-hornets-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-cost-insights-common': minor ---- - -Introduces a new isomorphic @backstage/plugin-cost-insight-common package to contain shared types across all other cost insights packages and modules. diff --git a/.changeset/little-geckos-end.md b/.changeset/little-geckos-end.md deleted file mode 100644 index 328095aa44..0000000000 --- a/.changeset/little-geckos-end.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor ---- - -Add new endpoints to Kubernetes backend plugin - -BREAKING: Kubernetes backend plugin now depends on CatalogApi - -```typescript -// Create new CatalogClient -const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); -const { router } = await KubernetesBuilder.createBuilder({ - logger: env.logger, - config: env.config, - // Inject it into createBuilder params - catalogApi, -}).build(); -``` diff --git a/.changeset/little-guests-sell.md b/.changeset/little-guests-sell.md deleted file mode 100644 index 91f578ee38..0000000000 --- a/.changeset/little-guests-sell.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/app-defaults': patch -'@backstage/core-app-api': patch -'@backstage/core-plugin-api': patch ---- - -Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. diff --git a/.changeset/long-bananas-rescue.md b/.changeset/long-bananas-rescue.md deleted file mode 100644 index d990fd67c6..0000000000 --- a/.changeset/long-bananas-rescue.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-msgraph': minor ---- - -Align `msgraph` plugin's entity provider config with other providers. **Deprecated** entity processor as well as previous config. - -You will see warning at the log output until you migrate to the new setup. -All deprecated parts will be removed eventually after giving some time to migrate. - -Please find information on how to migrate your current setup to the new one below. - -**Migration Guide:** - -There were two different way on how to use the msgraph plugin: processor or provider. - -Previous registration for the processor: - -```typescript -// packages/backend/src/plugins/catalog.ts -builder.addProcessor( - MicrosoftGraphOrgReaderProcessor.fromConfig(env.config, { - logger: env.logger, - // [...] - }), -); -``` - -Previous registration when using the provider: - -```typescript -// packages/backend/src/plugins/catalog.ts -builder.addEntityProvider( - MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { - id: 'https://graph.microsoft.com/v1.0', - target: 'https://graph.microsoft.com/v1.0', - logger: env.logger, - schedule: env.scheduler.createScheduledTaskRunner({ - frequency: { minutes: 30 }, - timeout: { minutes: 3 }, - }), - // [...] - }), -); -``` - -Previous configuration as used for both: - -```yaml -# app-config.yaml -catalog: - processors: - microsoftGraphOrg: - providers: - - target: https://graph.microsoft.com/v1.0 - # [...] -``` - -**Replacement:** - -Please check https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md for the complete documentation of all configuration options (config as well as registration of the provider). - -```yaml -# app-config.yaml -catalog: - providers: - microsoftGraphOrg: - # In case you used the deprecated configuration with the entity provider - # using the value of `target` will keep the same location key for all - providerId: # some stable ID which will be used as part of the location key for all ingested data - target: https://graph.microsoft.com/v1.0 - # [...] -``` - -```typescript -// packages/backend/src/plugins/catalog.ts -builder.addEntityProvider( - MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { - logger: env.logger, - schedule: env.scheduler.createScheduledTaskRunner({ - frequency: { minutes: 30 }, - timeout: { minutes: 3 }, - }), - // [...] - }), -); -``` - -In case you've used multiple entity providers before -**and** you had different transformers for each of them -you can provide these directly at the one `fromConfig` call -by passing a Record with the provider ID as key. diff --git a/.changeset/loud-lemons-listen.md b/.changeset/loud-lemons-listen.md deleted file mode 100644 index f232c1491e..0000000000 --- a/.changeset/loud-lemons-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-node': major ---- - -This package houses stable types from the `@backstage/plugin-catalog-backend` package and is intended for creation of catalog modules. Prefer importing from this package over the `@backstage/plugin-catalog-backend` package. diff --git a/.changeset/many-vans-thank.md b/.changeset/many-vans-thank.md deleted file mode 100644 index 16f8c8a69b..0000000000 --- a/.changeset/many-vans-thank.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-jenkins': patch -'@backstage/plugin-jenkins-backend': patch ---- - -feature: added support for multiple branches to the `JenkinsApi` diff --git a/.changeset/mean-adults-argue.md b/.changeset/mean-adults-argue.md deleted file mode 100644 index 22eacab054..0000000000 --- a/.changeset/mean-adults-argue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-proxy-backend': patch ---- - -The proxy-backend now automatically reloads configuration when app-config.yaml is updated. diff --git a/.changeset/mean-berries-kick.md b/.changeset/mean-berries-kick.md deleted file mode 100644 index 7726c2c79e..0000000000 --- a/.changeset/mean-berries-kick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Moving from Bitbucket Server endpoint from https://docs.atlassian.com/bitbucket-server/rest/7.9.0/bitbucket-rest.html#idp222 to https://docs.atlassian.com/bitbucket-server/rest/7.9.0/bitbucket-rest.html#idp224, to have the last commit in function of different branch, and not only the list of default branch diff --git a/.changeset/metal-singers-matter.md b/.changeset/metal-singers-matter.md deleted file mode 100644 index 2c8d370790..0000000000 --- a/.changeset/metal-singers-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Upgrade `@rollup/plugin-node-resolve` to `^13.0.6` diff --git a/.changeset/metal-windows-share.md b/.changeset/metal-windows-share.md deleted file mode 100644 index b4443a620f..0000000000 --- a/.changeset/metal-windows-share.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-pg': patch ---- - -**DEPRECATED**: `PgSearchEngine` static `from` has been deprecated and will be removed in a future release. Use static `fromConfig` method to instantiate. - -Added support for highlighting matched terms in search result data diff --git a/.changeset/modern-ducks-lay.md b/.changeset/modern-ducks-lay.md deleted file mode 100644 index bd62c309ba..0000000000 --- a/.changeset/modern-ducks-lay.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-stack-overflow': patch ---- - -- Publicly exports `StackOverflowIcon`. -- `HomePageStackOverflowQuestions` accepts optional icon property. diff --git a/.changeset/moody-crabs-march.md b/.changeset/moody-crabs-march.md deleted file mode 100644 index b5ddf12ffa..0000000000 --- a/.changeset/moody-crabs-march.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-vault': patch -'@backstage/plugin-vault-backend': patch ---- - -Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths diff --git a/.changeset/nasty-zoos-cross.md b/.changeset/nasty-zoos-cross.md deleted file mode 100644 index 7a658d7209..0000000000 --- a/.changeset/nasty-zoos-cross.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-pull-requests-board': patch ---- - -Support namespaced teams and fetch all kinds diff --git a/.changeset/nervous-hounds-matter.md b/.changeset/nervous-hounds-matter.md deleted file mode 100644 index 0f60b7ae2c..0000000000 --- a/.changeset/nervous-hounds-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -contextMenu prop passed through to from the component diff --git a/.changeset/nervous-humans-sip.md b/.changeset/nervous-humans-sip.md deleted file mode 100644 index aa1ca2c60a..0000000000 --- a/.changeset/nervous-humans-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': patch ---- - -The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config. diff --git a/.changeset/nice-seas-jam.md b/.changeset/nice-seas-jam.md deleted file mode 100644 index 60190406ca..0000000000 --- a/.changeset/nice-seas-jam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -Fixed issue with git feedback buttons not appearing automatically in docs pages. This was done by appending repo_url to the helper function getRepoUrlFromLocationAnnotation. diff --git a/.changeset/ninety-coats-learn.md b/.changeset/ninety-coats-learn.md deleted file mode 100644 index 9d6945e9c0..0000000000 --- a/.changeset/ninety-coats-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Fix relative `sub-paths` by concatenating the app's base path with them. diff --git a/.changeset/old-onions-hear.md b/.changeset/old-onions-hear.md deleted file mode 100644 index 82dcc09190..0000000000 --- a/.changeset/old-onions-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Update GitLab Merge Request Action to allow source branch to be deleted diff --git a/.changeset/olive-tips-camp.md b/.changeset/olive-tips-camp.md new file mode 100644 index 0000000000..8b65eed574 --- /dev/null +++ b/.changeset/olive-tips-camp.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-catalog-backend-module-aws': patch +--- + +Deprecate `AwsS3DiscoveryProcessor` in favor of `AwsS3EntityProvider` (since v0.1.4). + +You can find a migration guide at +[the release notes for v0.1.4](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-aws/CHANGELOG.md#014). diff --git a/.changeset/orange-deers-marry.md b/.changeset/orange-deers-marry.md deleted file mode 100644 index c565111b60..0000000000 --- a/.changeset/orange-deers-marry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Fix issues with optional directories and files diff --git a/.changeset/perfect-donuts-applaud.md b/.changeset/perfect-donuts-applaud.md deleted file mode 100644 index 3b663fa2c2..0000000000 --- a/.changeset/perfect-donuts-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Don't resolve symlinks, treat them as binary files and copy them as-is diff --git a/.changeset/pink-cars-pretend.md b/.changeset/pink-cars-pretend.md deleted file mode 100644 index c46cb99f55..0000000000 --- a/.changeset/pink-cars-pretend.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -new setUserAsOwner flag for publish:gitlab action - -The field default is `false`. When true it will use the token configured in the gitlab integration for the matching host, to try and set the user logged in via `repoUrlPicker` `requestUserCredentials` OAuth flow as owner of the repository created in GitLab. diff --git a/.changeset/plenty-clouds-guess.md b/.changeset/plenty-clouds-guess.md deleted file mode 100644 index cc56bd604d..0000000000 --- a/.changeset/plenty-clouds-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Added an option for the auth backend router to select the algorithm for the JWT token signing keys diff --git a/.changeset/polite-keys-confess.md b/.changeset/polite-keys-confess.md deleted file mode 100644 index 007ad98641..0000000000 --- a/.changeset/polite-keys-confess.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-msgraph': minor ---- - -Microsoft Graph plugin can supports many more options for authenticating with the Microsoft Graph API. -Previously only ClientId/ClientSecret was supported, but now all the authentication options of `DefaultAzureCredential` from `@azure/identity` are supported. -Including Managed Identity, Client Certificate, Azure CLI and VS Code. - -If `clientId` and `clientSecret` are specified in configuration, the plugin behaves the same way as before. -If these fields are omitted, the plugin uses `DefaultAzureCredential` to automatically determine the best authentication method. -This is particularly useful for local development environments - the default configuration will try to use existing credentials from Visual Studio Code, Azure CLI and Azure PowerShell, without the user needing to configure any credentials in app-config.yaml diff --git a/.changeset/polite-lions-sell.md b/.changeset/polite-lions-sell.md deleted file mode 100644 index 07b5fcbd77..0000000000 --- a/.changeset/polite-lions-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Auth provider now also export createAuthProviderIntegration diff --git a/.changeset/polite-moose-beam.md b/.changeset/polite-moose-beam.md deleted file mode 100644 index 5e41018ae6..0000000000 --- a/.changeset/polite-moose-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': minor ---- - -Export experimental `catalogPlugin` for the new backend system. This export is not considered stable and should not be used in production. diff --git a/.changeset/popular-pots-yell.md b/.changeset/popular-pots-yell.md deleted file mode 100644 index f0decc9fb8..0000000000 --- a/.changeset/popular-pots-yell.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-auth-backend': minor ---- - -**BREAKING**: Removed all directly exported auth provider factories, option types, and sign-in resolvers. For example: `AwsAlbProviderOptions`, `bitbucketUserIdSignInResolver`, `createGithubProvider`. These are all still accessible via the `providers` export. For example, use `providers.github.create()` rather than `createGithubProvider()`, and `providers.bitbucket.resolvers.userIdMatchingUserEntityAnnotation()` rather than `bitbucketUserIdSignInResolver`. - -**BREAKING**: Removed the exported `AuthProviderFactoryOptions` type as well as the deprecated option fields of the `AuthProviderFactory` callback. This includes the `tokenManager`, `tokenIssuer`, `discovery`, and `catalogApi` fields. Existing usage of these should be replaced with the new utilities in the `resolverContext` field. The deprecated `TokenIssuer` type is now also removed, since it is no longer used. - -**BREAKING**: Removed `getEntityClaims`, use `getDefaultOwnershipEntityRefs` instead. - -**DEPRECATION**: Deprecated `AtlassianAuthProvider` as it was unintentionally exported. diff --git a/.changeset/popular-starfishes-reflect.md b/.changeset/popular-starfishes-reflect.md deleted file mode 100644 index e02eaf7102..0000000000 --- a/.changeset/popular-starfishes-reflect.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/integration': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-pull-requests-board': patch ---- - -Upgrade @octokit/rest to 19.0.3 diff --git a/.changeset/pre.json b/.changeset/pre.json index 62ec58c896..e6935ffd67 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,313 +1,170 @@ { - "mode": "exit", + "mode": "pre", "tag": "next", "initialVersions": { - "example-app": "0.2.72", - "@backstage/app-defaults": "1.0.3", - "example-backend": "0.2.72", - "@backstage/backend-common": "0.14.0", - "@backstage/backend-tasks": "0.3.2", - "@backstage/backend-test-utils": "0.1.25", - "@backstage/catalog-client": "1.0.3", - "@backstage/catalog-model": "1.0.3", - "@backstage/cli": "0.17.2", + "example-app": "0.2.73", + "@backstage/app-defaults": "1.0.4", + "example-backend": "0.2.73", + "@backstage/backend-app-api": "0.1.0", + "@backstage/backend-common": "0.14.1", + "example-backend-next": "0.0.1", + "@backstage/backend-plugin-api": "0.1.0", + "@backstage/backend-tasks": "0.3.3", + "@backstage/backend-test-utils": "0.1.26", + "@backstage/catalog-client": "1.0.4", + "@backstage/catalog-model": "1.1.0", + "@backstage/cli": "0.18.0", "@backstage/cli-common": "0.1.9", "@backstage/codemods": "0.1.38", "@backstage/config": "1.0.1", - "@backstage/config-loader": "1.1.2", - "@backstage/core-app-api": "1.0.3", - "@backstage/core-components": "0.9.5", - "@backstage/core-plugin-api": "1.0.3", - "@backstage/create-app": "0.4.28", - "@backstage/dev-utils": "1.0.3", + "@backstage/config-loader": "1.1.3", + "@backstage/core-app-api": "1.0.4", + "@backstage/core-components": "0.10.0", + "@backstage/core-plugin-api": "1.0.4", + "@backstage/create-app": "0.4.29", + "@backstage/dev-utils": "1.0.4", "e2e-test": "0.2.0", - "@backstage/errors": "1.0.0", - "@backstage/integration": "1.2.1", - "@backstage/integration-react": "1.1.1", - "@backstage/release-manifests": "0.0.4", - "@techdocs/cli": "1.1.2", - "techdocs-cli-embedded-app": "0.2.71", - "@backstage/test-utils": "1.1.1", - "@backstage/theme": "0.2.15", + "@backstage/errors": "1.1.0", + "@backstage/integration": "1.2.2", + "@backstage/integration-react": "1.1.2", + "@backstage/release-manifests": "0.0.5", + "@techdocs/cli": "1.1.3", + "techdocs-cli-embedded-app": "0.2.72", + "@backstage/test-utils": "1.1.2", + "@backstage/theme": "0.2.16", "@backstage/types": "1.0.0", "@backstage/version-bridge": "1.0.1", - "@backstage/plugin-adr": "0.1.1", - "@backstage/plugin-adr-backend": "0.1.1", - "@backstage/plugin-adr-common": "0.1.1", - "@backstage/plugin-airbrake": "0.3.6", - "@backstage/plugin-airbrake-backend": "0.2.6", - "@backstage/plugin-allure": "0.1.22", - "@backstage/plugin-analytics-module-ga": "0.1.17", - "@backstage/plugin-apache-airflow": "0.1.14", - "@backstage/plugin-api-docs": "0.8.6", - "@backstage/plugin-app-backend": "0.3.33", - "@backstage/plugin-auth-backend": "0.14.1", - "@backstage/plugin-auth-node": "0.2.2", - "@backstage/plugin-azure-devops": "0.1.22", - "@backstage/plugin-azure-devops-backend": "0.3.12", - "@backstage/plugin-azure-devops-common": "0.2.3", - "@backstage/plugin-badges": "0.2.30", - "@backstage/plugin-badges-backend": "0.1.27", - "@backstage/plugin-bazaar": "0.1.21", - "@backstage/plugin-bazaar-backend": "0.1.17", - "@backstage/plugin-bitbucket-cloud-common": "0.1.0", - "@backstage/plugin-bitrise": "0.1.33", - "@backstage/plugin-catalog": "1.3.0", - "@backstage/plugin-catalog-backend": "1.2.0", - "@backstage/plugin-catalog-backend-module-aws": "0.1.6", - "@backstage/plugin-catalog-backend-module-azure": "0.1.4", - "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.0", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.0", - "@backstage/plugin-catalog-backend-module-gerrit": "0.1.1", - "@backstage/plugin-catalog-backend-module-github": "0.1.4", - "@backstage/plugin-catalog-backend-module-gitlab": "0.1.4", - "@backstage/plugin-catalog-backend-module-ldap": "0.5.0", - "@backstage/plugin-catalog-backend-module-msgraph": "0.3.3", - "@backstage/plugin-catalog-common": "1.0.3", - "@backstage/plugin-catalog-graph": "0.2.18", - "@backstage/plugin-catalog-graphql": "0.3.10", - "@backstage/plugin-catalog-import": "0.8.9", - "@backstage/plugin-catalog-react": "1.1.1", - "@backstage/plugin-cicd-statistics": "0.1.8", - "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.2", - "@backstage/plugin-circleci": "0.3.6", - "@backstage/plugin-cloudbuild": "0.3.6", - "@backstage/plugin-code-climate": "0.1.6", - "@backstage/plugin-code-coverage": "0.1.33", - "@backstage/plugin-code-coverage-backend": "0.1.31", - "@backstage/plugin-codescene": "0.1.1", - "@backstage/plugin-config-schema": "0.1.29", - "@backstage/plugin-cost-insights": "0.11.28", - "@backstage/plugin-dynatrace": "0.1.0", - "@internal/plugin-todo-list": "1.0.2", - "@internal/plugin-todo-list-backend": "1.0.2", - "@internal/plugin-todo-list-common": "1.0.2", - "@backstage/plugin-explore": "0.3.37", - "@backstage/plugin-explore-react": "0.0.18", - "@backstage/plugin-firehydrant": "0.1.23", - "@backstage/plugin-fossa": "0.2.38", - "@backstage/plugin-gcalendar": "0.3.2", - "@backstage/plugin-gcp-projects": "0.3.25", - "@backstage/plugin-git-release-manager": "0.3.19", - "@backstage/plugin-github-actions": "0.5.6", - "@backstage/plugin-github-deployments": "0.1.37", - "@backstage/plugin-github-pull-requests-board": "0.1.0", - "@backstage/plugin-gitops-profiles": "0.3.24", - "@backstage/plugin-gocd": "0.1.12", - "@backstage/plugin-graphiql": "0.2.38", - "@backstage/plugin-graphql-backend": "0.1.23", - "@backstage/plugin-home": "0.4.22", - "@backstage/plugin-ilert": "0.1.32", - "@backstage/plugin-jenkins": "0.7.5", - "@backstage/plugin-jenkins-backend": "0.1.23", - "@backstage/plugin-jenkins-common": "0.1.5", - "@backstage/plugin-kafka": "0.3.6", - "@backstage/plugin-kafka-backend": "0.2.26", - "@backstage/plugin-kubernetes": "0.6.6", - "@backstage/plugin-kubernetes-backend": "0.6.0", - "@backstage/plugin-kubernetes-common": "0.3.0", - "@backstage/plugin-lighthouse": "0.3.6", - "@backstage/plugin-newrelic": "0.3.24", - "@backstage/plugin-newrelic-dashboard": "0.1.14", - "@backstage/plugin-org": "0.5.6", - "@backstage/plugin-pagerduty": "0.4.0", - "@backstage/plugin-periskop": "0.1.4", - "@backstage/plugin-periskop-backend": "0.1.4", - "@backstage/plugin-permission-backend": "0.5.8", - "@backstage/plugin-permission-common": "0.6.2", - "@backstage/plugin-permission-node": "0.6.2", - "@backstage/plugin-permission-react": "0.4.2", - "@backstage/plugin-proxy-backend": "0.2.27", - "@backstage/plugin-rollbar": "0.4.6", - "@backstage/plugin-rollbar-backend": "0.1.30", - "@backstage/plugin-scaffolder": "1.3.0", - "@backstage/plugin-scaffolder-backend": "1.3.0", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.8", - "@backstage/plugin-scaffolder-backend-module-rails": "0.4.1", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.6", - "@backstage/plugin-scaffolder-common": "1.1.1", - "@backstage/plugin-search": "0.9.0", - "@backstage/plugin-search-backend": "0.5.3", - "@backstage/plugin-search-backend-module-elasticsearch": "0.1.5", - "@backstage/plugin-search-backend-module-pg": "0.3.4", - "@backstage/plugin-search-backend-node": "0.6.2", - "@backstage/plugin-search-common": "0.3.5", - "@backstage/plugin-search-react": "0.2.1", - "@backstage/plugin-sentry": "0.3.44", - "@backstage/plugin-shortcuts": "0.2.7", - "@backstage/plugin-sonarqube": "0.3.6", - "@backstage/plugin-splunk-on-call": "0.3.30", - "@backstage/plugin-stack-overflow": "0.1.2", - "@backstage/plugin-stack-overflow-backend": "0.1.2", - "@backstage/plugin-tech-insights": "0.2.2", - "@backstage/plugin-tech-insights-backend": "0.4.1", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.17", - "@backstage/plugin-tech-insights-common": "0.2.4", - "@backstage/plugin-tech-insights-node": "0.3.1", - "@backstage/plugin-tech-radar": "0.5.13", - "@backstage/plugin-techdocs": "1.2.0", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.1", - "@backstage/plugin-techdocs-backend": "1.1.2", - "@backstage/plugin-techdocs-module-addons-contrib": "1.0.1", - "@backstage/plugin-techdocs-node": "1.1.2", - "@backstage/plugin-techdocs-react": "1.0.1", - "@backstage/plugin-todo": "0.2.8", - "@backstage/plugin-todo-backend": "0.1.30", - "@backstage/plugin-user-settings": "0.4.5", - "@backstage/plugin-vault": "0.1.0", - "@backstage/plugin-vault-backend": "0.1.0", - "@backstage/plugin-xcmetrics": "0.2.26", - "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.0.0", - "@backstage/plugin-catalog-backend-module-openapi": "0.0.0", - "@backstage/plugin-cost-insights-common": "0.0.0", - "@backstage/backend-app-api": "0.0.0", - "example-backend-next": "0.0.0", - "@backstage/backend-plugin-api": "0.0.0", - "@backstage/plugin-catalog-node": "0.0.0" + "@backstage/plugin-adr": "0.1.2", + "@backstage/plugin-adr-backend": "0.1.2", + "@backstage/plugin-adr-common": "0.1.2", + "@backstage/plugin-airbrake": "0.3.7", + "@backstage/plugin-airbrake-backend": "0.2.7", + "@backstage/plugin-allure": "0.1.23", + "@backstage/plugin-analytics-module-ga": "0.1.18", + "@backstage/plugin-apache-airflow": "0.2.0", + "@backstage/plugin-api-docs": "0.8.7", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.0", + "@backstage/plugin-apollo-explorer": "0.1.0", + "@backstage/plugin-app-backend": "0.3.34", + "@backstage/plugin-auth-backend": "0.15.0", + "@backstage/plugin-auth-node": "0.2.3", + "@backstage/plugin-azure-devops": "0.1.23", + "@backstage/plugin-azure-devops-backend": "0.3.13", + "@backstage/plugin-azure-devops-common": "0.2.4", + "@backstage/plugin-badges": "0.2.31", + "@backstage/plugin-badges-backend": "0.1.28", + "@backstage/plugin-bazaar": "0.1.22", + "@backstage/plugin-bazaar-backend": "0.1.18", + "@backstage/plugin-bitbucket-cloud-common": "0.1.1", + "@backstage/plugin-bitrise": "0.1.34", + "@backstage/plugin-catalog": "1.4.0", + "@backstage/plugin-catalog-backend": "1.3.0", + "@backstage/plugin-catalog-backend-module-aws": "0.1.7", + "@backstage/plugin-catalog-backend-module-azure": "0.1.5", + "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.1", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.1", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.2", + "@backstage/plugin-catalog-backend-module-github": "0.1.5", + "@backstage/plugin-catalog-backend-module-gitlab": "0.1.5", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.1", + "@backstage/plugin-catalog-backend-module-msgraph": "0.4.0", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.0", + "@backstage/plugin-catalog-common": "1.0.4", + "@backstage/plugin-catalog-graph": "0.2.19", + "@backstage/plugin-catalog-graphql": "0.3.11", + "@backstage/plugin-catalog-import": "0.8.10", + "@backstage/plugin-catalog-node": "1.0.0", + "@backstage/plugin-catalog-react": "1.1.2", + "@backstage/plugin-cicd-statistics": "0.1.9", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.3", + "@backstage/plugin-circleci": "0.3.7", + "@backstage/plugin-cloudbuild": "0.3.7", + "@backstage/plugin-code-climate": "0.1.7", + "@backstage/plugin-code-coverage": "0.2.0", + "@backstage/plugin-code-coverage-backend": "0.2.0", + "@backstage/plugin-codescene": "0.1.2", + "@backstage/plugin-config-schema": "0.1.30", + "@backstage/plugin-cost-insights": "0.11.29", + "@backstage/plugin-cost-insights-common": "0.1.0", + "@backstage/plugin-dynatrace": "0.1.1", + "@internal/plugin-todo-list": "1.0.3", + "@internal/plugin-todo-list-backend": "1.0.3", + "@internal/plugin-todo-list-common": "1.0.3", + "@backstage/plugin-explore": "0.3.38", + "@backstage/plugin-explore-react": "0.0.19", + "@backstage/plugin-firehydrant": "0.1.24", + "@backstage/plugin-fossa": "0.2.39", + "@backstage/plugin-gcalendar": "0.3.3", + "@backstage/plugin-gcp-projects": "0.3.26", + "@backstage/plugin-git-release-manager": "0.3.20", + "@backstage/plugin-github-actions": "0.5.7", + "@backstage/plugin-github-deployments": "0.1.38", + "@backstage/plugin-github-pull-requests-board": "0.1.1", + "@backstage/plugin-gitops-profiles": "0.3.25", + "@backstage/plugin-gocd": "0.1.13", + "@backstage/plugin-graphiql": "0.2.39", + "@backstage/plugin-graphql-backend": "0.1.24", + "@backstage/plugin-home": "0.4.23", + "@backstage/plugin-ilert": "0.1.33", + "@backstage/plugin-jenkins": "0.7.6", + "@backstage/plugin-jenkins-backend": "0.1.24", + "@backstage/plugin-jenkins-common": "0.1.6", + "@backstage/plugin-kafka": "0.3.7", + "@backstage/plugin-kafka-backend": "0.2.27", + "@backstage/plugin-kubernetes": "0.7.0", + "@backstage/plugin-kubernetes-backend": "0.7.0", + "@backstage/plugin-kubernetes-common": "0.4.0", + "@backstage/plugin-lighthouse": "0.3.7", + "@backstage/plugin-newrelic": "0.3.25", + "@backstage/plugin-newrelic-dashboard": "0.2.0", + "@backstage/plugin-org": "0.5.7", + "@backstage/plugin-pagerduty": "0.5.0", + "@backstage/plugin-periskop": "0.1.5", + "@backstage/plugin-periskop-backend": "0.1.5", + "@backstage/plugin-permission-backend": "0.5.9", + "@backstage/plugin-permission-common": "0.6.3", + "@backstage/plugin-permission-node": "0.6.3", + "@backstage/plugin-permission-react": "0.4.3", + "@backstage/plugin-proxy-backend": "0.2.28", + "@backstage/plugin-rollbar": "0.4.7", + "@backstage/plugin-rollbar-backend": "0.1.31", + "@backstage/plugin-scaffolder": "1.4.0", + "@backstage/plugin-scaffolder-backend": "1.4.0", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.9", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.2", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.7", + "@backstage/plugin-scaffolder-common": "1.1.2", + "@backstage/plugin-search": "1.0.0", + "@backstage/plugin-search-backend": "1.0.0", + "@backstage/plugin-search-backend-module-elasticsearch": "1.0.0", + "@backstage/plugin-search-backend-module-pg": "0.3.5", + "@backstage/plugin-search-backend-node": "1.0.0", + "@backstage/plugin-search-common": "1.0.0", + "@backstage/plugin-search-react": "1.0.0", + "@backstage/plugin-sentry": "0.4.0", + "@backstage/plugin-shortcuts": "0.2.8", + "@backstage/plugin-sonarqube": "0.3.7", + "@backstage/plugin-splunk-on-call": "0.3.31", + "@backstage/plugin-stack-overflow": "0.1.3", + "@backstage/plugin-stack-overflow-backend": "0.1.3", + "@backstage/plugin-tech-insights": "0.2.3", + "@backstage/plugin-tech-insights-backend": "0.5.0", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.18", + "@backstage/plugin-tech-insights-common": "0.2.5", + "@backstage/plugin-tech-insights-node": "0.3.2", + "@backstage/plugin-tech-radar": "0.5.14", + "@backstage/plugin-techdocs": "1.3.0", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.2", + "@backstage/plugin-techdocs-backend": "1.2.0", + "@backstage/plugin-techdocs-module-addons-contrib": "1.0.2", + "@backstage/plugin-techdocs-node": "1.2.0", + "@backstage/plugin-techdocs-react": "1.0.2", + "@backstage/plugin-todo": "0.2.9", + "@backstage/plugin-todo-backend": "0.1.31", + "@backstage/plugin-user-settings": "0.4.6", + "@backstage/plugin-vault": "0.1.1", + "@backstage/plugin-vault-backend": "0.2.0", + "@backstage/plugin-xcmetrics": "0.2.27" }, - "changesets": [ - "afraid-flies-try", - "beige-carpets-double", - "beige-carpets-triple", - "beige-horses-scream", - "beige-kiwis-know", - "blue-monkeys-explain", - "brave-badgers-pump", - "breezy-poems-grab", - "breezy-seas-exist", - "breezy-spiders-eat", - "bright-balloons-hide", - "calm-experts-buy", - "chilled-mirrors-grab", - "cold-coins-tickle", - "cool-toys-flow", - "create-app-1656408352", - "create-app-1657631847", - "cuddly-comics-pump", - "cuddly-flowers-provide", - "curly-candles-battle", - "curvy-weeks-matter", - "eight-suits-fail", - "eighty-windows-brush", - "fifty-cars-compare", - "fifty-vans-drum", - "five-fireants-run", - "forty-seals-complain", - "funny-fireants-shop", - "great-roses-pump", - "green-actors-argue", - "happy-boxes-melt", - "hip-ways-shop", - "hot-rice-sin", - "hungry-cougars-press", - "large-kangaroos-poke", - "lazy-steaks-tell", - "lemon-goats-obey", - "light-hornets-eat", - "little-geckos-end", - "little-guests-sell", - "long-bananas-rescue", - "loud-lemons-listen", - "many-vans-thank", - "mean-adults-argue", - "mean-berries-kick", - "metal-singers-matter", - "metal-windows-share", - "modern-ducks-lay", - "moody-crabs-march", - "nasty-zoos-cross", - "nervous-hounds-matter", - "nervous-humans-sip", - "nice-seas-jam", - "ninety-coats-learn", - "old-onions-hear", - "perfect-donuts-applaud", - "pink-cars-pretend", - "plenty-clouds-guess", - "polite-lions-sell", - "polite-moose-beam", - "popular-pots-yell", - "pretty-masks-live", - "proud-toys-return", - "purple-beans-march", - "purple-cherries-fix", - "quiet-pens-notice", - "red-games-decide", - "renovate-0546761", - "renovate-0cf9337", - "renovate-149779d", - "renovate-2ae4dda", - "renovate-33c3cf4", - "renovate-3aba547", - "renovate-4338117", - "renovate-4b5ff24", - "renovate-7438bff", - "renovate-833a91b", - "renovate-913f3dc", - "renovate-9454dab", - "renovate-9bbb0fb", - "renovate-cbb545a", - "renovate-d26eca1", - "renovate-dc1ee8d", - "renovate-dd35ce8", - "renovate-e091137", - "renovate-f43300b", - "rich-goats-breathe", - "rich-steaks-juggle", - "rude-llamas-lie", - "search-boats-double", - "search-lightning-cult", - "search-turtles-itch", - "serious-houses-watch", - "serious-zebras-joke", - "shaggy-melons-drive", - "shaggy-spiders-notice", - "sharp-numbers-taste", - "sharp-planes-turn", - "shiny-seahorses-do", - "shiny-turkeys-doubt", - "short-deers-remember", - "short-olives-train", - "short-wolves-applaud", - "shy-cameras-develop", - "silent-coats-brake", - "silly-geese-design", - "silver-needles-unite", - "small-shoes-hide", - "smart-elephants-knock", - "smooth-sheep-hide", - "spicy-walls-repair", - "stale-needles-applaud", - "strange-tables-flash", - "strange-trains-collect", - "strong-lies-explain", - "sweet-plants-sparkle", - "swift-plants-fix", - "tame-guests-wave", - "techdocs-eyes-sit", - "techdocs-gorgeous-plants-sniff", - "techdocs-sheep-talk", - "techdocs-sixty-mugs-hug", - "techdocs-the-whole-pulse", - "ten-cobras-wash", - "tender-chicken-learn", - "tender-terms-flash", - "thick-cats-kiss", - "thick-radios-drive", - "thirty-rivers-watch", - "tricky-ravens-visit", - "twelve-candles-jump", - "twelve-peaches-tickle", - "two-crews-accept", - "two-owls-cry", - "unlucky-stingrays-juggle", - "warm-monkeys-study", - "weak-bananas-deliver", - "weak-jeans-cry", - "weak-llamas-repeat", - "wet-cameras-juggle", - "wet-dolphins-act", - "wicked-icons-grin", - "wicked-ladybugs-argue" - ] + "changesets": [] } diff --git a/.changeset/pretty-masks-live.md b/.changeset/pretty-masks-live.md deleted file mode 100644 index c45ad1e77f..0000000000 --- a/.changeset/pretty-masks-live.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Added type predicates for all entity types, e.g. isUserEntity diff --git a/.changeset/proud-toys-return.md b/.changeset/proud-toys-return.md deleted file mode 100644 index f93e6ef4a8..0000000000 --- a/.changeset/proud-toys-return.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': minor ---- - -Introduced `GroupDefaultParentEntityPolicy` to set a default group entity parent. diff --git a/.changeset/purple-beans-march.md b/.changeset/purple-beans-march.md deleted file mode 100644 index f4a3b45ab2..0000000000 --- a/.changeset/purple-beans-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Fix `webpack-dev-server` deprecations. diff --git a/.changeset/purple-cherries-fix.md b/.changeset/purple-cherries-fix.md deleted file mode 100644 index d29a107cf3..0000000000 --- a/.changeset/purple-cherries-fix.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@backstage/plugin-sentry': minor ---- - -Added the possibility to specify organization per component, now the annotation `sentry.io/project-slug` can have the format of `[organization]/[project-slug]` or just `[project-slug]`. - -**BREAKING**: The method `fetchIssue` changed the signature: - -```diff -export interface SentryApi { - fetchIssues( -- project: string, -- statsFor: string, -- query?: string, -+ entity: Entity, -+ options: { -+ statsFor: string; -+ query?: string; -+ }, - ): Promise; -} -``` diff --git a/.changeset/quiet-pens-notice.md b/.changeset/quiet-pens-notice.md deleted file mode 100644 index aa6aeb049d..0000000000 --- a/.changeset/quiet-pens-notice.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Improve plural handling in logging output for secrets diff --git a/.changeset/red-games-decide.md b/.changeset/red-games-decide.md deleted file mode 100644 index 208cecfc0a..0000000000 --- a/.changeset/red-games-decide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs-module-protoc-gen-doc': minor ---- - -Added the new `grpcDocsApiWidget` to render `protoc-gen-doc` generated descriptors by the `grpc-docs` package. diff --git a/.changeset/renovate-0546761.md b/.changeset/renovate-0546761.md deleted file mode 100644 index ed7b8b19a3..0000000000 --- a/.changeset/renovate-0546761.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/backend-test-utils': patch -'@backstage/catalog-client': patch -'@backstage/cli': patch -'@backstage/config-loader': patch -'@backstage/core-app-api': patch -'@backstage/core-components': patch -'@backstage/core-plugin-api': patch -'@backstage/integration-react': patch -'@backstage/integration': patch -'@backstage/release-manifests': patch -'@backstage/test-utils': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-adr': patch -'@backstage/plugin-airbrake-backend': patch -'@backstage/plugin-airbrake': patch -'@backstage/plugin-allure': patch -'@backstage/plugin-analytics-module-ga': patch -'@backstage/plugin-apache-airflow': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bitbucket-cloud-common': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog-backend-module-azure': patch -'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch -'@backstage/plugin-catalog-backend-module-bitbucket': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-backend-module-gitlab': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-explore-react': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-github-pull-requests-board': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-gocd': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-graphql-backend': patch -'@backstage/plugin-home': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-periskop-backend': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder': 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-tech-insights': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-techdocs-addons-test-utils': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-todo-backend': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-vault-backend': patch -'@backstage/plugin-vault': patch -'@backstage/plugin-xcmetrics': patch ---- - -Updated dependency `msw` to `^0.43.0`. diff --git a/.changeset/renovate-0cf9337.md b/.changeset/renovate-0cf9337.md deleted file mode 100644 index 8544c10b50..0000000000 --- a/.changeset/renovate-0cf9337.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/backend-tasks': patch -'@backstage/integration': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-cicd-statistics-module-gitlab': patch -'@backstage/plugin-cicd-statistics': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-cost-insights': 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-gocd': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-common': patch -'@backstage/plugin-tech-insights-node': patch -'@backstage/plugin-xcmetrics': patch ---- - -Updated dependency `luxon` to `^3.0.0`. diff --git a/.changeset/renovate-149779d.md b/.changeset/renovate-149779d.md deleted file mode 100644 index 58d764485e..0000000000 --- a/.changeset/renovate-149779d.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kafka-backend': patch ---- - -Updated dependency `kafkajs` to `^2.0.0`. diff --git a/.changeset/renovate-2ae4dda.md b/.changeset/renovate-2ae4dda.md deleted file mode 100644 index 2cedbcb9d7..0000000000 --- a/.changeset/renovate-2ae4dda.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-openapi': patch ---- - -Updated dependency `openapi-types` to `^12.0.0`. diff --git a/.changeset/renovate-33c3cf4.md b/.changeset/renovate-33c3cf4.md deleted file mode 100644 index 8389a89ea1..0000000000 --- a/.changeset/renovate-33c3cf4.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/catalog-model': patch -'@backstage/cli': patch -'@backstage/config-loader': patch -'@backstage/plugin-catalog-backend-module-aws': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-proxy-backend': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder': patch ---- - -Updated dependency `yaml` to `^2.0.0`. diff --git a/.changeset/renovate-3aba547.md b/.changeset/renovate-3aba547.md deleted file mode 100644 index 61b67f74ab..0000000000 --- a/.changeset/renovate-3aba547.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-github-deployments': patch ---- - -Updated dependency `@octokit/graphql` to `^5.0.0`. diff --git a/.changeset/renovate-4338117.md b/.changeset/renovate-4338117.md deleted file mode 100644 index 199073c599..0000000000 --- a/.changeset/renovate-4338117.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Updated dependency `@react-hookz/web` to `^15.0.0`. diff --git a/.changeset/renovate-4b5ff24.md b/.changeset/renovate-4b5ff24.md deleted file mode 100644 index 4867c345d8..0000000000 --- a/.changeset/renovate-4b5ff24.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `run-script-webpack-plugin` to `^0.1.0`. diff --git a/.changeset/renovate-6403cb0.md b/.changeset/renovate-6403cb0.md deleted file mode 100644 index 817d409f51..0000000000 --- a/.changeset/renovate-6403cb0.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/backend-test-utils': patch -'@backstage/catalog-client': patch -'@backstage/cli': patch -'@backstage/config-loader': patch -'@backstage/core-app-api': patch -'@backstage/core-components': patch -'@backstage/core-plugin-api': patch -'@backstage/integration-react': patch -'@backstage/integration': patch -'@backstage/release-manifests': patch -'@backstage/test-utils': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-adr': patch -'@backstage/plugin-airbrake-backend': patch -'@backstage/plugin-airbrake': patch -'@backstage/plugin-allure': patch -'@backstage/plugin-analytics-module-ga': patch -'@backstage/plugin-apache-airflow': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bitbucket-cloud-common': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog-backend-module-azure': patch -'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch -'@backstage/plugin-catalog-backend-module-bitbucket': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-backend-module-gitlab': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-explore-react': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-github-pull-requests-board': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-gocd': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-graphql-backend': patch -'@backstage/plugin-home': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-periskop-backend': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-proxy-backend': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder': 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-tech-insights': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-techdocs-addons-test-utils': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-todo-backend': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-vault-backend': patch -'@backstage/plugin-vault': patch -'@backstage/plugin-xcmetrics': patch ---- - -Updated dependency `msw` to `^0.44.0`. diff --git a/.changeset/renovate-7438bff.md b/.changeset/renovate-7438bff.md deleted file mode 100644 index 43a4ac5016..0000000000 --- a/.changeset/renovate-7438bff.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/backend-tasks': patch -'@backstage/backend-test-utils': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-bazaar-backend': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-search-backend-module-pg': patch -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Updated dependency `knex` to `^2.0.0`. diff --git a/.changeset/renovate-833a91b.md b/.changeset/renovate-833a91b.md deleted file mode 100644 index 15e23ec5ff..0000000000 --- a/.changeset/renovate-833a91b.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-sonarqube': patch ---- - -Updated dependency `rc-progress` to `3.4.0`. diff --git a/.changeset/renovate-913f3dc.md b/.changeset/renovate-913f3dc.md deleted file mode 100644 index edb2f95356..0000000000 --- a/.changeset/renovate-913f3dc.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/config-loader': patch ---- - -Updated dependency `typescript-json-schema` to `^0.54.0`. diff --git a/.changeset/renovate-9454dab.md b/.changeset/renovate-9454dab.md deleted file mode 100644 index 1f8401e10f..0000000000 --- a/.changeset/renovate-9454dab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Updated dependency `google-auth-library` to `^8.0.0`. diff --git a/.changeset/renovate-9bbb0fb.md b/.changeset/renovate-9bbb0fb.md deleted file mode 100644 index 1e122fb43f..0000000000 --- a/.changeset/renovate-9bbb0fb.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `@octokit/request` to `^6.0.0`. diff --git a/.changeset/renovate-cbb545a.md b/.changeset/renovate-cbb545a.md deleted file mode 100644 index be423e8252..0000000000 --- a/.changeset/renovate-cbb545a.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Updated dependency `@asyncapi/react-component` to `1.0.0-next.39`. diff --git a/.changeset/renovate-d26eca1.md b/.changeset/renovate-d26eca1.md deleted file mode 100644 index 6ddad0d5fe..0000000000 --- a/.changeset/renovate-d26eca1.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-adr': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Updated dependency `octokit` to `^2.0.0`. diff --git a/.changeset/renovate-dc1ee8d.md b/.changeset/renovate-dc1ee8d.md deleted file mode 100644 index a6f87f5484..0000000000 --- a/.changeset/renovate-dc1ee8d.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': patch ---- - -Updated dependency `@opensearch-project/opensearch` to `^2.0.0`. diff --git a/.changeset/renovate-dd35ce8.md b/.changeset/renovate-dd35ce8.md deleted file mode 100644 index 9d828bc42d..0000000000 --- a/.changeset/renovate-dd35ce8.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-common': patch -'@backstage/plugin-kubernetes': patch ---- - -Updated dependency `@kubernetes/client-node` to `^0.17.0`. diff --git a/.changeset/renovate-e091137.md b/.changeset/renovate-e091137.md deleted file mode 100644 index a5f53a1ec5..0000000000 --- a/.changeset/renovate-e091137.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Updated dependency `@octokit/webhooks` to `^10.0.0`. diff --git a/.changeset/renovate-f43300b.md b/.changeset/renovate-f43300b.md deleted file mode 100644 index 78f327c8b3..0000000000 --- a/.changeset/renovate-f43300b.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': patch ---- - -Updated dependency `@octokit/auth-app` to `^4.0.0`. diff --git a/.changeset/rich-goats-breathe.md b/.changeset/rich-goats-breathe.md deleted file mode 100644 index 2888c2f9a7..0000000000 --- a/.changeset/rich-goats-breathe.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': minor ---- - -**BREAKING**: Update FactRetrieverRegistry interface to be async so that db backed implementations can be passed through to the FactRetrieverEngine. - -If you have existing custom `FactRetrieverRegistry` implementations, you'll need to remove the `retrievers` member and make all the methods async. diff --git a/.changeset/rich-steaks-juggle.md b/.changeset/rich-steaks-juggle.md deleted file mode 100644 index 5879f2dace..0000000000 --- a/.changeset/rich-steaks-juggle.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-tech-insights-node': patch -'@backstage/plugin-tech-insights-backend': patch ---- - -The `FactRetriever` model has been extended by adding optional title and description fields, allowing you to display them in the UI. diff --git a/.changeset/rude-llamas-lie.md b/.changeset/rude-llamas-lie.md deleted file mode 100644 index 918d61da6d..0000000000 --- a/.changeset/rude-llamas-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-vault': patch ---- - -Export missing parameters and added them to the api-report. Also adapted the API to the expected response from the backend diff --git a/.changeset/search-boats-double.md b/.changeset/search-boats-double.md deleted file mode 100644 index 92fd372cb8..0000000000 --- a/.changeset/search-boats-double.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': patch ---- - -Fix search pagination to reset page cursor also when a term is cleared. diff --git a/.changeset/search-lightning-cult.md b/.changeset/search-lightning-cult.md deleted file mode 100644 index 79cd256e77..0000000000 --- a/.changeset/search-lightning-cult.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': minor ---- - -**BREAKING**: In order to remain interoperable with all currently supported -deployments of Elasticsearch, this package will now conditionally use either -the `@elastic/elasticsearch` or `@opensearch-project/opensearch` client when -communicating with your deployed cluster. - -If you do not rely on types exported from this package, or if you do not make -use of the `createElasticSearchClientOptions` or `newClient` methods on the -`ElasticSearchSearchEngine` class, then upgrading to this version should not -require any further action on your part. Everything will continue to work as it -always has. - -If you _do_ rely on either of the above methods or any underlying types, some -changes may be needed to your custom code. A type guard is now exported by this -package (`isOpenSearchCompatible(options)`), which you may use to help clarify -which client options are compatible with which client constructors. - -If you are using this package with the `search.elasticsearch.provider` set to -`aws`, and you are making use of the `newClient` method in particular, you may -wish to start using the `@opensearch-project/opensearch` client in your custom -code. diff --git a/.changeset/search-turtles-itch.md b/.changeset/search-turtles-itch.md deleted file mode 100644 index 2da26fc64a..0000000000 --- a/.changeset/search-turtles-itch.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@backstage/plugin-search': patch ---- - -To allow people to use a global search context in the search modal, the code for the search modal has been changed to only create a local search context if there is no parent context already defined. - -If you want to continue using a local context even if you define a global one, you will have to wrap the modal in a new local context manually: - -```tsx - - - -``` diff --git a/.changeset/serious-houses-watch.md b/.changeset/serious-houses-watch.md deleted file mode 100644 index 63d5253bcb..0000000000 --- a/.changeset/serious-houses-watch.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/theme': patch ---- - -**DEPRECATED**: The `bursts` object from `BackstagePaletteAdditions` has been depreciated and will be removed in a future release - -The `genPageTheme` function now includes an optional options object with an optional `fontColor` which defaults to white if not provided. diff --git a/.changeset/serious-zebras-joke.md b/.changeset/serious-zebras-joke.md deleted file mode 100644 index 78f38ca967..0000000000 --- a/.changeset/serious-zebras-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Support displaying subtitle text in `SidebarSubmenuItem` diff --git a/.changeset/shaggy-melons-drive.md b/.changeset/shaggy-melons-drive.md deleted file mode 100644 index b5674493f4..0000000000 --- a/.changeset/shaggy-melons-drive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': minor ---- - -Adding an optional type field to entity links to group and categorize links diff --git a/.changeset/shaggy-spiders-notice.md b/.changeset/shaggy-spiders-notice.md deleted file mode 100644 index 513f6cd521..0000000000 --- a/.changeset/shaggy-spiders-notice.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -CatalogBuilder supports now subscription to processing engine errors. - -```ts -subscribe(options: { - onProcessingError: (event: { unprocessedEntity: Entity, error: Error }) => Promise | void; -}); -``` - -If you want to get notified on errors while processing the entities, you call CatalogBuilder.subscribe -to get notifications with the parameters defined as above. diff --git a/.changeset/sharp-numbers-taste.md b/.changeset/sharp-numbers-taste.md deleted file mode 100644 index 4819aca18f..0000000000 --- a/.changeset/sharp-numbers-taste.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/errors': minor ---- - -The `ResponseError.fromResponse` now accepts a more narrow response type, in order to avoid incompatibilities between different fetch implementations. - -The `response` property of `ResponseError` has also been narrowed to a new `ConsumedResponse` type that omits all the properties for consuming the body of the response. This is not considered a breaking change as it was always an error to try to consume the body of the response. diff --git a/.changeset/sharp-planes-turn.md b/.changeset/sharp-planes-turn.md deleted file mode 100644 index 47f6a6176d..0000000000 --- a/.changeset/sharp-planes-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-vault-backend': minor ---- - -Throw exceptions instead of swallow them, remove some exported types from the `api-report`, small changes in the API responses & expose the vault `baseUrl` to the frontend as well diff --git a/.changeset/shiny-seahorses-do.md b/.changeset/shiny-seahorses-do.md deleted file mode 100644 index 06892900bf..0000000000 --- a/.changeset/shiny-seahorses-do.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-badges-backend': patch ---- - -Add missing installation instructions diff --git a/.changeset/shiny-turkeys-doubt.md b/.changeset/shiny-turkeys-doubt.md deleted file mode 100644 index edac39182c..0000000000 --- a/.changeset/shiny-turkeys-doubt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-org': patch ---- - -Render namespaces for teams with subtitles in `MyGroupsSidebarItem` diff --git a/.changeset/short-deers-remember.md b/.changeset/short-deers-remember.md deleted file mode 100644 index 7579e7773b..0000000000 --- a/.changeset/short-deers-remember.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/integration': patch -'@backstage/plugin-adr': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch -'@backstage/plugin-techdocs-node': patch ---- - -Upgrade git-url-parse to 12.0.0. - -Motivation for upgrade is transitively upgrading parse-url which is vulnerable -to several CVEs detected by Snyk. - -- SNYK-JS-PARSEURL-2935944 -- SNYK-JS-PARSEURL-2935947 -- SNYK-JS-PARSEURL-2936249 diff --git a/.changeset/short-olives-train.md b/.changeset/short-olives-train.md deleted file mode 100644 index 594d95f073..0000000000 --- a/.changeset/short-olives-train.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor -'@backstage/plugin-kubernetes-common': minor ---- - -Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId` diff --git a/.changeset/short-wolves-applaud.md b/.changeset/short-wolves-applaud.md deleted file mode 100644 index fa5cebffc3..0000000000 --- a/.changeset/short-wolves-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Export experimental `scaffolderCatalogExtension` for the new backend system. This export is not considered stable and should not be used in production. diff --git a/.changeset/shy-cameras-develop.md b/.changeset/shy-cameras-develop.md deleted file mode 100644 index c62a9a56e3..0000000000 --- a/.changeset/shy-cameras-develop.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-openapi': minor ---- - -Add basic OpenAPI \$ref support. - -For more information see [here](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-openapi). diff --git a/.changeset/silent-coats-brake.md b/.changeset/silent-coats-brake.md deleted file mode 100644 index b1cfbacb6a..0000000000 --- a/.changeset/silent-coats-brake.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-backend': patch ---- - -Use entity type predicates from catalog-model diff --git a/.changeset/silly-geese-design.md b/.changeset/silly-geese-design.md deleted file mode 100644 index d4f8de2510..0000000000 --- a/.changeset/silly-geese-design.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch -'@backstage/plugin-catalog': minor ---- - -Add hidden title column to catalog and API table to enable filtering by title. diff --git a/.changeset/silver-needles-unite.md b/.changeset/silver-needles-unite.md deleted file mode 100644 index b5fed7e615..0000000000 --- a/.changeset/silver-needles-unite.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Added support for customizing the time format used in the `HeaderWorldClock` component - -Here's an example of how this can be used in the `HomePage.tsx` found in `\packages\app\src\components\home` to change the clock to be in the 24hr time format: - -```diff -+const timeFormat: Intl.DateTimeFormatOptions = { -+ hour: '2-digit', -+ minute: '2-digit', -+ hour12: false, -+}; - -export const homePage = ( - -
} pageTitleOverride="Home"> -+ -
- - - - - -``` diff --git a/.changeset/small-shoes-hide.md b/.changeset/small-shoes-hide.md deleted file mode 100644 index b1f95e9f2d..0000000000 --- a/.changeset/small-shoes-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-node': patch ---- - -Exports `MissingIndexError` that can be used by the search engines for better error handling when missing index. diff --git a/.changeset/smart-elephants-knock.md b/.changeset/smart-elephants-knock.md deleted file mode 100644 index 7aed10a71e..0000000000 --- a/.changeset/smart-elephants-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The `test` command now ensures that all IO is flushed before exiting when printing `--help`. diff --git a/.changeset/smooth-sheep-hide.md b/.changeset/smooth-sheep-hide.md deleted file mode 100644 index 8a65602ca9..0000000000 --- a/.changeset/smooth-sheep-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops': patch ---- - -Exporting azureDevOpsApiRef, AzureGitTagsIcon, and all hooks for the benefit of other plugins. diff --git a/.changeset/spicy-walls-repair.md b/.changeset/spicy-walls-repair.md deleted file mode 100644 index 36187600c7..0000000000 --- a/.changeset/spicy-walls-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Add new config option for okta auth server and IDP diff --git a/.changeset/stale-needles-applaud.md b/.changeset/stale-needles-applaud.md deleted file mode 100644 index cc46dc2e3f..0000000000 --- a/.changeset/stale-needles-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Set font colors correctly for descriptions containing HTML diff --git a/.changeset/strange-tables-flash.md b/.changeset/strange-tables-flash.md deleted file mode 100644 index b42069aa64..0000000000 --- a/.changeset/strange-tables-flash.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-stack-overflow': patch -'@backstage/plugin-stack-overflow-backend': patch ---- - -app-config is now picked up properly. diff --git a/.changeset/strange-trains-collect.md b/.changeset/strange-trains-collect.md deleted file mode 100644 index 3da9aff515..0000000000 --- a/.changeset/strange-trains-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -The max content size for dry-run files has been reduced from 256k to 64k. diff --git a/.changeset/strong-lies-explain.md b/.changeset/strong-lies-explain.md deleted file mode 100644 index d9657be6b4..0000000000 --- a/.changeset/strong-lies-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/theme': patch ---- - -Adds optional `htmlFontSize` property and also sets typography design tokens for h5 and h6 in base theme. diff --git a/.changeset/sweet-plants-sparkle.md b/.changeset/sweet-plants-sparkle.md deleted file mode 100644 index 69e7647849..0000000000 --- a/.changeset/sweet-plants-sparkle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': patch ---- - -Allow frontend visibility for `integrations` itself. diff --git a/.changeset/sweet-rats-invite.md b/.changeset/sweet-rats-invite.md deleted file mode 100644 index f292e7bb43..0000000000 --- a/.changeset/sweet-rats-invite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Add sourcePath option to publish:gerrit action diff --git a/.changeset/swift-plants-fix.md b/.changeset/swift-plants-fix.md deleted file mode 100644 index 52873b7985..0000000000 --- a/.changeset/swift-plants-fix.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/backend-app-api': minor ---- - -Add initial plumbing for creating backends using the experimental backend framework. - -This package is highly **EXPERIMENTAL** and should not be used in production. diff --git a/.changeset/tall-pants-clap.md b/.changeset/tall-pants-clap.md deleted file mode 100644 index 5a1714c106..0000000000 --- a/.changeset/tall-pants-clap.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/integration': patch ---- - -Support self-hosted gitlab installations with relative URL. diff --git a/.changeset/tame-guests-wave.md b/.changeset/tame-guests-wave.md deleted file mode 100644 index bbf757084d..0000000000 --- a/.changeset/tame-guests-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops-backend': patch ---- - -Added comments to example to help avoid confusion as to where lines need to be added diff --git a/.changeset/techdocs-eyes-sit.md b/.changeset/techdocs-eyes-sit.md deleted file mode 100644 index a09410a4fb..0000000000 --- a/.changeset/techdocs-eyes-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': patch ---- - -Add sample headings on the documented component homepage. diff --git a/.changeset/techdocs-gorgeous-plants-sniff.md b/.changeset/techdocs-gorgeous-plants-sniff.md deleted file mode 100644 index f5453f35be..0000000000 --- a/.changeset/techdocs-gorgeous-plants-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Reorder browser tab title in Techdocs pages to have the site name first. diff --git a/.changeset/techdocs-sheep-talk.md b/.changeset/techdocs-sheep-talk.md deleted file mode 100644 index b17408d7a4..0000000000 --- a/.changeset/techdocs-sheep-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Remove the 60% factor from the font size calculation of headers to use the exact size defined in BackstageTheme. diff --git a/.changeset/techdocs-sixty-mugs-hug.md b/.changeset/techdocs-sixty-mugs-hug.md deleted file mode 100644 index a1a9e815a1..0000000000 --- a/.changeset/techdocs-sixty-mugs-hug.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Fix: When docs are shown in an entity page under the docs tab the sidebars start overlapping with the header and tabs in the page when you scroll the documentation content. diff --git a/.changeset/techdocs-the-whole-pulse.md b/.changeset/techdocs-the-whole-pulse.md deleted file mode 100644 index b54fb080ae..0000000000 --- a/.changeset/techdocs-the-whole-pulse.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@techdocs/cli': patch ---- - -Fixed a bug that prevented docker images from being pulled by default when generating TechDocs. diff --git a/.changeset/ten-cobras-wash.md b/.changeset/ten-cobras-wash.md deleted file mode 100644 index 81915d958d..0000000000 --- a/.changeset/ten-cobras-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': minor ---- - -Allowed post method on /refresh path diff --git a/.changeset/tender-chicken-learn.md b/.changeset/tender-chicken-learn.md deleted file mode 100644 index bd95c5545f..0000000000 --- a/.changeset/tender-chicken-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend': patch ---- - -If error is `MissingIndexError` we return a 400 response with a more clear error message. diff --git a/.changeset/tender-terms-flash.md b/.changeset/tender-terms-flash.md deleted file mode 100644 index ca5fdb3799..0000000000 --- a/.changeset/tender-terms-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': patch ---- - -Avoid double encoding of the file path in `getBitbucketServerDownloadUrl` diff --git a/.changeset/thick-cats-kiss.md b/.changeset/thick-cats-kiss.md deleted file mode 100644 index 8817115ec3..0000000000 --- a/.changeset/thick-cats-kiss.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Adding ability to customize the "unregister entity" menu item in the entity context menu on the entity page with options 'visible','hidden','disabled'.With this three new options, one can hide the "unregister entity" menu item from the list, disable or keep it enabled. - -The boolean input for "unregister entity" will be deprecated later in favour of the above three options. diff --git a/.changeset/thick-radios-drive.md b/.changeset/thick-radios-drive.md deleted file mode 100644 index 130030be59..0000000000 --- a/.changeset/thick-radios-drive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-adr': patch ---- - -Track discover event and result rank for `AdrSearchResultListItem` diff --git a/.changeset/thirty-rivers-watch.md b/.changeset/thirty-rivers-watch.md deleted file mode 100644 index d92343f365..0000000000 --- a/.changeset/thirty-rivers-watch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Added two new scaffolder actions: `github:repo:create` and `github:repo:push` diff --git a/.changeset/tricky-ravens-visit.md b/.changeset/tricky-ravens-visit.md deleted file mode 100644 index 8500c9b64e..0000000000 --- a/.changeset/tricky-ravens-visit.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-catalog': patch ---- - -Updated to remove usage of the `bursts` object in the theme palette diff --git a/.changeset/twelve-candles-jump.md b/.changeset/twelve-candles-jump.md deleted file mode 100644 index 9d0cccd0ba..0000000000 --- a/.changeset/twelve-candles-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-ldap': patch ---- - -Add possibility to resolve relations by RDN, in addition to UUID and DN diff --git a/.changeset/twelve-peaches-tickle.md b/.changeset/twelve-peaches-tickle.md deleted file mode 100644 index 2a7814ea06..0000000000 --- a/.changeset/twelve-peaches-tickle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Many symbol declarations have been moved to `@backstage/plugin-catalog-node`. This has no affect on users of this package as they are all re-exported. Modules that build on top of the catalog backend plugin should switch all of their imports to the `@backstage/plugin-catalog-node` package and remove the dependency on `@backstage/plugin-catalog-backend`. diff --git a/.changeset/two-crews-accept.md b/.changeset/two-crews-accept.md deleted file mode 100644 index 9540f97cb5..0000000000 --- a/.changeset/two-crews-accept.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore): - -```yaml -catalog: - providers: - gitlab: - yourProviderId: - host: gitlab-host # Identifies one of the hosts set up in the integrations - branch: main # Optional. Uses `master` as default - entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` -``` diff --git a/.changeset/two-owls-cry.md b/.changeset/two-owls-cry.md deleted file mode 100644 index ca371781a1..0000000000 --- a/.changeset/two-owls-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': patch ---- - -Throws `MissingIndexError` when no index of type exist. diff --git a/.changeset/unlucky-stingrays-juggle.md b/.changeset/unlucky-stingrays-juggle.md deleted file mode 100644 index f2e83f7163..0000000000 --- a/.changeset/unlucky-stingrays-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-import': patch ---- - -Support use without `integrations` or only integrations without frontend visible properties (e.g., `bitbucketCloud`) being configured by checking `integrations.github` directly without attempting to load `integrations`. diff --git a/.changeset/violet-mayflies-mix.md b/.changeset/violet-mayflies-mix.md new file mode 100644 index 0000000000..a4d078ac35 --- /dev/null +++ b/.changeset/violet-mayflies-mix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Adjust references in deprecation warnings to point to stable URL/document. diff --git a/.changeset/warm-monkeys-study.md b/.changeset/warm-monkeys-study.md deleted file mode 100644 index ae9ab4565c..0000000000 --- a/.changeset/warm-monkeys-study.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-plugin-api': patch ---- - -Enabled the `@backstage/core-plugin-api/alpha` entry point. diff --git a/.changeset/weak-bananas-deliver.md b/.changeset/weak-bananas-deliver.md deleted file mode 100644 index f46c7b7bfe..0000000000 --- a/.changeset/weak-bananas-deliver.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@backstage/plugin-pagerduty': minor ---- - -Introduces a new annotation `pagerduty.com/service-id` that can be used instead of the `pagerduty.com/integration-key` annotation. -_Note: If both annotations are specified on a given Entity, then the `pagerduty.com/integration-key` annotation will be prefered_ - -**BREAKING** The `PagerDutyClient.fromConfig` static method now expects a `FetchApi` compatible object and has been refactored to -accept 2 arguments: config and ClientApiDependencies -The `PagerDutyClient` now relies on a `fetchApi` being available to execute `fetch` requests. - -**BREAKING** A new query method `getServiceByEntity` that is used to query for Services by either the `integrationKey` or `serviceId` -annotation values if they are defined. The `integrationKey` value is preferred currently over `serviceId`. As such, the previous -`getServiceByIntegrationKey` method has been removed. - -**BREAKING** The return values for each Client query method has been changed to return an object instead of raw values. -For example, the `getIncidentsByServiceId` query method now returns an object in the shape of `{ incidents: Incident[] }` -instead of just `Incident[]`. -This same pattern goes for `getChangeEventsByServiceId` and `getOnCallByPolicyId` functions. - -**BREAKING** All public exported types that relate to entities within PagerDuty have been prefixed with `PagerDuty` (e.g. `ServicesResponse` is now `PagerDutyServicesResponse` and `User` is now `PagerDutyUser`) - -In addition, various enhancements/bug fixes were introduced: - -- The `PagerDutyCard` component now wraps error and loading messages with an `InfoCard` to contain errors/messages. This enforces a consistent experience on the EntityPage -- If no service can be found for the provided integration key, a new Error Message Empty State component will be shown instead of an error alert -- Introduces the `fetchApi` to replace standard `window.fetch` - - ensures that Identity Authorization is respected and provided in API requests diff --git a/.changeset/weak-jeans-cry.md b/.changeset/weak-jeans-cry.md deleted file mode 100644 index 79f419e3db..0000000000 --- a/.changeset/weak-jeans-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Add `allowArbitraryValues` to `ui:options` in `OwnedEntityPicker`, similar to `allowArbitraryValues` in `EntityPicker` diff --git a/.changeset/weak-llamas-repeat.md b/.changeset/weak-llamas-repeat.md deleted file mode 100644 index a86ce3a964..0000000000 --- a/.changeset/weak-llamas-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': minor ---- - -Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` diff --git a/.changeset/wet-cameras-juggle.md b/.changeset/wet-cameras-juggle.md deleted file mode 100644 index 62cc206356..0000000000 --- a/.changeset/wet-cameras-juggle.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-azure-devops-common': patch ---- - -Adding getProjects endpoint to list out all projects associated with the Azure DevOps organization. - -It can be accessed by using this endpoint `{backendUrl}/api/azure-devops/projects` diff --git a/.changeset/wet-dolphins-act.md b/.changeset/wet-dolphins-act.md deleted file mode 100644 index b975f464cb..0000000000 --- a/.changeset/wet-dolphins-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-actions': patch ---- - -Minor cleanup of the API surface. diff --git a/.changeset/wicked-icons-grin.md b/.changeset/wicked-icons-grin.md deleted file mode 100644 index 8d26a9255e..0000000000 --- a/.changeset/wicked-icons-grin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Swap usage of `MaterialTable` with `Table` from `core-components` diff --git a/.changeset/wicked-ladybugs-argue.md b/.changeset/wicked-ladybugs-argue.md deleted file mode 100644 index 9a36cf17cb..0000000000 --- a/.changeset/wicked-ladybugs-argue.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -'@backstage/plugin-catalog': patch -'@backstage/plugin-catalog-react': patch ---- - -Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors. - -If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this: - -```diff -... -import { - CatalogFilterLayout, - EntityTypePicker, - UserListPicker, - EntityTagPicker -+ EntityProcessingStatusPicker, -} from '@backstage/plugin-catalog-react'; -... -export const CustomCatalogPage = ({ - columns, - actions, - initiallySelectedFilter = 'owned', -}: CatalogPageProps) => { - return ( - ... - - - - - - ... -}; -``` diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 113ca7757d..f00771d29d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,7 +22,11 @@ yarn.lock @backstage/reviewers @backst /plugins/azure-devops @backstage/reviewers @marleypowell @awanlin /plugins/azure-devops-backend @backstage/reviewers @marleypowell @awanlin /plugins/azure-devops-common @backstage/reviewers @marleypowell @awanlin +/plugins/bitbucket-cloud-common @backstage/reviewers @pjungermann /plugins/bitrise @backstage/reviewers @backstage/sda-se-reviewers +/plugins/catalog-backend-module-aws @backstage/reviewers @pjungermann +/plugins/catalog-backend-module-bitbucket-cloud @backstage/reviewers @pjungermann +/plugins/catalog-backend-module-msgraph @backstage/reviewers @pjungermann /plugins/catalog-graph @backstage/reviewers @backstage/sda-se-reviewers /plugins/circleci @backstage/reviewers @adamdmharvey /plugins/cloudbuild @backstage/reviewers @trivago/ebarrios diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index 8428dc2d0e..cd01425a5e 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -362,3 +362,4 @@ Zhou zoomable zsh Alef +Cloudflare diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index b82a130431..35b0a8c0a6 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -17,7 +17,7 @@ jobs: for your contributions. days-before-issue-stale: 60 days-before-issue-close: 7 - exempt-issue-labels: 'pinned,security,plugin,help wanted,good first issue,rfc,will-fix' + exempt-issue-labels: pinned,security,plugin,after-vacations,rfc,will-fix stale-issue-label: stale stale-pr-message: > This PR has been automatically marked as stale because it has not had @@ -25,6 +25,6 @@ jobs: If you are the author and the PR has been closed, feel free to re-open the PR and continue the contribution! days-before-pr-stale: 7 days-before-pr-close: 5 - exempt-pr-labels: reviewer-approved,will-fix + exempt-pr-labels: after-vacations,will-fix stale-pr-label: stale operations-per-run: 100 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1afbf072fc..f658799a85 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,10 +36,16 @@ You can also use this process if you have an idea for a good plugin but you hope Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more. -### Write Documentation +### Write Documentation or improve the website The current documentation is very limited. Help us make the `/docs` folder come alive. +Docs are published to [backstage.io/docs](https://backstage.io/docs). If you +contribute to the documentation, you might want to preview your changes before +submitting them. You'll find the website sources under [/microsite](/microsite) +with instructions for building and locally serving the website in the +[README](/microsite#readme). + ### Contribute to Storybook We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook). diff --git a/docs/auth/cloudflare/access.md b/docs/auth/cloudflare/access.md new file mode 100644 index 0000000000..340817097b --- /dev/null +++ b/docs/auth/cloudflare/access.md @@ -0,0 +1,113 @@ +--- +id: cfaccess +title: Cloudflare Access Provider +sidebar_label: cfaccess +# prettier-ignore +description: Adding Cloudflare Access as an authentication provider in Backstage +--- + +Similar to GCP IAP Proxy Provider or AWS ALB provider, developers can offload authentication +support to Cloudflare Access. + +This tutorial shows how to use authentication on Cloudflare Access sitting in +front of Backstage. + +It is assumed a Cloudflare tunnel is already serving traffic in front of a +Backstage instance configured to serve the frontend app from the backend and is +already gated using Cloudflare Access. + +## Configuration + +Let's start by adding the following `auth` configuration in your +`app-config.yaml` or `app-config.production.yaml` or similar: + +```yaml +auth: + providers: + cfaccess: + teamName: +``` + +You can find the team name in the Cloudflare Zero Trust dashboard. + +This config section must be in place for the provider to load at all. Now let's +add the provider itself. + +## Backend Changes + +Add a `providerFactories` entry to the router in +`packages/backend/plugin/auth.ts`. + +```ts +import { providers } from '@backstage/plugin-auth-backend'; + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + return await createRouter({ + logger: env.logger, + config: env.config, + database: env.database, + discovery: env.discovery, + providerFactories: { + 'cfaccess': providers.cfAccess.create({ + // Replace the auth handler if you want to customize the returned user + // profile info (can be left out; the default implementation is shown + // below which only returns the email). You may want to amend this code + // with something that loads additional user profile data out. + async authHandler({ accessToken }) { + return { profile: { email: accessToken.email } }; + }, + signIn: { + // You need to supply an identity resolver, that takes the profile + // and the access token and produces the Backstage token with the + // relevant user info. + async resolver({ profile, result }, ctx) { + // Somehow compute the Backstage token claims. Just some dummy code + // shown here, but you may want to query your LDAP server, or + // https://.cloudflareaccess.com/cdn-cgi/access/get-identity + // https://developers.cloudflare.com/cloudflare-one/identity/users/validating-json/#groups-within-a-jwt + const id = profile.email.split('@')[0]; + const sub = stringifyEntityRef({ kind: 'User', name: id }); + const ent = [sub, stringifyEntityRef({ kind: 'Group', name: 'team-name' }); + return ctx.issueToken({ claims: { sub, ent } }); + }, + }, + }), + }, + }); +} +``` + +Now the backend is ready to serve auth requests on the +`/api/auth/cfaccess/refresh` endpoint. All that's left is to update the +frontend sign-in mechanism to poll that endpoint through Cloudflare Access, on +the user's behalf. + +## Frontend Changes + +It is recommended to use the `ProxiedSignInPage` for this provider, which is +installed in `packages/app/src/App.tsx` like this: + +```diff ++import { ProxiedSignInPage } from '@backstage/core-components'; + + const app = createApp({ + components: { ++ SignInPage: props => , +``` + +## Adding the provider to the Backstage frontend + +It is recommended to use the `ProxiedSignInPage` for this provider, which is +installed in `packages/app/src/App.tsx` like this: + +```diff ++import { ProxiedSignInPage } from '@backstage/core-components'; + + const app = createApp({ + components: { ++ SignInPage: props => , +``` + +See [Sign-In with Proxy Providers](../index.md#sign-in-with-proxy-providers) for pointers on how to set up the sign-in page to also work smoothly for local development. diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md index 06ada040e4..b9944508c6 100644 --- a/docs/auth/identity-resolver.md +++ b/docs/auth/identity-resolver.md @@ -273,46 +273,57 @@ that the user belongs to using the user access token in the provided result obje ```ts // File: packages/backend/src/plugins/auth.ts -import { DEFAULT_NAMESPACE, stringifyEntityRef, } from '@backstage/catalog-model'; +import { createRouter, providers } from '@backstage/plugin-auth-backend'; +import { Router } from 'express'; +import { PluginEnvironment } from '../types'; +import { + stringifyEntityRef, + DEFAULT_NAMESPACE, +} from '@backstage/catalog-model'; export default async function createPlugin( - // ... + env: PluginEnvironment, +): Promise { return await createRouter({ - // ... + ...env, providerFactories: { - // ... - google: async ({ profile }, ctx) => { - if (!profile.email) { - throw new Error( - 'Login failed, user profile does not contain an email', - ); - } - // Split the email into the local part and the domain. - const [localPart, domain] = profile.email.split('@'); + google: providers.google.create({ + signIn: { + resolver: async ({ profile }, ctx) => { + if (!profile.email) { + throw new Error( + 'Login failed, user profile does not contain an email', + ); + } + // Split the email into the local part and the domain. + const [localPart, domain] = profile.email.split('@'); - // Next we verify the email domain. It is recommended to include this - // kind of check if you don't look up the user in an external service. - if (domain !== 'acme.org') { - throw new Error('Login failed, user email domain check failed'); - } + // Next we verify the email domain. It is recommended to include this + // kind of check if you don't look up the user in an external service. + if (domain !== 'acme.org') { + throw new Error( + `Login failed, this email ${profile.email} does not belong to the expected domain`, + ); + } - // By using `stringifyEntityRef` we ensure that the reference is formatted correctly - const userEntityRef = stringifyEntityRef({ - kind: 'User', - name: localPart, - namespace: DEFAULT_NAMESPACE, - }); - - return ctx.issueToken({ - claims: { - sub: userEntityRef, - ent: [userEntityRef], + // By using `stringifyEntityRef` we ensure that the reference is formatted correctly + const userEntity = stringifyEntityRef({ + kind: 'User', + name: localPart, + namespace: DEFAULT_NAMESPACE, + }); + return ctx.issueToken({ + claims: { + sub: userEntity, + ent: [userEntity], + }, + }); }, - }); - }, - } - }) -) + }, + }), + }, + }); +} ``` ## AuthHandler diff --git a/docs/auth/index.md b/docs/auth/index.md index e713e722ef..8d303c776d 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -18,6 +18,7 @@ Backstage comes with many common authentication providers in the core library: - [Auth0](auth0/provider.md) - [Azure](microsoft/provider.md) - [Bitbucket](bitbucket/provider.md) +- [Cloudflare Access](cloudflare/access.md) - [GitHub](github/provider.md) - [GitLab](gitlab/provider.md) - [Google](google/provider.md) @@ -131,7 +132,7 @@ allows allowing guest access: Some auth providers are so-called "proxy" providers, meaning they're meant to be used behind an authentication proxy. Examples of these are -[AWS ALB](https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md), +[AWS ALB](https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md), [Cloudflare Access](./cloudflare/access.md), [GCP IAP](./google/gcp-iap-auth.md), and [OAuth2 Proxy](./oauth2-proxy/provider.md). When using a proxy provider, you'll end up wanting to use a different sign-in page, as diff --git a/docs/deployment/scaling.md b/docs/deployment/scaling.md new file mode 100644 index 0000000000..f3aa744cf7 --- /dev/null +++ b/docs/deployment/scaling.md @@ -0,0 +1,24 @@ +--- +id: scaling +title: Scaling Backstage Deployments +sidebar_label: Scaling +description: Scaling Backstage production deployments +--- + +There are several different methods for scaling Backstage deployments. The most +straight-forward one is to simply deploy multiple identical instances and distributing +incoming requests across them. The one requirement for this to work is that all instances +need to share the same external resources, such as the database, and optional caching or +search services. The Backstage backend plugins will coordinate through the database +to share state and coordinate work. + +Another method for scaling Backstage deployments is to break apart the backend +into multiple different services, each running a different set of plugins. This +is a more advanced approach and requires you to be able to route requests to +the appropriate backends based on the plugin ID. Both for ingress, but also +internal traffic between Backstage backends, which is done by creating a custom +implementation of the [PluginEndpointDiscover](../reference/backend-common.pluginendpointdiscovery.md) interface. + +Lastly, you can also replicate the Backstage deployments across multiple regions. +This is not a pattern that there is built-in support for and typically only makes +sense to do for individual backend plugins. diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md index 633584bdb5..dce4e60a87 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -57,11 +57,16 @@ This is an array used to determine where to retrieve cluster configuration from. Valid cluster locator methods are: +- [`catalog`](#catalog) - [`localKubectlProxy`](#localKubectlProxy) - [`config`](#config) - [`gke`](#gke) - [custom `KubernetesClustersSupplier`](#custom-kubernetesclusterssupplier) +#### `catalog` + +This cluster locator method will read cluster information from the catalog. + #### `localKubectlProxy` This cluster locator method will assume a locally running [`kubectl proxy`](https://kubernetes.io/docs/tasks/extend-kubernetes/http-proxy-access-api/#using-kubectl-to-start-a-proxy-server) process using the default port (8001). diff --git a/docs/features/search/README.md b/docs/features/search/README.md index f1744d4d80..618231a31e 100644 --- a/docs/features/search/README.md +++ b/docs/features/search/README.md @@ -14,60 +14,16 @@ Backstage Search lets you find the right information you are looking for in the ## Features -- A federated, faceted search, searching across all entities registered in your Backstage instance. +- A search that lets you bring your own search engine. +- A search that lets you extend it by creating collators for easily indexing content from plugins and other sources. +- A search that lets you create composable search page experiences. +- A search that lets you customize the look and feel of each search result. -- A search that lets you plug in your own search engine of choice. - -- A standardized search API where you can choose to index data from other plugins. - -## Project roadmap - -### Now - -**Backstage Search 1.0** - -A stable Search API for plugin developers to add search to their plugins, and app integrators to expose that to their users. - -We will consider Backstage Search to be 1.0 when the above -use-cases are met, and an ecosystem of search-enabled plugins are available and -stable. - -- As a plugin developer, there should be at least one example of a Backstage - plugin that integrates with search that I can use as inspiration for my own - plugin's search capabilities (for example, the TechDocs plugin). -- As an app integrator, there should be plenty of examples and documentation on - how to customize and extend search in my Backstage instance to meet my - organization's needs. - -### Next - -_Not specified_ - -### Someday/Maybe - -_Not specified_ - -### Done - -See [Done](#done) below for a list of completed roadmap items. +See the more detailed [architecture](./architecture.md) and [tech stack](./architecture.md#tech-stack). ## Supported -The following sections show the search engines and plugins currently supported by Backstage Search. - -### Search engines - -See [Backstage Search Architecture](architecture.md) to get an overview of how -the search engines are used. - -| Search Engines | Support Status | -| -------------------------------------------------- | -------------- | -| [Lunr](./search-engines.md#lunr) | ✅ | -| [ElasticSearch](./search-engines.md#elasticsearch) | ✅ | -| [Postgres](./search-engines.md#postgres) | ✅ | - -[Reach out to us](#get-involved) if you want to chat about support for more -search engines. +The following sections show the plugins and search engines currently supported by Backstage Search. ### Plugins integrated with Backstage Search @@ -77,20 +33,19 @@ search engines. | [TechDocs](./how-to-guides.md#how-to-index-techdocs-documents) | ✅ | | [Stack Overflow](https://github.com/backstage/backstage/blob/master/plugins/stack-overflow-backend/README.md#index-stack-overflow-questions-to-search) | ✅ | -[Reach out to us](#get-involved) if you want to chat about support for more -plugins integrated to search. +### Search engines -## Tech Stack +See [Backstage Search Architecture](architecture.md) to get an overview of how +the search engines are used. -| Stack | Location | -| ------------------------- | ----------------------------------------------------- | -| Frontend Plugin | @backstage/plugin-search | -| Frontend Plugin Library | @backstage/plugin-search-react | -| Isomorphic Plugin Library | @backstage/plugin-search-common | -| Backend Plugin | @backstage/plugin-search-backend | -| Backend Plugin Library | @backstage/plugin-search-backend-node | -| Backend Plugin Module | @backstage/plugin-search-backend-module-elasticsearch | -| Backend Plugin Module | @backstage/plugin-search-backend-module-pg | +| Search Engines | Support Status | +| -------------------------------------------------- | -------------- | +| [ElasticSearch](./search-engines.md#elasticsearch) | ✅ | +| [Lunr](./search-engines.md#lunr) | ✅ | +| [Postgres](./search-engines.md#postgres) | Community ✅ | + +[Reach out to us](#get-involved) if you want to chat about support for more plugin integrations and +search engines. ## Get involved @@ -98,9 +53,9 @@ For any questions, feedback, or to help move search forward, reach out to us in the **#search** channel of our [Discord chatroom](https://github.com/backstage/backstage#community). -## Done +## Use Cases supported -**Backstage Search Pre-Alpha** +#### **Backstage Search Pre-Alpha** Search Frontend letting you search through the entities of the software catalog. @@ -118,7 +73,7 @@ there by means of a front-end only, non-extensible MVP. - As a software engineer I should be able to hide the filters if I don’t need to use them. -**Backstage Search Alpha** +#### **Backstage Search Alpha** Basic “out-of-the-box” in-memory indexing process of entities, and their metadata, registered to the Software Catalog. @@ -136,7 +91,7 @@ met, but built on top of a flexible, extensible platform. should be possible to have the pre-alpha user experiences covered without having to set up and configure a search engine. -**Backstage Search Beta** +#### **Backstage Search Beta** At least one production-ready search engine that supports the same use-cases as in the alpha. @@ -151,3 +106,18 @@ are met, and can be deployed using a production-ready search engine. - As an integrator, I should be able to tune the queries sent to my chosen search engine according to my organization's needs, but a sensible default query should be in place so that I am not required to do so. + +#### **Backstage Search 1.0** + +A stable Search API for plugin developers to add search to their plugins, and app integrators to expose that to their users. + +We will consider Backstage Search to be 1.0 when the above +use-cases are met, and an ecosystem of search-enabled plugins are available and +stable. + +- As a plugin developer, there should be at least one example of a Backstage + plugin that integrates with search that I can use as inspiration for my own + plugin's search capabilities (for example, the TechDocs plugin). +- As an app integrator, there should be plenty of examples and documentation on + how to customize and extend search in my Backstage instance to meet my + organization's needs. diff --git a/docs/features/search/architecture.md b/docs/features/search/architecture.md index 4fac0e7cff..f1183cec5f 100644 --- a/docs/features/search/architecture.md +++ b/docs/features/search/architecture.md @@ -4,10 +4,6 @@ title: Search Architecture description: Documentation on Search Architecture --- -> _This architecture has not been fully implemented yet. Find our milestones to -> follow our progress and help contribute on the -> [Search Roadmap](./README.md#project-roadmap)._ - Below you can explore the Search Architecture. Our aim with this architecture is to support a wide variety of search engines, while providing a simple developer experience for plugin developers, and a good out-of-the-box experience for @@ -44,3 +40,15 @@ Architecture non-goals: - At this time, we do not intend to directly support event-driven or incremental index management. Instead, we'll be focused on scheduled, bulk index management. + +## Tech Stack + +| Stack | Location | +| ------------------------- | ----------------------------------------------------- | +| Frontend Plugin | @backstage/plugin-search | +| Frontend Plugin Library | @backstage/plugin-search-react | +| Isomorphic Plugin Library | @backstage/plugin-search-common | +| Backend Plugin | @backstage/plugin-search-backend | +| Backend Plugin Library | @backstage/plugin-search-backend-node | +| Backend Plugin Module | @backstage/plugin-search-backend-module-elasticsearch | +| Backend Plugin Module | @backstage/plugin-search-backend-module-pg | diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index d0e13eda55..71b9c276d9 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -34,7 +34,7 @@ import { DefaultResultListItem, SearchFilter, } from '@backstage/plugin-search-react'; -import { CatalogResultListItem } from '@backstage/plugin-catalog'; +import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; export const searchPage = ( diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index fb0883d506..01d85b8aa2 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -148,271 +148,6 @@ indexBuilder.addCollator({ As shown above, you can add a catalog entity filter to narrow down what catalog entities are indexed by the search engine. -## How to migrate from Search Alpha to Beta - -For the purposes of this guide, Search Beta version is defined as: - -- **Search Plugin**: At least `v0.7.2` -- **Search Backend Plugin**: At least `v0.4.6` -- **Search Backend Node**: At least `v0.5.0` -- **Search Common**: At least `v0.3.0` - -In the Beta version, the Search Platform's indexing process has been rewritten -as a stream pipeline in order to improve efficiency and performance on large -sets of documents. - -If you've not yet extended the Search Platform with custom code, and have -instead taken advantage of default collators, decorators, and search engines -provided by existing plugins, the migration process is fairly straightforward: - -1. Upgrade to at least version `0.5.0` of - `@backstage/plugin-search-backend-node`, as well as any backend plugins whose - collators you are using (e.g. at least version `0.23.0` of - `@backstage/plugin-catalog-backend` and/or version `0.14.1` of - `@backstage/plugin-techdocs-backend`), as well as any search-engine specific - plugin you are using (e.g. at least version `0.3.0` of - `@backstage/plugin-search-backend-module-pg` or version `0.1.0` of - `@backstage/plugin-search-backend-module-elasticsearch`). -2. Then, make the following changes to your - `/packages/backend/src/plugins/search.ts` file: - - ```diff - -import { DefaultCatalogCollator } from '@backstage/plugin-catalog-backend'; - -import { DefaultTechDocsCollator } from '@backstage/plugin-techdocs-backend'; - +import { DefaultCatalogCollatorFactory } from '@backstage/plugin-catalog-backend'; - +import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-techdocs-backend'; - // ... - const indexBuilder = new IndexBuilder({ logger: env.logger, searchEngine }); - indexBuilder.addCollator({ - defaultRefreshIntervalSeconds: 600, - - collator: DefaultCatalogCollator.fromConfig(env.config, { - discovery: env.discovery, - }), - + factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { - discovery: env.discovery, - }), - }); - indexBuilder.addCollator({ - defaultRefreshIntervalSeconds: 600, - - collator: DefaultTechDocsCollator.fromConfig(env.config, { - + factory: DefaultTechDocsCollatorFactory.fromConfig(env.config, { - discovery: env.discovery, - logger: env.logger, - }), - }); - ``` - -Any custom collators, decorators, or search engine implementations will require -minor refactoring. Continue on for details. - -### Rewriting alpha-style collators for beta - -In alpha versions of the Backstage Search Platform, collators were classes that -implemented an `execute` method which resolved an `IndexableDocument` array. - -In beta versions, the logic encapsulated by the aforementioned `execute` method -is contained within an [object-mode][obj-mode] `Readable` stream where each -object pushed onto the stream is of type `IndexableDocument`. Instances of this -stream are instantiated by a factory class conforming to the -`DocumentCollatorFactory` interface. - -The optimal conversion strategy will vary depending on the collator's logic, but -the simplest conversion can follow a process like this: - -1. Rename your collator class to something like `YourCollatorFactory` and update - it to implement `DocumentCollatorFactory` instead of `DocumentCollator`. -2. Update its `execute` method so that it resolves - `AsyncGenerator` instead of `YourIndexableDocument[]`. -3. Implement `DocumentCollatorFactory`'s `getCollator` method which resolves to - `Readable.from(this.execute())` (which is a utility for creating [readable - streams][read-stream] from [async generators][async-gen]). - -```ts -import { DocumentCollatorFactory } from '@backstage/plugin-search-backend-node'; -import { Readable } from 'stream'; -export class YourCollatorFactory implements DocumentCollatorFactory { - public readonly type: string = 'your-type'; - async *execute(): AsyncGenerator { - const widgets = await this.client.getWidgets(); - for (const widget of widgets) { - yield { - title: widget.name, - location: widget.url, - text: widget.description, - }; - } - } - async getCollator() { - return Readable.from(this.execute()); - } -} -``` - -Note: it may be possible to simplify your collator dramatically! If your custom -collator was previously using streams under the hood (for example, by reading -newline delimited JSON from a local or remote file), you could just expose the -stream directly via a simple factory class: - -```ts -import { DocumentCollatorFactory } from '@backstage/plugin-search-backend-node'; -import { createReadStream } from 'fs'; -import { parse } from '@jsonlines/core'; -export class YourCollatorFactory implements DocumentCollatorFactory { - public readonly type: string = 'your-type'; - async getCollator() { - const parseStream = parse(); - return createReadStream('./documents.ndjson').pipe(parseStream); - } -} -``` - -### Rewriting alpha-style decorators for beta - -In alpha versions of the Backstage Search Platform, decorators were classes that -implemented an `execute` method which took an `IndexableDocument` array as an -argument, and resolved a modified array of the same type. - -In beta versions, the logic encapsulated by the aforementioned `execute` method -is contained within an object-mode `Transform` stream which reads objects of -type `IndexableDocument`, and writes objects of a conforming type. Similar to -collators, instances of this stream are instantiated by a factory class -conforming to the `DocumentDecoratorFactory` interface. - -Although you can choose to implement a `Transform` stream from scratch, the -`@backstage/plugin-search-backend-node` package provides a `DecoratorBase` class -in order to simplify the developer experience. With this base class, all that's -needed is to transfer your old decorator class logic into the base class' three -methods (`initialize`, `decorate`, and `finalize`), and implement the factory -class that instantiates the stream: - -```ts -import { DecoratorBase } from '@backstage/plugin-search-backend-node'; -export class YourDecorator extends DecoratorBase { - async initialize() { - // Setup logic. Performed once before any documents are consumed. - } - async decorate( - document: YourIndexableDocument, - ): Promise { - // Perform transformation logic here. - return document; - } - async finalize() { - // Teardown logic. Performed once after all documents have been consumed. - } -} -export class YourDecoratorFactory implements DocumentDecoratorFactory { - async getDecorator() { - return new YourDecorator(); - } -} -``` - -Note the return type of the `decorate` method and how each can be used to -different effect. - -- By resolving a single `YourIndexableDocument` object, your decorator can be - used to make simple transformations: - - ```ts - class BooleanWidgetCoolnessDecorator extends DecoratorBase { - async decorator(widget) { - // Perform a simple, 1:1 transformation. - widget.isCool = widget.isCool === 'true' ? true : false; - return widget; - } - } - ``` - -- By resolving `undefined`, your decorator can filter out documents which - shouldn't be in the index: - - ```ts - class OnlyCoolWidgetsDecorator extends DecoratorBase { - async decorator(widget) { - // Perform a simple filter operation. - return widget.isCool ? widget : undefined; - } - } - ``` - -- By resolving an array of `YourIndexableDocument` objects, you can generate - multiple documents based on the content of one: - - ```ts - class WidgetByVariantDecorator extends DecoratorBase { - async decorator(widget) { - // Generate one widget doc per widget variant. - return widget.variants.map(variant => { - // Each widget doc is the given widget plus a "variant" property - // pulled from a widget.variants string array. - return { - ...widget, - variant, - }; - }); - } - } - ``` - -In alpha versions, a decorator had access to every `IndexableDocument` -simultaneously. This is no longer possible in beta versions (precisely to make -the indexing process more efficient and performant). You will need to modify -your decorator's logic so that it does not need access to every document at -once. - -### Rewriting alpha-style search engines for beta - -Search Engines are responsible for both querying and indexing documents to an -underlying search engine technology. While the search engine query interface -didn't change between alpha and beta versions, the indexing half of the -interface _did_ change. - -In alpha versions of the Backstage Search Platform, a search engine implemented -an `index` method which took a `type` and an `IndexableDocument` array and was -responsible for writing these documents to the underlying search engine. - -In beta versions, the logic encapsulated by the aforementioned `index` method is -contained within an object-mode `Writable` stream which expects objects of type -`IndexableDocument`. On the search engine class itself, the `index` method is -replaced with a `getIndexer` factory method which still takes the `type`, but -resolves an instance of the aforementioned `Writable` stream. - -Although you can choose to implement a `Writable` stream from scratch, the -`@backstage/plugin-search-backend-node` package provides a -`BatchSearchEngineIndexer` class in order to simplify the developer experience. -With this base class, which collects documents in batches of a configurable size -on your behalf, all that's needed is to transfer your old `index` method logic -into the base class' three methods (`initialize`, `index`, and `finalize`), and -implement the factory method that instantiates the stream: - -```ts -import { BatchSearchEngineIndexer } from '@backstage/plugin-search-backend-node'; -import { SearchEngine } from '@backstage/plugin-search-common'; -export class YourSearchEngineIndexer extends BatchSearchEngineIndexer { - constructor({ type }: { type: string }) { - // Customize the number of documents passed to the index method per batch. - super({ batchSize: 500 }); - // An imaginary search engine indexing client. - this.index = new SomeSearchEngineIndex({ indexName: type }); - } - async initialize() { - // Setup logic. Performed once before any documents are consumed. - } - async index(documents: IndexableDocument[]) { - await this.index.batchOf(documents); - } - async finalize() { - // Teardown logic. Performed once after all documents have been consumed. - } -} -export class YourSearchEngine implements SearchEngine { - async getIndexer(type: string) { - return new YourSearchEngineIndexer({ type }); - } -} -``` - ## How to customize search results highlighting styling The default highlighting styling for matched terms in search results is your diff --git a/docs/features/search/search-engines.md b/docs/features/search/search-engines.md index ecd8a85109..515c1268d7 100644 --- a/docs/features/search/search-engines.md +++ b/docs/features/search/search-engines.md @@ -232,3 +232,23 @@ search: auth: apiKey: base64EncodedKey ``` + +### Elastic search batch size + +Default batch size of the elastic search engine is set to 1000. If you are using a lower spec computing resources (like AWS small instance), +you may get an error caused by limited `thread_pool` configuration. ( `429 Too Many Requests /_bulk` ) + +In this case you need to decrease the batch size to index the resources to prevent this kind of error. You can easily decrease +or increase the batch size in your `app-config.yaml` using the `batchSize` option provided for elasticsearch configuration. + +#### Configuration example + +**Set batch size to 100** + +```yaml +search: + elasticsearch: + batchSize: 100 +``` + +> You can also increase the batch size if you are using a large ES instance. diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 81367b19c5..a1cd50f271 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -93,8 +93,12 @@ spec: # some outputs which are saved along with the job for use in the frontend output: - remoteUrl: ${{ steps.publish.output.remoteUrl }} - entityRef: ${{ steps.register.output.entityRef }} + links: + - title: Repository + url: ${{ steps.publish.output.remoteUrl }} + - title: Open in catalog + icon: catalog + entityRef: ${{ steps.register.output.entityRef }} ``` Let's dive in and pick apart what each of these sections do and what they are. @@ -495,8 +499,12 @@ The main two that are used are the following: ```yaml output: - remoteUrl: ${{ steps.publish.output.remoteUrl }} # link to the remote repository - entityRef: ${{ steps.register.output.entityRef }} # link to the entity that has been ingested to the catalog + links: + - title: Repository + url: ${{ steps.publish.output.remoteUrl }} # link to the remote repository + - title: Open in catalog + icon: catalog + entityRef: ${{ steps.register.output.entityRef }} # link to the entity that has been ingested to the catalog ``` ## The templating syntax diff --git a/docs/integrations/aws-s3/discovery.md b/docs/integrations/aws-s3/discovery.md index 40739937a4..9e9e6ebede 100644 --- a/docs/integrations/aws-s3/discovery.md +++ b/docs/integrations/aws-s3/discovery.md @@ -76,27 +76,3 @@ builder.addEntityProvider( }), ); ``` - -## Alternative Processor - -As alternative to the entity provider `AwsS3EntityProvider` -you can still use the `AwsS3DiscoveryProcessor`. - -```yaml -# app-config.yaml - -catalog: - locations: - - type: s3-discovery - target: https://sample-bucket.s3.us-east-2.amazonaws.com/prefix/ -``` - -```ts -/* packages/backend/src/plugins/catalog.ts */ - -import { AwsS3DiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-aws'; - -const builder = await CatalogBuilder.create(env); -/** ... other processors ... */ -builder.addProcessor(new AwsS3DiscoveryProcessor(env.reader)); -``` diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 37ef0634fc..56d37369dd 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -69,7 +69,7 @@ Alternatively you can use VSCode with the Azure extension if you install `@azure When these are set up, the plugin will authenticate with the Microsoft Graph API without you needing to configure any credentials, or granting any special permissions. If you can't do this, you'll have to create an App Registration. -## App Registration +### App Registration If none of the other authentication methods work, you can create an app registration in the azure portal. By default the graph plugin requires the following Application permissions (not Delegated) for Microsoft Graph: diff --git a/docs/integrations/datadog-rum/installation.md b/docs/integrations/datadog-rum/installation.md index f96298a33b..821d35db15 100644 --- a/docs/integrations/datadog-rum/installation.md +++ b/docs/integrations/datadog-rum/installation.md @@ -24,6 +24,8 @@ app: # env: 'staging' ``` +If your [`app-config.yaml`](https://github.com/backstage/backstage/blob/master/app-config.yaml#L5) file does not have this configuration, you may have to adjust your [`packages/app/public/index.html`](https://github.com/backstage/backstage/blob/master/packages/app/public/index.html#L64) to include the Datadog RUM `init()` section manually. + The `clientToken` and `applicationId` are generated from the Datadog RUM page following [these instructions](https://docs.datadoghq.com/real_user_monitoring/browser/). diff --git a/docs/releases/v1.4.0-changelog.md b/docs/releases/v1.4.0-changelog.md new file mode 100644 index 0000000000..484939f796 --- /dev/null +++ b/docs/releases/v1.4.0-changelog.md @@ -0,0 +1,2870 @@ +# Release v1.4.0 + +## @backstage/plugin-catalog-node@1.0.0 + +### Major Changes + +- 9a6aba1d85: This package houses stable types from the `@backstage/plugin-catalog-backend` package and is intended for creation of catalog modules. Prefer importing from this package over the `@backstage/plugin-catalog-backend` package. + +### Minor Changes + +- 91c1d12123: Added alpha exports for the new experimental backend system. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + +## @backstage/plugin-search@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 509c4092f0: To allow people to use a global search context in the search modal, the code for the search modal has been changed to only create a local search context if there is no parent context already defined. + + If you want to continue using a local context even if you define a global one, you will have to wrap the modal in a new local context manually: + + ```tsx + + + + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-search-backend@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a21cd43467: If error is `MissingIndexError` we return a 400 response with a more clear error message. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Minor Changes + +- c5af773757: **BREAKING**: In order to remain interoperable with all currently supported + deployments of Elasticsearch, this package will now conditionally use either + the `@elastic/elasticsearch` or `@opensearch-project/opensearch` client when + communicating with your deployed cluster. + + If you do not rely on types exported from this package, or if you do not make + use of the `createElasticSearchClientOptions` or `newClient` methods on the + `ElasticSearchSearchEngine` class, then upgrading to this version should not + require any further action on your part. Everything will continue to work as it + always has. + + If you _do_ rely on either of the above methods or any underlying types, some + changes may be needed to your custom code. A type guard is now exported by this + package (`isOpenSearchCompatible(options)`), which you may use to help clarify + which client options are compatible with which client constructors. + + If you are using this package with the `search.elasticsearch.provider` set to + `aws`, and you are making use of the `newClient` method in particular, you may + wish to start using the `@opensearch-project/opensearch` client in your custom + code. + +### Patch Changes + +- 71de198828: Updated dependency `@opensearch-project/opensearch` to `^2.0.0`. + +- b0b8213056: Feature: add a new option to set the batch size for elastic search engine, if not given the default batch size is 1000 + + Example usage: + + ```yaml + search: + elasticsearch: + batchSize: 100 + ``` + +- a21cd43467: Throws `MissingIndexError` when no index of type exist. + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + +## @backstage/plugin-search-backend-node@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a21cd43467: Exports `MissingIndexError` that can be used by the search engines for better error handling when missing index. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-search-common@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 + +## @backstage/plugin-search-react@1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- 60408ca9d4: Fix search pagination to reset page cursor also when a term is cleared. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/backend-app-api@0.1.0 + +### Minor Changes + +- 91c1d12123: Add initial plumbing for creating backends using the experimental backend framework. + + This package is highly **EXPERIMENTAL** and should not be used in production. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/backend-common@0.14.1 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/backend-tasks@0.3.3 + +## @backstage/backend-plugin-api@0.1.0 + +### Minor Changes + +- 91c1d12123: Introduced new package for creating backend plugins using the new alpha backend plugin framework. + This package is still considered **EXPERIMENTAL** and things will change without warning. Do not use this for production. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/backend-tasks@0.3.3 + +## @backstage/catalog-model@1.1.0 + +### Minor Changes + +- 4cc81372f8: Introduced `GroupDefaultParentEntityPolicy` to set a default group entity parent. +- 1380b389dc: Adding an optional type field to entity links to group and categorize links + +### Patch Changes + +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- f9f1de8100: Add shared annotations for Kubernetes clusters +- f1dcc6f3c6: Added type predicates for all entity types, e.g. isUserEntity +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + +## @backstage/cli@0.18.0 + +### Minor Changes + +- 96a82d9791: **BREAKING**: Removed the following deprecated package commands: + + - `app:build` - Use `package build` instead + - `app:serve` - Use `package start` instead + - `backend:build` - Use `package build` instead + - `backend:bundle` - Use `package build` instead + - `backend:dev` - Use `package start` instead + - `plugin:build` - Use `package build` instead + - `plugin:serve` - Use `package start` instead + - `build` - Use `package build` instead + - `lint` - Use `package lint` instead + - `prepack` - Use `package prepack` instead + - `postpack` - Use `package postpack` instead + + In order to replace these you need to have [migrated to using package roles](https://backstage.io/docs/tutorials/package-role-migration). + +### Patch Changes + +- 86640214f0: Upgrade `@rollup/plugin-node-resolve` to `^13.0.6` +- d2256c0384: Fix `webpack-dev-server` deprecations. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- e661242844: Updated dependency `run-script-webpack-plugin` to `^0.1.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e8ed804d4f: Updated dependency `@spotify/prettier-config` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-base` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-react` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-typescript` to `^14.0.0`. +- e662b573cf: Updated dependency `@octokit/request` to `^6.0.0`. +- f6b6fb7165: The `test` command now ensures that all IO is flushed before exiting when printing `--help`. +- Updated dependencies + - @backstage/config-loader@1.1.3 + - @backstage/release-manifests@0.0.5 + - @backstage/errors@1.1.0 + +## @backstage/core-components@0.10.0 + +### Minor Changes + +- 32204fa794: Add `transformLinkUri` and `transformImageUri` to `MarkdownContent` + +### Patch Changes + +- 3c440ea77e: Change BackstageIconLinkVertical style to use pallette instead of explicit color +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- b4b711bcc2: Fix the EntityLayout header style so that EntityContextMenu button can display in correct shape when user hover on it +- 944af7f2a8: Work around a bug calling `onChange` twice in `mui` for `RoutedTab` so you don't have to press back twice to navigate through tabs +- 7f5e79961d: Fix relative `sub-paths` by concatenating the app's base path with them. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- 7e115d42f9: Support displaying subtitle text in `SidebarSubmenuItem` +- ae746946f7: Improve accessibility for CopyTextButton +- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/errors@1.1.0 + +### Minor Changes + +- 6d61b44466: The `ResponseError.fromResponse` now accepts a more narrow response type, in order to avoid incompatibilities between different fetch implementations. + + The `response` property of `ResponseError` has also been narrowed to a new `ConsumedResponse` type that omits all the properties for consuming the body of the response. This is not considered a breaking change as it was always an error to try to consume the body of the response. + +### Patch Changes + +- c1a8bbf5e5: Inline the type of `ConsumedResponse.headers` and tweaked it to be the intersection of the built-in type and `node-fetch` type. + +## @backstage/plugin-apache-airflow@0.2.0 + +### Minor Changes + +- 01f976ea72: Exposed DagTableComponent as standalone component + added a prop to get only select DAGs instead of the full list + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + +## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.0 + +### Minor Changes + +- e0328f2107: Added the new `grpcDocsApiWidget` to render `protoc-gen-doc` generated descriptors by the `grpc-docs` package. + +## @backstage/plugin-apollo-explorer@0.1.0 + +### Minor Changes + +- d8fec19542: Apollo Explorer plugin now available! Installation instructions can be found in the plugin README + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-auth-backend@0.15.0 + +### Minor Changes + +- 9d4040777e: **BREAKING**: Removed all directly exported auth provider factories, option types, and sign-in resolvers. For example: `AwsAlbProviderOptions`, `bitbucketUserIdSignInResolver`, `createGithubProvider`. These are all still accessible via the `providers` export. For example, use `providers.github.create()` rather than `createGithubProvider()`, and `providers.bitbucket.resolvers.userIdMatchingUserEntityAnnotation()` rather than `bitbucketUserIdSignInResolver`. + + **BREAKING**: Removed the exported `AuthProviderFactoryOptions` type as well as the deprecated option fields of the `AuthProviderFactory` callback. This includes the `tokenManager`, `tokenIssuer`, `discovery`, and `catalogApi` fields. Existing usage of these should be replaced with the new utilities in the `resolverContext` field. The deprecated `TokenIssuer` type is now also removed, since it is no longer used. + + **BREAKING**: Removed `getEntityClaims`, use `getDefaultOwnershipEntityRefs` instead. + + **DEPRECATION**: Deprecated `AtlassianAuthProvider` as it was unintentionally exported. + +- fe8e025af5: Allowed post method on /refresh path + +### Patch Changes + +- 3cedfd8365: add Cloudflare Access auth provider to auth-backend +- f2cf79d62e: Added an option for the auth backend router to select the algorithm for the JWT token signing keys +- 8e03db907a: Auth provider now also export createAuthProviderIntegration +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 859346bfbb: Updated dependency `google-auth-library` to `^8.0.0`. +- 3a014730dc: Add new config option for okta auth server and IDP +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog@1.4.0 + +### Minor Changes + +- 97c46f2359: Add `spec.targets` (or `spec.target`) for Location entities at the `CatalogTable`. +- cf288221d1: Add `Location` target(s) to `AboutCard`. +- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title. + +### Patch Changes + +- dcaf1cb418: Previously, the color of the Entity Context Menu (in the Entity Page Header) was hardcoded as `white`. + + This was an issue for themes that use a header with a white background. By default, the color of the icon is now `theme.page.fontColor`. + + It can now also be overridden in the theme, which is only necessary if the header title, subtitle and three-dots icon need to have different colors. For example: + + ```typescript + export function createThemeOverrides(theme: BackstageTheme): Overrides { + return { + PluginCatalogEntityContextMenu: { + button: { + color: 'blue', + }, + }, + ... + }, + ... + } + ``` + +- f1dcc6f3c6: Use entity type predicates from catalog-model + +- 258057a4b9: Adding ability to customize the "unregister entity" menu item in the entity context menu on the entity page with options 'visible','hidden','disabled'.With this three new options, one can hide the "unregister entity" menu item from the list, disable or keep it enabled. + + The boolean input for "unregister entity" will be deprecated later in favour of the above three options. + +- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette + +- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors. + + If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this: + + ```diff + ... + import { + CatalogFilterLayout, + EntityTypePicker, + UserListPicker, + EntityTagPicker + + EntityProcessingStatusPicker, + } from '@backstage/plugin-catalog-react'; + ... + export const CustomCatalogPage = ({ + columns, + actions, + initiallySelectedFilter = 'owned', + }: CatalogPageProps) => { + return ( + ... + + + + + + ... + }; + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + +## @backstage/plugin-catalog-backend@1.3.0 + +### Minor Changes + +- 1dd6c22cc8: Added an option to be able to trigger refreshes on entities based on a prestored arbitrary key. + + The UrlReaderProcessor, FileReaderProcessor got updated to store the absolute URL of the catalog file as a refresh key. In the format of `:` + The PlaceholderProcessor got updated to store the resolverValues as refreshKeys for the entities. + + The custom resolvers will need to be updated to pass in a `CatalogProcessorEmit` function as parameter and they should be updated to emit their refresh processingResults. You can see the updated resolvers in the `PlaceholderProcessor.ts` + + ```ts + // yamlPlaceholderResolver + ... + const { content, url } = await readTextLocation(params); + + params.emit(processingResult.refresh(`url:${url}`)); + ... + ``` + +- 91c1d12123: Export experimental `catalogPlugin` for the new backend system. This export is not considered stable and should not be used in production. + +### Patch Changes + +- 1e02fe46d6: Fixed bug where catalog metrics weren't being tracked. + +- 5f6b847c15: Fix Error Code in Register Component DryRun + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. + +- fa0533e604: CatalogBuilder supports now subscription to processing engine errors. + + ```ts + subscribe(options: { + onProcessingError: (event: { unprocessedEntity: Entity, error: Error }) => Promise | void; + }); + ``` + + If you want to get notified on errors while processing the entities, you call CatalogBuilder.subscribe + to get notifications with the parameters defined as above. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- f1dcc6f3c6: Use entity type predicates from catalog-model + +- 9a6aba1d85: Many symbol declarations have been moved to `@backstage/plugin-catalog-node`. This has no affect on users of this package as they are all re-exported. Modules that build on top of the catalog backend plugin should switch all of their imports to the `@backstage/plugin-catalog-node` package and remove the dependency on `@backstage/plugin-catalog-backend`. + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-catalog-node@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-scaffolder-common@1.1.2 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.0 + +### Minor Changes + +- a145672f0f: Align `msgraph` plugin's entity provider config with other providers. **Deprecated** entity processor as well as previous config. + + You will see warning at the log output until you migrate to the new setup. + All deprecated parts will be removed eventually after giving some time to migrate. + + Please find information on how to migrate your current setup to the new one below. + + **Migration Guide:** + + There were two different way on how to use the msgraph plugin: processor or provider. + + Previous registration for the processor: + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addProcessor( + MicrosoftGraphOrgReaderProcessor.fromConfig(env.config, { + logger: env.logger, + // [...] + }), + ); + ``` + + Previous registration when using the provider: + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addEntityProvider( + MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { + id: 'https://graph.microsoft.com/v1.0', + target: 'https://graph.microsoft.com/v1.0', + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, + }), + // [...] + }), + ); + ``` + + Previous configuration as used for both: + + ```yaml + # app-config.yaml + catalog: + processors: + microsoftGraphOrg: + providers: + - target: https://graph.microsoft.com/v1.0 + # [...] + ``` + + **Replacement:** + + Please check for the complete documentation of all configuration options (config as well as registration of the provider). + + ```yaml + # app-config.yaml + catalog: + providers: + microsoftGraphOrg: + # In case you used the deprecated configuration with the entity provider + # using the value of `target` will keep the same location key for all + providerId: # some stable ID which will be used as part of the location key for all ingested data + target: https://graph.microsoft.com/v1.0 + # [...] + ``` + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addEntityProvider( + MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, + }), + // [...] + }), + ); + ``` + + In case you've used multiple entity providers before + **and** you had different transformers for each of them + you can provide these directly at the one `fromConfig` call + by passing a Record with the provider ID as key. + +- b8ebecd100: Microsoft Graph plugin can supports many more options for authenticating with the Microsoft Graph API. + Previously only ClientId/ClientSecret was supported, but now all the authentication options of `DefaultAzureCredential` from `@azure/identity` are supported. + Including Managed Identity, Client Certificate, Azure CLI and VS Code. + + If `clientId` and `clientSecret` are specified in configuration, the plugin behaves the same way as before. + If these fields are omitted, the plugin uses `DefaultAzureCredential` to automatically determine the best authentication method. + This is particularly useful for local development environments - the default configuration will try to use existing credentials from Visual Studio Code, Azure CLI and Azure PowerShell, without the user needing to configure any credentials in app-config.yaml + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/catalog-model@1.1.0 + - @backstage/backend-tasks@0.3.3 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.0 + +### Minor Changes + +- 67503d159e: Add basic OpenAPI \\$ref support. + + For more information see [here](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-openapi). + +### Patch Changes + +- 4881dc4c84: Updated dependency `openapi-types` to `^12.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + +## @backstage/plugin-code-coverage@0.2.0 + +### Minor Changes + +- d70aaa7622: Cleaned up API exports. + + The `Router` export has been removed; users are expected to use `EntityCodeCoverageContent` instead. + + The `isPluginApplicableToEntity` helper has been deprecated, in favor of the `isCodeCoverageAvailable` helper. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-code-coverage-backend@0.2.0 + +### Minor Changes + +- d70aaa7622: Cleaned up API exports. + + The `CodeCoverageApi` and `makeRouter` exports have been removed from the backend, since they were not meant to be exported in the first place. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + +## @backstage/plugin-cost-insights-common@0.1.0 + +### Minor Changes + +- 81dd5ea989: Introduces a new isomorphic @backstage/plugin-cost-insight-common package to contain shared types across all other cost insights packages and modules. + +## @backstage/plugin-kubernetes@0.7.0 + +### Minor Changes + +- f5c9730639: Add `localKubectlProxy` cluster locator method to make local development simpler to setup. + + Consolidated no-op server side auth decorators. + The following Kubernetes auth decorators are now one class (`ServerSideKubernetesAuthProvider`): + + - `AwsKubernetesAuthProvider` + - `AzureKubernetesAuthProvider` + - `ServiceAccountKubernetesAuthProvider` + +### Patch Changes + +- 3ec294a186: expose detectErrors function publicly +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-common@0.4.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kubernetes-backend@0.7.0 + +### Minor Changes + +- f5c9730639: Add `localKubectlProxy` cluster locator method to make local development simpler to setup. + + Consolidated no-op server side auth decorators. + The following Kubernetes auth decorators are now one class (`ServerSideKubernetesAuthProvider`): + + - `AwsKubernetesAuthProvider` + - `AzureKubernetesAuthProvider` + - `ServiceAccountKubernetesAuthProvider` + +- 1454bf98e7: Add new endpoints to Kubernetes backend plugin + + BREAKING: Kubernetes backend plugin now depends on CatalogApi + + ```typescript + // Create new CatalogClient + const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); + const { router } = await KubernetesBuilder.createBuilder({ + logger: env.logger, + config: env.config, + // Inject it into createBuilder params + catalogApi, + }).build(); + ``` + +- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId` + +### Patch Changes + +- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api +- 746ec700ea: Add support for Kubernetes clusters in the catalog. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-common@0.4.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-kubernetes-common@0.4.0 + +### Minor Changes + +- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId` + +### Patch Changes + +- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + +## @backstage/plugin-newrelic-dashboard@0.2.0 + +### Minor Changes + +- 79ecedded9: Fix bug where the default time window/snapshot duration was supposed to be 30 days, but ended up being 43 weeks + + **BREAKING**: Add a select input to change the time window of the snapshot displayed. This removes the duration prop from the `DashboardSnapshot` component. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-pagerduty@0.5.0 + +### Minor Changes + +- 8798f8d93f: Introduces a new annotation `pagerduty.com/service-id` that can be used instead of the `pagerduty.com/integration-key` annotation. + _Note: If both annotations are specified on a given Entity, then the `pagerduty.com/integration-key` annotation will be prefered_ + + **BREAKING** The `PagerDutyClient.fromConfig` static method now expects a `FetchApi` compatible object and has been refactored to + accept 2 arguments: config and ClientApiDependencies + The `PagerDutyClient` now relies on a `fetchApi` being available to execute `fetch` requests. + + **BREAKING** A new query method `getServiceByEntity` that is used to query for Services by either the `integrationKey` or `serviceId` + annotation values if they are defined. The `integrationKey` value is preferred currently over `serviceId`. As such, the previous + `getServiceByIntegrationKey` method has been removed. + + **BREAKING** The return values for each Client query method has been changed to return an object instead of raw values. + For example, the `getIncidentsByServiceId` query method now returns an object in the shape of `{ incidents: Incident[] }` + instead of just `Incident[]`. + This same pattern goes for `getChangeEventsByServiceId` and `getOnCallByPolicyId` functions. + + **BREAKING** All public exported types that relate to entities within PagerDuty have been prefixed with `PagerDuty` (e.g. `ServicesResponse` is now `PagerDutyServicesResponse` and `User` is now `PagerDutyUser`) + + In addition, various enhancements/bug fixes were introduced: + + - The `PagerDutyCard` component now wraps error and loading messages with an `InfoCard` to contain errors/messages. This enforces a consistent experience on the EntityPage + - If no service can be found for the provided integration key, a new Error Message Empty State component will be shown instead of an error alert + - Introduces the `fetchApi` to replace standard `window.fetch` + - ensures that Identity Authorization is respected and provided in API requests + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-scaffolder@1.4.0 + +### Minor Changes + +- d8eb82f447: Add `allowedRepos` `ui:option` to `RepoUrlPicker` component, and move `repoName` field to own component +- 9a96199f86: Add support for `allowedOwners` to the `BitbucketRepoPicker` used for the workspace value. + +### Patch Changes + +- 37539e29d8: The template editor now shows the cause of request errors that happen during a dry-run. + +- b557e6c58d: Fixed that adding more than one `allowedOwner` or `allowedRepo` in the template config will now still set the first value as default in the initial form state of `RepoUrlPicker`. + +- 842282ecf9: Bumped `codemirror` dependencies to `v6.0.0`. + +- 11a5ca35f3: Add allowArbitraryValues for to provide input validation. This makes it a better experience of users, as they can now expect the values they enter to correspond to a valid owner. This is set to the default behavior by default. + +- d600cb2ab6: contextMenu prop passed through to from the component + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. + +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 464bb0e6c8: The max content size for dry-run files has been reduced from 256k to 64k. + +- 14146703e5: Add `allowArbitraryValues` to `ui:options` in `OwnedEntityPicker`, similar to `allowArbitraryValues` in `EntityPicker` + +- a7c0b34d70: Swap usage of `MaterialTable` with `Table` from `core-components` + +- 1764296a68: Allow to create Gerrit project using default owner + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-permission-react@0.4.3 + - @backstage/plugin-scaffolder-common@1.1.2 + +## @backstage/plugin-scaffolder-backend@1.4.0 + +### Minor Changes + +- e1a08d872c: Added optional assignee parameter for Gitlab Merge Request action +- dab9bcf2e7: Add `protectEnforceAdmins` as an option to GitHub publish actions +- 4baf8a4ece: Update GitLab Merge Request Action to allow source branch to be deleted +- 91c1d12123: Export experimental `scaffolderCatalogExtension` for the new backend system. This export is not considered stable and should not be used in production. +- d10ccc2ed1: Introduced audit log message when a new scaffolder task is created +- 2db07887cb: Added two new scaffolder actions: `github:repo:create` and `github:repo:push` + +### Patch Changes + +- ff316b86d8: Add `copyWithoutTemplating` to the fetch template action input. `copyWithoutTemplating` also accepts an array of glob patterns. Contents of matched files or directories are copied without being processed, but paths are subject to rendering. + + Deprecate `copyWithoutRender` in favor of `copyWithoutTemplating`. + +- 801d606909: Improve error messaging when passing in malformed auth + +- 089d846962: Fix issues with optional directories and files + +- ea6dcb84a4: Don't resolve symlinks, treat them as binary files and copy them as-is + +- af02f54483: new setUserAsOwner flag for publish:gitlab action + + The field default is `false`. When true it will use the token configured in the gitlab integration for the matching host, to try and set the user logged in via `repoUrlPicker` `requestUserCredentials` OAuth flow as owner of the repository created in GitLab. + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. + +- 511f49ee43: Updated dependency `octokit` to `^2.0.0`. + +- 735853353b: Updated dependency `@octokit/webhooks` to `^10.0.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 945a27fa6a: Add sourcePath option to publish:gerrit action + +- 1764296a68: Allow to create Gerrit project using default owner + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog-node@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + - @backstage/plugin-scaffolder-common@1.1.2 + +## @backstage/plugin-sentry@0.4.0 + +### Minor Changes + +- 1b7c691a3b: Added the possibility to specify organization per component, now the annotation `sentry.io/project-slug` can have the format of `[organization]/[project-slug]` or just `[project-slug]`. + + **BREAKING**: The method `fetchIssue` changed the signature: + + ```diff + export interface SentryApi { + fetchIssues( + - project: string, + - statsFor: string, + - query?: string, + + entity: Entity, + + options: { + + statsFor: string; + + query?: string; + + }, + ): Promise; + } + ``` + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-tech-insights-backend@0.5.0 + +### Minor Changes + +- 818fa28d71: Allow FactRetrieverRegistry to be injected into buildTechInsightsContext so that we can override default registry implementation. +- 46cfda58aa: **BREAKING**: Update FactRetrieverRegistry interface to be async so that db backed implementations can be passed through to the FactRetrieverEngine. + + If you have existing custom `FactRetrieverRegistry` implementations, you'll need to remove the `retrievers` member and make all the methods async. + +### Patch Changes + +- 2ef58ab539: TechInsightsBackend: Added missing 'scheduler' to code examples +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- bcc122c46d: The `FactRetriever` model has been extended by adding optional title and description fields, allowing you to display them in the UI. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/backend-tasks@0.3.3 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-techdocs@1.3.0 + +### Minor Changes + +- ebf3eb1641: Use the same initial filter `owned` for the `TechDocsIndexPage` as for the `CatalogPage`. + + If you prefer to keep the previous behavior, you can change the default for the initial filter + to `all` (or `starred` if you rather prefer that). + + + + In general, with this change you will be able to set props at `TechDocsIndexPage`. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 3cbebf710e: Reorder browser tab title in Techdocs pages to have the site name first. + +- 726577958f: Remove the 60% factor from the font size calculation of headers to use the exact size defined in BackstageTheme. + +- 7739141ab2: Fix: When docs are shown in an entity page under the docs tab the sidebars start overlapping with the header and tabs in the page when you scroll the documentation content. + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-techdocs-backend@1.2.0 + +### Minor Changes + +- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 726577958f: Add sample headings on the documented component homepage. +- Updated dependencies + - @backstage/plugin-techdocs-node@1.2.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + +## @backstage/plugin-techdocs-node@1.2.0 + +### Minor Changes + +- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` + +### Patch Changes + +- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag. + +- d505b7b37d: Fixed issue with git feedback buttons not appearing automatically in docs pages. This was done by appending `repo_url` to the helper function `getRepoUrlFromLocationAnnotation`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-vault-backend@0.2.0 + +### Minor Changes + +- 5ebf2c7023: Throw exceptions instead of swallow them, remove some exported types from the `api-report`, small changes in the API responses & expose the vault `baseUrl` to the frontend as well + +### Patch Changes + +- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/backend-test-utils@0.1.26 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/app-defaults@1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.3 + +## @backstage/backend-common@0.14.1 + +### Patch Changes + +- b1edb5cfd9: Fix parsing of S3 URLs for the default region. + +- c3cfc83af2: Updated JSDoc to be MDX compatible. + +- e57180e45e: Added some more information to the error messages for `isomorphic-git` errors + +- 1f75dfac29: Fix edge case bug when gitlab relativePath is repeated in the target URL. + +- 90c87f28e8: Moving from Bitbucket Server endpoint from to , to have the last commit in function of different branch, and not only the list of default branch + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 + +- 0fc57887e8: Improve plural handling in logging output for secrets + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 954a94f52f: Support self-hosted gitlab installations with relative URL. + +- Updated dependencies + - @backstage/config-loader@1.1.3 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + +## @backstage/backend-tasks@0.3.3 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/errors@1.1.0 + +## @backstage/backend-test-utils@0.1.26 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/cli@0.18.0 + +## @backstage/catalog-client@1.0.4 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + +## @backstage/config-loader@1.1.3 + +### Patch Changes + +- bcada7cd9f: From now on the `$file` placeholder will trim the whitespaces and newline characters from the end of the file it reads. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- a3acec8819: Updated dependency `typescript-json-schema` to `^0.54.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + +## @backstage/core-app-api@1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- 8fe2357101: The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + +## @backstage/core-plugin-api@1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 2990fff4e5: Enabled the `@backstage/core-plugin-api/alpha` entry point. + +## @backstage/create-app@0.4.29 + +### Patch Changes + +- f281ad17c0: Adds the ability to define the Backstage app name using a `BACKSTAGE_APP_NAME` + environment variable when running `create-app`. +- c92deffe39: Bumped create-app version. +- 0e967f188b: Bumped create-app version. +- bc87604c26: Added an explicit `node-gyp` dependency to the root `package.json`. This is to work around a bug in older versions of `node-gyp` that causes Python execution to fail on macOS. + + You can add this workaround to your existing project by adding `node-gyp` as a `devDependency` in your root `package.json` file: + + ```diff + "devDependencies": { + + "node-gyp": "^9.0.0" + }, + ``` + +## @backstage/dev-utils@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/integration@1.2.2 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 1f29047bad: Updated dependency `@octokit/auth-app` to `^4.0.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 8829e175f2: Allow frontend visibility for `integrations` itself. + +- 954a94f52f: Support self-hosted gitlab installations with relative URL. + +- 4df3390795: Avoid double encoding of the file path in `getBitbucketServerDownloadUrl` + +- Updated dependencies + - @backstage/errors@1.1.0 + +## @backstage/integration-react@1.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/theme@0.2.16 + +## @backstage/release-manifests@0.0.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +## @techdocs/cli@1.1.3 + +### Patch Changes + +- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag. +- 14ce0d9347: Fixed a bug that prevented docker images from being pulled by default when generating TechDocs. +- Updated dependencies + - @backstage/plugin-techdocs-node@1.2.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + +## @backstage/test-utils@1.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.3 + +## @backstage/theme@0.2.16 + +### Patch Changes + +- ff4f56eb49: **DEPRECATED**: The `bursts` object from `BackstagePaletteAdditions` has been depreciated and will be removed in a future release + + The `genPageTheme` function now includes an optional options object with an optional `fontColor` which defaults to white if not provided. + +- 4c09c09102: Adds optional `htmlFontSize` property and also sets typography design tokens for h5 and h6 in base theme. + +## @backstage/plugin-adr@0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 511f49ee43: Updated dependency `octokit` to `^2.0.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 7d47e7e512: Track discover event and result rank for `AdrSearchResultListItem` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.1.2 + +## @backstage/plugin-adr-backend@0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + - @backstage/plugin-adr-common@0.1.2 + +## @backstage/plugin-adr-common@0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + +## @backstage/plugin-airbrake@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/dev-utils@1.0.4 + +## @backstage/plugin-airbrake-backend@0.2.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + +## @backstage/plugin-allure@0.1.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-analytics-module-ga@0.1.18 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-api-docs@0.8.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- b76eea25ed: Updated dependency `@asyncapi/react-component` to `1.0.0-next.39`. +- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title. +- 9432a05cf3: Set font colors correctly for descriptions containing HTML +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.34 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/config-loader@1.1.3 + +## @backstage/plugin-auth-node@0.2.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/errors@1.1.0 + +## @backstage/plugin-azure-devops@0.1.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e049e41048: Exporting azureDevOpsApiRef, AzureGitTagsIcon, and all hooks for the benefit of other plugins. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-azure-devops-common@0.2.4 + +## @backstage/plugin-azure-devops-backend@0.3.13 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 13a232ec22: Added comments to example to help avoid confusion as to where lines need to be added + +- e67c4b7d5a: Adding getProjects endpoint to list out all projects associated with the Azure DevOps organization. + + It can be accessed by using this endpoint `{backendUrl}/api/azure-devops/projects` + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-azure-devops-common@0.2.4 + +## @backstage/plugin-azure-devops-common@0.2.4 + +### Patch Changes + +- e67c4b7d5a: Adding getProjects endpoint to list out all projects associated with the Azure DevOps organization. + + It can be accessed by using this endpoint `{backendUrl}/api/azure-devops/projects` + +## @backstage/plugin-badges@0.2.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-badges-backend@0.1.28 + +### Patch Changes + +- 58fd5ee9d5: Add missing installation instructions +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + +## @backstage/plugin-bazaar@0.1.22 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 77abf50acf: Fixed api warnings +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/cli@0.18.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + +## @backstage/plugin-bazaar-backend@0.1.18 + +### Patch Changes + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 77abf50acf: Fixed api warnings +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/backend-test-utils@0.1.26 + +## @backstage/plugin-bitbucket-cloud-common@0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/integration@1.2.2 + +## @backstage/plugin-bitrise@0.1.34 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-backend-module-aws@0.1.7 + +### Patch Changes + +- f9f1de8100: Add processor for ingesting EKS clusters into the catalog +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/plugin-bitbucket-cloud-common@0.1.1 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/integration@1.2.2 + - @backstage/plugin-bitbucket-cloud-common@0.1.1 + - @backstage/backend-tasks@0.3.3 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-github@0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 0f25116d28: Updated dependency `@octokit/graphql` to `^5.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 49ff472c0b: Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore): + + ```yaml + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab-host # Identifies one of the hosts set up in the integrations + branch: main # Optional. Uses `master` as default + entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` + ``` + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.1 + +### Patch Changes + +- ddfd566606: Fix mapping between users and groups for FreeIPA when using the LdapOrgProcessor +- fbfbff6bf7: Add possibility to resolve relations by RDN, in addition to UUID and DN +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/catalog-model@1.1.0 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-common@1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-permission-common@0.6.3 + +## @backstage/plugin-catalog-graph@0.2.19 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-graphql@0.3.11 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + +## @backstage/plugin-catalog-import@0.8.10 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 272106fdad: Support use without `integrations` or only integrations without frontend visible properties (e.g., `bitbucketCloud`) being configured by checking `integrations.github` directly without attempting to load `integrations`. + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-catalog-react@1.1.2 + +### Patch Changes + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. + +- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors. + + If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this: + + ```diff + ... + import { + CatalogFilterLayout, + EntityTypePicker, + UserListPicker, + EntityTagPicker + + EntityProcessingStatusPicker, + } from '@backstage/plugin-catalog-react'; + ... + export const CustomCatalogPage = ({ + columns, + actions, + initiallySelectedFilter = 'owned', + }: CatalogPageProps) => { + return ( + ... + + + + + + ... + }; + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-permission-react@0.4.3 + +## @backstage/plugin-cicd-statistics@0.1.9 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.3 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-cicd-statistics@0.1.9 + +## @backstage/plugin-circleci@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cloudbuild@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-climate@0.1.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-codescene@0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-config-schema@0.1.30 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-cost-insights@0.11.29 + +### Patch Changes + +- 3e032a5de2: Move cost-insights data specific API types (non react) into an @backstage/plugin-cost-insights-common + isomorphic package. This allows these types to be shared in any backend packages or other cost-insight + modules. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-cost-insights-common@0.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-dynatrace@0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-explore@0.3.38 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-explore-react@0.0.19 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-explore-react@0.0.19 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + +## @backstage/plugin-firehydrant@0.1.24 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-fossa@0.2.39 + +### Patch Changes + +- 322d1ceeba: Allow configuration of base URL for Fossa links +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-gcalendar@0.3.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-gcp-projects@0.3.26 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.20 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.7 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 217f919f0a: Minor cleanup of the API surface. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-deployments@0.1.38 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 0f25116d28: Updated dependency `@octokit/graphql` to `^5.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-github-pull-requests-board@0.1.1 + +### Patch Changes + +- c6690d9d24: Fix bug on fetching teams repositories where were being filtered by type service unnecessarily +- 04e1504e85: Support namespaced teams and fetch all kinds +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gitops-profiles@0.3.25 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.13 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-graphiql@0.2.39 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.24 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-catalog-graphql@0.3.11 + +## @backstage/plugin-home@0.4.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- a46e317a75: Added support for customizing the time format used in the `HeaderWorldClock` component + + Here's an example of how this can be used in the `HomePage.tsx` found in `\packages\app\src\components\home` to change the clock to be in the 24hr time format: + + ```diff + +const timeFormat: Intl.DateTimeFormatOptions = { + + hour: '2-digit', + + minute: '2-digit', + + hour12: false, + +}; + + export const homePage = ( + +
} pageTitleOverride="Home"> + + +
+ + + + + + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-stack-overflow@0.1.3 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-ilert@0.1.33 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-jenkins@0.7.6 + +### Patch Changes + +- 8747824221: feature: added support for multiple branches to the `JenkinsApi` +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-jenkins-common@0.1.6 + +## @backstage/plugin-jenkins-backend@0.1.24 + +### Patch Changes + +- 8747824221: feature: added support for multiple branches to the `JenkinsApi` +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-jenkins-common@0.1.6 + +## @backstage/plugin-jenkins-common@0.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-catalog-common@1.0.4 + +## @backstage/plugin-kafka@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kafka-backend@0.2.27 + +### Patch Changes + +- 8751667541: Updated dependency `kafkajs` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + +## @backstage/plugin-lighthouse@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic@0.3.25 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-org@0.5.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 1e984b11fc: Render namespaces for teams with subtitles in `MyGroupsSidebarItem` +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop@0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-periskop-backend@0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + +## @backstage/plugin-permission-backend@0.5.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-permission-common@0.6.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + +## @backstage/plugin-permission-node@0.6.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + +## @backstage/plugin-permission-react@0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + +## @backstage/plugin-proxy-backend@0.2.28 + +### Patch Changes + +- a4fa1ce090: The proxy-backend now automatically reloads configuration when app-config.yaml is updated. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + +## @backstage/plugin-rollbar@0.4.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-rollbar-backend@0.1.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.4.0 + +## @backstage/plugin-scaffolder-common@1.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.0 + +## @backstage/plugin-search-backend-module-pg@0.3.5 + +### Patch Changes + +- 423e3d8e95: **DEPRECATED**: `PgSearchEngine` static `from` has been deprecated and will be removed in a future release. Use static `fromConfig` method to instantiate. + + Added support for highlighting matched terms in search result data + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. + +- 886e99b8e7: Now imports `SearchEngine` interface from `@backstage/plugin-search-common` instead of `@backstage/plugin-search-backend-node` + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + +## @backstage/plugin-shortcuts@0.2.8 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-sonarqube@0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-splunk-on-call@0.3.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-stack-overflow@0.1.3 + +### Patch Changes + +- 12ae3eed2f: - Publicly exports `StackOverflowIcon`. + - `HomePageStackOverflowQuestions` accepts optional icon property. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 52b4f796e3: app-config is now picked up properly. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-home@0.4.23 + - @backstage/theme@0.2.16 + +## @backstage/plugin-stack-overflow-backend@0.1.3 + +### Patch Changes + +- 52b4f796e3: app-config is now picked up properly. +- Updated dependencies + - @backstage/plugin-search-common@1.0.0 + +## @backstage/plugin-tech-insights@0.2.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/errors@1.1.0 + +## @backstage/plugin-tech-insights-common@0.2.5 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + +## @backstage/plugin-tech-insights-node@0.3.2 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- bcc122c46d: The `FactRetriever` model has been extended by adding optional title and description fields, allowing you to display them in the UI. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-tech-insights-common@0.2.5 + +## @backstage/plugin-tech-radar@0.5.14 + +### Patch Changes + +- b8f608f1ec: Update tech-radar documentation on how to use an external json data source with dates. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-react@1.0.2 + +### Patch Changes + +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + +## @backstage/plugin-todo@0.2.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-todo-backend@0.1.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + +## @backstage/plugin-user-settings@0.4.6 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-vault@0.1.1 + +### Patch Changes + +- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 5ebf2c7023: Export missing parameters and added them to the api-report. Also adapted the API to the expected response from the backend +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## @backstage/plugin-xcmetrics@0.2.27 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + +## example-app@0.2.73 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-cost-insights@0.11.29 + - @backstage/plugin-code-coverage@0.2.0 + - @backstage/plugin-scaffolder@1.4.0 + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search@1.0.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-kubernetes@0.7.0 + - @backstage/plugin-tech-radar@0.5.14 + - @backstage/plugin-catalog@1.4.0 + - @backstage/plugin-newrelic-dashboard@0.2.0 + - @backstage/cli@0.18.0 + - @backstage/plugin-apache-airflow@0.2.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-jenkins@0.7.6 + - @backstage/plugin-stack-overflow@0.1.3 + - @backstage/plugin-catalog-import@0.8.10 + - @backstage/plugin-github-actions@0.5.7 + - @backstage/plugin-sentry@0.4.0 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-airbrake@0.3.7 + - @backstage/plugin-api-docs@0.8.7 + - @backstage/plugin-azure-devops@0.1.23 + - @backstage/plugin-badges@0.2.31 + - @backstage/plugin-circleci@0.3.7 + - @backstage/plugin-cloudbuild@0.3.7 + - @backstage/plugin-dynatrace@0.1.1 + - @backstage/plugin-explore@0.3.38 + - @backstage/plugin-gcalendar@0.3.3 + - @backstage/plugin-gcp-projects@0.3.26 + - @backstage/plugin-gocd@0.1.13 + - @backstage/plugin-graphiql@0.2.39 + - @backstage/plugin-home@0.4.23 + - @backstage/plugin-kafka@0.3.7 + - @backstage/plugin-lighthouse@0.3.7 + - @backstage/plugin-newrelic@0.3.25 + - @backstage/plugin-org@0.5.7 + - @backstage/plugin-pagerduty@0.5.0 + - @backstage/plugin-rollbar@0.4.7 + - @backstage/plugin-shortcuts@0.2.8 + - @backstage/plugin-tech-insights@0.2.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/plugin-todo@0.2.9 + - @backstage/plugin-user-settings@0.4.6 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-catalog-graph@0.2.19 + - @backstage/plugin-permission-react@0.4.3 + +## example-backend@0.2.73 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-code-coverage-backend@0.2.0 + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/plugin-tech-insights-backend@0.5.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-backend@0.7.0 + - @backstage/plugin-search-backend@1.0.0 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.0 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/plugin-auth-backend@0.15.0 + - @backstage/plugin-jenkins-backend@0.1.24 + - @backstage/plugin-proxy-backend@0.2.28 + - @backstage/plugin-search-backend-module-pg@0.3.5 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-app-backend@0.3.34 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-azure-devops-backend@0.3.13 + - @backstage/plugin-graphql-backend@0.1.24 + - @backstage/plugin-permission-backend@0.5.9 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/plugin-rollbar-backend@0.1.31 + - @backstage/plugin-techdocs-backend@1.2.0 + - @backstage/plugin-todo-backend@0.1.31 + - @backstage/backend-tasks@0.3.3 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/plugin-kafka-backend@0.2.27 + - @backstage/plugin-badges-backend@0.1.28 + - example-app@0.2.73 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.2 + +## example-backend-next@0.0.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/backend-app-api@0.1.0 + +## techdocs-cli-embedded-app@0.2.72 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-catalog@1.4.0 + - @backstage/cli@0.18.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list@1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + +## @internal/plugin-todo-list-common@1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 diff --git a/docs/releases/v1.4.0.md b/docs/releases/v1.4.0.md new file mode 100644 index 0000000000..20b1739f4a --- /dev/null +++ b/docs/releases/v1.4.0.md @@ -0,0 +1,70 @@ +--- +id: v1.4.0 +title: v1.4.0 +description: Backstage Release v1.4.0 +--- + +These are the release notes for the v1.4.0 release of [Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done. + +## Highlights + +### Search is V1! + +Backstage Search is now promoted to v1.0 with a stable Search API for plugin developers to add search to their plugins, and app integrators to expose that to their users. + +No additional features are released as part of the major release as the maintainers of the search packages focused on the following for this release: + +- Bug fixes and clean up of deprecations. +- Improved error handling for missing indices. +- Separation of AWS Elastic and Open Elastic support. +- Refactor the packages by moving reusable components from `@backstage/plugin-search` to `@backstage/plugin-search-react`. +- Improved documentation including tutorials for how to [Integrate Search into a plugin](https://backstage.io/docs/plugins/integrating-search-into-plugins). + +With moving to v1.0 we also recommend using Elasticsearch for production usage. Moving forward, the search maintainers will prioritize the Elasticsearch engine while we’ll rely on the community to maintain the Postgres engine. + +### Experimental Backend System Evolution + +This release adds the new `@backstage/backend-app-api` and `@backstage/backend-plugin-api` packages, both part of the [evolution of the backend system](https://github.com/backstage/backstage/issues/11611). These packages are highly experimental and we do not recommend using them for any purpose, yet. + +### `@backstage/cli` Deprecation Removals + +The `@backstage/cli` had a large number of deprecated commands removed, for example, `app:build` is now gone and should be replaced with `package build`. For a full list of commands that were removed, see the [changelog](https://github.com/backstage/backstage/blob/master/packages/cli/CHANGELOG.md#0180). + +### `@backstage/plugin-auth-backend` Deprecation Removals + +Many deprecated symbols have now been removed from `@backstage/plugin-auth-backend`, most notably the provider factories such as `createGithubProvider` have been removed, which should be replaced with `providers.github.create`. See the [changelog](https://github.com/backstage/backstage/blob/master/plugins/auth-backend/CHANGELOG.md#0150) for more details. + +### New module: `@backstage/plugin-api-docs-module-protoc-gen-doc` + +This is a new module for `@backstage/plugin-api-docs` that exports a widget implementation for rendering gRPC docs generated by `protoc-gen-doc`. Contributed by [@kissmikijr](https://github.com/kissmikijr) [#11923](https://github.com/backstage/backstage/pull/11923). + +### New module: `@backstage/plugin-catalog-backend-module-openapi` + +This is a new module for `@backstage/plugin-catalog-backend` that exports a catalog processor which de-references `$ref` fields in OpenAPI definitions. Contributed by [@mfrinnstrom](https://github.com/mfrinnstrom) [#11645](https://github.com/backstage/backstage/pull/11645). + +### New plugin: `@backstage/plugin-apollo-explorer` + +A plugin to embed the [Apollo Explorer](https://github.com/apollographql/embeddable-explorer/tree/main/packages/explorer) inside your Backstage instance to run queries against GraphQL endpoints. Contributed by [@unredundant](https://github.com/unredundant) [#12600](https://github.com/backstage/backstage/pull/12600). + +## Security Fixes + +`@backstage/plugin-scaffolder-backend`, please upgrade to the latest version if you are using this module. + +## Upgrade path + +We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated). + +## Links and References + +Below you can find a list of links and references to help you learn about and start using this new release. + +- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/bFESRKVt) for discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.4.0-changelog.md) +- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage. diff --git a/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md new file mode 100644 index 0000000000..61ff25ac0a --- /dev/null +++ b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md @@ -0,0 +1,68 @@ +--- +# prettier-ignore +title: Releasing Backstage Search 1.0 +author: Emma Indal, Spotify +authorURL: https://www.linkedin.com/in/emma-indal +--- + +**TL;DR** If you’ve been waiting for Backstage Search to come out of beta, we’re excited to announce that [Backstage Search 1.0](https://backstage.io/docs/features/search/search-overview#backstage-search-10) is here! + +We first released the Backstage Search Platform over a year ago. Backstage Search Platform is a search experience built for you, by you. + +![Releasing Backstage Search 1.0](assets/22-07-19/releasing-backstage-search-v1.png) + +Backstage Search Platform makes it possible for you to search across your entire software ecosystem. With a Search platform that is customizable and extendable, you can identify your needs within your organization and set up search to solve these problems. Whether it is to search through the Software Catalog or technical documentation generated by the TechDocs plugin. + + + +## So what is Backstage Search 1.0? + +Since the first release of the Backstage Search Platform, we have seen a fantastic community grow around the search plugins. To mention just a few of these contributions: + +- More search engine modules: [Elasticsearch](https://www.npmjs.com/package/@backstage/plugin-search-backend-module-elasticsearch) originally [contributed](https://github.com/backstage/backstage/pull/6569) by Roadie and [Postgres](https://www.npmjs.com/package/@backstage/plugin-search-backend-module-pg) originally [contributed](https://github.com/backstage/backstage/pull/7316) by SDA SE +- More components: Quick search modal, originally [contributed](https://github.com/backstage/backstage/pull/7316) by Expedia Group +- More plugin integrations: TechDocs also [contributed](https://github.com/backstage/backstage/pull/6375) by Roadie and [Software Catalog](https://github.com/backstage/backstage/pull/4515) + +These are just a few contributions of the countless enhancements and improvements made by contributors across the globe. With a well adopted and tested search platform we feel confident to release Backstage Search as 1.0. + +Packages included in Backstage Search 1.0 release are: + +**Core search packages** + +- [@backstage/plugin-search](https://www.npmjs.com/package/@backstage/plugin-search) +- [@backstage/plugin-search-react](https://www.npmjs.com/package/@backstage/plugin-search-react) +- [@backstage/plugin-search-common](https://www.npmjs.com/package/@backstage/plugin-search-common) +- [@backstage/plugin-search-backend](https://www.npmjs.com/package/@backstage/plugin-search-backend) +- [@backstage/plugin-search-backend-node](https://www.npmjs.com/package/@backstage/plugin-search-backend-node) + +**Modules** + +- [@backstage/plugin-search-backend-module-elasticsearch](https://www.npmjs.com/package/@backstage/plugin-search-backend-module-elasticsearch) + +No additional features are released as part of the major release as the maintainers of the search packages focused on the following for this release: + +- Bug fixes and clean up of deprecations. +- Improved error handling for missing indices. +- Separation of AWS Elastic and Open Elastic support. +- Refactor the packages by moving reusable components from `@backstage/plugin-search` to `@backstage/plugin-search-react`. +- Improved documentation including tutorials for how to [Integrate Search into a plugin](https://backstage.io/docs/plugins/integrating-search-into-plugins). + +You might have noticed that the [@backstage/plugin-search-backend-module-pg](https://www.npmjs.com/package/@backstage/plugin-search-backend-module-pg) package is not part of 1.0. That’s because that package is a community supported module, and therefore we have not included it as part of 1.0. If you are interested in pushing the Postgres engine to 1.0, feel free to reach out to us in the [#search](https://discord.com/channels/687207715902193673/770283289327566848) channel on Discord. + +## Elasticsearch as the recommended engine for production usage + +When the Backstage Search Platform was first released, it came with an in-memory search engine as default - Lunr. While this is a good engine to use on a smaller scale and for local development (to avoid having to set up a search engine instance separately), it also has its limitations such as: + +- Lunr does not scale well. Horizontally scaled deployments of Backstage and/or Backstage Search backend using Lunr result in either duplicated indexing processes and indices or inconsistent index state across nodes. +- Lunr’s filter functionality is limited, especially for [logical AND/OR operators](https://github.com/olivernn/lunr.js/issues/353). +- Lunr has a smaller community than Elasticsearch, which could mean that adopters relying on it will have less by way of resources for iterating on and improving search. + +Therefore, we recommend using Elasticsearch for production usage. Moving forward, the search maintainers will prioritize the Elasticsearch engine while we’ll rely on the community to maintain the Postgres engine. + +## How to contribute + +If you want to contribute and to further improve search, you can check out the [open issues labeled with search](https://github.com/backstage/backstage/issues?q=is%3Aissue+search+label%3Asearch+is%3Aopen) or reach out to us at the [#search](https://discord.com/channels/687207715902193673/770283289327566848) Discord channel. + +## How to get started + +If you haven’t adopted the Backstage Search Platform yet and feel like now is a good time. Head over to the [getting started docs](https://backstage.io/docs/features/search/getting-started). diff --git a/microsite/blog/assets/22-07-19/releasing-backstage-search-v1.png b/microsite/blog/assets/22-07-19/releasing-backstage-search-v1.png new file mode 100644 index 0000000000..136e0c4084 Binary files /dev/null and b/microsite/blog/assets/22-07-19/releasing-backstage-search-v1.png differ diff --git a/microsite/package.json b/microsite/package.json index c0c16d881b..b6373ba047 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -16,7 +16,7 @@ "lock:check": "yarn-lock-check" }, "devDependencies": { - "@spotify/prettier-config": "^13.0.1", + "@spotify/prettier-config": "^14.0.0", "docusaurus": "^2.0.0-alpha.70", "js-yaml": "^4.1.0", "prettier": "^2.6.2", diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 29fb3a0534..314710b800 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,6 +1,7 @@ { "releases": { "Release Notes": [ + "releases/v1.4.0", "releases/v1.3.0", "releases/v1.2.0", "releases/v1.1.0", @@ -290,6 +291,7 @@ ], "Deployment": [ "deployment/index", + "deployment/scaling", "deployment/docker", "deployment/k8s", "deployment/heroku" diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index d757ed448b..68226b5681 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -39,7 +39,8 @@ const siteConfig = { fossWebsite: 'https://spotify.github.io/', // Google Analytics - gaTrackingId: 'UA-163836834-5', + gaTrackingId: 'G-KSEVGGNCJW', + gaGtag: true, // For no header links in the top nav bar -> headerLinks: [], headerLinks: [ diff --git a/microsite/yarn.lock b/microsite/yarn.lock index f4831e2b42..dc5c1fe6cf 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -909,10 +909,10 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== -"@spotify/prettier-config@^13.0.1": - version "13.0.1" - resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-13.0.1.tgz#0fdceb3d4ab543259ce6adc0ec1d10e34898b812" - integrity sha512-oVd4hjx2+y0MeUdk1l+ItwVLwlrDlvTlGwXBWMMzPYc7DLyxuxFvDfoHGkAQkrikfAgtdnzxrW6u9a8ywUqdfw== +"@spotify/prettier-config@^14.0.0": + version "14.0.1" + resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-14.0.1.tgz#a3a2342ec07693647ab76a64a623fbb79d464fa7" + integrity sha512-NHT7IpIVOsAMhPfDVf1S/jfq59j7d2ru3XoU9An/Aqy9MDr/ZmAvQEAPFiz+qlm41xEGkNK34yEi71LC03G2oA== "@types/cheerio@^0.22.8": version "0.22.23" diff --git a/mkdocs.yml b/mkdocs.yml index 04d62d32d4..03c9dee8d0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -164,6 +164,7 @@ nav: - Glossary: 'auth/glossary.md' - Deployment: - Deploying Backstage: 'deployment/index.md' + - Scaling: 'deployment/scaling.md' - Docker: 'deployment/docker.md' - Kubernetes: 'deployment/k8s.md' - Heroku: 'deployment/heroku.md' diff --git a/package.json b/package.json index 5e76d863eb..7995eeda30 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.4.0-next.3", + "version": "1.4.0", "dependencies": { "@manypkg/get-packages": "^1.1.3", "@microsoft/api-documenter": "^7.17.11", @@ -60,7 +60,7 @@ "devDependencies": { "@changesets/cli": "^2.14.0", "@octokit/rest": "^19.0.3", - "@spotify/prettier-config": "^13.0.0", + "@spotify/prettier-config": "^14.0.0", "@types/node": "^16.11.26", "@types/webpack": "^5.28.0", "command-exists": "^1.2.9", diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 8e50e13300..a0c63e710d 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/app-defaults +## 1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.3 + ## 1.0.4-next.3 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 17c196da79..fcfaf06b91 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.0.4-next.3", + "version": "1.0.4", "private": false, "publishConfig": { "access": "public", @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "react-router-dom": "6.0.0-beta.0" @@ -46,8 +46,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@types/jest": "^26.0.7", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 65e4a5bc85..083a6cd3f0 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,65 @@ # example-app +## 0.2.73 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-cost-insights@0.11.29 + - @backstage/plugin-code-coverage@0.2.0 + - @backstage/plugin-scaffolder@1.4.0 + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search@1.0.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-kubernetes@0.7.0 + - @backstage/plugin-tech-radar@0.5.14 + - @backstage/plugin-catalog@1.4.0 + - @backstage/plugin-newrelic-dashboard@0.2.0 + - @backstage/cli@0.18.0 + - @backstage/plugin-apache-airflow@0.2.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-jenkins@0.7.6 + - @backstage/plugin-stack-overflow@0.1.3 + - @backstage/plugin-catalog-import@0.8.10 + - @backstage/plugin-github-actions@0.5.7 + - @backstage/plugin-sentry@0.4.0 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-airbrake@0.3.7 + - @backstage/plugin-api-docs@0.8.7 + - @backstage/plugin-azure-devops@0.1.23 + - @backstage/plugin-badges@0.2.31 + - @backstage/plugin-circleci@0.3.7 + - @backstage/plugin-cloudbuild@0.3.7 + - @backstage/plugin-dynatrace@0.1.1 + - @backstage/plugin-explore@0.3.38 + - @backstage/plugin-gcalendar@0.3.3 + - @backstage/plugin-gcp-projects@0.3.26 + - @backstage/plugin-gocd@0.1.13 + - @backstage/plugin-graphiql@0.2.39 + - @backstage/plugin-home@0.4.23 + - @backstage/plugin-kafka@0.3.7 + - @backstage/plugin-lighthouse@0.3.7 + - @backstage/plugin-newrelic@0.3.25 + - @backstage/plugin-org@0.5.7 + - @backstage/plugin-pagerduty@0.5.0 + - @backstage/plugin-rollbar@0.4.7 + - @backstage/plugin-shortcuts@0.2.8 + - @backstage/plugin-tech-insights@0.2.3 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/plugin-todo@0.2.9 + - @backstage/plugin-user-settings@0.4.6 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-catalog-graph@0.2.19 + - @backstage/plugin-permission-react@0.4.3 + ## 0.2.73-next.3 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 9187acf775..306f91508b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,66 +1,66 @@ { "name": "example-app", - "version": "0.2.73-next.3", + "version": "0.2.73", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.4-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/app-defaults": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/cli": "^0.18.0", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-airbrake": "^0.3.7-next.3", - "@backstage/plugin-api-docs": "^0.8.7-next.3", - "@backstage/plugin-azure-devops": "^0.1.23-next.3", - "@backstage/plugin-apache-airflow": "^0.2.0-next.3", - "@backstage/plugin-badges": "^0.2.31-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-catalog-graph": "^0.2.19-next.3", - "@backstage/plugin-catalog-import": "^0.8.10-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-circleci": "^0.3.7-next.3", - "@backstage/plugin-cloudbuild": "^0.3.7-next.3", - "@backstage/plugin-code-coverage": "^0.2.0-next.3", - "@backstage/plugin-cost-insights": "^0.11.29-next.3", - "@backstage/plugin-dynatrace": "^0.1.1-next.3", - "@backstage/plugin-explore": "^0.3.38-next.3", - "@backstage/plugin-gcalendar": "^0.3.3-next.3", - "@backstage/plugin-gcp-projects": "^0.3.26-next.3", - "@backstage/plugin-github-actions": "^0.5.7-next.3", - "@backstage/plugin-gocd": "^0.1.13-next.3", - "@backstage/plugin-graphiql": "^0.2.39-next.3", - "@backstage/plugin-home": "^0.4.23-next.3", - "@backstage/plugin-jenkins": "^0.7.6-next.3", - "@backstage/plugin-kafka": "^0.3.7-next.3", - "@backstage/plugin-kubernetes": "^0.7.0-next.3", - "@backstage/plugin-lighthouse": "^0.3.7-next.3", - "@backstage/plugin-newrelic": "^0.3.25-next.3", - "@backstage/plugin-newrelic-dashboard": "^0.2.0-next.3", - "@backstage/plugin-org": "^0.5.7-next.3", - "@backstage/plugin-pagerduty": "0.5.0-next.3", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/plugin-rollbar": "^0.4.7-next.3", - "@backstage/plugin-scaffolder": "^1.4.0-next.3", - "@backstage/plugin-search": "^0.9.1-next.3", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-sentry": "^0.4.0-next.3", - "@backstage/plugin-shortcuts": "^0.2.8-next.3", - "@backstage/plugin-stack-overflow": "^0.1.3-next.3", - "@backstage/plugin-tech-radar": "^0.5.14-next.3", - "@backstage/plugin-techdocs": "^1.2.1-next.3", - "@backstage/plugin-techdocs-react": "^1.0.2-next.2", - "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.2-next.3", - "@backstage/plugin-todo": "^0.2.9-next.3", - "@backstage/plugin-user-settings": "^0.4.6-next.3", - "@backstage/plugin-tech-insights": "^0.2.3-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-airbrake": "^0.3.7", + "@backstage/plugin-api-docs": "^0.8.7", + "@backstage/plugin-azure-devops": "^0.1.23", + "@backstage/plugin-apache-airflow": "^0.2.0", + "@backstage/plugin-badges": "^0.2.31", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-graph": "^0.2.19", + "@backstage/plugin-catalog-import": "^0.8.10", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-circleci": "^0.3.7", + "@backstage/plugin-cloudbuild": "^0.3.7", + "@backstage/plugin-code-coverage": "^0.2.0", + "@backstage/plugin-cost-insights": "^0.11.29", + "@backstage/plugin-dynatrace": "^0.1.1", + "@backstage/plugin-explore": "^0.3.38", + "@backstage/plugin-gcalendar": "^0.3.3", + "@backstage/plugin-gcp-projects": "^0.3.26", + "@backstage/plugin-github-actions": "^0.5.7", + "@backstage/plugin-gocd": "^0.1.13", + "@backstage/plugin-graphiql": "^0.2.39", + "@backstage/plugin-home": "^0.4.23", + "@backstage/plugin-jenkins": "^0.7.6", + "@backstage/plugin-kafka": "^0.3.7", + "@backstage/plugin-kubernetes": "^0.7.0", + "@backstage/plugin-lighthouse": "^0.3.7", + "@backstage/plugin-newrelic": "^0.3.25", + "@backstage/plugin-newrelic-dashboard": "^0.2.0", + "@backstage/plugin-org": "^0.5.7", + "@backstage/plugin-pagerduty": "0.5.0", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/plugin-rollbar": "^0.4.7", + "@backstage/plugin-scaffolder": "^1.4.0", + "@backstage/plugin-search": "^1.0.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/plugin-sentry": "^0.4.0", + "@backstage/plugin-shortcuts": "^0.2.8", + "@backstage/plugin-stack-overflow": "^0.1.3", + "@backstage/plugin-tech-insights": "^0.2.3", + "@backstage/plugin-tech-radar": "^0.5.14", + "@backstage/plugin-techdocs": "^1.3.0", + "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.2", + "@backstage/plugin-techdocs-react": "^1.0.2", + "@backstage/plugin-todo": "^0.2.9", + "@backstage/plugin-user-settings": "^0.4.6", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -81,7 +81,7 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/test-utils": "^1.1.2", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 334de3b4d8..c6a9a77b04 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-app-api +## 0.1.0 + +### Minor Changes + +- 91c1d12123: Add initial plumbing for creating backends using the experimental backend framework. + + This package is highly **EXPERIMENTAL** and should not be used in production. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/backend-common@0.14.1 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/backend-tasks@0.3.3 + ## 0.1.0-next.0 ### Minor Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index f49fe159f3..9cd3a77204 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -34,16 +34,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.0-next.0", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/plugin-permission-node": "^0.6.3-next.2", + "@backstage/backend-plugin-api": "^0.1.0", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/plugin-permission-node": "^0.6.3", "express": "^4.17.1", "express-promise-router": "^4.1.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index 84370721a8..5c6019cb04 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/backend-common +## 0.14.1 + +### Patch Changes + +- b1edb5cfd9: Fix parsing of S3 URLs for the default region. +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- e57180e45e: Added some more information to the error messages for `isomorphic-git` errors +- 1f75dfac29: Fix edge case bug when gitlab relativePath is repeated in the target URL. +- 90c87f28e8: Moving from Bitbucket Server endpoint from https://docs.atlassian.com/bitbucket-server/rest/7.9.0/bitbucket-rest.html#idp222 to https://docs.atlassian.com/bitbucket-server/rest/7.9.0/bitbucket-rest.html#idp224, to have the last commit in function of different branch, and not only the list of default branch +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- 0fc57887e8: Improve plural handling in logging output for secrets +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 954a94f52f: Support self-hosted gitlab installations with relative URL. +- Updated dependencies + - @backstage/config-loader@1.1.3 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + ## 0.14.1-next.3 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index cb2f653277..6a2b2be6f8 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.14.1-next.3", + "version": "0.14.1", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -36,9 +36,9 @@ "dependencies": { "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/config-loader": "^1.1.3-next.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", + "@backstage/config-loader": "^1.1.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", "@backstage/types": "^1.0.0", "@google-cloud/storage": "^6.0.0", "@manypkg/get-packages": "^1.1.3", @@ -91,8 +91,8 @@ } }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/archiver": "^5.1.0", "@types/base64-stream": "^1.0.2", "@types/compression": "^1.7.0", diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index 5bc234daef..eaa15a7208 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -125,8 +125,12 @@ export class GitlabUrlReader implements UrlReader { ); // Considering self hosted gitlab with relative + // assuming '/gitlab' is the relative path + // from: /gitlab/repo/project + // to: repo/project if (relativePath) { - repoFullName = trimStart(full_name, relativePath); + const rectifiedRelativePath = `${trimStart(relativePath, '/')}/`; + repoFullName = full_name.replace(rectifiedRelativePath, ''); } // Use GitLab API to get the default branch diff --git a/packages/backend-common/src/scm/git.test.ts b/packages/backend-common/src/scm/git.test.ts index 46aa0804b6..7b366e01c8 100644 --- a/packages/backend-common/src/scm/git.test.ts +++ b/packages/backend-common/src/scm/git.test.ts @@ -129,6 +129,27 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propogate the data from the error handler', async () => { + const url = 'http://github.com/some/repo'; + const dir = '/some/mock/dir'; + const auth = { + username: 'blob', + password: 'hunter2', + }; + const git = Git.fromAuth(auth); + + (isomorphic.clone as jest.Mock).mockImplementation(() => { + const error: Error & { data?: unknown } = new Error('mock error'); + error.data = { some: 'more information here' }; + + throw error; + }); + + await expect(git.clone({ url, dir })).rejects.toThrow( + 'more information here', + ); + }); }); describe('currentBranch', () => { @@ -196,6 +217,27 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propogate the data from the error handler', async () => { + const remote = 'http://github.com/some/repo'; + const dir = '/some/mock/dir'; + const auth = { + username: 'blob', + password: 'hunter2', + }; + const git = Git.fromAuth(auth); + + (isomorphic.fetch as jest.Mock).mockImplementation(() => { + const error: Error & { data?: unknown } = new Error('mock error'); + error.data = { some: 'more information here' }; + + throw error; + }); + + await expect(git.fetch({ remote, dir })).rejects.toThrow( + 'more information here', + ); + }); }); describe('init', () => { @@ -285,6 +327,27 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propogate the data from the error handler', async () => { + const remote = 'origin'; + const dir = '/some/mock/dir'; + const auth = { + username: 'blob', + password: 'hunter2', + }; + const git = Git.fromAuth(auth); + + (isomorphic.push as jest.Mock).mockImplementation(() => { + const error: Error & { data?: unknown } = new Error('mock error'); + error.data = { some: 'more information here' }; + + throw error; + }); + + await expect(git.push({ remote, dir })).rejects.toThrow( + 'more information here', + ); + }); }); describe('readCommit', () => { diff --git a/packages/backend-common/src/scm/git.ts b/packages/backend-common/src/scm/git.ts index 9cf84e9872..e76f675821 100644 --- a/packages/backend-common/src/scm/git.ts +++ b/packages/backend-common/src/scm/git.ts @@ -90,21 +90,30 @@ export class Git { }): Promise { const { url, dir, ref, depth, noCheckout } = options; this.config.logger?.info(`Cloning repo {dir=${dir},url=${url}}`); - return git.clone({ - fs, - http, - url, - dir, - ref, - singleBranch: true, - depth: depth ?? 1, - noCheckout, - onProgress: this.onProgressHandler(), - headers: { - 'user-agent': 'git/@isomorphic-git', - }, - onAuth: this.onAuth, - }); + + try { + return await git.clone({ + fs, + http, + url, + dir, + ref, + singleBranch: true, + depth: depth ?? 1, + noCheckout, + onProgress: this.onProgressHandler(), + headers: { + 'user-agent': 'git/@isomorphic-git', + }, + onAuth: this.onAuth, + }); + } catch (ex) { + this.config.logger?.error(`Failed to clone repo {dir=${dir},url=${url}}`); + if (ex.data) { + throw new Error(`${ex.message} {data=${JSON.stringify(ex.data)}}`); + } + throw ex; + } } /** https://isomorphic-git.org/docs/en/currentBranch */ @@ -124,15 +133,26 @@ export class Git { this.config.logger?.info( `Fetching remote=${remote} for repository {dir=${dir}}`, ); - await git.fetch({ - fs, - http, - dir, - remote, - onProgress: this.onProgressHandler(), - headers: { 'user-agent': 'git/@isomorphic-git' }, - onAuth: this.onAuth, - }); + + try { + await git.fetch({ + fs, + http, + dir, + remote, + onProgress: this.onProgressHandler(), + headers: { 'user-agent': 'git/@isomorphic-git' }, + onAuth: this.onAuth, + }); + } catch (ex) { + this.config.logger?.error( + `Failed to fetch repo {dir=${dir},origin=${origin}}`, + ); + if (ex.data) { + throw new Error(`${ex.message} {data=${JSON.stringify(ex.data)}}`); + } + throw ex; + } } async init(options: { dir: string; defaultBranch?: string }): Promise { @@ -175,17 +195,27 @@ export class Git { this.config.logger?.info( `Pushing directory to remote {dir=${dir},remote=${remote}}`, ); - return git.push({ - fs, - dir, - http, - onProgress: this.onProgressHandler(), - headers: { - 'user-agent': 'git/@isomorphic-git', - }, - remote: remote, - onAuth: this.onAuth, - }); + try { + return await git.push({ + fs, + dir, + http, + onProgress: this.onProgressHandler(), + headers: { + 'user-agent': 'git/@isomorphic-git', + }, + remote: remote, + onAuth: this.onAuth, + }); + } catch (ex) { + this.config.logger?.error( + `Failed to push to repo {dir=${dir}, remote=${remote}}`, + ); + if (ex.data) { + throw new Error(`${ex.message} {data=${JSON.stringify(ex.data)}}`); + } + throw ex; + } } /** https://isomorphic-git.org/docs/en/readCommit */ diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 42d40130c9..89a5874ee9 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,14 @@ # example-backend-next +## 0.0.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/backend-app-api@0.1.0 + ## 0.0.1-next.0 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index eba7aec08e..2267166ca3 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.1-next.0", + "version": "0.0.1", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,12 +25,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-app-api": "^0.1.0-next.0", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", - "@backstage/plugin-scaffolder-backend": "^1.4.0-next.3" + "@backstage/backend-app-api": "^0.1.0", + "@backstage/plugin-catalog-backend": "^1.3.0", + "@backstage/plugin-scaffolder-backend": "^1.4.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index 30f00578fa..80253439a5 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/backend-plugin-api +## 0.1.0 + +### Minor Changes + +- 91c1d12123: Introduced new package for creating backend plugins using the new alpha backend plugin framework. + This package is still considered **EXPERIMENTAL** and things will change without warning. Do not use this for production. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/backend-tasks@0.3.3 + ## 0.1.0-next.0 ### Minor Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 9f3aa255bf..de1e7cc802 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -35,16 +35,16 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/backend-tasks": "^0.3.3-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/backend-tasks": "^0.3.3", "@types/express": "^4.17.6", "express": "^4.17.1", "winston": "^3.2.1", "winston-transport": "^4.5.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index e7fa4e6eeb..d48d5d5733 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-tasks +## 0.3.3 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/errors@1.1.0 + ## 0.3.3-next.3 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 4f5e91e186..a52631e172 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.3.3-next.3", + "version": "0.3.3", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -33,9 +33,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@backstage/types": "^1.0.0", "@types/luxon": "^2.0.4", "cron": "^2.0.0", @@ -48,8 +48,8 @@ "zod": "^3.9.5" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/cron": "^2.0.0", "wait-for-expect": "^3.0.2" }, diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 46ba178820..bb8aacea7a 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-test-utils +## 0.1.26 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/cli@0.18.0 + ## 0.1.26-next.3 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 3003dca281..ca862bc19b 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.26-next.3", + "version": "0.1.26", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -34,8 +34,8 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/cli": "^0.18.0", "@backstage/config": "^1.0.1", "better-sqlite3": "^7.5.0", "knex": "^2.0.0", @@ -46,7 +46,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index c38a16c86f..d6c50a0807 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,45 @@ # example-backend +## 0.2.73 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-code-coverage-backend@0.2.0 + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/plugin-tech-insights-backend@0.5.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-backend@0.7.0 + - @backstage/plugin-search-backend@1.0.0 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.0 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/plugin-auth-backend@0.15.0 + - @backstage/plugin-jenkins-backend@0.1.24 + - @backstage/plugin-proxy-backend@0.2.28 + - @backstage/plugin-search-backend-module-pg@0.3.5 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-app-backend@0.3.34 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-azure-devops-backend@0.3.13 + - @backstage/plugin-graphql-backend@0.1.24 + - @backstage/plugin-permission-backend@0.5.9 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/plugin-rollbar-backend@0.1.31 + - @backstage/plugin-techdocs-backend@1.2.0 + - @backstage/plugin-todo-backend@0.1.31 + - @backstage/backend-tasks@0.3.3 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/plugin-kafka-backend@0.2.27 + - @backstage/plugin-badges-backend@0.1.28 + - example-app@0.2.73 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.2 + ## 0.2.73-next.3 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 67070bfeee..1947ba0302 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.73-next.3", + "version": "0.2.73", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,39 +26,40 @@ "build-image": "docker build ../.. -f Dockerfile --tag example-backend" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-app-backend": "^0.3.34-next.3", - "@backstage/plugin-auth-backend": "^0.15.0-next.3", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-azure-devops-backend": "^0.3.13-next.1", - "@backstage/plugin-badges-backend": "^0.1.28-next.2", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", - "@backstage/plugin-code-coverage-backend": "^0.2.0-next.3", - "@backstage/plugin-graphql-backend": "^0.1.24-next.1", - "@backstage/plugin-jenkins-backend": "^0.1.24-next.3", - "@backstage/plugin-kubernetes-backend": "^0.7.0-next.3", - "@backstage/plugin-kafka-backend": "^0.2.27-next.2", - "@backstage/plugin-permission-backend": "^0.5.9-next.2", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-node": "^0.6.3-next.2", - "@backstage/plugin-proxy-backend": "^0.2.28-next.1", - "@backstage/plugin-rollbar-backend": "^0.1.31-next.1", - "@backstage/plugin-scaffolder-backend": "^1.4.0-next.3", - "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.2-next.1", - "@backstage/plugin-search-backend": "^0.5.4-next.2", - "@backstage/plugin-search-backend-node": "^0.6.3-next.2", - "@backstage/plugin-search-backend-module-elasticsearch": "^0.2.0-next.2", - "@backstage/plugin-search-backend-module-pg": "^0.3.5-next.2", - "@backstage/plugin-techdocs-backend": "^1.2.0-next.3", - "@backstage/plugin-tech-insights-backend": "^0.5.0-next.3", - "@backstage/plugin-tech-insights-node": "^0.3.2-next.1", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.18-next.2", - "@backstage/plugin-todo-backend": "^0.1.31-next.2", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-app-backend": "^0.3.34", + "@backstage/plugin-auth-backend": "^0.15.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-azure-devops-backend": "^0.3.13", + "@backstage/plugin-badges-backend": "^0.1.28", + "@backstage/plugin-catalog-backend": "^1.3.0", + "@backstage/plugin-code-coverage-backend": "^0.2.0", + "@backstage/plugin-graphql-backend": "^0.1.24", + "@backstage/plugin-jenkins-backend": "^0.1.24", + "@backstage/plugin-kubernetes-backend": "^0.7.0", + "@backstage/plugin-kafka-backend": "^0.2.27", + "@backstage/plugin-permission-backend": "^0.5.9", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.3", + "@backstage/plugin-proxy-backend": "^0.2.28", + "@backstage/plugin-rollbar-backend": "^0.1.31", + "@backstage/plugin-scaffolder-backend": "^1.4.0", + "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.2", + "@backstage/plugin-search-backend": "^1.0.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-backend-node": "^1.0.0", + "@backstage/plugin-search-backend-module-elasticsearch": "^1.0.0", + "@backstage/plugin-search-backend-module-pg": "^0.3.5", + "@backstage/plugin-techdocs-backend": "^1.2.0", + "@backstage/plugin-tech-insights-backend": "^0.5.0", + "@backstage/plugin-tech-insights-node": "^0.3.2", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.18", + "@backstage/plugin-todo-backend": "^0.1.31", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^19.0.3", "better-sqlite3": "^7.5.0", @@ -75,7 +76,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", diff --git a/packages/backend/src/plugins/search.ts b/packages/backend/src/plugins/search.ts index c478ecdd05..084b1a54e5 100644 --- a/packages/backend/src/plugins/search.ts +++ b/packages/backend/src/plugins/search.ts @@ -22,8 +22,8 @@ import { PgSearchEngine } from '@backstage/plugin-search-backend-module-pg'; import { IndexBuilder, LunrSearchEngine, - SearchEngine, } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-techdocs-backend'; import { Router } from 'express'; import { PluginEnvironment } from '../types'; diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md index f2fc1d2c88..32ad01d0bf 100644 --- a/packages/catalog-client/CHANGELOG.md +++ b/packages/catalog-client/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/catalog-client +## 1.0.4 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + ## 1.0.4-next.2 ### Patch Changes diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index a4678fb94b..a6c92cde77 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-client", "description": "An isomorphic client for the catalog backend", - "version": "1.0.4-next.2", + "version": "1.0.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/errors": "^1.1.0", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "msw": "^0.44.0" }, diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md index d9eb2a04a5..9554b94788 100644 --- a/packages/catalog-model/CHANGELOG.md +++ b/packages/catalog-model/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/catalog-model +## 1.1.0 + +### Minor Changes + +- 4cc81372f8: Introduced `GroupDefaultParentEntityPolicy` to set a default group entity parent. +- 1380b389dc: Adding an optional type field to entity links to group and categorize links + +### Patch Changes + +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- f9f1de8100: Add shared annotations for Kubernetes clusters +- f1dcc6f3c6: Added type predicates for all entity types, e.g. isUserEntity +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + ## 1.1.0-next.3 ### Patch Changes diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 9b9136fc3c..b7456bb2f8 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -14,6 +14,17 @@ export interface AlphaEntity extends Entity { // @public export const ANNOTATION_EDIT_URL = 'backstage.io/edit-url'; +// @public +export const ANNOTATION_KUBERNETES_API_SERVER = 'kubernetes.io/api-server'; + +// @public +export const ANNOTATION_KUBERNETES_API_SERVER_CA = + 'kubernetes.io/api-server-certificate-authority'; + +// @public +export const ANNOTATION_KUBERNETES_AUTH_PROVIDER = + 'kubernetes.io/auth-provider'; + // @public export const ANNOTATION_LOCATION = 'backstage.io/managed-by-location'; diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 081ffff289..7c2d89c216 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-model", "description": "Types and validators that help describe the model of a Backstage Catalog", - "version": "1.1.0-next.3", + "version": "1.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,7 +35,7 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@backstage/types": "^1.0.0", "ajv": "^8.10.0", "json-schema": "^0.4.0", @@ -43,7 +43,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "@types/json-schema": "^7.0.5", "@types/lodash": "^4.14.151", diff --git a/packages/catalog-model/src/entity/constants.ts b/packages/catalog-model/src/entity/constants.ts index 5dc21683bd..ac9e813394 100644 --- a/packages/catalog-model/src/entity/constants.ts +++ b/packages/catalog-model/src/entity/constants.ts @@ -34,3 +34,26 @@ export const ANNOTATION_VIEW_URL = 'backstage.io/view-url'; * @public */ export const ANNOTATION_EDIT_URL = 'backstage.io/edit-url'; + +/** + * Annotation for specifying the API server of a Kubernetes cluster + * + * @public + */ +export const ANNOTATION_KUBERNETES_API_SERVER = 'kubernetes.io/api-server'; + +/** + * Annotation for specifying the Certificate Authority of an API server for a Kubernetes cluster + * + * @public + */ +export const ANNOTATION_KUBERNETES_API_SERVER_CA = + 'kubernetes.io/api-server-certificate-authority'; + +/** + * Annotation for specifying the auth provider for a Kubernetes cluster + * + * @public + */ +export const ANNOTATION_KUBERNETES_AUTH_PROVIDER = + 'kubernetes.io/auth-provider'; diff --git a/packages/catalog-model/src/entity/index.ts b/packages/catalog-model/src/entity/index.ts index 039529bf3e..a97476ba11 100644 --- a/packages/catalog-model/src/entity/index.ts +++ b/packages/catalog-model/src/entity/index.ts @@ -19,6 +19,9 @@ export { DEFAULT_NAMESPACE, ANNOTATION_EDIT_URL, ANNOTATION_VIEW_URL, + ANNOTATION_KUBERNETES_API_SERVER, + ANNOTATION_KUBERNETES_API_SERVER_CA, + ANNOTATION_KUBERNETES_AUTH_PROVIDER, } from './constants'; export type { AlphaEntity, diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index ba8f773fdb..c408949050 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/cli +## 0.18.0 + +### Minor Changes + +- 96a82d9791: **BREAKING**: Removed the following deprecated package commands: + + - `app:build` - Use `package build` instead + - `app:serve` - Use `package start` instead + - `backend:build` - Use `package build` instead + - `backend:bundle` - Use `package build` instead + - `backend:dev` - Use `package start` instead + - `plugin:build` - Use `package build` instead + - `plugin:serve` - Use `package start` instead + - `build` - Use `package build` instead + - `lint` - Use `package lint` instead + - `prepack` - Use `package prepack` instead + - `postpack` - Use `package postpack` instead + + In order to replace these you need to have [migrated to using package roles](https://backstage.io/docs/tutorials/package-role-migration). + +### Patch Changes + +- 86640214f0: Upgrade `@rollup/plugin-node-resolve` to `^13.0.6` +- d2256c0384: Fix `webpack-dev-server` deprecations. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- e661242844: Updated dependency `run-script-webpack-plugin` to `^0.1.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e8ed804d4f: Updated dependency `@spotify/prettier-config` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-base` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-react` to `^14.0.0`. + Updated dependency `@spotify/eslint-config-typescript` to `^14.0.0`. +- e662b573cf: Updated dependency `@octokit/request` to `^6.0.0`. +- f6b6fb7165: The `test` command now ensures that all IO is flushed before exiting when printing `--help`. +- Updated dependencies + - @backstage/config-loader@1.1.3 + - @backstage/release-manifests@0.0.5 + - @backstage/errors@1.1.0 + ## 0.18.0-next.3 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 35423e12bb..41fafa903c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.18.0-next.3", + "version": "0.18.0", "private": false, "publishConfig": { "access": "public" @@ -33,9 +33,9 @@ "dependencies": { "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/config-loader": "^1.1.3-next.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/release-manifests": "^0.0.5-next.0", + "@backstage/config-loader": "^1.1.3", + "@backstage/errors": "^1.1.0", + "@backstage/release-manifests": "^0.0.5", "@backstage/types": "^1.0.0", "@hot-loader/react-dom-v16": "npm:@hot-loader/react-dom@^16.0.2", "@hot-loader/react-dom-v17": "npm:@hot-loader/react-dom@^17.0.2", @@ -45,9 +45,9 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "@rollup/plugin-yaml": "^3.1.0", - "@spotify/eslint-config-base": "^13.0.0", - "@spotify/eslint-config-react": "^13.0.0", - "@spotify/eslint-config-typescript": "^13.0.0", + "@spotify/eslint-config-base": "^14.0.0", + "@spotify/eslint-config-react": "^14.0.0", + "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", "@svgr/plugin-jsx": "6.2.x", @@ -126,14 +126,14 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16", "@types/diff": "^5.0.0", "@types/express": "^4.17.6", "@types/fs-extra": "^9.0.1", diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index f5b5846a42..484795ce5b 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/config-loader +## 1.1.3 + +### Patch Changes + +- bcada7cd9f: From now on the `$file` placeholder will trim the whitespaces and newline characters from the end of the file it reads. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- a3acec8819: Updated dependency `typescript-json-schema` to `^0.54.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + ## 1.1.3-next.1 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index c87d28b690..3a0fd87b4a 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config-loader", "description": "Config loading functionality used by Backstage backend, and CLI", - "version": "1.1.3-next.1", + "version": "1.1.3", "private": false, "publishConfig": { "access": "public", @@ -36,7 +36,7 @@ "dependencies": { "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@backstage/types": "^1.0.0", "@types/json-schema": "^7.0.6", "ajv": "^8.10.0", diff --git a/packages/config-loader/src/lib/transform/include.test.ts b/packages/config-loader/src/lib/transform/include.test.ts index 0913b31f66..c80efe6785 100644 --- a/packages/config-loader/src/lib/transform/include.test.ts +++ b/packages/config-loader/src/lib/transform/include.test.ts @@ -49,6 +49,8 @@ const readFile = jest.fn(async (path: string) => { const content = ( { [resolvePath(root, 'my-secret')]: 'secret', + [resolvePath(root, 'with-newline-at-the-end')]: + 'value without newline at the end\n\n', [resolvePath(root, 'my-data.json')]: '{"a":{"b":{"c":42}}}', [resolvePath(root, 'my-data.yaml')]: 'some:\n yaml:\n key: 7', [resolvePath(root, 'my-data.yml')]: 'different: { key: hello }', @@ -92,6 +94,14 @@ describe('includeTransform', () => { includeTransform({ $file: 'no-secret' }, root), ).rejects.toThrow('File not found!'); }); + it('should trim newlines from end of file', async () => { + await expect( + includeTransform({ $file: 'with-newline-at-the-end' }, root), + ).resolves.toEqual({ + applied: true, + value: 'value without newline at the end', + }); + }); it('should include env vars', async () => { await expect(includeTransform({ $env: 'SECRET' }, root)).resolves.toEqual({ diff --git a/packages/config-loader/src/lib/transform/include.ts b/packages/config-loader/src/lib/transform/include.ts index 569b61c82c..84e4a9294d 100644 --- a/packages/config-loader/src/lib/transform/include.ts +++ b/packages/config-loader/src/lib/transform/include.ts @@ -73,7 +73,7 @@ export function createIncludeTransform( case '$file': try { const value = await readFile(resolvePath(baseDir, includeValue)); - return { applied: true, value }; + return { applied: true, value: value.trimEnd() }; } catch (error) { throw new Error(`failed to read file ${includeValue}, ${error}`); } diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 115b41d76e..d171941d87 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/core-app-api +## 1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- 8fe2357101: The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + ## 1.0.4-next.1 ### Patch Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 34c44fe6e0..b770b516b3 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.0.4-next.1", + "version": "1.0.4", "private": false, "publishConfig": { "access": "public", @@ -34,7 +34,7 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", + "@backstage/core-plugin-api": "^1.0.4", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", "@types/prop-types": "^15.7.3", @@ -49,8 +49,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 8952d3be8f..f5ba3d02b0 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/core-components +## 0.10.0 + +### Minor Changes + +- 32204fa794: Add `transformLinkUri` and `transformImageUri` to `MarkdownContent` + +### Patch Changes + +- 3c440ea77e: Change BackstageIconLinkVertical style to use pallette instead of explicit color +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- b4b711bcc2: Fix the EntityLayout header style so that EntityContextMenu button can display in correct shape when user hover on it +- 944af7f2a8: Work around a bug calling `onChange` twice in `mui` for `RoutedTab` so you don't have to press back twice to navigate through tabs +- 7f5e79961d: Fix relative `sub-paths` by concatenating the app's base path with them. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- 7e115d42f9: Support displaying subtitle text in `SidebarSubmenuItem` +- ae746946f7: Improve accessibility for CopyTextButton +- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.10.0-next.3 ### Patch Changes diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index 302ef7ef7d..4e3820967a 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -190,6 +190,7 @@ export function CopyTextButton(props: CopyTextButtonProps): JSX.Element; // @public export interface CopyTextButtonProps { + 'aria-label'?: string; text: string; tooltipDelay?: number; tooltipText?: string; diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 43ab5d1775..d038a5673a 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.10.0-next.3", + "version": "0.10.0", "private": false, "publishConfig": { "access": "public", @@ -34,9 +34,9 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/theme": "^0.2.16", "@backstage/version-bridge": "^1.0.1", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", @@ -79,9 +79,9 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/core-app-api": "^1.0.4", + "@backstage/cli": "^0.18.0", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx index c1834091b5..3e6435ddad 100644 --- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx +++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx @@ -40,3 +40,10 @@ export const LongerTooltipDelay = () => ( tooltipDelay={3000} /> ); + +export const WithAriaLabel = () => ( + +); diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx index 462bfb36cb..e6448ce5ee 100644 --- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx +++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx @@ -55,13 +55,14 @@ const apis = [[errorApiRef, mockErrorApi] as const] as const; describe('', () => { it('renders without exploding', async () => { - const { getByTitle, queryByText } = await renderInTestApp( + const { getByTitle, queryByText, getByLabelText } = await renderInTestApp( , ); expect(getByTitle('mockTooltip')).toBeInTheDocument(); expect(queryByText('mockTooltip')).not.toBeInTheDocument(); + expect(getByLabelText('Copy text')).toBeInTheDocument(); }); it('displays tooltip and copy the text on click', async () => { @@ -99,4 +100,13 @@ describe('', () => { ); expect(mockErrorApi.post).toHaveBeenCalledWith(error); }); + + it('aria-label', async () => { + const { getByLabelText } = await renderInTestApp( + + + , + ); + expect(getByLabelText('text for aria-label')).toBeInTheDocument(); + }); }); diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx index 670c21f10c..bd900a931d 100644 --- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx +++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx @@ -47,6 +47,15 @@ export interface CopyTextButtonProps { * Default: "Text copied to clipboard" */ tooltipText?: string; + + /** + * Text to use as aria-label prop on the button + * + * @remarks + * + * Default: "Copy text" + */ + 'aria-label'?: string; } /** @@ -62,13 +71,18 @@ export interface CopyTextButtonProps { * * @example * - * `` + * ``` + * + * ``` */ export function CopyTextButton(props: CopyTextButtonProps) { const { text, tooltipDelay = 1000, tooltipText = 'Text copied to clipboard', + 'aria-label': ariaLabel = 'Copy text', } = props; const errorApi = useApi(errorApiRef); const [open, setOpen] = useState(false); @@ -96,7 +110,7 @@ export function CopyTextButton(props: CopyTextButtonProps) { onClose={() => setOpen(false)} open={open} > - + diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx index 0a937683a5..a97fc70e4b 100644 --- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx +++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx @@ -20,7 +20,7 @@ import { makeStyles } from '@material-ui/core/styles'; import TabUI, { TabProps } from '@material-ui/core/Tab'; import Tabs from '@material-ui/core/Tabs'; -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; /** @public */ export type HeaderTabsClassKey = @@ -80,12 +80,15 @@ export function HeaderTabs(props: HeaderTabsProps) { const [selectedTab, setSelectedTab] = useState(selectedIndex ?? 0); const styles = useStyles(); - const handleChange = (_: React.ChangeEvent<{}>, index: number) => { - if (selectedIndex === undefined) { - setSelectedTab(index); - } - if (onChange) onChange(index); - }; + const handleChange = useCallback( + (_: React.ChangeEvent<{}>, index: number) => { + if (selectedIndex === undefined) { + setSelectedTab(index); + } + if (onChange && selectedIndex !== index) onChange(index); + }, + [selectedIndex, onChange], + ); useEffect(() => { if (selectedIndex !== undefined) { diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 0d3cf6dabe..6659c4670c 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/core-plugin-api +## 1.0.4 + +### Patch Changes + +- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 2990fff4e5: Enabled the `@backstage/core-plugin-api/alpha` entry point. + ## 1.0.4-next.0 ### Patch Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 132abe72a5..4062ecf79f 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-plugin-api", "description": "Core API used by Backstage plugins", - "version": "1.0.4-next.0", + "version": "1.0.4", "private": false, "publishConfig": { "access": "public", @@ -47,9 +47,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index fd8aa38def..5066e917f2 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/create-app +## 0.4.29 + +### Patch Changes + +- f281ad17c0: Adds the ability to define the Backstage app name using a `BACKSTAGE_APP_NAME` + environment variable when running `create-app`. +- c92deffe39: Bumped create-app version. +- 0e967f188b: Bumped create-app version. +- bc87604c26: Added an explicit `node-gyp` dependency to the root `package.json`. This is to work around a bug in older versions of `node-gyp` that causes Python execution to fail on macOS. + + You can add this workaround to your existing project by adding `node-gyp` as a `devDependency` in your root `package.json` file: + + ```diff + "devDependencies": { + + "node-gyp": "^9.0.0" + }, + ``` + ## 0.4.29-next.3 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index abb7f1fdd8..c2179f88eb 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.4.29-next.3", + "version": "0.4.29", "private": false, "publishConfig": { "access": "public" diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 7f89910f3b..9cbb309539 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/dev-utils +## 1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 1.0.4-next.3 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 271d7b2e1b..ca5c67a4bd 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.4-next.3", + "version": "1.0.4", "private": false, "publishConfig": { "access": "public", @@ -33,15 +33,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/app-defaults": "^1.0.4-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/app-defaults": "^1.0.4", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", @@ -59,7 +59,7 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" }, diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md index b7d912f5ab..bb3eba0249 100644 --- a/packages/errors/CHANGELOG.md +++ b/packages/errors/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/errors +## 1.1.0 + +### Minor Changes + +- 6d61b44466: The `ResponseError.fromResponse` now accepts a more narrow response type, in order to avoid incompatibilities between different fetch implementations. + + The `response` property of `ResponseError` has also been narrowed to a new `ConsumedResponse` type that omits all the properties for consuming the body of the response. This is not considered a breaking change as it was always an error to try to consume the body of the response. + +### Patch Changes + +- c1a8bbf5e5: Inline the type of `ConsumedResponse.headers` and tweaked it to be the intersection of the built-in type and `node-fetch` type. + ## 1.1.0-next.0 ### Minor Changes diff --git a/packages/errors/api-report.md b/packages/errors/api-report.md index aab4e9baec..1a65ae2315 100644 --- a/packages/errors/api-report.md +++ b/packages/errors/api-report.md @@ -16,7 +16,18 @@ export class ConflictError extends CustomErrorBase {} // @public export type ConsumedResponse = { - readonly headers: Headers; + readonly headers: { + append(name: string, value: string): void; + delete(name: string): void; + get(name: string): string | null; + has(name: string): boolean; + set(name: string, value: string): void; + forEach(callback: (value: string, name: string) => void): void; + entries(): IterableIterator<[string, string]>; + keys(): IterableIterator; + values(): IterableIterator; + [Symbol.iterator](): Iterator<[string, string]>; + }; readonly ok: boolean; readonly redirected: boolean; readonly status: number; diff --git a/packages/errors/package.json b/packages/errors/package.json index 01f1137eeb..b7a8a2b517 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/errors", "description": "Common utilities for error handling within Backstage", - "version": "1.1.0-next.0", + "version": "1.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "serialize-error": "^8.0.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/packages/errors/src/errors/types.ts b/packages/errors/src/errors/types.ts index a62975571f..b0e86fd19a 100644 --- a/packages/errors/src/errors/types.ts +++ b/packages/errors/src/errors/types.ts @@ -21,7 +21,19 @@ * @public */ export type ConsumedResponse = { - readonly headers: Headers; + readonly headers: { + append(name: string, value: string): void; + delete(name: string): void; + get(name: string): string | null; + has(name: string): boolean; + set(name: string, value: string): void; + forEach(callback: (value: string, name: string) => void): void; + + entries(): IterableIterator<[string, string]>; + keys(): IterableIterator; + values(): IterableIterator; + [Symbol.iterator](): Iterator<[string, string]>; + }; readonly ok: boolean; readonly redirected: boolean; readonly status: number; diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index cf7480ad77..8800f42262 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/integration-react +## 1.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/theme@0.2.16 + ## 1.1.2-next.3 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index fddc3a0894..08c70c46d1 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.2-next.3", + "version": "1.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration": "^1.2.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -38,9 +38,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index edfb621431..ce075f9bba 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/integration +## 1.2.2 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 1f29047bad: Updated dependency `@octokit/auth-app` to `^4.0.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 8829e175f2: Allow frontend visibility for `integrations` itself. +- 954a94f52f: Support self-hosted gitlab installations with relative URL. +- 4df3390795: Avoid double encoding of the file path in `getBitbucketServerDownloadUrl` +- Updated dependencies + - @backstage/errors@1.1.0 + ## 1.2.2-next.3 ### Patch Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index 68b6ba369c..8c656186da 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration", "description": "Helpers for managing integrations towards external systems", - "version": "1.2.2-next.3", + "version": "1.2.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "cross-fetch": "^3.1.5", "git-url-parse": "^12.0.0", "@octokit/rest": "^19.0.3", @@ -43,9 +43,9 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/config-loader": "^1.1.3-next.1", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/config-loader": "^1.1.3", + "@backstage/test-utils": "^1.1.2", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "msw": "^0.44.0" diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md index 0d28ee16ad..b00e1c5821 100644 --- a/packages/release-manifests/CHANGELOG.md +++ b/packages/release-manifests/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/release-manifests +## 0.0.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + ## 0.0.5-next.0 ### Patch Changes diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 11dcd08df4..e075a18b19 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/release-manifests", "description": "Helper library for receiving release manifests", - "version": "0.0.5-next.0", + "version": "0.0.5", "private": false, "main": "src/index.ts", "types": "src/index.ts", @@ -36,7 +36,7 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/test-utils": "^1.1.2", "msw": "^0.44.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index c7200360c1..2360944694 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,23 @@ # techdocs-cli-embedded-app +## 0.2.72 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-catalog@1.4.0 + - @backstage/cli@0.18.0 + - @backstage/app-defaults@1.0.4 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/theme@0.2.16 + ## 0.2.72-next.3 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index a66e9a01d8..c847fe8581 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,25 +1,25 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.72-next.3", + "version": "0.2.72", "private": true, "backstage": { "role": "frontend" }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.4-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/app-defaults": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/cli": "^0.18.0", "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/plugin-techdocs": "^1.2.1-next.3", - "@backstage/plugin-techdocs-react": "^1.0.2-next.2", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/plugin-techdocs": "^1.3.0", + "@backstage/plugin-techdocs-react": "^1.0.2", + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "history": "^5.0.0", @@ -30,7 +30,7 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 3e66248276..59856a48fe 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.1.3 + +### Patch Changes + +- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag. +- 14ce0d9347: Fixed a bug that prevented docker images from being pulled by default when generating TechDocs. +- Updated dependencies + - @backstage/plugin-techdocs-node@1.2.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + ## 1.1.3-next.1 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 00e254d10f..9c76240653 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.1.3-next.1", + "version": "1.1.3", "private": false, "publishConfig": { "access": "public" @@ -37,7 +37,7 @@ "techdocs-cli": "bin/techdocs-cli" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.0", "@types/commander": "^2.12.2", "@types/fs-extra": "^9.0.6", "@types/http-proxy": "^1.17.4", @@ -62,11 +62,11 @@ "ext": "ts" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.1", - "@backstage/catalog-model": "^1.1.0-next.1", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/cli-common": "^0.1.9", "@backstage/config": "^1.0.1", - "@backstage/plugin-techdocs-node": "^1.2.0-next.1", + "@backstage/plugin-techdocs-node": "^1.2.0", "@types/dockerode": "^3.3.0", "commander": "^9.1.0", "dockerode": "^3.3.1", diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 317dc6afa7..2bc4766bc9 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/test-utils +## 1.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.3 + ## 1.1.2-next.2 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 49553caea7..5ae16fba60 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.1.2-next.2", + "version": "1.1.2", "private": false, "publishConfig": { "access": "public", @@ -34,11 +34,11 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/theme": "^0.2.16-next.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.11.2", @@ -55,7 +55,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "msw": "^0.44.0" diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index 93b79b0721..dcdcf2a6ae 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/theme +## 0.2.16 + +### Patch Changes + +- ff4f56eb49: **DEPRECATED**: The `bursts` object from `BackstagePaletteAdditions` has been depreciated and will be removed in a future release + + The `genPageTheme` function now includes an optional options object with an optional `fontColor` which defaults to white if not provided. + +- 4c09c09102: Adds optional `htmlFontSize` property and also sets typography design tokens for h5 and h6 in base theme. + ## 0.2.16-next.1 ### Patch Changes diff --git a/packages/theme/package.json b/packages/theme/package.json index 4cbd4d2205..866b8e11dd 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/theme", "description": "material-ui theme for use with Backstage.", - "version": "0.2.16-next.1", + "version": "0.2.16", "private": false, "publishConfig": { "access": "public", @@ -36,7 +36,7 @@ "@material-ui/core": "^4.12.2" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.2" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 129e6bf56b..26deb6811a 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-adr-backend +## 0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + - @backstage/plugin-adr-common@0.1.2 + ## 0.1.2-next.2 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index eb2fcf9ca7..43811cdb1d 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.1.2-next.2", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,14 +29,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-adr-common": "^0.1.2-next.1", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-adr-common": "^0.1.2", + "@backstage/plugin-search-common": "^1.0.0", "luxon": "^3.0.0", "marked": "^4.0.14", "winston": "^3.2.1", @@ -44,7 +44,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/marked": "^4.0.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3", diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md index e07697118c..10c6a7d938 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-adr-common +## 0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + ## 0.1.2-next.1 ### Patch Changes diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index a0567fb5b8..86b06ebc7e 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-adr-common", "description": "Common functionalities for the adr plugin", - "version": "0.1.2-next.1", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,12 +30,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.1", - "@backstage/integration": "^1.2.2-next.1", - "@backstage/plugin-search-common": "^0.3.6-next.0" + "@backstage/catalog-model": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-search-common": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 34c81a7f80..c0b8817c31 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-adr +## 0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 511f49ee43: Updated dependency `octokit` to `^2.0.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 7d47e7e512: Track discover event and result rank for `AdrSearchResultListItem` +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.1.2 + ## 0.1.2-next.3 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 22cb883ae1..025c85782e 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.1.2-next.3", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,14 +22,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-adr-common": "^0.1.2-next.1", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-adr-common": "^0.1.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -44,10 +44,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 49d4de7c96..a27f6cf761 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-airbrake-backend +## 0.2.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + ## 0.2.7-next.1 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 70ed0ddaca..750826512b 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.7-next.1", + "version": "0.2.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,7 +22,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", "@types/express": "*", "express": "^4.17.1", @@ -33,7 +33,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index c9ac1a301a..3302ba9f87 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-airbrake +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/dev-utils@1.0.4 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 665929d69f..236800d444 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,13 +23,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/app-defaults": "^1.0.4-next.3", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/app-defaults": "^1.0.4", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index b4e0dd916a..33c4275960 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-allure +## 0.1.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.1.23-next.3 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 508f42f14c..06c310bbd2 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.23-next.3", + "version": "0.1.23", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,11 +25,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index f24ee40ec9..ff46c73278 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-analytics-module-ga +## 0.1.18 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.1.18-next.3 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 499a957d70..4052363f11 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.18-next.3", + "version": "0.1.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,9 +25,9 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -38,10 +38,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 2e3a56971c..939aa14ac2 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-apache-airflow +## 0.2.0 + +### Minor Changes + +- 01f976ea72: Exposed DagTableComponent as standalone component + added a prop to get only select DAGs instead of the full list + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + ## 0.2.0-next.3 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 8494b1e7a8..1243795812 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.0-next.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md index c6ca346a62..4e030b2264 100644 --- a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md +++ b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-api-docs-module-protoc-gen-doc +## 0.1.0 + +### Minor Changes + +- e0328f2107: Added the new `grpcDocsApiWidget` to render `protoc-gen-doc` generated descriptors by the `grpc-docs` package. + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 00409845d0..5f46909d62 100644 --- a/plugins/api-docs-module-protoc-gen-doc/package.json +++ b/plugins/api-docs-module-protoc-gen-doc/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs-module-protoc-gen-doc", "description": "Additional functionalities for the api-docs plugin that renders the output of the protoc-gen-doc", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.0", "@testing-library/jest-dom": "^5.16.4", "@types/react": "^16.13.1 || ^17.0.0" }, diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 022a606aaa..e644150f8c 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-api-docs +## 0.8.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- b76eea25ed: Updated dependency `@asyncapi/react-component` to `1.0.0-next.39`. +- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title. +- 9432a05cf3: Set font colors correctly for descriptions containing HTML +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.8.7-next.3 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 96b95b51f0..7aff8bbd2c 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.8.7-next.3", + "version": "0.8.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ }, "dependencies": { "@asyncapi/react-component": "1.0.0-next.39", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apollo-explorer/.eslintrc.js b/plugins/apollo-explorer/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/apollo-explorer/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md new file mode 100644 index 0000000000..99d7973683 --- /dev/null +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -0,0 +1,14 @@ +# @backstage/plugin-apollo-explorer + +## 0.1.0 + +### Minor Changes + +- d8fec19542: Apollo Explorer plugin now available! Installation instructions can be found in the plugin README + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 diff --git a/plugins/apollo-explorer/README.md b/plugins/apollo-explorer/README.md new file mode 100644 index 0000000000..98f3116966 --- /dev/null +++ b/plugins/apollo-explorer/README.md @@ -0,0 +1,66 @@ +# apollo-explorer + +Welcome to the Apollo Explorer plugin! + +This plugin allows users to directly embed an [Apollo](https://www.apollographql.com) graph explorer directly into +Backstage! + +## Getting started + +### Getting an Apollo Graph Reference + +First things first, you will need an Apollo account, and a graph imported into your account. This is beyond the scope of +this plugin, so if you are totally new to Apollo, please reference their official +documentation [here](https://www.apollographql.com/docs). + +Once you have a graph set up in Apollo, we need to grab the graph reference. First, go to your Apollo graphs home page and choose the graph you wish to embed. + +![Apollo Graph List](./docs/img/apollo-graph-list.png) + +Once you are in your graph explorer, click the dropdown next to the share icon and select `Share as Embedded` + +![Share as Embedded](./docs/img/share-as-embedded.png) + +This modal contains a number of useful properties, all of which can be passed to the plugin via the component properties, but the only mandatory input we need from here is the `graphRef`. + +![Graph Ref](./docs/img/graph-ref.png) + +Hold on to this snippet for a second while we set up the plugin ✨ + +### Installing the Backstage Plugin + +First, add the plugin to your Backstage app + +```shell +yarn --cwd packages/app add @backstage/plugin-apollo-explorer +``` + +Then, in `packages/app/src/App.tsx` add the plugin as a `Route` + +```typescript + + } +/> +``` + +Then, in `packages/app/src/components/Root/Root.tsx` add a sidebar item so users can find your beautiful plugin! + +```typescript + +``` + +That's it! You should now see an `Apollo Explorer` item in your sidebar, and if you click it, you should see your graph(s) load and direct you to authenticate via Apollo! + +![Needs Auth](./docs/img/needs-auth.png) + +Once you authenticate, your graph is ready to use 🚀 + +![Logged In](./docs/img/logged-in.png) diff --git a/plugins/apollo-explorer/api-report.md b/plugins/apollo-explorer/api-report.md new file mode 100644 index 0000000000..593f8f3004 --- /dev/null +++ b/plugins/apollo-explorer/api-report.md @@ -0,0 +1,48 @@ +## API Report File for "@backstage/plugin-apollo-explorer" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +/// + +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { JSONObject } from '@apollo/explorer/src/helpers/types'; +import { RouteRef } from '@backstage/core-plugin-api'; + +// @public +export const ApolloExplorerPage: ({ + title, + subtitle, + endpoints, +}: { + title?: string | undefined; + subtitle?: string | undefined; + endpoints: { + title: string; + graphRef: string; + persistExplorerState?: boolean | undefined; + initialState?: + | { + document?: string | undefined; + variables?: JSONObject | undefined; + headers?: Record | undefined; + displayOptions: { + docsPanelState?: 'closed' | 'open' | undefined; + showHeadersAndEnvVars?: boolean | undefined; + theme?: 'dark' | 'light' | undefined; + }; + } + | undefined; + }[]; +}) => JSX.Element; + +// @public +export const apolloExplorerPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/apollo-explorer/dev/index.tsx b/plugins/apollo-explorer/dev/index.tsx new file mode 100644 index 0000000000..df61267811 --- /dev/null +++ b/plugins/apollo-explorer/dev/index.tsx @@ -0,0 +1,27 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { createDevApp } from '@backstage/dev-utils'; +import { apolloExplorerPlugin, ApolloExplorerPage } from '../src/plugin'; + +createDevApp() + .registerPlugin(apolloExplorerPlugin) + .addPage({ + element: , + title: 'Root Page', + path: '/apollo-explorer', + }) + .render(); diff --git a/plugins/apollo-explorer/docs/img/apollo-graph-list.png b/plugins/apollo-explorer/docs/img/apollo-graph-list.png new file mode 100644 index 0000000000..53a1c517aa Binary files /dev/null and b/plugins/apollo-explorer/docs/img/apollo-graph-list.png differ diff --git a/plugins/apollo-explorer/docs/img/graph-ref.png b/plugins/apollo-explorer/docs/img/graph-ref.png new file mode 100644 index 0000000000..062ebe50b7 Binary files /dev/null and b/plugins/apollo-explorer/docs/img/graph-ref.png differ diff --git a/plugins/apollo-explorer/docs/img/logged-in.png b/plugins/apollo-explorer/docs/img/logged-in.png new file mode 100644 index 0000000000..5c5c81347d Binary files /dev/null and b/plugins/apollo-explorer/docs/img/logged-in.png differ diff --git a/plugins/apollo-explorer/docs/img/needs-auth.png b/plugins/apollo-explorer/docs/img/needs-auth.png new file mode 100644 index 0000000000..03c6a9c5fc Binary files /dev/null and b/plugins/apollo-explorer/docs/img/needs-auth.png differ diff --git a/plugins/apollo-explorer/docs/img/share-as-embedded.png b/plugins/apollo-explorer/docs/img/share-as-embedded.png new file mode 100644 index 0000000000..672ed5d8ef Binary files /dev/null and b/plugins/apollo-explorer/docs/img/share-as-embedded.png differ diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json new file mode 100644 index 0000000000..40f6fcaa27 --- /dev/null +++ b/plugins/apollo-explorer/package.json @@ -0,0 +1,54 @@ +{ + "name": "@backstage/plugin-apollo-explorer", + "version": "0.1.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", + "@material-ui/core": "^4.9.13", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "^4.0.0-alpha.57", + "react-use": "^17.2.4", + "@apollo/explorer": "^1.1.1", + "use-deep-compare-effect": "^1.8.1" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", + "@testing-library/jest-dom": "^5.10.1", + "@testing-library/react": "^12.1.3", + "@testing-library/user-event": "^14.0.0", + "@types/jest": "*", + "@types/node": "*", + "msw": "^0.43.0", + "cross-fetch": "^3.1.5" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/ApolloExplorerBrowser.tsx b/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/ApolloExplorerBrowser.tsx new file mode 100644 index 0000000000..bce3ce00bb --- /dev/null +++ b/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/ApolloExplorerBrowser.tsx @@ -0,0 +1,85 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useState } from 'react'; +import { Divider, makeStyles, Tab, Tabs } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; +import { JSONObject } from '@apollo/explorer/src/helpers/types'; +import { ApolloExplorer } from '@apollo/explorer/react'; +import { Content } from '@backstage/core-components'; + +const useStyles = makeStyles(theme => ({ + tabs: { + background: theme.palette.background.paper, + }, + root: { + height: '100%', + }, + content: { + height: '100%', + }, + explorer: { + height: '95%', + }, +})); + +export type ApolloEndpointProps = { + title: string; + graphRef: string; + persistExplorerState?: boolean; + initialState?: { + document?: string; + variables?: JSONObject; + headers?: Record; + displayOptions: { + docsPanelState?: 'open' | 'closed'; + showHeadersAndEnvVars?: boolean; + theme?: 'dark' | 'light'; + }; + }; +}; + +type Props = { + endpoints: ApolloEndpointProps[]; +}; + +export const ApolloExplorerBrowser = ({ endpoints }: Props) => { + const classes = useStyles(); + const [tabIndex, setTabIndex] = useState(0); + + return ( +
+ setTabIndex(value)} + indicatorColor="primary" + > + {endpoints.map(({ title }, index) => ( + + ))} + + + + + +
+ ); +}; diff --git a/plugins/search/src/components/LegacySearchPage/index.ts b/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/index.ts similarity index 84% rename from plugins/search/src/components/LegacySearchPage/index.ts rename to plugins/apollo-explorer/src/components/ApolloExplorerBrowser/index.ts index 5b64054f8d..d8bc44bfa7 100644 --- a/plugins/search/src/components/LegacySearchPage/index.ts +++ b/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,5 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export { LegacySearchPage } from './LegacySearchPage'; +export { ApolloExplorerBrowser } from './ApolloExplorerBrowser'; diff --git a/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx b/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx new file mode 100644 index 0000000000..c2c02fc646 --- /dev/null +++ b/plugins/apollo-explorer/src/components/ApolloExplorerPage/ApolloExplorerPage.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { Content, Header, Page } from '@backstage/core-components'; +import { ApolloExplorerBrowser } from '../ApolloExplorerBrowser'; +import { JSONObject } from '@apollo/explorer/src/helpers/types'; + +type EndpointProps = { + title: string; + graphRef: string; + persistExplorerState?: boolean; + initialState?: { + document?: string; + variables?: JSONObject; + headers?: Record; + displayOptions: { + docsPanelState?: 'open' | 'closed'; + showHeadersAndEnvVars?: boolean; + theme?: 'dark' | 'light'; + }; + }; +}; + +type Props = { + title?: string | undefined; + subtitle?: string | undefined; + endpoints: EndpointProps[]; +}; + +export const ApolloExplorerPage = ({ title, subtitle, endpoints }: Props) => { + return ( + +
+ + + + + ); +}; diff --git a/plugins/search/src/components/SearchResultPager/index.ts b/plugins/apollo-explorer/src/components/ApolloExplorerPage/index.ts similarity index 85% rename from plugins/search/src/components/SearchResultPager/index.ts rename to plugins/apollo-explorer/src/components/ApolloExplorerPage/index.ts index 39b72ec71f..8f62872fe6 100644 --- a/plugins/search/src/components/SearchResultPager/index.ts +++ b/plugins/apollo-explorer/src/components/ApolloExplorerPage/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,5 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export { SearchResultPager } from './SearchResultPager'; +export { ApolloExplorerPage } from './ApolloExplorerPage'; diff --git a/plugins/search/src/components/SearchBar/index.tsx b/plugins/apollo-explorer/src/index.ts similarity index 77% rename from plugins/search/src/components/SearchBar/index.tsx rename to plugins/apollo-explorer/src/index.ts index f95d2ec0fc..6d07535fc3 100644 --- a/plugins/search/src/components/SearchBar/index.tsx +++ b/plugins/apollo-explorer/src/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export { SearchBar, SearchBarBase } from './SearchBar'; -export type { SearchBarProps, SearchBarBaseProps } from './SearchBar'; +export { apolloExplorerPlugin, ApolloExplorerPage } from './plugin'; diff --git a/plugins/apollo-explorer/src/plugin.test.ts b/plugins/apollo-explorer/src/plugin.test.ts new file mode 100644 index 0000000000..0b5e41fe6e --- /dev/null +++ b/plugins/apollo-explorer/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { apolloExplorerPlugin } from './plugin'; + +describe('apollo-explorer', () => { + it('should export plugin', () => { + expect(apolloExplorerPlugin).toBeDefined(); + }); +}); diff --git a/plugins/apollo-explorer/src/plugin.ts b/plugins/apollo-explorer/src/plugin.ts new file mode 100644 index 0000000000..6f7321689b --- /dev/null +++ b/plugins/apollo-explorer/src/plugin.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createPlugin, + createRoutableExtension, +} from '@backstage/core-plugin-api'; + +import { rootRouteRef } from './routes'; + +/** + * Plugin that allows Apollo Explorer instances to be directly embedded into Backstage + * @public + */ +export const apolloExplorerPlugin = createPlugin({ + id: 'apollo-explorer', + routes: { + root: rootRouteRef, + }, +}); + +/** + * Main component that wraps the embedded graph(s) + * @public + */ +export const ApolloExplorerPage = apolloExplorerPlugin.provide( + createRoutableExtension({ + name: 'ApolloExplorerPage', + component: () => + import('./components/ApolloExplorerPage').then(m => m.ApolloExplorerPage), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/apollo-explorer/src/routes.ts b/plugins/apollo-explorer/src/routes.ts new file mode 100644 index 0000000000..c8e6a3eb9a --- /dev/null +++ b/plugins/apollo-explorer/src/routes.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createRouteRef } from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'apollo-explorer', +}); diff --git a/plugins/search/src/components/LegacySearchPage/Filters/index.ts b/plugins/apollo-explorer/src/setupTests.ts similarity index 76% rename from plugins/search/src/components/LegacySearchPage/Filters/index.ts rename to plugins/apollo-explorer/src/setupTests.ts index de890e0eaf..9bb3e72355 100644 --- a/plugins/search/src/components/LegacySearchPage/Filters/index.ts +++ b/plugins/apollo-explorer/src/setupTests.ts @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export { FiltersButton } from './FiltersButton'; -export { Filters } from './Filters'; -export type { FiltersState } from './Filters'; +import '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index cea1375cee..8db23101bd 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-app-backend +## 0.3.34 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/config-loader@1.1.3 + ## 0.3.34-next.3 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index daacabe5f6..fab5ae97fb 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.34-next.3", + "version": "0.3.34", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,8 +33,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/config-loader": "^1.1.3-next.1", + "@backstage/backend-common": "^0.14.1", + "@backstage/config-loader": "^1.1.3", "@backstage/config": "^1.0.1", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", @@ -50,8 +50,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@backstage/types": "^1.0.0", "@types/supertest": "^2.0.8", "mock-fs": "^5.1.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index a8b47b5566..ac5890f92e 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-auth-backend +## 0.15.0 + +### Minor Changes + +- 9d4040777e: **BREAKING**: Removed all directly exported auth provider factories, option types, and sign-in resolvers. For example: `AwsAlbProviderOptions`, `bitbucketUserIdSignInResolver`, `createGithubProvider`. These are all still accessible via the `providers` export. For example, use `providers.github.create()` rather than `createGithubProvider()`, and `providers.bitbucket.resolvers.userIdMatchingUserEntityAnnotation()` rather than `bitbucketUserIdSignInResolver`. + + **BREAKING**: Removed the exported `AuthProviderFactoryOptions` type as well as the deprecated option fields of the `AuthProviderFactory` callback. This includes the `tokenManager`, `tokenIssuer`, `discovery`, and `catalogApi` fields. Existing usage of these should be replaced with the new utilities in the `resolverContext` field. The deprecated `TokenIssuer` type is now also removed, since it is no longer used. + + **BREAKING**: Removed `getEntityClaims`, use `getDefaultOwnershipEntityRefs` instead. + + **DEPRECATION**: Deprecated `AtlassianAuthProvider` as it was unintentionally exported. + +- fe8e025af5: Allowed post method on /refresh path + +### Patch Changes + +- 3cedfd8365: add Cloudflare Access auth provider to auth-backend +- f2cf79d62e: Added an option for the auth backend router to select the algorithm for the JWT token signing keys +- 8e03db907a: Auth provider now also export createAuthProviderIntegration +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 859346bfbb: Updated dependency `google-auth-library` to `^8.0.0`. +- 3a014730dc: Add new config option for okta auth server and IDP +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + ## 0.15.0-next.3 ### Minor Changes diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 8c9ec14c9e..649a31c963 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -7,6 +7,7 @@ import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; import { BackstageSignInResult } from '@backstage/plugin-auth-node'; +import { CacheClient } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; @@ -170,6 +171,41 @@ export class CatalogIdentityClient { resolveCatalogMembership(query: MemberClaimQuery): Promise; } +// @public +export type CloudflareAccessClaims = { + aud: string[]; + email: string; + exp: number; + iat: number; + nonce: string; + identity_nonce: string; + sub: string; + iss: string; + custom: string; +}; + +// @public +export type CloudflareAccessGroup = { + id: string; + name: string; + email: string; +}; + +// @public +export type CloudflareAccessIdentityProfile = { + id: string; + name: string; + email: string; + groups: CloudflareAccessGroup[]; +}; + +// @public (undocumented) +export type CloudflareAccessResult = { + claims: CloudflareAccessClaims; + cfIdentity: CloudflareAccessIdentityProfile; + expiresInSeconds?: number; +}; + // @public export type CookieConfigurer = (ctx: { providerId: string; @@ -472,6 +508,18 @@ export const providers: Readonly<{ userIdMatchingUserEntityAnnotation(): SignInResolver; }>; }>; + cfAccess: Readonly<{ + create: (options: { + authHandler?: AuthHandler | undefined; + signIn: { + resolver: SignInResolver; + }; + cache?: CacheClient | undefined; + }) => AuthProviderFactory; + resolvers: Readonly<{ + emailMatchingUserEntityProfileEmail: () => SignInResolver; + }>; + }>; gcpIap: Readonly<{ create: (options: { authHandler?: AuthHandler | undefined; diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index af5a3c24be..5aff9df90a 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -116,6 +116,9 @@ export interface Config { issuer?: string; region: string; }; + cfaccess?: { + teamName: string; + }; }; }; } diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 5f83bbef6a..88bc7b5f2d 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.15.0-next.3", + "version": "0.15.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@backstage/types": "^1.0.0", "@davidzemon/passport-okta-oauth": "^0.0.5", "@google-cloud/firestore": "^5.0.2", @@ -76,8 +76,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", diff --git a/plugins/auth-backend/src/providers/cloudflare-access/index.ts b/plugins/auth-backend/src/providers/cloudflare-access/index.ts new file mode 100644 index 0000000000..10390af7de --- /dev/null +++ b/plugins/auth-backend/src/providers/cloudflare-access/index.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { cfAccess } from './provider'; +export type { + CloudflareAccessClaims, + CloudflareAccessGroup, + CloudflareAccessResult, + CloudflareAccessIdentityProfile, +} from './provider'; diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts new file mode 100644 index 0000000000..21ec7371e5 --- /dev/null +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.test.ts @@ -0,0 +1,267 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import express from 'express'; +import { jwtVerify } from 'jose'; +import { + CF_JWT_HEADER, + CF_AUTH_IDENTITY, + CloudflareAccessAuthProvider, +} from './provider'; +import { AuthResolverContext } from '../types'; +import fetch from 'node-fetch'; + +const jwtMock = jwtVerify as jest.Mocked; +const mockJwt = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktFWV9JRCIsImlzcyI6IklTU1VFUl9VUkwifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlVzZXIgTmFtZSIsImlhdCI6MTUxNjIzOTAyMn0.uMCSBGhij1xn5pnot8XgD-huQuTIBOFGs6kkW_p_X94'; +const mockClaims = { + sub: '1234567890', + email: 'user.name@email.test', + iat: 1632833760, + exp: 1632833763, + iss: 'ISSUER_URL', +}; +const mockCfIdentity = { + name: 'foo', + id: '123', + email: 'foo@bar.com', + groups: [ + { + id: '123', + email: 'foo@bar.com', + name: 'foo', + }, + ], +}; + +const identityOkResponse = { + backstageIdentity: { + identity: { + ownershipEntityRefs: ['user:default/jimmymarkum'], + type: 'user', + userEntityRef: 'user:default/jimmymarkum', + }, + token: + 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', + }, + profile: { + email: 'user.name@email.test', + }, + providerInfo: { + cfAccessIdentityProfile: { + email: 'foo@bar.com', + groups: [ + { + email: 'foo@bar.com', + id: '123', + name: 'foo', + }, + ], + id: '123', + name: 'foo', + }, + claims: mockClaims, + expiresInSeconds: 3, + }, +}; + +const mockAuthenticatedUserEmail = 'user.name@email.test'; +const mockCacheClient = { + get: jest.fn(), + set: jest.fn(), + delete: jest.fn(), +}; + +jest.mock('jose'); +jest.mock('node-fetch', () => { + const original = jest.requireActual('node-fetch'); + return { + __esModule: true, + default: jest.fn(), + Headers: original.Headers, + }; +}); + +beforeEach(() => { + jest.clearAllMocks(); +}); + +describe('CloudflareAccessAuthProvider', () => { + // Cloudflare access provides jwt in two ways. + const mockRequestWithJwtHeader = { + header: jest.fn(name => { + if (name === CF_JWT_HEADER) { + return mockJwt; + } else if (name === CF_AUTH_IDENTITY) { + return mockAuthenticatedUserEmail; + } + return undefined; + }), + } as unknown as express.Request; + const mockRequestWithJwtCookie = { + header: jest.fn(_ => { + return undefined; + }), + cookies: { + CF_Authorization: `${mockJwt}`, + }, + } as unknown as express.Request; + + const mockRequestWithoutJwt = { + header: jest.fn(_ => { + return undefined; + }), + } as unknown as express.Request; + + const mockResponse = { + end: jest.fn(), + header: () => jest.fn(), + json: jest.fn(), + status: jest.fn(), + } as unknown as express.Response; + + const mockFetch = fetch as unknown as jest.Mocked; + + const provider = new CloudflareAccessAuthProvider({ + teamName: 'foobar', + resolverContext: {} as AuthResolverContext, + authHandler: async ({ claims }) => ({ + profile: { + email: claims.email, + }, + }), + signInResolver: async () => { + return { + token: + 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', + }; + }, + cache: mockCacheClient, + }); + + describe('when JWT is valid', () => { + it('returns cfidentity also when get-identity succeeds', async () => { + jwtMock.mockReturnValue(Promise.resolve({ payload: mockClaims })); + mockFetch.mockReturnValueOnce( + Promise.resolve({ + ok: true, + status: 200, + json: () => { + return mockCfIdentity; + }, + }), + ); + await provider.refresh(mockRequestWithJwtHeader, mockResponse); + expect(mockResponse.json).toHaveBeenCalledWith(identityOkResponse); + }); + + it('should resolve when passed in cookie', async () => { + jwtMock.mockReturnValue(Promise.resolve({ payload: mockClaims })); + // when mockFetch resolves and there nothing gets returned from /get-identity + mockFetch.mockReturnValueOnce( + Promise.resolve({ + ok: true, + status: 200, + json: () => { + return mockCfIdentity; + }, + }), + ); + await provider.refresh(mockRequestWithJwtCookie, mockResponse); + expect(mockResponse.json).toHaveBeenCalledWith(identityOkResponse); + }); + + it('should resolve an identity and populate access groups when there are groups', async () => { + // when get-identity api responds and responds with status 200 + mockFetch.mockResolvedValueOnce( + Promise.resolve({ + ok: () => { + return true; + }, + status: 200, + json: () => { + return Promise.resolve({ + name: 'foo', + id: '123', + email: 'foo@bar.com', + groups: [ + { + id: '123', + email: 'foo@bar.com', + name: 'foo', + }, + ], + }); + }, + }), + ); + jwtMock.mockReturnValueOnce(Promise.resolve({ payload: mockClaims })); + await provider.refresh(mockRequestWithJwtCookie, mockResponse); + expect(mockResponse.json).toHaveBeenCalledWith(identityOkResponse); + }); + + it('should throw an error when get-identity fails', async () => { + mockFetch.mockReturnValue(Promise.reject()); + await expect( + provider.refresh(mockRequestWithJwtCookie, mockResponse), + ).rejects.toThrowError(); + }); + }); + + describe('should fail when', () => { + it('JWT is missing', async () => { + await expect( + provider.refresh(mockRequestWithoutJwt, mockResponse), + ).rejects.toThrow(); + }); + + it('JWT is invalid', async () => { + jwtMock.mockImplementation(() => { + throw new Error('bad JWT'); + }); + await expect( + provider.refresh(mockRequestWithJwtCookie, mockResponse), + ).rejects.toThrow(); + await expect( + provider.refresh(mockRequestWithJwtHeader, mockResponse), + ).rejects.toThrow(); + jwtMock.mockReset(); + }); + + it('SignInResolver rejects', async () => { + jwtMock.mockReturnValue(mockClaims); + await expect( + provider.refresh(mockRequestWithJwtCookie, mockResponse), + ).rejects.toThrow(); + await expect( + provider.refresh(mockRequestWithJwtHeader, mockResponse), + ).rejects.toThrow(); + jwtMock.mockReset(); + }); + + it('AuthHandler rejects', async () => { + jwtMock.mockReturnValue(mockClaims); + + await expect( + provider.refresh(mockRequestWithJwtCookie, mockResponse), + ).rejects.toThrow(); + await expect( + provider.refresh(mockRequestWithJwtHeader, mockResponse), + ).rejects.toThrow(); + jwtMock.mockReset(); + }); + }); +}); diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts new file mode 100644 index 0000000000..a2c16fcebf --- /dev/null +++ b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts @@ -0,0 +1,379 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + AuthHandler, + AuthProviderRouteHandlers, + AuthResolverContext, + AuthResponse, + SignInResolver, +} from '../types'; +import fetch, { Headers } from 'node-fetch'; +import express from 'express'; +import * as _ from 'lodash'; +import { jwtVerify, createRemoteJWKSet } from 'jose'; +import { + AuthenticationError, + ResponseError, + ForwardedError, +} from '@backstage/errors'; +import { CacheClient } from '@backstage/backend-common'; +import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; +import { prepareBackstageIdentityResponse } from '../prepareBackstageIdentityResponse'; +import { commonByEmailResolver } from '../resolvers'; + +// JWT Web Token definitions are in the URL below +// https://developers.cloudflare.com/cloudflare-one/identity/users/validating-json/ +export const CF_JWT_HEADER = 'cf-access-jwt-assertion'; +export const CF_AUTH_IDENTITY = 'cf-access-authenticated-user-email'; +const COOKIE_AUTH_NAME = 'CF_Authorization'; +const CACHE_PREFIX = 'providers/cloudflare-access/profile-v1'; + +/** + * Default cache TTL + * + * @public + */ +export const CF_DEFAULT_CACHE_TTL = 3600; + +/** @public */ +export type Options = { + /** + * Access team name + * + * When you configure Access, the public certificates are available at this + * URL, where your-team-name is your team name: + * https://.cloudflareaccess.com/cdn-cgi/access/certs + */ + teamName: string; + authHandler: AuthHandler; + signInResolver: SignInResolver; + resolverContext: AuthResolverContext; + cache?: CacheClient; +}; + +/** + * CloudflareAccessClaims + * + * Can be used in externally provided auth handler or sign in resolver to + * enrich user profile for sign-in user entity + * + * @public + */ +export type CloudflareAccessClaims = { + /** + * `aud` identifies the application to which the JWT is issued. + */ + aud: string[]; + /** + * `email` contains the email address of the authenticated user. + */ + email: string; + /** + * iat and exp are the issuance and expiration timestamps. + */ + exp: number; + iat: number; + /** + * `nonce` is the session identifier. + */ + nonce: string; + /** + * `identity_nonce` is available in the Application Token and can be used to + * query all group membership for a given user. + */ + identity_nonce: string; + /** + * `sub` contains the identifier of the authenticated user. + */ + sub: string; + /** + * `iss` the issuer is the application’s Cloudflare Access Domain URL. + */ + iss: string; + /** + * `custom` contains SAML attributes in the Application Token specified by an + * administrator in the identity provider configuration. + */ + custom: string; +}; + +/** + * CloudflareAccessGroup + * + * @public + */ +export type CloudflareAccessGroup = { + /** + * Group id + */ + id: string; + /** + * Name of group as defined in Cloudflare zero trust dashboard + */ + name: string; + /** + * Access group email address + */ + email: string; +}; + +/** + * CloudflareAccessIdentityProfile + * + * Can be used in externally provided auth handler or sign in resolver to + * enrich user profile for sign-in user entity + * + * @public + */ +export type CloudflareAccessIdentityProfile = { + id: string; + name: string; + email: string; + groups: CloudflareAccessGroup[]; +}; + +/** + * + * @public + */ +export type CloudflareAccessResult = { + claims: CloudflareAccessClaims; + cfIdentity: CloudflareAccessIdentityProfile; + expiresInSeconds?: number; +}; + +/** + * @public + */ +export type CloudflareAccessProviderInfo = { + /** + * Expiry of the access token in seconds. + */ + expiresInSeconds?: number; + /** + * Cloudflare access identity profile with cloudflare access groups + */ + cfAccessIdentityProfile?: CloudflareAccessIdentityProfile; + /** + * Cloudflare access claims + */ + claims: CloudflareAccessClaims; +}; + +export type CloudflareAccessResponse = + AuthResponse; + +export class CloudflareAccessAuthProvider implements AuthProviderRouteHandlers { + private readonly teamName: string; + private readonly resolverContext: AuthResolverContext; + private readonly authHandler: AuthHandler; + private readonly signInResolver: SignInResolver; + private readonly jwtKeySet: any; + private readonly cache?: CacheClient; + + constructor(options: Options) { + this.teamName = options.teamName; + this.authHandler = options.authHandler; + this.signInResolver = options.signInResolver; + this.resolverContext = options.resolverContext; + this.jwtKeySet = createRemoteJWKSet( + new URL( + `https://${this.teamName}.cloudflareaccess.com/cdn-cgi/access/certs`, + ), + ); + this.cache = options.cache; + } + + frameHandler(): Promise { + return Promise.resolve(); + } + + async refresh(req: express.Request, res: express.Response): Promise { + // ProxiedSignInPage calls `/refresh` implicitly each time the backstage + // app is refreshed on the browser. + // User authentication is then checked here. + const result = await this.getResult(req); + const response = await this.handleResult(result); + res.json(response); + } + + start(): Promise { + return Promise.resolve(); + } + + private async getIdentityProfile( + jwt: string, + ): Promise { + const headers = new Headers(); + // set both headers just the way inbound responses are set + headers.set(CF_JWT_HEADER, jwt); + headers.set('cookie', `${COOKIE_AUTH_NAME}=${jwt}`); + try { + const res = await fetch( + `https://${this.teamName}.cloudflareaccess.com/cdn-cgi/access/get-identity`, + { headers }, + ); + if (!res.ok) { + throw ResponseError.fromResponse(res); + } + const cfIdentity = await res.json(); + return cfIdentity as unknown as CloudflareAccessIdentityProfile; + } catch (err) { + throw new ForwardedError('getIdentityProfile failed', err); + } + } + + private async getResult( + req: express.Request, + ): Promise { + // JWTs generated by Access are available in a request header as + // Cf-Access-Jwt-Assertion and as cookies as CF_Authorization. + let jwt = req.header(CF_JWT_HEADER); + if (!jwt) { + jwt = req.cookies.CF_Authorization; + } + if (!jwt) { + // Only throw if both are not provided by Cloudflare Access since either + // can be used. + throw new AuthenticationError( + `Missing ${CF_JWT_HEADER} from Cloudflare Access`, + ); + } + + // Cloudflare signs the JWT using the RSA Signature with SHA-256 (RS256). + // RS256 follows an asymmetric algorithm; a private key signs the JWTs and + // a separate public key verifies the signature. + const verifyResult = await jwtVerify(jwt, this.jwtKeySet, { + issuer: `https://${this.teamName}.cloudflareaccess.com`, + }); + const sub = verifyResult.payload.sub; + const cfAccessResultStr = await this.cache?.get(`${CACHE_PREFIX}/${sub}`); + if (typeof cfAccessResultStr === 'string') { + return JSON.parse(cfAccessResultStr) as CloudflareAccessResult; + } + const claims = verifyResult.payload as CloudflareAccessClaims; + // Builds a passport profile from JWT claims first + try { + // If we successfully fetch the get-identity endpoint, + // We supplement the passport profile with richer user identity + // information here. + const cfIdentity = await this.getIdentityProfile(jwt); + // Stores a stringified JSON object in cfaccess provider cache only when + // we complete all steps + const cfAccessResult: CloudflareAccessResult = { + claims, + cfIdentity, + expiresInSeconds: claims.exp - claims.iat, + }; + this.cache?.set(`${CACHE_PREFIX}/${sub}`, JSON.stringify(cfAccessResult)); + return cfAccessResult; + } catch (err) { + throw new ForwardedError( + 'Failed to populate access identity information', + err, + ); + } + } + + private async handleResult( + result: CloudflareAccessResult, + ): Promise { + const { profile } = await this.authHandler(result, this.resolverContext); + const backstageIdentity = await this.signInResolver( + { + result, + profile, + }, + this.resolverContext, + ); + + return { + providerInfo: { + expiresInSeconds: result.expiresInSeconds, + claims: result.claims, + cfAccessIdentityProfile: result.cfIdentity, + }, + backstageIdentity: prepareBackstageIdentityResponse(backstageIdentity), + profile, + }; + } +} + +/** + * Auth provider integration for Cloudflare Access auth + * + * @public + */ +export const cfAccess = createAuthProviderIntegration({ + create(options: { + /** + * The profile transformation function used to verify and convert the auth response + * into the profile that will be presented to the user. + */ + authHandler?: AuthHandler; + + /** + * Configure sign-in for this provider, without it the provider can not be used to sign users in. + */ + signIn: { + /** + * Maps an auth result to a Backstage identity for the user. + */ + resolver: SignInResolver; + }; + /** + * CacheClient object that was configured for the Backstage backend, + * should be provided via the backend auth plugin. + */ + cache?: CacheClient; + }) { + return ({ config, resolverContext }) => { + const teamName = config.getString('teamName'); + + if (!options.signIn.resolver) { + throw new Error( + 'SignInResolver is required to use this authentication provider', + ); + } + + const authHandler: AuthHandler = + options?.authHandler + ? options.authHandler + : async ({ claims, cfIdentity }) => { + return { + profile: { + email: claims.email, + displayName: cfIdentity.name, + }, + }; + }; + + return new CloudflareAccessAuthProvider({ + teamName, + signInResolver: options?.signIn.resolver, + authHandler, + resolverContext, + ...(options.cache && { cache: options.cache }), + }); + }; + }, + resolvers: { + /** + * Looks up the user by matching their email to the entity email. + */ + emailMatchingUserEntityProfileEmail: () => commonByEmailResolver, + }, +}); diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts index 41ee44beae..83dd1c6c1f 100644 --- a/plugins/auth-backend/src/providers/index.ts +++ b/plugins/auth-backend/src/providers/index.ts @@ -20,6 +20,12 @@ export type { BitbucketOAuthResult, BitbucketPassportProfile, } from './bitbucket'; +export type { + CloudflareAccessClaims, + CloudflareAccessGroup, + CloudflareAccessResult, + CloudflareAccessIdentityProfile, +} from './cloudflare-access'; export type { GithubOAuthResult } from './github'; export type { OAuth2ProxyResult } from './oauth2-proxy'; export type { OidcAuthResult } from './oidc'; diff --git a/plugins/auth-backend/src/providers/providers.ts b/plugins/auth-backend/src/providers/providers.ts index 71df8223ef..b2795c25f0 100644 --- a/plugins/auth-backend/src/providers/providers.ts +++ b/plugins/auth-backend/src/providers/providers.ts @@ -18,6 +18,7 @@ import { atlassian } from './atlassian'; import { auth0 } from './auth0'; import { awsAlb } from './aws-alb'; import { bitbucket } from './bitbucket'; +import { cfAccess } from './cloudflare-access'; import { gcpIap } from './gcp-iap'; import { github } from './github'; import { gitlab } from './gitlab'; @@ -41,6 +42,7 @@ export const providers = Object.freeze({ auth0, awsAlb, bitbucket, + cfAccess, gcpIap, github, gitlab, diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 096a4cbcae..f38125f928 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-node +## 0.2.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/errors@1.1.0 + ## 0.2.3-next.2 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index c1455535c6..8e0585663b 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.3-next.2", + "version": "0.2.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,15 +23,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "jose": "^4.6.0", "node-fetch": "^2.6.7", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "lodash": "^4.17.21", "msw": "^0.44.0", "uuid": "^8.0.0" diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 5080410b39..4ca6d040d6 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-azure-devops-backend +## 0.3.13 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 13a232ec22: Added comments to example to help avoid confusion as to where lines need to be added +- e67c4b7d5a: Adding getProjects endpoint to list out all projects associated with the Azure DevOps organization. + + It can be accessed by using this endpoint `{backendUrl}/api/azure-devops/projects` + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-azure-devops-common@0.2.4 + ## 0.3.13-next.1 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index f39b4d6a07..65937dccf2 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.13-next.1", + "version": "0.3.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,9 +23,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/plugin-azure-devops-common": "^0.2.4-next.0", + "@backstage/plugin-azure-devops-common": "^0.2.4", "@types/express": "^4.17.6", "azure-devops-node-api": "^11.0.1", "express": "^4.17.1", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", "msw": "^0.44.0" diff --git a/plugins/azure-devops-common/CHANGELOG.md b/plugins/azure-devops-common/CHANGELOG.md index 8320047ea1..cdd02cc625 100644 --- a/plugins/azure-devops-common/CHANGELOG.md +++ b/plugins/azure-devops-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-azure-devops-common +## 0.2.4 + +### Patch Changes + +- e67c4b7d5a: Adding getProjects endpoint to list out all projects associated with the Azure DevOps organization. + + It can be accessed by using this endpoint `{backendUrl}/api/azure-devops/projects` + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index 9ab17220c2..fa29937726 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-common", - "version": "0.2.4-next.0", + "version": "0.2.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 15a6f1df08..209ec81545 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-azure-devops +## 0.1.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e049e41048: Exporting azureDevOpsApiRef, AzureGitTagsIcon, and all hooks for the benefit of other plugins. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-azure-devops-common@0.2.4 + ## 0.1.23-next.3 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index f2f3ee1e2f..92db8f1add 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.1.23-next.3", + "version": "0.1.23", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,13 +30,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-azure-devops-common": "^0.2.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-azure-devops-common": "^0.2.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index 779625184e..2bb913e198 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-badges-backend +## 0.1.28 + +### Patch Changes + +- 58fd5ee9d5: Add missing installation instructions +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + ## 0.1.28-next.2 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 1e0bc62b15..22ae3df489 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.1.28-next.2", + "version": "0.1.28", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.2", - "@backstage/catalog-client": "^1.0.4-next.1", - "@backstage/catalog-model": "^1.1.0-next.2", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@types/express": "^4.17.6", "badge-maker": "^3.3.0", "cors": "^2.8.5", @@ -48,7 +48,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.2", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index acfbcd6e0a..37dcd214fa 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-badges +## 0.2.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.31-next.3 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 7c73b55f9e..6192d547d2 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.31-next.3", + "version": "0.2.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,12 +30,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 81358cfc7f..45a7a167b3 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-bazaar-backend +## 0.1.18 + +### Patch Changes + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 77abf50acf: Fixed api warnings +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/backend-test-utils@0.1.26 + ## 0.1.18-next.1 ### Patch Changes diff --git a/plugins/bazaar-backend/api-report.md b/plugins/bazaar-backend/api-report.md index b50994b15d..d62453d156 100644 --- a/plugins/bazaar-backend/api-report.md +++ b/plugins/bazaar-backend/api-report.md @@ -8,13 +8,9 @@ import express from 'express'; import { Logger } from 'winston'; import { PluginDatabaseManager } from '@backstage/backend-common'; -// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export function createRouter(options: RouterOptions): Promise; -// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 351535e544..67fe4e43a7 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.1.18-next.1", + "version": "0.1.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.2", - "@backstage/backend-test-utils": "^0.1.26-next.2", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-test-utils": "^0.1.26", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "express": "^4.17.1", @@ -34,7 +34,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.2" + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/plugins/bazaar-backend/src/service/router.ts b/plugins/bazaar-backend/src/service/router.ts index 3915c8c609..c61309d279 100644 --- a/plugins/bazaar-backend/src/service/router.ts +++ b/plugins/bazaar-backend/src/service/router.ts @@ -21,12 +21,14 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; import { DatabaseHandler } from './DatabaseHandler'; +/** @public */ export interface RouterOptions { logger: Logger; database: PluginDatabaseManager; config: Config; } +/** @public */ export async function createRouter( options: RouterOptions, ): Promise { diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index 48d5f8a85a..3449e53ce9 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-bazaar +## 0.1.22 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 77abf50acf: Fixed api warnings +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/cli@0.18.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + ## 0.1.22-next.3 ### Patch Changes diff --git a/plugins/bazaar/api-report.md b/plugins/bazaar/api-report.md index 801f75a04c..c6afde73f2 100644 --- a/plugins/bazaar/api-report.md +++ b/plugins/bazaar/api-report.md @@ -8,13 +8,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; -// Warning: (ae-missing-release-tag) "BazaarPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const BazaarPage: () => JSX.Element; -// Warning: (ae-missing-release-tag) "bazaarPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const bazaarPlugin: BackstagePlugin< { @@ -24,13 +20,9 @@ export const bazaarPlugin: BackstagePlugin< {} >; -// Warning: (ae-missing-release-tag) "EntityBazaarInfoCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const EntityBazaarInfoCard: () => JSX.Element | null; -// Warning: (ae-missing-release-tag) "SortView" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export const SortView: () => JSX.Element; diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 371596b981..cb8b24ead9 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.1.22-next.3", + "version": "0.1.22", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/cli": "^0.18.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/plugin-catalog-react": "^1.1.2", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -47,8 +47,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", "@testing-library/jest-dom": "^5.10.1", "cross-fetch": "^3.1.5" }, diff --git a/plugins/bazaar/src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx b/plugins/bazaar/src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx index 5007dbdc89..ba38f3189e 100644 --- a/plugins/bazaar/src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx +++ b/plugins/bazaar/src/components/EntityBazaarInfoCard/EntityBazaarInfoCard.tsx @@ -24,6 +24,7 @@ import { EntityBazaarInfoContent } from '../EntityBazaarInfoContent'; import { Card } from '@material-ui/core'; import { parseBazaarResponse } from '../../util/parseMethods'; +/** @public */ export const EntityBazaarInfoCard = () => { const { entity } = useEntity(); const bazaarApi = useApi(bazaarApiRef); diff --git a/plugins/bazaar/src/components/SortView/SortView.tsx b/plugins/bazaar/src/components/SortView/SortView.tsx index f5bb6facd7..75f5bbeb34 100644 --- a/plugins/bazaar/src/components/SortView/SortView.tsx +++ b/plugins/bazaar/src/components/SortView/SortView.tsx @@ -66,6 +66,7 @@ const getUnlinkedCatalogEntities = ( }); }; +/** @public */ export const SortView = () => { const bazaarApi = useApi(bazaarApiRef); const catalogApi = useApi(catalogApiRef); diff --git a/plugins/bazaar/src/plugin.ts b/plugins/bazaar/src/plugin.ts index 438208624e..e863896489 100644 --- a/plugins/bazaar/src/plugin.ts +++ b/plugins/bazaar/src/plugin.ts @@ -25,6 +25,7 @@ import { } from '@backstage/core-plugin-api'; import { bazaarApiRef, BazaarClient } from './api'; +/** @public */ export const bazaarPlugin = createPlugin({ id: 'bazaar', routes: { @@ -44,6 +45,7 @@ export const bazaarPlugin = createPlugin({ ], }); +/** @public */ export const BazaarPage = bazaarPlugin.provide( createRoutableExtension({ name: 'BazaarPage', diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index c92c9e7d08..413928dcab 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/integration@1.2.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index e196bd1837..16856782de 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitbucket-cloud-common", "description": "Common functionalities for bitbucket-cloud plugins", - "version": "0.1.1-next.1", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -28,11 +28,11 @@ "update-models": "yarn refresh-schema && yarn generate-models && yarn reduce-models" }, "dependencies": { - "@backstage/integration": "^1.2.2-next.3", + "@backstage/integration": "^1.2.2", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@openapitools/openapi-generator-cli": "^2.4.26", "msw": "^0.44.0", "ts-morph": "^15.0.0" diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index ec83a0c66e..d8dbf12bdd 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-bitrise +## 0.1.34 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.1.34-next.3 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 00cca959d2..c82435621b 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.34-next.3", + "version": "0.1.34", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index a5f6ad1541..011431fc8d 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.1.7 + +### Patch Changes + +- f9f1de8100: Add processor for ingesting EKS clusters into the catalog +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.1.7-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/api-report.md b/plugins/catalog-backend-module-aws/api-report.md index c2c18431b9..b1f6358979 100644 --- a/plugins/catalog-backend-module-aws/api-report.md +++ b/plugins/catalog-backend-module-aws/api-report.md @@ -7,6 +7,7 @@ import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorParser } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; +import { Credentials } from 'aws-sdk'; import { EntityProvider } from '@backstage/plugin-catalog-backend'; import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import { LocationSpec } from '@backstage/plugin-catalog-backend'; @@ -14,6 +15,26 @@ import { Logger } from 'winston'; import { TaskRunner } from '@backstage/backend-tasks'; import { UrlReader } from '@backstage/backend-common'; +// @public +export type AWSCredentialFactory = ( + awsAccountId: string, +) => Promise; + +// @public +export class AwsEKSClusterProcessor implements CatalogProcessor { + constructor(options: { credentialsFactory?: AWSCredentialFactory }); + // (undocumented) + getProcessorName(): string; + // (undocumented) + normalizeName(name: string): string; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; +} + // @public export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { // (undocumented) @@ -33,7 +54,7 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { ): Promise; } -// @public +// @public @deprecated export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(reader: UrlReader); // (undocumented) diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 243a4e3a47..5382daa57f 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.1.7-next.2", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "aws-sdk": "^2.840.0", "lodash": "^4.17.21", @@ -48,7 +48,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151", "aws-sdk-mock": "^5.2.1", "yaml": "^2.0.0" diff --git a/plugins/catalog-backend-module-aws/src/index.ts b/plugins/catalog-backend-module-aws/src/index.ts index 1d8e844895..212308edaa 100644 --- a/plugins/catalog-backend-module-aws/src/index.ts +++ b/plugins/catalog-backend-module-aws/src/index.ts @@ -22,3 +22,4 @@ export * from './processors'; export * from './providers'; +export * from './types'; diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.test.ts new file mode 100644 index 0000000000..3e33ba740c --- /dev/null +++ b/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.test.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AwsEKSClusterProcessor } from './AwsEKSClusterProcessor'; +import AWSMock from 'aws-sdk-mock'; +import aws from 'aws-sdk'; + +describe('AwsEKSClusterProcessor', () => { + AWSMock.setSDKInstance(aws); + describe('readLocation', () => { + const processor = new (AwsEKSClusterProcessor as any)({}); + const location = { type: 'aws-eks', target: '957140518395/us-west-2' }; + const emit = jest.fn(); + it('generates cluster correctly', async () => { + const clusters: aws.EKS.Types.ListClustersResponse = { + clusters: ['backstage-test'], + nextToken: undefined, + }; + + const cluster: aws.EKS.Types.DescribeClusterResponse = { + cluster: { + name: 'backstage-test', + arn: 'arn:aws:1', + endpoint: 'https://backstage.io/kubernetes-api-server', + certificateAuthority: { + data: 'cert', + }, + }, + }; + AWSMock.mock('EKS', 'listClusters', clusters); + + AWSMock.mock('EKS', 'describeCluster', cluster); + + await processor.readLocation(location, false, emit); + expect(emit).toBeCalledWith({ + type: 'entity', + location, + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Resource', + metadata: { + annotations: { + 'amazonaws.com/account-id': '957140518395', + 'amazonaws.com/arn': cluster.cluster?.arn, + 'kubernetes.io/api-server': cluster.cluster?.endpoint, + 'kubernetes.io/api-server-certificate-authority': + cluster.cluster?.certificateAuthority?.data, + 'kubernetes.io/auth-provider': 'aws', + }, + name: 'backstage-test', + namespace: 'default', + }, + spec: { + type: 'kubernetes-cluster', + owner: 'unknown', + }, + }, + }); + }); + }); +}); diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.ts new file mode 100644 index 0000000000..c34b247f4d --- /dev/null +++ b/plugins/catalog-backend-module-aws/src/processors/AwsEKSClusterProcessor.ts @@ -0,0 +1,123 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + CatalogProcessor, + CatalogProcessorEmit, + LocationSpec, +} from '@backstage/plugin-catalog-backend'; +import { + ANNOTATION_KUBERNETES_API_SERVER, + ANNOTATION_KUBERNETES_API_SERVER_CA, + ANNOTATION_KUBERNETES_AUTH_PROVIDER, +} from '@backstage/catalog-model'; +import { Credentials, EKS } from 'aws-sdk'; +import { AWSCredentialFactory } from '../types'; + +const ACCOUNTID_ANNOTATION: string = 'amazonaws.com/account-id'; +const ARN_ANNOTATION: string = 'amazonaws.com/arn'; + +/** + * A processor for automatic discovery of resources from EKS clusters. Handles the + * `aws-eks` location type, and target accounts/regions of the form + * `/`. + * + * @public + */ +export class AwsEKSClusterProcessor implements CatalogProcessor { + private credentialsFactory?: AWSCredentialFactory; + + constructor(options: { credentialsFactory?: AWSCredentialFactory }) { + this.credentialsFactory = options.credentialsFactory; + } + + getProcessorName(): string { + return 'aws-eks'; + } + + normalizeName(name: string): string { + return name + .trim() + .toLocaleLowerCase('en-US') + .replace(/[^a-zA-Z0-9\-]/g, '-'); + } + + async readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise { + if (location.type !== 'aws-eks') { + return false; + } + + // location target is of format "account-id/region" + const [accountId, region] = location.target.split('/'); + + if (!accountId || !region) { + throw new Error( + 'AWS EKS location specified without account or region information', + ); + } + + let credentials: Credentials | undefined; + + if (this.credentialsFactory) { + credentials = await this.credentialsFactory(accountId); + } + + const eksClient = new EKS({ credentials, region }); + const clusters = await eksClient.listClusters({}).promise(); + if (clusters.clusters === undefined) { + return true; + } + + const results = clusters.clusters + .map(cluster => eksClient.describeCluster({ name: cluster }).promise()) + .map(async describedClusterPromise => { + const describedCluster = await describedClusterPromise; + if (describedCluster.cluster) { + const entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Resource', + metadata: { + annotations: { + [ACCOUNTID_ANNOTATION]: accountId, + [ARN_ANNOTATION]: describedCluster.cluster.arn || '', + [ANNOTATION_KUBERNETES_API_SERVER]: + describedCluster.cluster.endpoint || '', + [ANNOTATION_KUBERNETES_API_SERVER_CA]: + describedCluster.cluster.certificateAuthority?.data || '', + [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'aws', + }, + name: this.normalizeName(describedCluster.cluster.name as string), + namespace: 'default', + }, + spec: { + type: 'kubernetes-cluster', + owner: 'unknown', + }, + }; + emit({ + type: 'entity', + entity, + location, + }); + } + }); + await Promise.all(results); + return true; + } +} diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.ts index 0390defb2a..84f2289c94 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.ts @@ -31,6 +31,7 @@ import limiterFactory from 'p-limit'; * `https://testbucket.s3.us-east-2.amazonaws.com`. * * @public + * @deprecated Use the `AwsS3EntityProvider` instead (see https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-aws/CHANGELOG.md#014). */ export class AwsS3DiscoveryProcessor implements CatalogProcessor { constructor(private readonly reader: UrlReader) {} diff --git a/plugins/catalog-backend-module-aws/src/processors/index.ts b/plugins/catalog-backend-module-aws/src/processors/index.ts index 8718e77a6f..63b8a47139 100644 --- a/plugins/catalog-backend-module-aws/src/processors/index.ts +++ b/plugins/catalog-backend-module-aws/src/processors/index.ts @@ -14,5 +14,6 @@ * limitations under the License. */ +export { AwsEKSClusterProcessor } from './AwsEKSClusterProcessor'; export { AwsOrganizationCloudAccountProcessor } from './AwsOrganizationCloudAccountProcessor'; export { AwsS3DiscoveryProcessor } from './AwsS3DiscoveryProcessor'; diff --git a/plugins/search/src/components/Filters/index.tsx b/plugins/catalog-backend-module-aws/src/types.ts similarity index 67% rename from plugins/search/src/components/Filters/index.tsx rename to plugins/catalog-backend-module-aws/src/types.ts index dc4d811dbd..3d9df38181 100644 --- a/plugins/search/src/components/Filters/index.tsx +++ b/plugins/catalog-backend-module-aws/src/types.ts @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Credentials } from 'aws-sdk'; -export { FiltersButton } from './FiltersButton'; -export type { FiltersButtonProps } from './FiltersButton'; -export { Filters } from './Filters'; -export type { FilterOptions, FiltersProps, FiltersState } from './Filters'; +/** + * A factory for providing user-specified AWS credentials for a given AWS account. + * + * @public + */ +export type AWSCredentialFactory = ( + awsAccountId: string, +) => Promise; diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index a215ff308e..e9ff4178d0 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.1.5-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 059fd5bd27..1fa59b0723 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.5-next.2", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/backend-tasks": "^0.3.3", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.44.0", @@ -48,8 +48,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 6bcaf6cc40..7c38e500c7 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/integration@1.2.2 + - @backstage/plugin-bitbucket-cloud-common@0.1.1 + - @backstage/backend-tasks@0.3.3 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index a107959820..fe85039d6b 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.1-next.1", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.3-next.3", + "@backstage/backend-tasks": "^0.3.3", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.1-next.1", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.1", + "@backstage/plugin-catalog-backend": "^1.3.0", "uuid": "^8.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "msw": "^0.44.0" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index b73c4834c4..996c21bef8 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/plugin-bitbucket-cloud-common@0.1.1 + - @backstage/errors@1.1.0 + ## 0.2.1-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index a01a2e38ce..e101a2330e 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.1-next.2", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.1-next.1", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.1", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.44.0", @@ -47,8 +47,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 3658da2d54..4b15865163 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.1.2-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index e56e199d59..9a3c3c82ed 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.2-next.2", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -28,13 +28,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "fs-extra": "10.1.0", "msw": "^0.44.0", "node-fetch": "^2.6.7", @@ -42,8 +42,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/fs-extra": "^9.0.1" }, "files": [ diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index bf96849eca..05d8e4019e 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-github +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 0f25116d28: Updated dependency `@octokit/graphql` to `^5.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.1.5-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 7d52be20de..0f1e716047 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.1.5-next.2", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "@octokit/graphql": "^5.0.0", "lodash": "^4.17.21", @@ -49,8 +49,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 0edbae31c4..db00dcc84a 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 49ff472c0b: Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore): + + ```yaml + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab-host # Identifies one of the hosts set up in the integrations + branch: main # Optional. Uses `master` as default + entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` + ``` + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.1.5-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 800cb8b280..1dba184b3c 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.1.5-next.2", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,13 +33,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/backend-tasks": "^0.3.3", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "lodash": "^4.17.21", "msw": "^0.44.0", @@ -48,8 +48,8 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151", "@types/uuid": "^8.0.0" }, diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 5d65d1c768..40f94d53c1 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.1 + +### Patch Changes + +- ddfd566606: Fix mapping between users and groups for FreeIPA when using the LdapOrgProcessor +- fbfbff6bf7: Add possibility to resolve relations by RDN, in addition to UUID and DN +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/catalog-model@1.1.0 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.5.1-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index b89382977a..3fb86d97f6 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.1-next.2", + "version": "0.5.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-backend": "^1.3.0", "@backstage/types": "^1.0.0", "@types/ldapjs": "^2.2.0", "ldapjs": "^2.2.0", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 43ee7ff4f5..e05e249af8 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,114 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.4.0 + +### Minor Changes + +- a145672f0f: Align `msgraph` plugin's entity provider config with other providers. **Deprecated** entity processor as well as previous config. + + You will see warning at the log output until you migrate to the new setup. + All deprecated parts will be removed eventually after giving some time to migrate. + + Please find information on how to migrate your current setup to the new one below. + + **Migration Guide:** + + There were two different way on how to use the msgraph plugin: processor or provider. + + Previous registration for the processor: + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addProcessor( + MicrosoftGraphOrgReaderProcessor.fromConfig(env.config, { + logger: env.logger, + // [...] + }), + ); + ``` + + Previous registration when using the provider: + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addEntityProvider( + MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { + id: 'https://graph.microsoft.com/v1.0', + target: 'https://graph.microsoft.com/v1.0', + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, + }), + // [...] + }), + ); + ``` + + Previous configuration as used for both: + + ```yaml + # app-config.yaml + catalog: + processors: + microsoftGraphOrg: + providers: + - target: https://graph.microsoft.com/v1.0 + # [...] + ``` + + **Replacement:** + + Please check https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md for the complete documentation of all configuration options (config as well as registration of the provider). + + ```yaml + # app-config.yaml + catalog: + providers: + microsoftGraphOrg: + # In case you used the deprecated configuration with the entity provider + # using the value of `target` will keep the same location key for all + providerId: # some stable ID which will be used as part of the location key for all ingested data + target: https://graph.microsoft.com/v1.0 + # [...] + ``` + + ```typescript + // packages/backend/src/plugins/catalog.ts + builder.addEntityProvider( + MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, + }), + // [...] + }), + ); + ``` + + In case you've used multiple entity providers before + **and** you had different transformers for each of them + you can provide these directly at the one `fromConfig` call + by passing a Record with the provider ID as key. + +- b8ebecd100: Microsoft Graph plugin can supports many more options for authenticating with the Microsoft Graph API. + Previously only ClientId/ClientSecret was supported, but now all the authentication options of `DefaultAzureCredential` from `@azure/identity` are supported. + Including Managed Identity, Client Certificate, Azure CLI and VS Code. + + If `clientId` and `clientSecret` are specified in configuration, the plugin behaves the same way as before. + If these fields are omitted, the plugin uses `DefaultAzureCredential` to automatically determine the best authentication method. + This is particularly useful for local development environments - the default configuration will try to use existing credentials from Visual Studio Code, Azure CLI and Azure PowerShell, without the user needing to configure any credentials in app-config.yaml + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/catalog-model@1.1.0 + - @backstage/backend-tasks@0.3.3 + ## 0.4.0-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index a411974bd6..9831d0106c 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.4.0-next.2", + "version": "0.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,10 +34,10 @@ }, "dependencies": { "@azure/identity": "^2.1.0", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/plugin-catalog-backend": "^1.3.0", "@microsoft/microsoft-graph-types": "^2.6.0", "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", @@ -48,9 +48,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151", "msw": "^0.44.0" }, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index 4a52ddc665..4c38198b0d 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -211,7 +211,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { options: MicrosoftGraphOrgEntityProviderLegacyOptions, ): MicrosoftGraphOrgEntityProvider { options.logger.warn( - 'Deprecated msgraph config "catalog.processors.microsoftGraphOrg" used. Use "catalog.providers.microsoftGraphOrg" instead. More info at https://github.com/backstage/backstage/blob/master/.changeset/long-bananas-rescue.md', + 'Deprecated msgraph config "catalog.processors.microsoftGraphOrg" used. Use "catalog.providers.microsoftGraphOrg" instead. More info at https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/CHANGELOG.md#040-next1', ); const config = configRoot.getOptionalConfig( 'catalog.processors.microsoftGraphOrg', diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index decd84ec1f..1267648481 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -69,7 +69,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { organizationTransformer?: OrganizationTransformer; }) { options.logger.warn( - 'MicrosoftGraphOrgReaderProcessor is deprecated. Please use MicrosoftGraphOrgEntityProvider instead. More info at https://github.com/backstage/backstage/blob/master/.changeset/long-bananas-rescue.md', + 'MicrosoftGraphOrgReaderProcessor is deprecated. Please use MicrosoftGraphOrgEntityProvider instead. More info at https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/CHANGELOG.md#040-next1', ); this.providers = options.providers; this.logger = options.logger; diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index c2de74bfc4..4d3890c49a 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.0 + +### Minor Changes + +- 67503d159e: Add basic OpenAPI \$ref support. + + For more information see [here](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend-module-openapi). + +### Patch Changes + +- 4881dc4c84: Updated dependency `openapi-types` to `^12.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + ## 0.1.0-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 82fc1c03e4..f48c30710c 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.0-next.2", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,17 +34,17 @@ }, "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", "winston": "^3.2.1", "yaml": "^2.1.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "openapi-types": "^12.0.0" }, "files": [ diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index d809c40018..35e54b764c 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,72 @@ # @backstage/plugin-catalog-backend +## 1.3.0 + +### Minor Changes + +- 1dd6c22cc8: Added an option to be able to trigger refreshes on entities based on a prestored arbitrary key. + + The UrlReaderProcessor, FileReaderProcessor got updated to store the absolute URL of the catalog file as a refresh key. In the format of `:` + The PlaceholderProcessor got updated to store the resolverValues as refreshKeys for the entities. + + The custom resolvers will need to be updated to pass in a `CatalogProcessorEmit` function as parameter and they should be updated to emit their refresh processingResults. You can see the updated resolvers in the `PlaceholderProcessor.ts` + + ```ts + // yamlPlaceholderResolver + ... + const { content, url } = await readTextLocation(params); + + params.emit(processingResult.refresh(`url:${url}`)); + ... + ``` + +- 91c1d12123: Export experimental `catalogPlugin` for the new backend system. This export is not considered stable and should not be used in production. + +### Patch Changes + +- 1e02fe46d6: Fixed bug where catalog metrics weren't being tracked. +- 5f6b847c15: Fix Error Code in Register Component DryRun +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- fa0533e604: CatalogBuilder supports now subscription to processing engine errors. + + ```ts + subscribe(options: { + onProcessingError: (event: { unprocessedEntity: Entity, error: Error }) => Promise | void; + }); + ``` + + If you want to get notified on errors while processing the entities, you call CatalogBuilder.subscribe + to get notifications with the parameters defined as above. + +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- f1dcc6f3c6: Use entity type predicates from catalog-model +- 9a6aba1d85: Many symbol declarations have been moved to `@backstage/plugin-catalog-node`. This has no affect on users of this package as they are all re-exported. Modules that build on top of the catalog backend plugin should switch all of their imports to the `@backstage/plugin-catalog-node` package and remove the dependency on `@backstage/plugin-catalog-backend`. +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-catalog-node@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-scaffolder-common@1.1.2 + ## 1.3.0-next.3 ### Minor Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 92df8e87fc..7e6c5a986f 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.3.0-next.3", + "version": "1.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,19 +34,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.0-next.0", - "@backstage/plugin-catalog-node": "^1.0.0-next.0", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-plugin-api": "^0.1.0", + "@backstage/plugin-catalog-node": "^1.0.0", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-node": "^0.6.3-next.2", - "@backstage/plugin-scaffolder-common": "^1.1.2-next.0", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.3", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/plugin-search-common": "^1.0.0", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", "codeowners-utils": "^1.0.2", @@ -70,10 +70,10 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-search-backend-node": "0.6.3-next.2", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-search-backend-node": "1.0.0", "@types/core-js": "^2.5.4", "@types/git-url-parse": "^9.0.0", "@types/lodash": "^4.14.151", diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md index 7fa70e5859..05830979e5 100644 --- a/plugins/catalog-common/CHANGELOG.md +++ b/plugins/catalog-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-common +## 1.0.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-permission-common@0.6.3 + ## 1.0.4-next.0 ### Patch Changes diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 82c0d72855..e07776c7de 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-common", "description": "Common functionalities for the catalog plugin", - "version": "1.0.4-next.0", + "version": "1.0.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.3-next.0", - "@backstage/plugin-search-common": "^0.3.6-next.0" + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-search-common": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 30e2b3dacb..e467e33684 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-graph +## 0.2.19 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.2.19-next.3 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 8de941e1a0..82745f969a 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.19-next.3", + "version": "0.2.19", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,11 +45,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/test-utils": "^1.1.2", "@backstage/types": "^1.0.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md index 7285215394..950cebce5f 100644 --- a/plugins/catalog-graphql/CHANGELOG.md +++ b/plugins/catalog-graphql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-graphql +## 0.3.11 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + ## 0.3.11-next.1 ### Patch Changes diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 651d54b811..ad77bb063e 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-graphql", "description": "An experimental Backstage catalog GraphQL module", - "version": "0.3.11-next.1", + "version": "0.3.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", "@backstage/types": "^1.0.0", "apollo-server": "^3.0.0", @@ -46,8 +46,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/test-utils": "^1.1.2", "@graphql-codegen/cli": "^2.3.1", "@graphql-codegen/graphql-modules-preset": "^2.3.2", "@graphql-codegen/typescript": "^2.4.2", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index d057b5c1df..637c529d77 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-import +## 0.8.10 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 272106fdad: Support use without `integrations` or only integrations without frontend visible properties (e.g., `bitbucketCloud`) being configured by checking `integrations.github` directly without attempting to load `integrations`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/errors@1.1.0 + ## 0.8.10-next.3 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 65a3c89bd5..2e471c76a4 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.8.10-next.3", + "version": "0.8.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,15 +34,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-react": "^1.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -60,10 +60,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index a70deb4769..0e41b54a6b 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-node +## 1.0.0 + +### Major Changes + +- 9a6aba1d85: This package houses stable types from the `@backstage/plugin-catalog-backend` package and is intended for creation of catalog modules. Prefer importing from this package over the `@backstage/plugin-catalog-backend` package. + +### Minor Changes + +- 91c1d12123: Added alpha exports for the new experimental backend system. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + ## 1.0.0-next.0 ### Major Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 8671ccbc9a..27ccc30292 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.0.0-next.0", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,14 +25,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.0-next.0", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/errors": "1.1.0-next.0", + "@backstage/backend-plugin-api": "^0.1.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/errors": "1.1.0", "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/cli": "^0.18.0-next.3" + "@backstage/backend-common": "^0.14.1", + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 5acff71be3..70cb127156 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,61 @@ # @backstage/plugin-catalog-react +## 1.1.2 + +### Patch Changes + +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors. + + If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this: + + ```diff + ... + import { + CatalogFilterLayout, + EntityTypePicker, + UserListPicker, + EntityTagPicker + + EntityProcessingStatusPicker, + } from '@backstage/plugin-catalog-react'; + ... + export const CustomCatalogPage = ({ + columns, + actions, + initiallySelectedFilter = 'owned', + }: CatalogPageProps) => { + return ( + ... + + + + + + ... + }; + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-permission-react@0.4.3 + ## 1.1.2-next.3 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 8fb16bbbaa..f080dbc1f8 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.1.2-next.3", + "version": "1.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,16 +34,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", "@material-ui/core": "^4.12.2", @@ -63,11 +63,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-scaffolder-common": "^1.1.2-next.0", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 9c10c67b5f..8c95ec1590 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,93 @@ # @backstage/plugin-catalog +## 1.4.0 + +### Minor Changes + +- 97c46f2359: Add `spec.targets` (or `spec.target`) for Location entities at the `CatalogTable`. +- cf288221d1: Add `Location` target(s) to `AboutCard`. +- a274fe38b9: Add hidden title column to catalog and API table to enable filtering by title. + +### Patch Changes + +- dcaf1cb418: Previously, the color of the Entity Context Menu (in the Entity Page Header) was hardcoded as `white`. + + This was an issue for themes that use a header with a white background. By default, the color of the icon is now `theme.page.fontColor`. + + It can now also be overridden in the theme, which is only necessary if the header title, subtitle and three-dots icon need to have different colors. For example: + + ```typescript + export function createThemeOverrides(theme: BackstageTheme): Overrides { + return { + PluginCatalogEntityContextMenu: { + button: { + color: 'blue', + }, + }, + ... + }, + ... + } + ``` + +- f1dcc6f3c6: Use entity type predicates from catalog-model +- 258057a4b9: Adding ability to customize the "unregister entity" menu item in the entity context menu on the entity page with options 'visible','hidden','disabled'.With this three new options, one can hide the "unregister entity" menu item from the list, disable or keep it enabled. + + The boolean input for "unregister entity" will be deprecated later in favour of the above three options. + +- 385389d23c: Updated to remove usage of the `bursts` object in the theme palette +- be26d95141: Added new `EntityProcessingStatusPicker` that will filter for entities with orphans and/or errors. + + If you are using the default Catalog page this picker will be added automatically. For those who have customized their Catalog page you'll need to add this manually by doing something like this: + + ```diff + ... + import { + CatalogFilterLayout, + EntityTypePicker, + UserListPicker, + EntityTagPicker + + EntityProcessingStatusPicker, + } from '@backstage/plugin-catalog-react'; + ... + export const CustomCatalogPage = ({ + columns, + actions, + initiallySelectedFilter = 'owned', + }: CatalogPageProps) => { + return ( + ... + + + + + + ... + }; + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + ## 1.4.0-next.3 ### Patch Changes diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 306a01b9ad..d13f2acbc2 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -135,6 +135,7 @@ export const CatalogTable: { ): TableColumn; createSystemColumn(): TableColumn; createOwnerColumn(): TableColumn; + createSpecTargetsColumn(): TableColumn; createSpecTypeColumn(): TableColumn; createSpecLifecycleColumn(): TableColumn; createMetadataDescriptionColumn(): TableColumn; diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 66718424cd..b9e919544d 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.4.0-next.3", + "version": "1.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,17 +34,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -61,11 +61,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx index 87ee8cc6ec..f4dbb73b45 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.test.tsx @@ -411,6 +411,7 @@ describe('', () => { }, spec: { type: 'root', + target: 'https://backstage.io', }, relations: [], }; @@ -440,6 +441,10 @@ describe('', () => { expect(queryByText('Lifecycle')).not.toBeInTheDocument(); expect(getByText('Tags')).toBeInTheDocument(); expect(getByText('Tags').nextSibling).toHaveTextContent('tag-1'); + expect(getByText('Targets')).toBeInTheDocument(); + expect(getByText('Targets').nextSibling).toHaveTextContent( + 'https://backstage.io', + ); }); it('highlights missing required fields', async () => { diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx index ee1dad5d39..260a0eccbf 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx @@ -16,6 +16,7 @@ import { Entity, + getEntitySourceLocation, RELATION_OWNED_BY, RELATION_PART_OF, } from '@backstage/catalog-model'; @@ -23,9 +24,11 @@ import { EntityRefLinks, getEntityRelations, } from '@backstage/plugin-catalog-react'; +import { JsonArray } from '@backstage/types'; import { Chip, Grid, makeStyles, Typography } from '@material-ui/core'; import React from 'react'; import { AboutField } from './AboutField'; +import { LinksGridList } from '../EntityLinksCard/LinksGridList'; const useStyles = makeStyles({ description: { @@ -42,6 +45,30 @@ export interface AboutContentProps { entity: Entity; } +function getLocationTargetHref( + target: string, + type: string, + entitySourceLocation: { + type: string; + target: string; + }, +): string { + if (type === 'url' || target.includes('://')) { + return target; + } + + const srcLocationUrl = + entitySourceLocation.type === 'file' + ? `file://${entitySourceLocation.target}` + : entitySourceLocation.target; + + if (type === 'file' || entitySourceLocation.type === 'file') { + return new URL(target, srcLocationUrl).href; + } + + return srcLocationUrl; +} + /** @public */ export function AboutContent(props: AboutContentProps) { const { entity } = props; @@ -69,6 +96,18 @@ export function AboutContent(props: AboutContentProps) { }); const ownedByRelations = getEntityRelations(entity, RELATION_OWNED_BY); + let entitySourceLocation: + | { + type: string; + target: string; + } + | undefined; + try { + entitySourceLocation = getEntitySourceLocation(entity); + } catch (e) { + entitySourceLocation = undefined; + } + return ( @@ -159,6 +198,23 @@ export function AboutContent(props: AboutContentProps) { ))} + {isLocation && (entity?.spec?.targets || entity?.spec?.target) && ( + + target as string) + .map(target => ({ + text: target, + href: getLocationTargetHref( + target, + (entity?.spec?.type || 'unknown') as string, + entitySourceLocation!, + ), + }))} + /> + + )} ); } diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx index 0d2b80e3c1..c59b10281c 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx @@ -215,7 +215,14 @@ describe('CatalogTable component', () => { }, { kind: 'location', - expectedColumns: ['Name', 'Type', 'Description', 'Tags', 'Actions'], + expectedColumns: [ + 'Name', + 'Type', + 'Targets', + 'Description', + 'Tags', + 'Actions', + ], }, { kind: 'resource', diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index 96937c52c2..005a00c48e 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -83,9 +83,13 @@ export const CatalogTable = (props: CatalogTableProps) => { case 'system': return [columnFactories.createOwnerColumn()]; case 'group': - case 'location': case 'template': return [columnFactories.createSpecTypeColumn()]; + case 'location': + return [ + columnFactories.createSpecTypeColumn(), + columnFactories.createSpecTargetsColumn(), + ]; default: return [ columnFactories.createSystemColumn(), diff --git a/plugins/catalog/src/components/CatalogTable/columns.tsx b/plugins/catalog/src/components/CatalogTable/columns.tsx index d8b52e276e..19d160c0e2 100644 --- a/plugins/catalog/src/components/CatalogTable/columns.tsx +++ b/plugins/catalog/src/components/CatalogTable/columns.tsx @@ -23,6 +23,7 @@ import { Chip } from '@material-ui/core'; import { CatalogTableRow } from './types'; import { OverflowTooltip, TableColumn } from '@backstage/core-components'; import { Entity } from '@backstage/catalog-model'; +import { JsonArray } from '@backstage/types'; // The columnFactories symbol is not directly exported, but through the // CatalogTable.columns field. @@ -82,11 +83,30 @@ export const columnFactories = Object.freeze({ ), }; }, + createSpecTargetsColumn(): TableColumn { + return { + title: 'Targets', + field: 'entity.spec.targets', + render: ({ entity }) => ( + <> + {(entity?.spec?.targets || entity?.spec?.target) && ( + + )} + + ), + }; + }, createSpecTypeColumn(): TableColumn { return { title: 'Type', field: 'entity.spec.type', hidden: true, + width: 'auto', }; }, createSpecLifecycleColumn(): TableColumn { @@ -129,6 +149,7 @@ export const columnFactories = Object.freeze({ ))} ), + width: 'auto', }; }, createTitleColumn(options?: { diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 2f863ebd11..5c3631ec69 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.3 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-cicd-statistics@0.1.9 + ## 0.1.3-next.1 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 12ed1fb773..3c3e1d205b 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.3-next.1", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,16 +29,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-cicd-statistics": "^0.1.9-next.1", + "@backstage/plugin-cicd-statistics": "^0.1.9", "@gitbeaker/browser": "^35.6.0", "@gitbeaker/core": "^35.6.0", "luxon": "^3.0.0", "p-limit": "^4.0.0", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/catalog-model": "^1.1.0-next.3" + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/catalog-model": "^1.1.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index afc0811c29..e2915c32ff 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cicd-statistics +## 0.1.9 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + ## 0.1.9-next.1 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 3b90b365dc..77fe6dd6bd 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.9-next.1", + "version": "0.1.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,9 +37,9 @@ "@types/luxon": "^2.0.5" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", "@date-io/luxon": "^1.3.13", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.11.2", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index ac26a01e0d..2af583c209 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-circleci +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 2c376c26c7..96cb9888c8 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index f7a5b7b35a..61f5740624 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-cloudbuild +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index fcac623363..b71aa30e85 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index d3824d7ff5..14f4888a1f 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-code-climate +## 0.1.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.1.7-next.3 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 3fe1ff5ae1..ee064a6c12 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.7-next.3", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,11 +23,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,9 +40,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 95a7188dd4..99e96b89ca 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-code-coverage-backend +## 0.2.0 + +### Minor Changes + +- d70aaa7622: Cleaned up API exports. + + The `CodeCoverageApi` and `makeRouter` exports have been removed from the backend, since they were not meant to be exported in the first place. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + ## 0.2.0-next.3 ### Minor Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 5fe9242e54..ee86fccca2 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.0-next.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -39,7 +39,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/express-xml-bodyparser": "^0.3.2", "@types/supertest": "^2.0.8", "msw": "^0.44.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 6c7c034d39..24fba79f1a 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-code-coverage +## 0.2.0 + +### Minor Changes + +- d70aaa7622: Cleaned up API exports. + + The `Router` export has been removed; users are expected to use `EntityCodeCoverageContent` instead. + + The `isPluginApplicableToEntity` helper has been deprecated, in favor of the `isCodeCoverageAvailable` helper. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.0-next.3 ### Minor Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index bd90d2abee..b99c42c9b3 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.0-next.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index c184656efb..91ead18409 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-codescene +## 0.1.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.2-next.3 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 516280149f..cc4fa2da01 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.2-next.3", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,10 +23,10 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.10", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -38,10 +38,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 50d5d5934c..37345d36e5 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-config-schema +## 0.1.30 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.30-next.3 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 3e70dfbf63..b5e73ee700 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.30-next.3", + "version": "0.1.30", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -41,10 +41,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cost-insights-common/CHANGELOG.md b/plugins/cost-insights-common/CHANGELOG.md index 0a55b342fc..c96555d6af 100644 --- a/plugins/cost-insights-common/CHANGELOG.md +++ b/plugins/cost-insights-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-cost-insights-common +## 0.1.0 + +### Minor Changes + +- 81dd5ea989: Introduces a new isomorphic @backstage/plugin-cost-insight-common package to contain shared types across all other cost insights packages and modules. + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/cost-insights-common/package.json b/plugins/cost-insights-common/package.json index 2918462e09..66d8faf426 100644 --- a/plugins/cost-insights-common/package.json +++ b/plugins/cost-insights-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights-common", "description": "Common functionalities for the cost-insights plugin", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ }, "dependencies": {}, "devDependencies": { - "@backstage/cli": "^0.18.0-next.2" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 05d8d5d640..3211f3027d 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-cost-insights +## 0.11.29 + +### Patch Changes + +- 3e032a5de2: Move cost-insights data specific API types (non react) into an @backstage/plugin-cost-insights-common + isomorphic package. This allows these types to be shared in any backend packages or other cost-insight + modules. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-cost-insights-common@0.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.11.29-next.3 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 9dfa45e67c..405007c852 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.11.29-next.3", + "version": "0.11.29", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-cost-insights-common": "^0.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-cost-insights-common": "^0.1.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -61,10 +61,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index cfa95d5fb2..0ca278344f 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-dynatrace +## 0.1.1 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.1.1-next.3 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 8862bbf548..e3fb1a113e 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "0.1.1-next.3", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -37,10 +37,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index 4609c6c4ea..42e9c58b2a 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list-backend +## 1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + ## 1.0.3-next.1 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 5be65f78b5..87754300a7 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.3-next.1", + "version": "1.0.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.1", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", "@types/express": "^4.17.6", "cross-fetch": "^3.1.5", "express": "^4.17.1", @@ -36,7 +36,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "msw": "^0.44.0", diff --git a/plugins/example-todo-list-common/CHANGELOG.md b/plugins/example-todo-list-common/CHANGELOG.md index ba6a7bcf3d..d624c2f6a6 100644 --- a/plugins/example-todo-list-common/CHANGELOG.md +++ b/plugins/example-todo-list-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @internal/plugin-todo-list-common +## 1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 + ## 1.0.3-next.0 ### Patch Changes diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 3d4fb5659e..489365bd09 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-common", - "version": "1.0.3-next.0", + "version": "1.0.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,13 +23,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.3-next.0" + "@backstage/plugin-permission-common": "^0.6.3" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", - "@backstage/core-app-api": "^1.0.4-next.0", - "@backstage/dev-utils": "^1.0.4-next.1", - "@backstage/test-utils": "^1.1.2-next.1", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@types/node": "^16.11.26", "msw": "^0.44.0", "cross-fetch": "^3.1.5" diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 054f814ea7..711806cba3 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 1.0.3-next.3 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index d9ccb7f524..0cb97422bc 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.3-next.3", + "version": "1.0.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,9 +24,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index 2cf0fb8402..4ca34afa8e 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-explore-react +## 0.0.19 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + ## 0.0.19-next.0 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index ecd57e4cf7..e216b92558 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore-react", "description": "A frontend library for Backstage plugins that want to interact with the explore plugin", - "version": "0.0.19-next.0", + "version": "0.0.19", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-plugin-api": "^1.0.4-next.0" + "@backstage/core-plugin-api": "^1.0.4" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index e418b35069..9485fae3de 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-explore +## 0.3.38 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-explore-react@0.0.19 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.38-next.3 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 0706739a42..56ece3098b 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.3.38-next.3", + "version": "0.3.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-explore-react": "^0.0.19-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-explore-react": "^0.0.19", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index a53482fb2a..39e9092f6f 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-firehydrant +## 0.1.24 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.1.24-next.3 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 9053ed4ed2..676f9dc6df 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.1.24-next.3", + "version": "0.1.24", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,10 +25,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index 754f459449..81df695de8 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-fossa +## 0.2.39 + +### Patch Changes + +- 322d1ceeba: Allow configuration of base URL for Fossa links +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.39-next.3 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index e22228061b..ce4f621699 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.39-next.3", + "version": "0.2.39", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index 93e4b1117b..8125bf4317 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-gcalendar +## 0.3.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.3.3-next.3 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index ad111311c2..57a7e4c5b2 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.3-next.3", + "version": "0.3.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,10 +22,10 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index cd2be7a5f8..648db64e00 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-gcp-projects +## 0.3.26 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.3.26-next.3 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 19c881a7fb..37a361d5ac 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.26-next.3", + "version": "0.3.26", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index be7c04d048..7d9b814fca 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-git-release-manager +## 0.3.20 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/theme@0.2.16 + ## 0.3.20-next.3 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 27bf139560..349e323566 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.20-next.3", + "version": "0.3.20", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration": "^1.2.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 7503f441d6..f0a4cadc57 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-github-actions +## 0.5.7 + +### Patch Changes + +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 217f919f0a: Minor cleanup of the API surface. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.5.7-next.3 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 3e0b6f5055..e60a160206 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.5.7-next.3", + "version": "0.5.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,12 +36,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -55,10 +55,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 35503a6a64..c979e2f7eb 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-github-deployments +## 0.1.38 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 0f25116d28: Updated dependency `@octokit/graphql` to `^5.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.38-next.3 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 1829974873..8a7c37999a 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.38-next.3", + "version": "0.1.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,14 +24,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 7d75c21da3..cf073ff873 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.1 + +### Patch Changes + +- c6690d9d24: Fix bug on fetching teams repositories where were being filtered by type service unnecessarily +- 04e1504e85: Support namespaced teams and fetch all kinds +- 9de15a41d7: Upgrade @octokit/rest to 19.0.3 +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.1.1-next.3 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index ea61b6bbd1..7e0f27bdd8 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.1-next.3", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,9 +49,9 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 71c5bb74ce..32b3a42abc 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-gitops-profiles +## 0.3.25 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.3.25-next.3 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index dcd243a244..950a8c3129 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.25-next.3", + "version": "0.3.25", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index 3ee0c2875c..838971fa6b 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-gocd +## 0.1.13 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.13-next.3 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 187a8d0d79..5ecc556f32 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.13-next.3", + "version": "0.1.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,12 +31,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index 6d71375b40..2e278d8496 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-graphiql +## 0.2.39 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.2.39-next.3 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index e260be0852..d9c9dd823f 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.39-next.3", + "version": "0.2.39", "private": false, "publishConfig": { "access": "public", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 1bbc198d63..adebbee6d9 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-graphql-backend +## 0.1.24 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-catalog-graphql@0.3.11 + ## 0.1.24-next.1 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 45f9007e90..333f7453fb 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.24-next.1", + "version": "0.1.24", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/plugin-catalog-graphql": "^0.3.11-next.1", + "@backstage/plugin-catalog-graphql": "^0.3.11", "@graphql-tools/schema": "^8.3.1", "@types/express": "^4.17.6", "apollo-server": "^3.0.0", @@ -51,7 +51,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "msw": "^0.44.0", "supertest": "^6.1.3" diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 58d476e7e5..fa0de00a6b 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,42 @@ # @backstage/plugin-home +## 0.4.23 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- a46e317a75: Added support for customizing the time format used in the `HeaderWorldClock` component + + Here's an example of how this can be used in the `HomePage.tsx` found in `\packages\app\src\components\home` to change the clock to be in the 24hr time format: + + ```diff + +const timeFormat: Intl.DateTimeFormatOptions = { + + hour: '2-digit', + + minute: '2-digit', + + hour12: false, + +}; + + export const homePage = ( + +
} pageTitleOverride="Home"> + + +
+ + + + + + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-stack-overflow@0.1.3 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.4.23-next.3 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index be39d23679..066aab4397 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.4.23-next.3", + "version": "0.4.23", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,13 +34,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-stack-overflow": "^0.1.3-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-stack-overflow": "^0.1.3", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index 67cd7b9d9c..6066c4cab6 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-ilert +## 0.1.33 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.33-next.3 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 81e22a3676..c29125bd30 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.1.33-next.3", + "version": "0.1.33", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index fa607ea711..3d6ee2de5b 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-jenkins-backend +## 0.1.24 + +### Patch Changes + +- 8747824221: feature: added support for multiple branches to the `JenkinsApi` +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-jenkins-common@0.1.6 + ## 0.1.24-next.3 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 5687fdf6b4..3dee73ba22 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.1.24-next.3", + "version": "0.1.24", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,14 +25,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-jenkins-common": "^0.1.6-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-jenkins-common": "^0.1.6", + "@backstage/plugin-permission-common": "^0.6.3", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -42,7 +42,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jenkins": "^0.23.1", "@types/supertest": "^2.0.8", "msw": "^0.44.0", diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md index ea0afcde79..0ccf0659bf 100644 --- a/plugins/jenkins-common/CHANGELOG.md +++ b/plugins/jenkins-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-jenkins-common +## 0.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-catalog-common@1.0.4 + ## 0.1.6-next.0 ### Patch Changes diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index d6520cd085..d28186abde 100644 --- a/plugins/jenkins-common/package.json +++ b/plugins/jenkins-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-jenkins-common", - "version": "0.1.6-next.0", + "version": "0.1.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,11 +22,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.0" + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index d7f9e2f18e..f9496f44b6 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-jenkins +## 0.7.6 + +### Patch Changes + +- 8747824221: feature: added support for multiple branches to the `JenkinsApi` +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-jenkins-common@0.1.6 + ## 0.7.6-next.3 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 5c803382ab..0687857110 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.7.6-next.3", + "version": "0.7.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,13 +35,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-jenkins-common": "^0.1.6-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-jenkins-common": "^0.1.6", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -54,10 +54,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 5a35d5a504..b3d641823e 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-kafka-backend +## 0.2.27 + +### Patch Changes + +- 8751667541: Updated dependency `kafkajs` to `^2.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/errors@1.1.0 + ## 0.2.27-next.2 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 5a666ee6df..b2ca7a5725 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.27-next.2", + "version": "0.2.27", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,10 +35,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.2", - "@backstage/catalog-model": "^1.1.0-next.2", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -47,7 +47,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.2", + "@backstage/cli": "^0.18.0", "@types/jest-when": "^3.5.0", "@types/lodash": "^4.14.151", "jest-when": "^3.1.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index 64a41ea742..62d83ed577 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-kafka +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 9cd7e169ad..35f678c98b 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index c534efba45..ff74fbae53 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/plugin-kubernetes-backend +## 0.7.0 + +### Minor Changes + +- f5c9730639: Add `localKubectlProxy` cluster locator method to make local development simpler to setup. + + Consolidated no-op server side auth decorators. + The following Kubernetes auth decorators are now one class (`ServerSideKubernetesAuthProvider`): + + - `AwsKubernetesAuthProvider` + - `AzureKubernetesAuthProvider` + - `ServiceAccountKubernetesAuthProvider` + +- 1454bf98e7: Add new endpoints to Kubernetes backend plugin + + BREAKING: Kubernetes backend plugin now depends on CatalogApi + + ```typescript + // Create new CatalogClient + const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); + const { router } = await KubernetesBuilder.createBuilder({ + logger: env.logger, + config: env.config, + // Inject it into createBuilder params + catalogApi, + }).build(); + ``` + +- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId` + +### Patch Changes + +- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api +- 746ec700ea: Add support for Kubernetes clusters in the catalog. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-common@0.4.0 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/errors@1.1.0 + ## 0.7.0-next.3 ### Minor Changes diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index 363af1b02f..15b1cef853 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -15,6 +15,7 @@ import type { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common' import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common'; import { Logger } from 'winston'; import type { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PodStatus } from '@kubernetes/client-node/dist/top'; // @alpha (undocumented) @@ -279,6 +280,8 @@ export interface RouterOptions { // (undocumented) config: Config; // (undocumented) + discovery: PluginEndpointDiscovery; + // (undocumented) logger: Logger; } diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 9957ce60f4..721c162bce 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.7.0-next.3", + "version": "0.7.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,13 +36,13 @@ }, "dependencies": { "@azure/identity": "^2.0.4", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-kubernetes-common": "^0.4.0-next.2", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-kubernetes-common": "^0.4.0", "@google-cloud/container": "^4.0.0", "@kubernetes/client-node": "^0.17.0", "@types/express": "^4.17.6", @@ -63,7 +63,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/aws4": "^1.5.1", "aws-sdk-mock": "^5.2.1", "supertest": "^6.1.3" diff --git a/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.test.ts new file mode 100644 index 0000000000..2a2432f858 --- /dev/null +++ b/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.test.ts @@ -0,0 +1,56 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import '@backstage/backend-common'; +import { CatalogClusterLocator } from './CatalogClusterLocator'; +import { CatalogApi } from '@backstage/catalog-client'; + +describe('CatalogClusterLocator', () => { + it('empty clusters returns empty cluster details', async () => { + const mockCatalogApi = { + getEntityByRef: jest.fn(), + getEntities: async () => ({ + items: [ + { + apiVersion: 'version', + kind: 'User', + metadata: { + annotations: { + 'kubernetes.io/api-server': 'https://apiserver.com', + 'kubernetes.io/api-server-certificate-authority': 'caData', + 'kubernetes.io/auth-provider': 'aws', + }, + name: 'owned', + namespace: 'default', + }, + }, + ], + }), + } as Partial as CatalogApi; + + const sut = CatalogClusterLocator.fromConfig(mockCatalogApi); + + const result = await sut.getClusters(); + + expect(result).toHaveLength(1); + expect(result[0]).toMatchObject({ + name: 'owned', + url: 'https://apiserver.com', + caData: 'caData', + authProvider: 'aws', + }); + }); +}); diff --git a/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.ts new file mode 100644 index 0000000000..7183b71831 --- /dev/null +++ b/plugins/kubernetes-backend/src/cluster-locator/CatalogClusterLocator.ts @@ -0,0 +1,65 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; +import { CATALOG_FILTER_EXISTS, CatalogApi } from '@backstage/catalog-client'; +import { + ANNOTATION_KUBERNETES_API_SERVER, + ANNOTATION_KUBERNETES_API_SERVER_CA, + ANNOTATION_KUBERNETES_AUTH_PROVIDER, +} from '@backstage/catalog-model'; + +export class CatalogClusterLocator implements KubernetesClustersSupplier { + private catalogClient: CatalogApi; + + constructor(catalogClient: CatalogApi) { + this.catalogClient = catalogClient; + } + + static fromConfig(catalogApi: CatalogApi): CatalogClusterLocator { + return new CatalogClusterLocator(catalogApi); + } + + async getClusters(): Promise { + const apiServerKey = `metadata.annotations.${ANNOTATION_KUBERNETES_API_SERVER}`; + const apiServerCaKey = `metadata.annotations.${ANNOTATION_KUBERNETES_API_SERVER_CA}`; + const authProviderKey = `metadata.annotations.${ANNOTATION_KUBERNETES_AUTH_PROVIDER}`; + + const filter: Record = { + kind: 'Resource', + 'spec.type': 'kubernetes-cluster', + [apiServerKey]: CATALOG_FILTER_EXISTS, + [apiServerCaKey]: CATALOG_FILTER_EXISTS, + [authProviderKey]: CATALOG_FILTER_EXISTS, + }; + + const clusters = await this.catalogClient.getEntities({ + filter: [filter], + }); + return clusters.items.map(entity => { + const clusterDetails: ClusterDetails = { + name: entity.metadata.name, + url: entity.metadata.annotations![ANNOTATION_KUBERNETES_API_SERVER]!, + caData: + entity.metadata.annotations![ANNOTATION_KUBERNETES_API_SERVER_CA]!, + authProvider: + entity.metadata.annotations![ANNOTATION_KUBERNETES_AUTH_PROVIDER]!, + }; + + return clusterDetails; + }); + } +} diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts index cc7e7d07d6..f494fbbf2b 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts @@ -16,8 +16,11 @@ import { Config, ConfigReader } from '@backstage/config'; import { getCombinedClusterSupplier } from './index'; +import { CatalogApi } from '@backstage/catalog-client'; describe('getCombinedClusterSupplier', () => { + let catalogApi: CatalogApi; + it('should retrieve cluster details from config', async () => { const config: Config = new ConfigReader( { @@ -45,7 +48,7 @@ describe('getCombinedClusterSupplier', () => { 'ctx', ); - const clusterSupplier = getCombinedClusterSupplier(config); + const clusterSupplier = getCombinedClusterSupplier(config, catalogApi); const result = await clusterSupplier.getClusters(); expect(result).toStrictEqual([ @@ -100,7 +103,7 @@ describe('getCombinedClusterSupplier', () => { 'ctx', ); - expect(() => getCombinedClusterSupplier(config)).toThrowError( + expect(() => getCombinedClusterSupplier(config, catalogApi)).toThrowError( new Error('Unsupported kubernetes.clusterLocatorMethods: "magic"'), ); }); diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.ts b/plugins/kubernetes-backend/src/cluster-locator/index.ts index d32f7ffee8..62dfe15720 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.ts @@ -19,6 +19,8 @@ import { Duration } from 'luxon'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; import { ConfigClusterLocator } from './ConfigClusterLocator'; import { GkeClusterLocator } from './GkeClusterLocator'; +import { CatalogClusterLocator } from './CatalogClusterLocator'; +import { CatalogApi } from '@backstage/catalog-client'; import { LocalKubectlProxyClusterLocator } from './LocalKubectlProxyLocator'; class CombinedClustersSupplier implements KubernetesClustersSupplier { @@ -39,6 +41,7 @@ class CombinedClustersSupplier implements KubernetesClustersSupplier { export const getCombinedClusterSupplier = ( rootConfig: Config, + catalogClient: CatalogApi, refreshInterval: Duration | undefined = undefined, ): KubernetesClustersSupplier => { const clusterSuppliers = rootConfig @@ -46,6 +49,8 @@ export const getCombinedClusterSupplier = ( .map(clusterLocatorMethod => { const type = clusterLocatorMethod.getString('type'); switch (type) { + case 'catalog': + return CatalogClusterLocator.fromConfig(catalogClient); case 'localKubectlProxy': return new LocalKubectlProxyClusterLocator(); case 'config': diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts index 309141ec0e..ed56c2da8a 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.test.ts @@ -71,8 +71,6 @@ describe('KubernetesBuilder', () => { getKubernetesObjectsByEntity: jest.fn(), } as any; - catalogApi = {} as CatalogApi; - const { router } = await KubernetesBuilder.createBuilder({ config, logger, diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 59bac4f30a..304885f3e2 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -186,7 +186,11 @@ export class KubernetesBuilder { refreshInterval: Duration, ): KubernetesClustersSupplier { const config = this.env.config; - return getCombinedClusterSupplier(config, refreshInterval); + return getCombinedClusterSupplier( + config, + this.env.catalogApi, + refreshInterval, + ); } protected buildObjectsProvider( diff --git a/plugins/kubernetes-backend/src/service/router.ts b/plugins/kubernetes-backend/src/service/router.ts index 6c26175058..ab27a75a18 100644 --- a/plugins/kubernetes-backend/src/service/router.ts +++ b/plugins/kubernetes-backend/src/service/router.ts @@ -19,6 +19,7 @@ import { Logger } from 'winston'; import { KubernetesClustersSupplier } from '../types/types'; import express from 'express'; import { KubernetesBuilder } from './KubernetesBuilder'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; /** @@ -30,6 +31,7 @@ export interface RouterOptions { config: Config; catalogApi: CatalogApi; clusterSupplier?: KubernetesClustersSupplier; + discovery: PluginEndpointDiscovery; } /** diff --git a/plugins/kubernetes-backend/src/service/standaloneApplication.ts b/plugins/kubernetes-backend/src/service/standaloneApplication.ts index c12d7be2bb..8234f89d48 100644 --- a/plugins/kubernetes-backend/src/service/standaloneApplication.ts +++ b/plugins/kubernetes-backend/src/service/standaloneApplication.ts @@ -39,6 +39,8 @@ export async function createStandaloneApplication( ): Promise { const { enableCors, logger } = options; const config = new ConfigReader({}); + const discovery = SingleHostDiscovery.fromConfig(config); + const app = express(); const catalogApi = new CatalogClient({ @@ -52,7 +54,7 @@ export async function createStandaloneApplication( app.use(compression()); app.use(express.json()); app.use(requestLoggingHandler()); - app.use('/', await createRouter({ logger, config, catalogApi })); + app.use('/', await createRouter({ logger, config, discovery, catalogApi })); app.use(notFoundHandler()); app.use(errorHandler()); diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index a27f4483f6..9b90db4da6 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-kubernetes-common +## 0.4.0 + +### Minor Changes + +- 0791af993f: Refactor `KubernetesObjectsProvider` with new methods, `KubernetesServiceLocator` now takes an `Entity` instead of `serviceId` + +### Patch Changes + +- 60e5f9fe68: Fixed the lack of `limitranges` as part of the Default Objects to fetch from the kubernetes api +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/catalog-model@1.1.0 + ## 0.4.0-next.2 ### Patch Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 323f44b4d2..eb87e12a9b 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.4.0-next.2", + "version": "0.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,11 +38,11 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@kubernetes/client-node": "^0.17.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "jest": { "roots": [ diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index ffcf3edb7b..601eebd99a 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-kubernetes +## 0.7.0 + +### Minor Changes + +- f5c9730639: Add `localKubectlProxy` cluster locator method to make local development simpler to setup. + + Consolidated no-op server side auth decorators. + The following Kubernetes auth decorators are now one class (`ServerSideKubernetesAuthProvider`): + + - `AwsKubernetesAuthProvider` + - `AzureKubernetesAuthProvider` + - `ServiceAccountKubernetesAuthProvider` + +### Patch Changes + +- 3ec294a186: expose detectErrors function publicly +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- eadb3a8d2e: Updated dependency `@kubernetes/client-node` to `^0.17.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-kubernetes-common@0.4.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.7.0-next.3 ### Minor Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 3633942c15..981c6139d0 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.7.0-next.3", + "version": "0.7.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,13 +34,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-kubernetes-common": "^0.4.0-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-kubernetes-common": "^0.4.0", + "@backstage/theme": "^0.2.16", "@kubernetes/client-node": "^0.17.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 6cb5a52d78..c2a366f04b 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-lighthouse +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index cdf5089350..6b9ccef130 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,12 +35,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 5b27651f13..3c811d28ef 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.0 + +### Minor Changes + +- 79ecedded9: Fix bug where the default time window/snapshot duration was supposed to be 30 days, but ended up being 43 weeks + + **BREAKING**: Add a select input to change the time window of the snapshot displayed. This removes the duration prop from the `DashboardSnapshot` component. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/errors@1.1.0 + ## 0.2.0-next.3 ### Minor Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index f90676e994..6e0d56c342 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.0-next.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,19 +23,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", "@testing-library/jest-dom": "^5.10.1", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5" diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index b93e4d99c1..7b5b4e08ec 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-newrelic +## 0.3.25 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.3.25-next.3 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index d5c40c44cd..a4c04088c3 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.25-next.3", + "version": "0.3.25", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,9 +35,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 7ed32465b4..ec6073f29d 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-org +## 0.5.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 1e984b11fc: Render namespaces for teams with subtitles in `MyGroupsSidebarItem` +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.5.7-next.3 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 4c2546d1b9..cd68842f68 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.5.7-next.3", + "version": "0.5.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,11 +29,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,11 +48,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/catalog-client": "^1.0.4", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index c3ad53d2c9..682ae0f43a 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,47 @@ # @backstage/plugin-pagerduty +## 0.5.0 + +### Minor Changes + +- 8798f8d93f: Introduces a new annotation `pagerduty.com/service-id` that can be used instead of the `pagerduty.com/integration-key` annotation. + _Note: If both annotations are specified on a given Entity, then the `pagerduty.com/integration-key` annotation will be prefered_ + + **BREAKING** The `PagerDutyClient.fromConfig` static method now expects a `FetchApi` compatible object and has been refactored to + accept 2 arguments: config and ClientApiDependencies + The `PagerDutyClient` now relies on a `fetchApi` being available to execute `fetch` requests. + + **BREAKING** A new query method `getServiceByEntity` that is used to query for Services by either the `integrationKey` or `serviceId` + annotation values if they are defined. The `integrationKey` value is preferred currently over `serviceId`. As such, the previous + `getServiceByIntegrationKey` method has been removed. + + **BREAKING** The return values for each Client query method has been changed to return an object instead of raw values. + For example, the `getIncidentsByServiceId` query method now returns an object in the shape of `{ incidents: Incident[] }` + instead of just `Incident[]`. + This same pattern goes for `getChangeEventsByServiceId` and `getOnCallByPolicyId` functions. + + **BREAKING** All public exported types that relate to entities within PagerDuty have been prefixed with `PagerDuty` (e.g. `ServicesResponse` is now `PagerDutyServicesResponse` and `User` is now `PagerDutyUser`) + + In addition, various enhancements/bug fixes were introduced: + + - The `PagerDutyCard` component now wraps error and loading messages with an `InfoCard` to contain errors/messages. This enforces a consistent experience on the EntityPage + - If no service can be found for the provided integration key, a new Error Message Empty State component will be shown instead of an error alert + - Introduces the `fetchApi` to replace standard `window.fetch` + - ensures that Identity Authorization is respected and provided in API requests + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.5.0-next.3 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 9affc33584..d35c2866e2 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.5.0-next.3", + "version": "0.5.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index ffbc388107..eabafce57d 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-periskop-backend +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index f9e4ca56b2..a7abecc7e4 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.5-next.1", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,7 +24,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", "@types/express": "*", "cross-fetch": "^3.0.6", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "msw": "^0.44.0", "supertest": "^6.1.6" diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index ce9b9cafd7..0c3c080b20 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-periskop +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.5-next.3 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 20991bc9fe..66c80e0784 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.5-next.3", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -25,12 +25,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 717f36b4f2..76046634f8 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-permission-backend +## 0.5.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + ## 0.5.9-next.2 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 70e895801b..acf63202f4 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.9-next.2", + "version": "0.5.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -22,12 +22,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-node": "^0.6.3-next.2", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.3", "@types/express": "*", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -39,7 +39,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "supertest": "^6.1.6", diff --git a/plugins/permission-common/CHANGELOG.md b/plugins/permission-common/CHANGELOG.md index 23eb398564..0adc62a332 100644 --- a/plugins/permission-common/CHANGELOG.md +++ b/plugins/permission-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-permission-common +## 0.6.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/errors@1.1.0 + ## 0.6.3-next.1 ### Patch Changes diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index abaeb918ff..8211b4e940 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-common", "description": "Isomorphic types and client for Backstage permissions and authorization", - "version": "0.6.3-next.1", + "version": "0.6.3", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -42,13 +42,13 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "cross-fetch": "^3.1.5", "uuid": "^8.0.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "msw": "^0.44.0" } diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index baf970c252..1d5ce268b9 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-permission-node +## 0.6.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + ## 0.6.3-next.2 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 475a95e708..482aa7437e 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.6.3-next.2", + "version": "0.6.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-permission-common": "^0.6.3-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-permission-common": "^0.6.3", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "msw": "^0.44.0", "supertest": "^6.1.3" diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index 4a90e1fbd3..df696be7fb 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-permission-react +## 0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + ## 0.4.3-next.1 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 2356c9a344..ab04b87a4a 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.4.3-next.1", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,8 +32,8 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", "cross-fetch": "^3.1.5", "react-router": "6.0.0-beta.0", "react-use": "^17.2.4", @@ -44,8 +44,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@types/jest": "^26.0.7" diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index 56d4f1927d..e80c07c0de 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-proxy-backend +## 0.2.28 + +### Patch Changes + +- a4fa1ce090: The proxy-backend now automatically reloads configuration when app-config.yaml is updated. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + ## 0.2.28-next.1 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index f38fa427da..7e308744ad 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.28-next.1", + "version": "0.2.28", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "express": "^4.17.1", @@ -46,7 +46,7 @@ "yup": "^0.32.9" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index 5ae61f973c..47b8d21c3e 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-rollbar-backend +## 0.1.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + ## 0.1.31-next.1 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index ef501aaac7..7c8643b0e1 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.31-next.1", + "version": "0.1.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", "@types/express": "^4.17.6", "camelcase-keys": "^7.0.1", @@ -50,8 +50,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "msw": "^0.44.0", "supertest": "^6.1.3" diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index 1673b49c64..d1d6c9c3fa 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-rollbar +## 0.4.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.4.7-next.3 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 2b98731096..49afe3928d 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.7-next.3", + "version": "0.4.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 4798f4e4a6..349c06c267 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + ## 0.2.9-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 8599d80719..dc16ecf560 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.9-next.2", + "version": "0.2.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-scaffolder-backend": "^1.4.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-scaffolder-backend": "^1.4.0", "@backstage/config": "^1.0.1", "@backstage/types": "^1.0.0", "command-exists": "^1.2.9", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/fs-extra": "^9.0.1", "@types/mock-fs": "^4.13.0", "@types/jest": "^26.0.7", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index 1a1d249fd3..ef5c7e7bce 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-scaffolder-backend@1.4.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + ## 0.4.2-next.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index e42f34b762..c693b8c9bc 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.2-next.1", + "version": "0.4.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,17 +24,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.1", - "@backstage/plugin-scaffolder-backend": "^1.4.0-next.1", + "@backstage/backend-common": "^0.14.1", + "@backstage/plugin-scaffolder-backend": "^1.4.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", "@backstage/types": "^1.0.0", "command-exists": "^1.2.9", "fs-extra": "^10.0.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.0", "@types/jest": "^26.0.7", "@types/node": "^16.11.26", "@types/command-exists": "^1.2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index 367adc7034..b256d8493a 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.4.0 + ## 0.2.7-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 123d563fad..e99005895a 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.7-next.0", + "version": "0.2.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,13 +24,13 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/plugin-scaffolder-backend": "^1.4.0-next.0", + "@backstage/plugin-scaffolder-backend": "^1.4.0", "@backstage/types": "^1.0.0", "winston": "^3.2.1", "yeoman-environment": "^3.9.1" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.0", + "@backstage/backend-common": "^0.14.1", "@types/jest": "^26.0.7" }, "files": [ diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index e3f67eb447..ef099473a4 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,58 @@ # @backstage/plugin-scaffolder-backend +## 1.4.0 + +### Minor Changes + +- e1a08d872c: Added optional assignee parameter for Gitlab Merge Request action +- dab9bcf2e7: Add `protectEnforceAdmins` as an option to GitHub publish actions +- 4baf8a4ece: Update GitLab Merge Request Action to allow source branch to be deleted +- 91c1d12123: Export experimental `scaffolderCatalogExtension` for the new backend system. This export is not considered stable and should not be used in production. +- d10ccc2ed1: Introduced audit log message when a new scaffolder task is created +- 2db07887cb: Added two new scaffolder actions: `github:repo:create` and `github:repo:push` + +### Patch Changes + +- ff316b86d8: Add `copyWithoutTemplating` to the fetch template action input. `copyWithoutTemplating` also accepts an array of glob patterns. Contents of matched files or directories are copied without being processed, but paths are subject to rendering. + + Deprecate `copyWithoutRender` in favor of `copyWithoutTemplating`. + +- 801d606909: Improve error messaging when passing in malformed auth +- 089d846962: Fix issues with optional directories and files +- ea6dcb84a4: Don't resolve symlinks, treat them as binary files and copy them as-is +- af02f54483: new setUserAsOwner flag for publish:gitlab action + + The field default is `false`. When true it will use the token configured in the gitlab integration for the matching host, to try and set the user logged in via `repoUrlPicker` `requestUserCredentials` OAuth flow as owner of the repository created in GitLab. + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 511f49ee43: Updated dependency `octokit` to `^2.0.0`. +- 735853353b: Updated dependency `@octokit/webhooks` to `^10.0.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 945a27fa6a: Add sourcePath option to publish:gerrit action +- 1764296a68: Allow to create Gerrit project using default owner +- Updated dependencies + - @backstage/backend-plugin-api@0.1.0 + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-catalog-node@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + - @backstage/plugin-scaffolder-common@1.1.2 + ## 1.4.0-next.3 ### Minor Changes diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 4e09c66755..1b525cd2c6 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -106,6 +106,7 @@ export function createFetchTemplateAction(options: { values: any; templateFileExtension?: string | boolean | undefined; copyWithoutRender?: string[] | undefined; + copyWithoutTemplating?: string[] | undefined; cookiecutterCompat?: boolean | undefined; }>; @@ -216,6 +217,7 @@ export function createGithubRepoPushAction(options: { description?: string | undefined; defaultBranch?: string | undefined; protectDefaultBranch?: boolean | undefined; + protectEnforceAdmins?: boolean | undefined; gitCommitMessage?: string | undefined; gitAuthorName?: string | undefined; gitAuthorEmail?: string | undefined; @@ -330,6 +332,7 @@ export function createPublishGithubAction(options: { access?: string | undefined; defaultBranch?: string | undefined; protectDefaultBranch?: boolean | undefined; + protectEnforceAdmins?: boolean | undefined; deleteBranchOnMerge?: boolean | undefined; gitCommitMessage?: string | undefined; gitAuthorName?: string | undefined; @@ -405,6 +408,7 @@ export const createPublishGitlabMergeRequestAction: (options: { token?: string | undefined; projectid?: string | undefined; removeSourceBranch?: boolean | undefined; + assignee?: string | undefined; }>; // @public diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index b74eafe151..54e1fb4b68 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.4.0-next.3", + "version": "1.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,16 +35,16 @@ "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-backend": "^1.3.0-next.3", - "@backstage/plugin-scaffolder-common": "^1.1.2-next.0", - "@backstage/backend-plugin-api": "^0.1.0-next.0", - "@backstage/plugin-catalog-node": "^1.0.0-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-backend": "^1.3.0", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/backend-plugin-api": "^0.1.0", + "@backstage/plugin-catalog-node": "^1.0.0", "@backstage/types": "^1.0.0", "@gitbeaker/core": "^35.6.0", "@gitbeaker/node": "^35.1.0", @@ -79,8 +79,8 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^9.0.1", "@types/git-url-parse": "^9.0.0", diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index 2557f365f3..af353bef70 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -127,7 +127,22 @@ describe('fetch:template', () => { action.handler( mockContext({ copyWithoutRender: 'abc' as unknown as string[] }), ), - ).rejects.toThrowError(/copyWithoutRender must be an array/i); + ).rejects.toThrowError( + /copyWithoutRender\/copyWithoutTemplating must be an array/i, + ); + }); + + it('throws if both copyWithoutRender and copyWithoutTemplating are used', async () => { + await expect(() => + action.handler( + mockContext({ + copyWithoutRender: 'abc' as unknown as string[], + copyWithoutTemplating: 'def' as unknown as string[], + }), + ), + ).rejects.toThrowError( + /copyWithoutRender and copyWithoutTemplating can not be used at the same time/i, + ); }); it('throws if copyWithoutRender is used with extension', async () => { @@ -139,7 +154,7 @@ describe('fetch:template', () => { }), ), ).rejects.toThrowError( - /input extension incompatible with copyWithoutRender and cookiecutterCompat/, + /input extension incompatible with copyWithoutRender\/copyWithoutTemplating and cookiecutterCompat/, ); }); @@ -152,7 +167,7 @@ describe('fetch:template', () => { }), ), ).rejects.toThrowError( - /input extension incompatible with copyWithoutRender and cookiecutterCompat/, + /input extension incompatible with copyWithoutRender\/copyWithoutTemplating and cookiecutterCompat/, ); }); @@ -354,60 +369,108 @@ describe('fetch:template', () => { await expect( fs.realpath(`${workspacePath}/target/symlink`), - ).resolves.toBe(`${workspacePath}/target/a-binary-file.png`); + ).resolves.toBe(joinPath(workspacePath, 'target', 'a-binary-file.png')); }); }); + }); - describe('copyWithoutRender', () => { - let context: ActionContext; + describe('copyWithoutRender', () => { + let context: ActionContext; - beforeEach(async () => { - context = mockContext({ - values: { - name: 'test-project', - count: 1234, - }, - copyWithoutRender: ['.unprocessed'], - }); + beforeEach(async () => { + context = mockContext({ + values: { + name: 'test-project', + count: 1234, + }, + copyWithoutRender: ['.unprocessed'], + }); - mockFetchContents.mockImplementation(({ outputPath }) => { - mockFs({ - ...realFiles, - [outputPath]: { - processed: { - 'templated-content-${{ values.name }}.txt': - '${{ values.count }}', - }, - '.unprocessed': { - 'templated-content-${{ values.name }}.txt': - '${{ values.count }}', - }, + mockFetchContents.mockImplementation(({ outputPath }) => { + mockFs({ + ...realFiles, + [outputPath]: { + processed: { + 'templated-content-${{ values.name }}.txt': '${{ values.count }}', }, - }); - - return Promise.resolve(); + '.unprocessed': { + 'templated-content-${{ values.name }}.txt': '${{ values.count }}', + }, + }, }); - await action.handler(context); + return Promise.resolve(); }); - it('ignores template syntax in files matched in copyWithoutRender', async () => { - await expect( - fs.readFile( - `${workspacePath}/target/.unprocessed/templated-content-\${{ values.name }}.txt`, - 'utf-8', - ), - ).resolves.toEqual('${{ values.count }}'); + await action.handler(context); + }); + + it('ignores template syntax in files matched in copyWithoutRender', async () => { + await expect( + fs.readFile( + `${workspacePath}/target/.unprocessed/templated-content-\${{ values.name }}.txt`, + 'utf-8', + ), + ).resolves.toEqual('${{ values.count }}'); + }); + + it('processes files not matched in copyWithoutRender', async () => { + await expect( + fs.readFile( + `${workspacePath}/target/processed/templated-content-test-project.txt`, + 'utf-8', + ), + ).resolves.toEqual('1234'); + }); + }); + + describe('copyWithoutTemplating', () => { + let context: ActionContext; + + beforeEach(async () => { + context = mockContext({ + values: { + name: 'test-project', + count: 1234, + }, + copyWithoutTemplating: ['.unprocessed'], }); - it('processes files not matched in copyWithoutRender', async () => { - await expect( - fs.readFile( - `${workspacePath}/target/processed/templated-content-test-project.txt`, - 'utf-8', - ), - ).resolves.toEqual('1234'); + mockFetchContents.mockImplementation(({ outputPath }) => { + mockFs({ + ...realFiles, + [outputPath]: { + processed: { + 'templated-content-${{ values.name }}.txt': '${{ values.count }}', + }, + '.unprocessed': { + 'templated-content-${{ values.name }}.txt': '${{ values.count }}', + }, + }, + }); + + return Promise.resolve(); }); + + await action.handler(context); + }); + + it('renders path template and ignores content template in files matched in copyWithoutTemplating', async () => { + await expect( + fs.readFile( + `${workspacePath}/target/.unprocessed/templated-content-test-project.txt`, + 'utf-8', + ), + ).resolves.toEqual('${{ values.count }}'); + }); + + it('processes files not matched in copyWithoutTemplating', async () => { + await expect( + fs.readFile( + `${workspacePath}/target/processed/templated-content-test-project.txt`, + 'utf-8', + ), + ).resolves.toEqual('1234'); }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts index 25457f4775..5e5b7052ed 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts @@ -50,7 +50,11 @@ export function createFetchTemplateAction(options: { templateFileExtension?: string | boolean; // Cookiecutter compat options + /** + * @deprecated This field is deprecated in favor of copyWithoutTemplating. + */ copyWithoutRender?: string[]; + copyWithoutTemplating?: string[]; cookiecutterCompat?: boolean; }>({ id: 'fetch:template', @@ -79,7 +83,7 @@ export function createFetchTemplateAction(options: { type: 'object', }, copyWithoutRender: { - title: 'Copy Without Render', + title: '[Deprecated] Copy Without Render', description: 'An array of glob patterns. Any files or directories which match are copied without being processed as templates.', type: 'array', @@ -87,6 +91,15 @@ export function createFetchTemplateAction(options: { type: 'string', }, }, + copyWithoutTemplating: { + title: 'Copy Without Templating', + description: + 'An array of glob patterns. Contents of matched files or directories are copied without being processed, but paths are subject to rendering.', + type: 'array', + items: { + type: 'string', + }, + }, cookiecutterCompat: { title: 'Cookiecutter compatibility mode', description: @@ -111,22 +124,37 @@ export function createFetchTemplateAction(options: { const targetPath = ctx.input.targetPath ?? './'; const outputDir = resolveSafeChildPath(ctx.workspacePath, targetPath); - - if ( - ctx.input.copyWithoutRender && - !Array.isArray(ctx.input.copyWithoutRender) - ) { + if (ctx.input.copyWithoutRender && ctx.input.copyWithoutTemplating) { throw new InputError( - 'Fetch action input copyWithoutRender must be an Array', + 'Fetch action input copyWithoutRender and copyWithoutTemplating can not be used at the same time', + ); + } + + let copyOnlyPatterns: string[] | undefined; + let renderFilename: boolean; + if (ctx.input.copyWithoutRender) { + ctx.logger.warn( + '[Deprecated] Please use copyWithoutTemplating instead.', + ); + copyOnlyPatterns = ctx.input.copyWithoutRender; + renderFilename = false; + } else { + copyOnlyPatterns = ctx.input.copyWithoutTemplating; + renderFilename = true; + } + + if (copyOnlyPatterns && !Array.isArray(copyOnlyPatterns)) { + throw new InputError( + 'Fetch action input copyWithoutRender/copyWithoutTemplating must be an Array', ); } if ( ctx.input.templateFileExtension && - (ctx.input.copyWithoutRender || ctx.input.cookiecutterCompat) + (copyOnlyPatterns || ctx.input.cookiecutterCompat) ) { throw new InputError( - 'Fetch action input extension incompatible with copyWithoutRender and cookiecutterCompat', + 'Fetch action input extension incompatible with copyWithoutRender/copyWithoutTemplating and cookiecutterCompat', ); } @@ -161,7 +189,7 @@ export function createFetchTemplateAction(options: { const nonTemplatedEntries = new Set( ( await Promise.all( - (ctx.input.copyWithoutRender || []).map(pattern => + (copyOnlyPatterns || []).map(pattern => globby(pattern, { cwd: templateDir, dot: true, @@ -194,22 +222,31 @@ export function createFetchTemplateAction(options: { }); for (const location of allEntriesInTemplate) { - let renderFilename: boolean; let renderContents: boolean; let localOutputPath = location; if (extension) { - renderFilename = true; renderContents = extname(localOutputPath) === extension; if (renderContents) { localOutputPath = localOutputPath.slice(0, -extension.length); } - } else { - renderFilename = renderContents = !nonTemplatedEntries.has(location); - } - - if (renderFilename) { + // extension is mutual exclusive with copyWithoutRender/copyWithoutTemplating, + // therefore the output path is always rendered. localOutputPath = renderTemplate(localOutputPath, context); + } else { + renderContents = !nonTemplatedEntries.has(location); + // The logic here is a bit tangled because it depends on two variables. + // If renderFilename is true, which means copyWithoutTemplating is used, + // then the path is always rendered. + // If renderFilename is false, which means copyWithoutRender is used, + // then matched file/directory won't be processed, same as before. + if (renderFilename) { + localOutputPath = renderTemplate(localOutputPath, context); + } else { + localOutputPath = renderContents + ? renderTemplate(localOutputPath, context) + : localOutputPath; + } } if (containsSkippedContent(localOutputPath)) { diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts index f23e3dde9f..20755ad781 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.test.ts @@ -283,6 +283,7 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -301,6 +302,7 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: true, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -319,6 +321,67 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, + }); + }); + + it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of enforceAdmins', async () => { + mockOctokit.rest.repos.get.mockResolvedValue({ + data: { + clone_url: 'https://github.com/clone/url.git', + html_url: 'https://github.com/html/url', + }, + }); + + await action.handler(mockContext); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: true, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + protectEnforceAdmins: true, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: true, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + protectEnforceAdmins: false, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repository', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: false, }); }); @@ -340,6 +403,7 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -358,6 +422,7 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], + enforceAdmins: true, }); await action.handler({ @@ -376,6 +441,7 @@ describe('github:repo:push', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts index 942ebe578d..b80502a80c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoPush.ts @@ -44,6 +44,7 @@ export function createGithubRepoPushAction(options: { description?: string; defaultBranch?: string; protectDefaultBranch?: boolean; + protectEnforceAdmins?: boolean; gitCommitMessage?: string; gitAuthorName?: string; gitAuthorEmail?: string; @@ -65,6 +66,7 @@ export function createGithubRepoPushAction(options: { requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts, defaultBranch: inputProps.defaultBranch, protectDefaultBranch: inputProps.protectDefaultBranch, + protectEnforceAdmins: inputProps.protectEnforceAdmins, gitCommitMessage: inputProps.gitCommitMessage, gitAuthorName: inputProps.gitAuthorName, gitAuthorEmail: inputProps.gitAuthorEmail, @@ -85,6 +87,7 @@ export function createGithubRepoPushAction(options: { repoUrl, defaultBranch = 'master', protectDefaultBranch = true, + protectEnforceAdmins = true, gitCommitMessage = 'initial commit', gitAuthorName, gitAuthorEmail, @@ -120,6 +123,7 @@ export function createGithubRepoPushAction(options: { ctx.input.sourcePath, defaultBranch, protectDefaultBranch, + protectEnforceAdmins, owner, client, repo, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts index c8f508e4c0..b60794295a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -236,6 +236,7 @@ export async function initRepoPushAndProtect( sourcePath: string | undefined, defaultBranch: string, protectDefaultBranch: boolean, + protectEnforceAdmins: boolean, owner: string, client: Octokit, repo: string, @@ -283,6 +284,7 @@ export async function initRepoPushAndProtect( defaultBranch, requireCodeOwnerReviews, requiredStatusCheckContexts, + enforceAdmins: protectEnforceAdmins, }); } catch (e) { assertError(e); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts index 0aad402f1f..b0113a4485 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts @@ -128,6 +128,11 @@ const protectDefaultBranch = { type: 'boolean', description: `Protect the default branch after creating the repository. The default value is 'true'`, }; +const protectEnforceAdmins = { + title: 'Enforce Admins On Protected Branches', + type: 'boolean', + description: `Enforce admins to adhere to default branch protection. The default value is 'true'`, +}; const gitCommitMessage = { title: 'Git Commit Message', type: 'string', @@ -152,6 +157,7 @@ export { gitAuthorEmail }; export { gitAuthorName }; export { gitCommitMessage }; export { protectDefaultBranch }; +export { protectEnforceAdmins }; export { repoUrl }; export { repoVisibility }; export { requireCodeOwnerReviews }; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts index 8753d44041..dec62eb4a2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts @@ -135,6 +135,7 @@ type BranchProtectionOptions = { requireCodeOwnerReviews: boolean; requiredStatusCheckContexts?: string[]; defaultBranch?: string; + enforceAdmins?: boolean; }; export const enableBranchProtectionOnDefaultRepoBranch = async ({ @@ -145,6 +146,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ requireCodeOwnerReviews, requiredStatusCheckContexts = [], defaultBranch = 'master', + enforceAdmins = true, }: BranchProtectionOptions): Promise => { const tryOnce = async () => { try { @@ -167,7 +169,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ contexts: requiredStatusCheckContexts, }, restrictions: null, - enforce_admins: true, + enforce_admins: enforceAdmins, required_pull_request_reviews: { required_approving_review_count: 1, require_code_owner_reviews: requireCodeOwnerReviews, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.test.ts index bb1beba791..3b4354960b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.test.ts @@ -16,6 +16,7 @@ jest.mock('../helpers'); +import path from 'path'; import { createPublishGerritAction } from './gerrit'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; @@ -62,13 +63,6 @@ describe('publish:gerrit', () => { }); it('should throw an error when the repoUrl is not well formed', async () => { - await expect( - action.handler({ - ...mockContext, - input: { repoUrl: 'gerrithost.org?workspace=w&repo=repo', description }, - }), - ).rejects.toThrow(/missing owner/); - await expect( action.handler({ ...mockContext, @@ -169,7 +163,57 @@ describe('publish:gerrit', () => { }); expect(initRepoAndPush).toHaveBeenCalledWith({ - dir: `${mockContext.workspacePath}/repository/`, + dir: `${mockContext.workspacePath}${path.sep}repository${path.sep}`, + remoteUrl: 'https://gerrithost.org/a/repo', + defaultBranch: 'master', + auth: { username: 'gerrituser', password: 'usertoken' }, + logger: mockContext.logger, + commitMessage: expect.stringContaining('initial commit\n\nChange-Id:'), + gitAuthorInfo: {}, + }); + + expect(mockContext.output).toHaveBeenCalledWith( + 'remoteUrl', + 'https://gerrithost.org/a/repo', + ); + expect(mockContext.output).toHaveBeenCalledWith( + 'repoContentsUrl', + 'https://gerrithost.org/repo/+/refs/heads/master', + ); + }); + + it('can correctly create a new project without specifying owner', async () => { + expect.assertions(5); + server.use( + rest.put('https://gerrithost.org/a/projects/repo', (req, res, ctx) => { + expect(req.headers.get('Authorization')).toBe( + 'Basic Z2Vycml0dXNlcjp1c2VydG9rZW4=', + ); + expect(req.body).toEqual({ + create_empty_commit: false, + owners: [], + description, + parent: 'workspace', + }); + return res( + ctx.status(201), + ctx.set('Content-Type', 'application/json'), + ctx.json({}), + ); + }), + ); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + repoUrl: 'gerrithost.org?workspace=workspace&repo=repo', + sourcePath: 'repository/', + }, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: `${mockContext.workspacePath}${path.sep}repository${path.sep}`, remoteUrl: 'https://gerrithost.org/a/repo', defaultBranch: 'master', auth: { username: 'gerrituser', password: 'usertoken' }, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.ts index d23e860e1c..83653b3052 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerrit.ts @@ -31,7 +31,7 @@ const createGerritProject = async ( options: { projectName: string; parent: string; - owner: string; + owner?: string; description: string; }, ): Promise => { @@ -42,7 +42,7 @@ const createGerritProject = async ( body: JSON.stringify({ parent, description, - owners: [owner], + owners: owner ? [owner] : [], create_empty_commit: false, }), headers: { @@ -174,11 +174,6 @@ export function createPublishGerritAction(options: { ); } - if (!owner) { - throw new InputError( - `Invalid URL provider was included in the repo URL to create ${ctx.input.repoUrl}, missing owner`, - ); - } if (!workspace) { throw new InputError( `Invalid URL provider was included in the repo URL to create ${ctx.input.repoUrl}, missing workspace`, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index 036c5d66ee..a526e73019 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -623,6 +623,7 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -641,6 +642,7 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: true, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -659,6 +661,70 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, + }); + }); + + it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of enforceAdmins', async () => { + mockOctokit.rest.users.getByUsername.mockResolvedValue({ + data: { type: 'User' }, + }); + + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + data: { + name: 'repo', + }, + }); + + await action.handler(mockContext); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: true, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + protectEnforceAdmins: false, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: false, + }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + protectEnforceAdmins: true, + }, + }); + + expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ + owner: 'owner', + client: mockOctokit, + repoName: 'repo', + logger: mockContext.logger, + defaultBranch: 'master', + requireCodeOwnerReviews: false, + requiredStatusCheckContexts: [], + enforceAdmins: true, }); }); @@ -683,6 +749,7 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); await action.handler({ @@ -701,6 +768,7 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: ['statusCheck'], + enforceAdmins: true, }); await action.handler({ @@ -719,6 +787,7 @@ describe('publish:github', () => { defaultBranch: 'master', requireCodeOwnerReviews: false, requiredStatusCheckContexts: [], + enforceAdmins: true, }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts index 0815a2cd00..eea006ae8f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -48,6 +48,7 @@ export function createPublishGithubAction(options: { access?: string; defaultBranch?: string; protectDefaultBranch?: boolean; + protectEnforceAdmins?: boolean; deleteBranchOnMerge?: boolean; gitCommitMessage?: string; gitAuthorName?: string; @@ -93,6 +94,7 @@ export function createPublishGithubAction(options: { repoVisibility: inputProps.repoVisibility, defaultBranch: inputProps.defaultBranch, protectDefaultBranch: inputProps.protectDefaultBranch, + protectEnforceAdmins: inputProps.protectEnforceAdmins, deleteBranchOnMerge: inputProps.deleteBranchOnMerge, gitCommitMessage: inputProps.gitCommitMessage, gitAuthorName: inputProps.gitAuthorName, @@ -124,6 +126,7 @@ export function createPublishGithubAction(options: { repoVisibility = 'private', defaultBranch = 'master', protectDefaultBranch = true, + protectEnforceAdmins = true, deleteBranchOnMerge = false, gitCommitMessage = 'initial commit', gitAuthorName, @@ -176,6 +179,7 @@ export function createPublishGithubAction(options: { ctx.input.sourcePath, defaultBranch, protectDefaultBranch, + protectEnforceAdmins, owner, client, repo, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.test.ts index 987e360617..69adbcb968 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.test.ts @@ -53,6 +53,15 @@ const mockGitlabClient = { }, Users: { current: jest.fn(), + username: jest.fn(async (user: string) => { + if (user !== 'John Smith') throw new Error('user does not exist'); + else + return [ + { + id: 123, + }, + ]; + }), }, }; @@ -204,4 +213,168 @@ describe('createGitLabMergeRequest', () => { ); }); }); + + describe('createGitLabMergeRequestWithAssignee', () => { + it('assignee is set correcly when a valid assignee username is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + draft: true, + targetPath: 'Subdirectory', + assignee: 'John Smith', + }; + mockFs({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = { + createTemporaryDirectory: jest.fn(), + output: jest.fn(), + logger: getRootLogger(), + logStream: new Writable(), + input, + workspacePath, + }; + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: 123, + }, + ); + }); + + it('assignee is not set when a valid assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + draft: true, + targetPath: 'Subdirectory', + assingnee: 'John Doe', + }; + mockFs({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = { + createTemporaryDirectory: jest.fn(), + output: jest.fn(), + logger: getRootLogger(), + logStream: new Writable(), + input, + workspacePath, + }; + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + assigneeId: undefined, + }, + ); + }); + }); + describe('createGitLabMergeRequestWithoutAssignee', () => { + it('merge request is successfully created without an assignee when assignee username is not passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + draft: true, + targetPath: 'Subdirectory', + }; + mockFs({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = { + createTemporaryDirectory: jest.fn(), + output: jest.fn(), + logger: getRootLogger(), + logStream: new Writable(), + input, + workspacePath, + }; + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + }, + ); + }); + + it('merge request is successfully created without an assignee when assignee is not found in Gitlab', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This is an important change', + removeSourceBranch: false, + draft: true, + targetPath: 'Subdirectory', + assignee: 'Unknown', + }; + mockFs({ + [workspacePath]: { + source: { 'foo.txt': 'Hello there!' }, + irrelevant: { 'bar.txt': 'Nothing to see here' }, + }, + }); + + const ctx = { + createTemporaryDirectory: jest.fn(), + output: jest.fn(), + logger: getRootLogger(), + logStream: new Writable(), + input, + workspacePath, + }; + await instance.handler(ctx); + + expect(mockGitlabClient.MergeRequests.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'main', + 'Create my new MR', + { + description: 'This is an important change', + removeSourceBranch: false, + }, + ); + }); + }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts index b1d5b35fa3..8404f262cc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts @@ -43,6 +43,7 @@ export const createPublishGitlabMergeRequestAction = (options: { /** @deprecated Use projectPath instead */ projectid?: string; removeSourceBranch?: boolean; + assignee?: string; }>({ id: 'publish:gitlab:merge-request', schema: { @@ -92,6 +93,11 @@ export const createPublishGitlabMergeRequestAction = (options: { description: 'Option to delete source branch once the MR has been merged. Default: false', }, + assignee: { + title: 'Merge Request Assignee', + type: 'string', + description: 'User this merge request will be assigned to', + }, }, }, output: { @@ -146,6 +152,21 @@ export const createPublishGitlabMergeRequestAction = (options: { [tokenType]: token, }); + const assignee = ctx.input.assignee; + + let assigneeId = undefined; + + if (assignee !== undefined) { + try { + const assigneeUser = await api.Users.username(assignee); + assigneeId = assigneeUser[0].id; + } catch (e) { + ctx.logger.warn( + `Failed to find gitlab user id for ${assignee}: ${e}. Proceeding with MR creation without an assignee.`, + ); + } + } + const targetPath = resolveSafeChildPath( ctx.workspacePath, ctx.input.targetPath, @@ -199,6 +220,7 @@ export const createPublishGitlabMergeRequestAction = (options: { removeSourceBranch: ctx.input.removeSourceBranch ? ctx.input.removeSourceBranch : false, + assigneeId: assigneeId, }, ).then((mergeRequest: { web_url: string }) => { return mergeRequest.web_url; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.ts index 49156e7d97..fff3213cb7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.ts @@ -85,7 +85,7 @@ export const parseRepoUrl = ( ); } } else { - if (!owner) { + if (!owner && type !== 'gerrit') { throw new InputError( `Invalid repo URL passed to publisher: ${repoUrl}, missing owner`, ); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index aea33f1158..f545e57f85 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -35,24 +35,25 @@ import { UrlReaders, } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; -import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { ConfigReader } from '@backstage/config'; -import ObservableImpl from 'zen-observable'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import express from 'express'; import request from 'supertest'; +import ObservableImpl from 'zen-observable'; + /** * TODO: The following should import directly from the router file. * Due to a circular dependency between this plugin and the * plugin-scaffolder-backend-module-cookiecutter plugin, it results in an error: * TypeError: _pluginscaffolderbackend.createTemplateAction is not a function */ -import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; -import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; import { parseEntityRef, stringifyEntityRef, UserEntity, } from '@backstage/catalog-model'; +import { createRouter, DatabaseTaskStore, TaskBroker } from '../index'; +import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; function createDatabase(): PluginDatabaseManager { return DatabaseManager.fromConfig( @@ -74,6 +75,7 @@ const mockUrlReader = UrlReaders.default({ describe('createRouter', () => { let app: express.Express; + let loggerSpy: jest.SpyInstance; let taskBroker: TaskBroker; const catalogClient = { getEntityByRef: jest.fn() } as unknown as CatalogApi; @@ -133,9 +135,10 @@ describe('createRouter', () => { jest.spyOn(taskBroker, 'get'); jest.spyOn(taskBroker, 'list'); jest.spyOn(taskBroker, 'event$'); + loggerSpy = jest.spyOn(logger, 'info'); const router = await createRouter({ - logger: getVoidLogger(), + logger: logger, config: new ConfigReader({}), database: createDatabase(), catalogClient, @@ -288,6 +291,48 @@ describe('createRouter', () => { }), ); }); + + it('should emit auditlog containing without user identifier when no backstage auth is passed', async () => { + await request(app) + .post('/v2/tasks') + .send({ + templateRef: stringifyEntityRef({ + kind: 'template', + name: 'create-react-app-template', + }), + values: { + required: 'required-value', + }, + }); + + expect(loggerSpy).toHaveBeenCalledTimes(1); + expect(loggerSpy).toHaveBeenCalledWith( + 'Scaffolding task for template:default/create-react-app-template', + ); + }); + + it('should emit auditlog containing user identifier when backstage auth is passed', async () => { + const mockToken = + 'blob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvZ3Vlc3QiLCJuYW1lIjoiSm9obiBEb2UifQ.blob'; + + await request(app) + .post('/v2/tasks') + .set('Authorization', `Bearer ${mockToken}`) + .send({ + templateRef: stringifyEntityRef({ + kind: 'template', + name: 'create-react-app-template', + }), + values: { + required: 'required-value', + }, + }); + + expect(loggerSpy).toHaveBeenCalledTimes(1); + expect(loggerSpy).toHaveBeenCalledWith( + 'Scaffolding task for template:default/create-react-app-template created by user:default/guest', + ); + }); }); describe('GET /v2/tasks', () => { diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 2abb730250..b682ebdf25 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -17,17 +17,17 @@ import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; import { CatalogApi } from '@backstage/catalog-client'; import { + Entity, parseEntityRef, stringifyEntityRef, UserEntity, } from '@backstage/catalog-model'; -import { Entity } from '@backstage/catalog-model'; import { Config, JsonObject } from '@backstage/config'; import { InputError, NotFoundError, stringifyError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; import { - TemplateEntityV1beta3, TaskSpec, + TemplateEntityV1beta3, templateEntityV1beta3Validator, } from '@backstage/plugin-scaffolder-common'; import { JsonValue } from '@backstage/types'; @@ -35,8 +35,8 @@ import express from 'express'; import Router from 'express-promise-router'; import { validate } from 'jsonschema'; import { Logger } from 'winston'; -import { TemplateFilter } from '../lib'; import { z } from 'zod'; +import { TemplateFilter } from '../lib'; import { createBuiltinActions, DatabaseTaskStore, @@ -47,7 +47,7 @@ import { } from '../scaffolder'; import { createDryRunner } from '../scaffolder/dryrun'; import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker'; -import { getEntityBaseUrl, getWorkingDirectory, findTemplate } from './helpers'; +import { findTemplate, getEntityBaseUrl, getWorkingDirectory } from './helpers'; /** * RouterOptions @@ -193,6 +193,12 @@ export async function createRouter( ? await catalogClient.getEntityByRef(userEntityRef, { token }) : undefined; + let auditLog = `Scaffolding task for ${templateRef}`; + if (userEntityRef) { + auditLog += ` created by ${userEntityRef}`; + } + logger.info(auditLog); + const values = req.body.values; const template = await findTemplate({ diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index 1370f192f6..bee023f1db 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-scaffolder-common +## 1.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.0 + ## 1.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 09503d0be6..d7474f8446 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-common", "description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin", - "version": "1.1.2-next.0", + "version": "1.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -39,10 +39,10 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.0" } } diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index d411c07f14..8967a44ec5 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,51 @@ # @backstage/plugin-scaffolder +## 1.4.0 + +### Minor Changes + +- d8eb82f447: Add `allowedRepos` `ui:option` to `RepoUrlPicker` component, and move `repoName` field to own component +- 9a96199f86: Add support for `allowedOwners` to the `BitbucketRepoPicker` used for the workspace value. + +### Patch Changes + +- 37539e29d8: The template editor now shows the cause of request errors that happen during a dry-run. +- b557e6c58d: Fixed that adding more than one `allowedOwner` or `allowedRepo` in the template config will now still set the first value as default in the initial form state of `RepoUrlPicker`. +- 842282ecf9: Bumped `codemirror` dependencies to `v6.0.0`. +- 11a5ca35f3: Add allowArbitraryValues for to provide input validation. This makes it a better experience of users, as they can now expect the values they enter to correspond to a valid owner. This is set to the default behavior by default. +- d600cb2ab6: contextMenu prop passed through to from the component +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 72622d9143: Updated dependency `yaml` to `^2.0.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 464bb0e6c8: The max content size for dry-run files has been reduced from 256k to 64k. +- 14146703e5: Add `allowArbitraryValues` to `ui:options` in `OwnedEntityPicker`, similar to `allowArbitraryValues` in `EntityPicker` +- a7c0b34d70: Swap usage of `MaterialTable` with `Table` from `core-components` +- 1764296a68: Allow to create Gerrit project using default owner +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + - @backstage/plugin-permission-react@0.4.3 + - @backstage/plugin-scaffolder-common@1.1.2 + ## 1.4.0-next.3 ### Patch Changes diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index fe04327afd..345c726e24 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -169,6 +169,8 @@ export const OwnerPickerFieldExtension: FieldExtensionComponent< // @public export interface OwnerPickerUiOptions { + // (undocumented) + allowArbitraryValues?: boolean; // (undocumented) allowedKinds?: string[]; } diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 9766cbdb31..b9d1122aad 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.4.0-next.3", + "version": "1.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,19 +35,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-permission-react": "^0.4.3-next.1", - "@backstage/plugin-scaffolder-common": "^1.1.2-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-permission-react": "^0.4.3", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.1.0", @@ -80,11 +80,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx index a0c22b7fef..10425c17ff 100644 --- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx @@ -25,6 +25,7 @@ import { FieldExtensionComponentProps } from '../../../extensions'; */ export interface OwnerPickerUiOptions { allowedKinds?: string[]; + allowArbitraryValues?: boolean; } /** @@ -50,6 +51,8 @@ export const OwnerPicker = ( 'User', ]) as string[], defaultKind: 'Group', + allowArbitraryValues: + uiSchema['ui:options']?.allowArbitraryValues ?? true, }, }; diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx index 0ced19a596..fc643e7360 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.test.tsx @@ -19,6 +19,21 @@ import { BitbucketRepoPicker } from './BitbucketRepoPicker'; import { render, fireEvent } from '@testing-library/react'; describe('BitbucketRepoPicker', () => { + it('renders a select if there is a list of allowed owners', async () => { + const allowedOwners = ['owner1', 'owner2']; + const { findByText } = render( + , + ); + + expect(await findByText('owner1')).toBeInTheDocument(); + expect(await findByText('owner2')).toBeInTheDocument(); + }); + it('renders workspace input when host is bitbucket.org', () => { const state = { host: 'bitbucket.org', workspace: 'lolsWorkspace' }; diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx index fc59398d94..38d615078d 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx @@ -18,15 +18,20 @@ import FormControl from '@material-ui/core/FormControl'; import FormHelperText from '@material-ui/core/FormHelperText'; import Input from '@material-ui/core/Input'; import InputLabel from '@material-ui/core/InputLabel'; +import { Select, SelectItem } from '@backstage/core-components'; import { RepoUrlPickerState } from './types'; export const BitbucketRepoPicker = (props: { + allowedOwners?: string[]; onChange: (state: RepoUrlPickerState) => void; state: RepoUrlPickerState; rawErrors: string[]; }) => { - const { onChange, rawErrors, state } = props; + const { allowedOwners = [], onChange, rawErrors, state } = props; const { host, workspace, project } = state; + const ownerItems: SelectItem[] = allowedOwners + ? allowedOwners?.map(i => ({ label: i, value: i })) + : []; return ( <> {host === 'bitbucket.org' && ( @@ -35,12 +40,27 @@ export const BitbucketRepoPicker = (props: { required error={rawErrors?.length > 0 && !workspace} > - Workspace - onChange({ workspace: e.target.value })} - value={workspace} - /> + {allowedOwners?.length ? ( + onChange({ workspace: e.target.value })} + value={workspace} + /> + + )} The Organization that this repo will belong to diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.test.tsx index 66f0a234be..f51d00adf2 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.test.tsx @@ -18,7 +18,7 @@ import React from 'react'; import { GerritRepoPicker } from './GerritRepoPicker'; import { render, fireEvent } from '@testing-library/react'; -describe('BitbucketRepoPicker', () => { +describe('GerritRepoPicker', () => { describe('owner input field', () => { it('calls onChange when the owner input changes', () => { const onChange = jest.fn(); diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx index f021948532..13af966c25 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/GerritRepoPicker.tsx @@ -29,18 +29,14 @@ export const GerritRepoPicker = (props: { const { workspace, owner } = state; return ( <> - 0 && !workspace} - > + 0 && !workspace}> Owner onChange({ owner: e.target.value })} value={owner} /> - The owner of the project + The owner of the project (optional) { 'search', '', getVoidLogger(), + 1000, ); inspectableSearchEngine = new ElasticSearchSearchEngineForTranslatorTests( options, 'search', '', getVoidLogger(), + 1000, ); // eslint-disable-next-line dot-notation clientWrapper = testSearchEngine['elasticSearchClientWrapper']; diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts index cf0b4f441c..f3107df1fd 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts @@ -107,6 +107,8 @@ function isBlank(str: string) { return (isEmpty(str) && !isNumber(str)) || nan(str); } +const DEFAULT_INDEXER_BATCH_SIZE = 1000; + /** * @public */ @@ -119,6 +121,7 @@ export class ElasticSearchSearchEngine implements SearchEngine { private readonly aliasPostfix: string, private readonly indexPrefix: string, private readonly logger: Logger, + private readonly batchSize: number, highlightOptions?: ElasticSearchHighlightOptions, ) { this.elasticSearchClientWrapper = @@ -156,6 +159,8 @@ export class ElasticSearchSearchEngine implements SearchEngine { aliasPostfix, indexPrefix, logger, + config.getOptionalNumber('search.elasticsearch.batchSize') ?? + DEFAULT_INDEXER_BATCH_SIZE, config.getOptional( 'search.elasticsearch.highlightOptions', ), @@ -255,6 +260,7 @@ export class ElasticSearchSearchEngine implements SearchEngine { alias, elasticSearchClientWrapper: this.elasticSearchClientWrapper, logger: this.logger, + batchSize: this.batchSize, }); // Attempt cleanup upon failure. diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts index eff056c3f4..a19687a03b 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts @@ -44,6 +44,7 @@ describe('ElasticSearchSearchEngineIndexer', () => { alias: 'some-type-index__search', logger: getVoidLogger(), elasticSearchClientWrapper: clientWrapper, + batchSize: 1000, }); // Set up all requisite Elastic mocks. diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts index 87a4472a15..c81950ea41 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts @@ -31,6 +31,7 @@ export type ElasticSearchSearchEngineIndexerOptions = { alias: string; logger: Logger; elasticSearchClientWrapper: ElasticSearchClientWrapper; + batchSize: number; }; function duration(startTimestamp: [number, number]): string { @@ -61,7 +62,7 @@ export class ElasticSearchSearchEngineIndexer extends BatchSearchEngineIndexer { private bulkResult: Promise; constructor(options: ElasticSearchSearchEngineIndexerOptions) { - super({ batchSize: 1000 }); + super({ batchSize: options.batchSize }); this.logger = options.logger; this.startTimestamp = process.hrtime(); this.type = options.type; diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index fdbf4d01e4..32f585f4c3 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-search-backend-module-pg +## 0.3.5 + +### Patch Changes + +- 423e3d8e95: **DEPRECATED**: `PgSearchEngine` static `from` has been deprecated and will be removed in a future release. Use static `fromConfig` method to instantiate. + + Added support for highlighting matched terms in search result data + +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 886e99b8e7: Now imports `SearchEngine` interface from `@backstage/plugin-search-common` instead of `@backstage/plugin-search-backend-node` +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + ## 0.3.5-next.2 ### Patch Changes diff --git a/plugins/search-backend-module-pg/api-report.md b/plugins/search-backend-module-pg/api-report.md index f7a188a14e..d1913a535d 100644 --- a/plugins/search-backend-module-pg/api-report.md +++ b/plugins/search-backend-module-pg/api-report.md @@ -9,7 +9,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { IndexableResultSet } from '@backstage/plugin-search-common'; import { Knex } from 'knex'; import { PluginDatabaseManager } from '@backstage/backend-common'; -import { SearchEngine } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; import { SearchQuery } from '@backstage/plugin-search-common'; // @public diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 9e58859449..e9e02e6c0c 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.3.5-next.2", + "version": "0.3.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,17 +23,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.2", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/plugin-search-backend-node": "^0.6.3-next.1", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/plugin-search-backend-node": "^1.0.0", + "@backstage/plugin-search-common": "^1.0.0", "lodash": "^4.17.21", "knex": "^2.0.0", "uuid": "^8.3.2" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.2", - "@backstage/cli": "^0.18.0-next.2" + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0" }, "files": [ "dist", diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts index abf7cdbf5c..9da5ceec0e 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngine.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { PluginDatabaseManager } from '@backstage/backend-common'; -import { SearchEngine } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; import { SearchQuery, IndexableResultSet, diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 9233e469fe..8d9b2ae441 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend-node +## 1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a21cd43467: Exports `MissingIndexError` that can be used by the search engines for better error handling when missing index. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.6.3-next.2 ### Patch Changes diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md index ff9480c19d..64957f6366 100644 --- a/plugins/search-backend-node/api-report.md +++ b/plugins/search-backend-node/api-report.md @@ -170,8 +170,6 @@ export type ScheduleTaskParameters = { scheduledRunner: TaskRunner; }; -export { SearchEngine }; - // @public export class TestPipeline { execute(): Promise; diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index f4a67e4d8b..536af3a3cf 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "0.6.3-next.2", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-search-common": "^1.0.0", "@types/lunr": "^2.3.3", "lodash": "^4.17.21", "lunr": "^2.3.9", @@ -38,8 +38,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/cli": "^0.18.0", "@types/ndjson": "^2.0.1" }, "files": [ diff --git a/plugins/search-backend-node/src/IndexBuilder.test.ts b/plugins/search-backend-node/src/IndexBuilder.test.ts index 70d00f6974..4a2760dde1 100644 --- a/plugins/search-backend-node/src/IndexBuilder.test.ts +++ b/plugins/search-backend-node/src/IndexBuilder.test.ts @@ -19,10 +19,11 @@ import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; import { DocumentCollatorFactory, DocumentDecoratorFactory, + SearchEngine, } from '@backstage/plugin-search-common'; import { Readable, Transform } from 'stream'; import { IndexBuilder } from './IndexBuilder'; -import { LunrSearchEngine, SearchEngine } from './index'; +import { LunrSearchEngine } from './index'; class TestDocumentCollatorFactory implements DocumentCollatorFactory { readonly type: string = 'anything'; diff --git a/plugins/search-backend-node/src/index.ts b/plugins/search-backend-node/src/index.ts index 854881829c..a188509c1c 100644 --- a/plugins/search-backend-node/src/index.ts +++ b/plugins/search-backend-node/src/index.ts @@ -39,8 +39,3 @@ export * from './indexing'; export * from './test-utils'; export type { ScheduleTaskParameters } from './Scheduler'; - -/** - * @deprecated Import from @backstage/plugin-search-common instead - */ -export type { SearchEngine } from '@backstage/plugin-search-common'; diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 8c264012e4..47b23012ae 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-search-backend +## 1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a21cd43467: If error is `MissingIndexError` we return a 400 response with a more clear error message. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-search-backend-node@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/plugin-auth-node@0.2.3 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/plugin-permission-node@0.6.3 + - @backstage/errors@1.1.0 + ## 0.5.4-next.2 ### Patch Changes diff --git a/plugins/search-backend/api-report.md b/plugins/search-backend/api-report.md index eed61069da..d6274d9a94 100644 --- a/plugins/search-backend/api-report.md +++ b/plugins/search-backend/api-report.md @@ -9,7 +9,7 @@ import express from 'express'; import { Logger } from 'winston'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; -import { SearchEngine } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index e3ef5eaf9d..6018c00b78 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "0.5.4-next.2", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-auth-node": "^0.2.3-next.2", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-permission-node": "^0.6.3-next.2", - "@backstage/plugin-search-backend-node": "^0.6.3-next.2", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-auth-node": "^0.2.3", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.3", + "@backstage/plugin-search-backend-node": "^1.0.0", + "@backstage/plugin-search-common": "^1.0.0", "@backstage/types": "^1.0.0", "@types/express": "^4.17.6", "dataloader": "^2.0.0", @@ -43,7 +43,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/search-backend/src/service/router.test.ts b/plugins/search-backend/src/service/router.test.ts index 26d901e519..1437e65b84 100644 --- a/plugins/search-backend/src/service/router.test.ts +++ b/plugins/search-backend/src/service/router.test.ts @@ -17,10 +17,8 @@ import { getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; -import { - IndexBuilder, - SearchEngine, -} from '@backstage/plugin-search-backend-node'; +import { IndexBuilder } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; import express from 'express'; import request from 'supertest'; diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts index e4ac233406..cf9abff675 100644 --- a/plugins/search-backend/src/service/router.ts +++ b/plugins/search-backend/src/service/router.ts @@ -33,7 +33,7 @@ import { IndexableResultSet, SearchResultSet, } from '@backstage/plugin-search-common'; -import { SearchEngine } from '@backstage/plugin-search-backend-node'; +import { SearchEngine } from '@backstage/plugin-search-common'; import { AuthorizedSearchEngine } from './AuthorizedSearchEngine'; const jsonObjectSchema: z.ZodSchema = z.lazy(() => { diff --git a/plugins/search-common/CHANGELOG.md b/plugins/search-common/CHANGELOG.md index 3623d21e93..2f06e6da67 100644 --- a/plugins/search-common/CHANGELOG.md +++ b/plugins/search-common/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-common +## 1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.6.3 + ## 0.3.6-next.0 ### Patch Changes diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json index 65152206e2..a7942f5fa2 100644 --- a/plugins/search-common/package.json +++ b/plugins/search-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-common", "description": "Common functionalities for Search, to be shared between various search-enabled plugins", - "version": "0.3.6-next.0", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -40,10 +40,10 @@ }, "dependencies": { "@backstage/types": "^1.0.0", - "@backstage/plugin-permission-common": "^0.6.3-next.0" + "@backstage/plugin-permission-common": "^0.6.3" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.0" }, "jest": { "roots": [ diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 926972a646..dc597516c4 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-search-react +## 1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- 60408ca9d4: Fix search pagination to reset page cursor also when a term is cleared. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.2.2-next.3 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 8bd45e7561..11d9106e9a 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "0.2.2-next.3", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -31,11 +31,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", "@backstage/version-bridge": "^1.0.1", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -48,8 +48,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/core-app-api": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", "@testing-library/jest-dom": "^5.10.1", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index f884f43b6a..b3aec896d8 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/plugin-search +## 1.0.0 + +### Major Changes + +- 7bd7d336b2: This package has been promoted to 1.0. Read more about what it means in [New release: Backstage Search 1.0 blog](https://backstage.io/blog/2022/07/19/releasing-backstage-search-1.0) + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 509c4092f0: To allow people to use a global search context in the search modal, the code for the search modal has been changed to only create a local search context if there is no parent context already defined. + + If you want to continue using a local context even if you define a global one, you will have to wrap the modal in a new local context manually: + + ```tsx + + + + ``` + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.9.1-next.3 ### Patch Changes diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index 4ff684b6ea..cdbdc4c095 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -6,143 +6,24 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { DefaultResultListItemProps } from '@backstage/plugin-search-react'; import { IconComponent } from '@backstage/core-plugin-api'; -import { InputBaseProps } from '@material-ui/core'; -import { ReactElement } from 'react'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; -import { SearchAutocompleteFilterProps as SearchAutocompleteFilterProps_2 } from '@backstage/plugin-search-react'; -import { SearchBarBaseProps as SearchBarBaseProps_2 } from '@backstage/plugin-search-react'; -import { SearchFilterComponentProps as SearchFilterComponentProps_2 } from '@backstage/plugin-search-react'; -import { SearchResultProps } from '@backstage/plugin-search-react'; - -// @public @deprecated (undocumented) -export const DefaultResultListItem: ( - props: DefaultResultListItemProps, -) => JSX.Element; - -// @public @deprecated (undocumented) -export type FilterOptions = { - kind: Array; - lifecycle: Array; -}; - -// @public @deprecated (undocumented) -export const Filters: ({ - filters, - filterOptions, - resetFilters, - updateSelected, - updateChecked, -}: FiltersProps) => JSX.Element; - -// @public @deprecated (undocumented) -export const FiltersButton: ({ - numberOfSelectedFilters, - handleToggleFilters, -}: FiltersButtonProps) => JSX.Element; - -// @public @deprecated -export type FiltersButtonProps = { - numberOfSelectedFilters: number; - handleToggleFilters: () => void; -}; - -// @public @deprecated -export type FiltersProps = { - filters: FiltersState; - filterOptions: FilterOptions; - resetFilters: () => void; - updateSelected: (filter: string) => void; - updateChecked: (filter: string) => void; -}; - -// @public @deprecated (undocumented) -export type FiltersState = { - selected: string; - checked: Array; -}; +import { SearchBarBaseProps } from '@backstage/plugin-search-react'; // @public (undocumented) export const HomePageSearchBar: ({ ...props -}: Partial>) => JSX.Element; +}: Partial>) => JSX.Element; // @public export type HomePageSearchBarProps = Partial< - Omit + Omit >; // @public (undocumented) export const Router: () => JSX.Element; -// @public @deprecated (undocumented) -export type SearchAutocompleteFilterProps = SearchFilterComponentProps_2 & { - filterSelectedOptions?: boolean; - limitTags?: number; - multiple?: boolean; -}; - -// @public @deprecated -export const SearchBar: ({ onChange, ...props }: SearchBarProps) => JSX.Element; - -// @public @deprecated -export const SearchBarBase: ({ - onChange, - onKeyDown, - onSubmit, - debounceTime, - clearButton, - fullWidth, - value: defaultValue, - inputProps: defaultInputProps, - endAdornment: defaultEndAdornment, - ...props -}: SearchBarBaseProps_2) => JSX.Element; - -// @public @deprecated -export type SearchBarBaseProps = Omit & { - debounceTime?: number; - clearButton?: boolean; - onClear?: () => void; - onSubmit?: () => void; - onChange: (value: string) => void; -}; - -// @public @deprecated -export type SearchBarProps = Partial; - -// @public @deprecated (undocumented) -export const SearchFilter: { - ({ component: Element, ...props }: SearchFilterWrapperProps): JSX.Element; - Checkbox( - props: Omit & - SearchFilterComponentProps, - ): JSX.Element; - Select( - props: Omit & - SearchFilterComponentProps, - ): JSX.Element; - Autocomplete(props: SearchAutocompleteFilterProps_2): JSX.Element; -}; - -// @public @deprecated (undocumented) -export type SearchFilterComponentProps = { - className?: string; - name: string; - label?: string; - values?: string[] | ((partial: string) => Promise); - defaultValue?: string[] | string | null; - valuesDebounceMs?: number; -}; - -// @public @deprecated (undocumented) -export type SearchFilterWrapperProps = SearchFilterComponentProps & { - component: (props: SearchFilterComponentProps) => ReactElement; - debug?: boolean; -}; - // @public (undocumented) export const SearchModal: ({ open, @@ -200,12 +81,6 @@ const searchPlugin: BackstagePlugin< export { searchPlugin as plugin }; export { searchPlugin }; -// @public @deprecated (undocumented) -export const SearchResult: (props: SearchResultProps) => JSX.Element; - -// @public @deprecated (undocumented) -export const SearchResultPager: () => JSX.Element; - // @public (undocumented) export const SearchType: { (props: SearchTypeProps): JSX.Element; diff --git a/plugins/search/package.json b/plugins/search/package.json index 8089d5da94..48eba4bbde 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "0.9.1-next.3", + "version": "1.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,15 +33,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", "@material-ui/core": "^4.12.2", @@ -57,10 +57,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/search/src/components/Filters/Filters.tsx b/plugins/search/src/components/Filters/Filters.tsx deleted file mode 100644 index 9170961e18..0000000000 --- a/plugins/search/src/components/Filters/Filters.tsx +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import { - makeStyles, - Typography, - Divider, - Card, - CardHeader, - Button, - CardContent, - Select, - Checkbox, - List, - ListItem, - ListItemText, - MenuItem, -} from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - filters: { - background: 'transparent', - boxShadow: '0px 0px 0px 0px', - }, - checkbox: { - padding: theme.spacing(0, 1, 0, 1), - }, - dropdown: { - width: '100%', - }, -})); - -/** - * @public - * @deprecated This type and corresponding component will be removed in a - * future release. - */ -export type FiltersState = { - selected: string; - checked: Array; -}; - -/** - * @public - * @deprecated This type and corresponding component will be removed in a - * future release. - */ -export type FilterOptions = { - kind: Array; - lifecycle: Array; -}; - -/** - * Props for {@link Filters}. - * - * @public - * @deprecated This type and corresponding component will be removed in a - * future release. - */ -export type FiltersProps = { - filters: FiltersState; - filterOptions: FilterOptions; - resetFilters: () => void; - updateSelected: (filter: string) => void; - updateChecked: (filter: string) => void; -}; - -/** - * @public - * @deprecated This component will be removed in a future release. Use - * `SearchFilter` from `@backstage/plugin-search-react` instead. - */ -export const Filters = ({ - filters, - filterOptions, - resetFilters, - updateSelected, - updateChecked, -}: FiltersProps) => { - const classes = useStyles(); - - return ( - - Filters} - action={ - - } - /> - - {filterOptions.kind.length === 0 && filterOptions.lifecycle.length === 0 && ( - - - Filters cannot be applied to available results - - - )} - {filterOptions.kind.length > 0 && ( - - Kind - - - )} - {filterOptions.lifecycle.length > 0 && ( - - Lifecycle - - {filterOptions.lifecycle.map(filter => ( - updateChecked(filter)} - > - - - - ))} - - - )} - - ); -}; diff --git a/plugins/search/src/components/Filters/FiltersButton.tsx b/plugins/search/src/components/Filters/FiltersButton.tsx deleted file mode 100644 index 890c787689..0000000000 --- a/plugins/search/src/components/Filters/FiltersButton.tsx +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import FilterListIcon from '@material-ui/icons/FilterList'; -import { makeStyles, IconButton, Typography } from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - filters: { - width: '250px', - display: 'flex', - }, - icon: { - margin: theme.spacing(-1, 0, 0, 0), - }, -})); - -/** - * Props for {@link FiltersButton}. - * - * @public - * @deprecated This type and corresponding component will be removed in a - * future release. - */ -export type FiltersButtonProps = { - numberOfSelectedFilters: number; - handleToggleFilters: () => void; -}; - -/** - * @public - * @deprecated See `SearchFilter` in `@backstage/plugin-search-react` instead. - */ -export const FiltersButton = ({ - numberOfSelectedFilters, - handleToggleFilters, -}: FiltersButtonProps) => { - const classes = useStyles(); - - return ( -
- - - - - Filters ({numberOfSelectedFilters ? numberOfSelectedFilters : 0}) - -
- ); -}; diff --git a/plugins/search/src/components/LegacySearchPage/Filters/Filters.tsx b/plugins/search/src/components/LegacySearchPage/Filters/Filters.tsx deleted file mode 100644 index a0ca4914a2..0000000000 --- a/plugins/search/src/components/LegacySearchPage/Filters/Filters.tsx +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import { - makeStyles, - Typography, - Divider, - Card, - CardHeader, - Button, - CardContent, - Select, - Checkbox, - List, - ListItem, - ListItemText, - MenuItem, -} from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - filters: { - background: 'transparent', - boxShadow: '0px 0px 0px 0px', - }, - checkbox: { - padding: theme.spacing(0, 1, 0, 1), - }, - dropdown: { - width: '100%', - }, -})); - -export type FiltersState = { - selected: string; - checked: Array; -}; - -export type FilterOptions = { - kind: Array; - lifecycle: Array; -}; - -type FiltersProps = { - filters: FiltersState; - filterOptions: FilterOptions; - resetFilters: () => void; - updateSelected: (filter: string) => void; - updateChecked: (filter: string) => void; -}; - -export const Filters = ({ - filters, - filterOptions, - resetFilters, - updateSelected, - updateChecked, -}: FiltersProps) => { - const classes = useStyles(); - - return ( - - Filters} - action={ - - } - /> - - {filterOptions.kind.length === 0 && filterOptions.lifecycle.length === 0 && ( - - - Filters cannot be applied to available results - - - )} - {filterOptions.kind.length > 0 && ( - - Kind - - - )} - {filterOptions.lifecycle.length > 0 && ( - - Lifecycle - - {filterOptions.lifecycle.map(filter => ( - updateChecked(filter)} - > - - - - ))} - - - )} - - ); -}; diff --git a/plugins/search/src/components/LegacySearchPage/Filters/FiltersButton.tsx b/plugins/search/src/components/LegacySearchPage/Filters/FiltersButton.tsx deleted file mode 100644 index 1c2829defe..0000000000 --- a/plugins/search/src/components/LegacySearchPage/Filters/FiltersButton.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import FilterListIcon from '@material-ui/icons/FilterList'; -import { makeStyles, IconButton, Typography } from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - filters: { - width: '250px', - display: 'flex', - }, - icon: { - margin: theme.spacing(-1, 0, 0, 0), - }, -})); - -type FiltersButtonProps = { - numberOfSelectedFilters: number; - handleToggleFilters: () => void; -}; - -export const FiltersButton = ({ - numberOfSelectedFilters, - handleToggleFilters, -}: FiltersButtonProps) => { - const classes = useStyles(); - - return ( -
- - - - - Filters ({numberOfSelectedFilters ? numberOfSelectedFilters : 0}) - -
- ); -}; diff --git a/plugins/search/src/components/LegacySearchPage/LegacySearchBar.tsx b/plugins/search/src/components/LegacySearchPage/LegacySearchBar.tsx deleted file mode 100644 index 44fb006af3..0000000000 --- a/plugins/search/src/components/LegacySearchPage/LegacySearchBar.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import { Paper } from '@material-ui/core'; -import InputBase from '@material-ui/core/InputBase'; -import IconButton from '@material-ui/core/IconButton'; -import SearchIcon from '@material-ui/icons/Search'; -import ClearButton from '@material-ui/icons/Clear'; - -const useStyles = makeStyles(() => ({ - root: { - display: 'flex', - alignItems: 'center', - }, - input: { - flex: 1, - }, -})); - -type SearchBarProps = { - searchQuery: string; - handleSearch: any; - handleClearSearchBar: any; -}; - -export const SearchBar = ({ - searchQuery, - handleSearch, - handleClearSearchBar, -}: SearchBarProps) => { - const classes = useStyles(); - - return ( - handleSearch(e)} - className={classes.root} - > - - - - handleSearch(e)} - inputProps={{ 'aria-label': 'search backstage' }} - /> - handleClearSearchBar()}> - - - - ); -}; diff --git a/plugins/search/src/components/LegacySearchPage/LegacySearchPage.tsx b/plugins/search/src/components/LegacySearchPage/LegacySearchPage.tsx deleted file mode 100644 index 09a33b9b74..0000000000 --- a/plugins/search/src/components/LegacySearchPage/LegacySearchPage.tsx +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Grid } from '@material-ui/core'; -import React, { useEffect, useState } from 'react'; -import useDebounce from 'react-use/lib/useDebounce'; -import { SearchBar } from './LegacySearchBar'; -import { SearchResult } from './LegacySearchResult'; -import { - Content, - Header, - Page, - useQueryParamState, -} from '@backstage/core-components'; - -/** - * @deprecated This SearchPage, powered directly by the Catalog API, will be - * removed from a future release of this plugin. - */ -export const LegacySearchPage = () => { - const [queryString, setQueryString] = useQueryParamState('query'); - const [searchQuery, setSearchQuery] = useState(queryString ?? ''); - - const handleSearch = (event: React.ChangeEvent) => { - event.preventDefault(); - setSearchQuery(event.target.value); - }; - - useEffect(() => setSearchQuery(queryString ?? ''), [queryString]); - - useDebounce( - () => { - setQueryString(searchQuery); - }, - 200, - [searchQuery], - ); - - const handleClearSearchBar = () => { - setSearchQuery(''); - }; - - return ( - -
- - - - - - - - - - - - ); -}; diff --git a/plugins/search/src/components/LegacySearchPage/LegacySearchResult.tsx b/plugins/search/src/components/LegacySearchPage/LegacySearchResult.tsx deleted file mode 100644 index ba92dba710..0000000000 --- a/plugins/search/src/components/LegacySearchPage/LegacySearchResult.tsx +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Divider, Grid, makeStyles, Typography } from '@material-ui/core'; -import { Alert } from '@material-ui/lab'; -import React, { useEffect, useState } from 'react'; -import useAsync from 'react-use/lib/useAsync'; -import { catalogApiRef } from '@backstage/plugin-catalog-react'; - -import { Filters, FiltersButton, FiltersState } from './Filters'; -import { Entity, DEFAULT_NAMESPACE } from '@backstage/catalog-model'; - -import { - EmptyState, - Link, - Progress, - Table, - TableColumn, -} from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; - -type Result = { - name: string; - description: string | undefined; - owner: string | undefined; - kind: string; - lifecycle: string | undefined; - url: string; -}; -type SearchResults = Array; - -const useStyles = makeStyles(theme => ({ - searchQuery: { - color: theme.palette.text.primary, - background: theme.palette.background.default, - borderRadius: '10%', - }, - tableHeader: { - margin: theme.spacing(1, 0, 0, 0), - display: 'flex', - }, - divider: { - width: '1px', - margin: theme.spacing(0, 2), - padding: theme.spacing(2, 0), - }, -})); - -type SearchResultProps = { - searchQuery?: string; -}; - -type TableHeaderProps = { - searchQuery?: string; - numberOfSelectedFilters: number; - numberOfResults: number; - handleToggleFilters: () => void; -}; - -// TODO: move out column to make the search result component more generic -const columns: TableColumn[] = [ - { - title: 'Name', - field: 'name', - highlight: true, - render: (result: Partial) => ( - {result.name} - ), - }, - { - title: 'Description', - field: 'description', - }, - { - title: 'Owner', - field: 'owner', - }, - { - title: 'Kind', - field: 'kind', - }, - { - title: 'LifeCycle', - field: 'lifecycle', - }, -]; - -const TableHeader = ({ - searchQuery, - numberOfSelectedFilters, - numberOfResults, - handleToggleFilters, -}: TableHeaderProps) => { - const classes = useStyles(); - - return ( -
- - - - {searchQuery ? ( - - {`${numberOfResults} `} - {numberOfResults > 1 ? `results for ` : `result for `} - "{searchQuery}"{' '} - - ) : ( - {`${numberOfResults} results`} - )} - -
- ); -}; - -export const SearchResult = ({ searchQuery }: SearchResultProps) => { - const catalogApi = useApi(catalogApiRef); - - const [showFilters, toggleFilters] = useState(false); - const [selectedFilters, setSelectedFilters] = useState({ - selected: '', - checked: [], - }); - - const [filteredResults, setFilteredResults] = useState([]); - - const { - loading, - error, - value: results, - } = useAsync(async () => { - const entities = await catalogApi.getEntities(); - return entities.items.map((entity: Entity) => ({ - name: entity.metadata.name, - description: entity.metadata.description, - owner: - typeof entity.spec?.owner === 'string' ? entity.spec?.owner : undefined, - kind: entity.kind, - lifecycle: - typeof entity.spec?.lifecycle === 'string' - ? entity.spec?.lifecycle - : undefined, - url: `/catalog/${ - entity.metadata.namespace?.toLocaleLowerCase('en-US') || - DEFAULT_NAMESPACE - }/${entity.kind.toLocaleLowerCase('en-US')}/${entity.metadata.name}`, - })); - }, []); - - useEffect(() => { - if (results) { - let withFilters = results; - - // apply filters - - // filter on selected - if (selectedFilters.selected !== '') { - withFilters = results.filter((result: Result) => - selectedFilters.selected.includes(result.kind), - ); - } - - // filter on checked - if (selectedFilters.checked.length > 0) { - withFilters = withFilters.filter( - (result: Result) => - result.lifecycle && - selectedFilters.checked.includes(result.lifecycle), - ); - } - - // filter on searchQuery - if (searchQuery) { - withFilters = withFilters.filter( - (result: Result) => - result.name?.toLocaleLowerCase('en-US').includes(searchQuery) || - result.name - ?.toLocaleLowerCase('en-US') - .includes(searchQuery.split(' ').join('-')) || - result.description - ?.toLocaleLowerCase('en-US') - .includes(searchQuery), - ); - } - - setFilteredResults(withFilters); - } - }, [selectedFilters, searchQuery, results]); - if (loading) { - return ; - } - if (error) { - return ( - - Error encountered while fetching search results. {error.toString()} - - ); - } - if (!results || results.length === 0) { - return ; - } - - const resetFilters = () => { - setSelectedFilters({ - selected: '', - checked: [], - }); - }; - - const updateSelected = (filter: string) => { - setSelectedFilters(prevState => ({ - ...prevState, - selected: filter, - })); - }; - - const updateChecked = (filter: string) => { - if (selectedFilters.checked.includes(filter)) { - setSelectedFilters(prevState => ({ - ...prevState, - checked: prevState.checked.filter(item => item !== filter), - })); - return; - } - - setSelectedFilters(prevState => ({ - ...prevState, - checked: [...prevState.checked, filter], - })); - }; - - const filterOptions = results.reduce( - (acc, curr) => { - if (curr.kind && acc.kind.indexOf(curr.kind) < 0) { - acc.kind.push(curr.kind); - } - if (curr.lifecycle && acc.lifecycle.indexOf(curr.lifecycle) < 0) { - acc.lifecycle.push(curr.lifecycle); - } - return acc; - }, - { - kind: [] as Array, - lifecycle: [] as Array, - }, - ); - - return ( - <> - - {showFilters && ( - - - - )} - - toggleFilters(!showFilters)} - /> - } - /> - - - - ); -}; diff --git a/plugins/search/src/components/SearchBar/SearchBar.tsx b/plugins/search/src/components/SearchBar/SearchBar.tsx deleted file mode 100644 index a854869976..0000000000 --- a/plugins/search/src/components/SearchBar/SearchBar.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React, { useCallback } from 'react'; - -import { InputBaseProps } from '@material-ui/core'; - -import { - SearchBarBase as RealSearchBarBase, - useSearch, -} from '@backstage/plugin-search-react'; - -/** - * Props for {@link SearchBarBase}. - * - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export type SearchBarBaseProps = Omit & { - debounceTime?: number; - clearButton?: boolean; - onClear?: () => void; - onSubmit?: () => void; - onChange: (value: string) => void; -}; - -/** - * All search boxes exported by the search plugin are based on the , - * and this one is based on the component from Material UI. - * Recommended if you don't use Search Provider or Search Context. - * - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export const SearchBarBase = RealSearchBarBase; - -/** - * Props for {@link SearchBar}. - * - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export type SearchBarProps = Partial; - -/** - * Recommended search bar when you use the Search Provider or Search Context. - * - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export const SearchBar = ({ onChange, ...props }: SearchBarProps) => { - const { term, setTerm } = useSearch(); - - const handleChange = useCallback( - (newValue: string) => { - if (onChange) { - onChange(newValue); - } else { - setTerm(newValue); - } - }, - [onChange, setTerm], - ); - - return ; -}; diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx deleted file mode 100644 index 15ad348bd4..0000000000 --- a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { TestApiProvider } from '@backstage/test-utils'; -import { screen, render, waitFor, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import React from 'react'; -import { - SearchContextProvider, - useSearch, - searchApiRef, -} from '@backstage/plugin-search-react'; -import { SearchFilter } from './SearchFilter'; - -const SearchContextFilterSpy = ({ name }: { name: string }) => { - const { filters } = useSearch(); - const value = filters[name]; - return ( - - {Array.isArray(value) ? value.join(',') : value} - - ); -}; - -describe('SearchFilter.Autocomplete', () => { - const query = jest.fn().mockResolvedValue({}); - const emptySearchContext = { - term: '', - types: [], - filters: {}, - }; - - const name = 'field'; - const values = ['value1', 'value2']; - - it('renders as expected', async () => { - render( - - - - - , - ); - - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - await userEvent.click(input); - - await waitFor(() => { - screen.getByRole('listbox'); - }); - - expect(screen.getByRole('option', { name: values[0] })).toBeInTheDocument(); - expect(screen.getByRole('option', { name: values[1] })).toBeInTheDocument(); - }); - - it('renders as expected with async values', async () => { - render( - - - values} /> - - , - ); - - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - await userEvent.click(input); - - await waitFor(() => { - screen.getByRole('listbox'); - }); - - expect(screen.getByRole('option', { name: values[0] })).toBeInTheDocument(); - expect(screen.getByRole('option', { name: values[1] })).toBeInTheDocument(); - }); - - it('does not affect unrelated filter state', async () => { - render( - - - - - - - , - ); - - // The spy should show the initial value. - expect(screen.getByTestId('unrelated-filter-spy')).toHaveTextContent( - 'value', - ); - - // Select a value from the autocomplete filter. - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[1] })); - - // Wait for the autocomplete filter's value to change. - await waitFor(() => { - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values[1], - ); - }); - - // Unrelated filter spy should maintain the same value. - expect(screen.getByTestId('unrelated-filter-spy')).toHaveTextContent( - 'value', - ); - }); - - describe('single', () => { - it('renders as expected with defaultValue', async () => { - render( - - - - - - , - ); - - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - - await waitFor(() => { - expect(input).toHaveValue(values[1]); - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values[1], - ); - }); - }); - - it('renders as expected with initial context', async () => { - render( - - - - - - , - ); - - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - - await waitFor(() => { - expect(input).toHaveValue(values[0]); - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values[0], - ); - }); - }); - - it('sets filter state when selecting a value', async () => { - render( - - - - - - , - ); - - // Select the first option in the autocomplete. - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[0] })); - - // The value should be present in the context. - await waitFor(() => { - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values[0], - ); - }); - - // Click the "Clear" button to remove the value. - const clearButton = within(autocomplete).getByLabelText('Clear'); - await userEvent.click(clearButton); - - // That value should have been unset from the context. - await waitFor(() => { - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent(''); - }); - }); - }); - - describe('multiple', () => { - it('renders as expected with defaultValue', async () => { - render( - - - - - - , - ); - - await waitFor(() => { - expect(screen.getByText(values[0])).toBeInTheDocument(); - expect(screen.getByText(values[1])).toBeInTheDocument(); - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values.join(','), - ); - }); - }); - - it('renders as expected with initial context', async () => { - render( - - - - - - , - ); - - await waitFor(() => { - expect(screen.getByText(values[0])).toBeInTheDocument(); - expect(screen.getByText(values[1])).toBeInTheDocument(); - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values.join(','), - ); - }); - }); - - it('respects tag limit configuration', async () => { - render( - - - - - , - ); - - const autocomplete = screen.getByRole('combobox'); - const input = within(autocomplete).getByRole('textbox'); - - // Select the second value. - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[1] })); - await waitFor(() => { - expect( - screen.getByRole('button', { name: values[1] }), - ).toBeInTheDocument(); - }); - - // Select the first value. - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[0] })); - await waitFor(() => { - expect( - screen.getByRole('button', { name: values[0] }), - ).toBeInTheDocument(); - }); - - // Blur the field and only one tag should be shown with a +1. - input.blur(); - expect( - screen.queryByRole('button', { name: values[0] }), - ).not.toBeInTheDocument(); - expect(screen.getByText('+1')).toBeInTheDocument(); - }); - - it('sets filter state when selecting a value', async () => { - render( - - - - - - , - ); - - const autocomplete = screen.getByRole('combobox'); - - // Select both values in the autocomplete. - const input = within(autocomplete).getByRole('textbox'); - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[0] })); - await userEvent.click(input); - await waitFor(() => { - screen.getByRole('listbox'); - }); - await userEvent.click(screen.getByRole('option', { name: values[1] })); - - // Both options should be present in the context. - await waitFor(() => { - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent( - values.join(','), - ); - }); - - // Click the "Clear" button to remove the value. - const clearButton = within(autocomplete).getByLabelText('Clear'); - await userEvent.click(clearButton); - - // There should be no content in the filter context. - await waitFor(() => { - expect(screen.getByTestId(`${name}-filter-spy`)).toHaveTextContent(''); - }); - }); - }); -}); diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.tsx deleted file mode 100644 index 3db5112b88..0000000000 --- a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { SearchFilterComponentProps } from '@backstage/plugin-search-react'; - -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export type SearchAutocompleteFilterProps = SearchFilterComponentProps & { - filterSelectedOptions?: boolean; - limitTags?: number; - multiple?: boolean; -}; diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx deleted file mode 100644 index 2d652df483..0000000000 --- a/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx +++ /dev/null @@ -1,409 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import { screen, render, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import { SearchFilter } from './SearchFilter'; - -import { SearchContextProvider } from '@backstage/plugin-search-react'; -import { useApi } from '@backstage/core-plugin-api'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn().mockReturnValue({}), -})); - -describe('SearchFilter', () => { - const initialState = { - term: '', - filters: {}, - types: [], - }; - - const label = 'Field'; - const name = 'field'; - const values = ['value1', 'value2']; - const filters = { unrelated: 'unrelated' }; - - const query = jest.fn().mockResolvedValue({}); - (useApi as jest.Mock).mockReturnValue({ query: query }); - - afterAll(() => { - jest.resetAllMocks(); - }); - - it('Check that element was rendered and received props', async () => { - const CustomFilter = (props: { name: string }) =>
{props.name}
; - - render(); - - expect(screen.getByRole('heading', { name })).toBeInTheDocument(); - }); - - describe('Checkbox', () => { - it('Renders field name and values when provided as props', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - expect( - screen.getByRole('checkbox', { name: values[0] }), - ).toBeInTheDocument(); - expect( - screen.getByRole('checkbox', { name: values[1] }), - ).toBeInTheDocument(); - }); - - it('Renders correctly based on filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - expect( - screen.getByRole('checkbox', { name: values[0] }), - ).not.toBeChecked(); - expect(screen.getByRole('checkbox', { name: values[1] })).toBeChecked(); - }); - - it('Renders correctly based on defaultValue', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - expect(screen.getByRole('checkbox', { name: values[0] })).toBeChecked(); - expect( - screen.getByRole('checkbox', { name: values[1] }), - ).not.toBeChecked(); - }); - - it('Checking / unchecking a value sets filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - const checkBox = screen.getByRole('checkbox', { name: values[0] }); - - // Check the box. - await userEvent.click(checkBox); - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ filters: { field: [values[0]] } }), - ); - }); - - // Uncheck the box. - await userEvent.click(checkBox); - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ filters: {} }), - ); - }); - }); - - it('Checking / unchecking a value maintains unrelated filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - const checkBox = screen.getByRole('checkbox', { name: values[0] }); - - // Check the box. - await userEvent.click(checkBox); - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ - filters: { ...filters, field: [values[0]] }, - }), - ); - }); - - // Uncheck the box. - await userEvent.click(checkBox); - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ filters }), - ); - }); - }); - }); - - describe('Select', () => { - it('Renders field name and values when provided as props', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('button')); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - expect( - screen.getByRole('option', { name: values[0] }), - ).toBeInTheDocument(); - expect( - screen.getByRole('option', { name: values[1] }), - ).toBeInTheDocument(); - }); - - it('Renders values when provided asynchronously', async () => { - render( - - values} - /> - , - ); - - await waitFor(() => { - expect(screen.getByRole('button')).toBeInTheDocument(); - expect( - screen.getByRole('button').getAttribute('aria-disabled'), - ).not.toBe('true'); - }); - - await userEvent.click(screen.getByRole('button')); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - expect( - screen.getByRole('option', { name: values[0] }), - ).toBeInTheDocument(); - expect( - screen.getByRole('option', { name: values[1] }), - ).toBeInTheDocument(); - }); - - it('Renders correctly based on filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('button')); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - expect(screen.getByRole('option', { name: values[0] })).toHaveAttribute( - 'aria-selected', - 'true', - ); - expect( - screen.getByRole('option', { name: values[1] }), - ).not.toHaveAttribute('aria-selected'); - expect(screen.getByRole('option', { name: 'All' })).not.toHaveAttribute( - 'aria-selected', - ); - }); - - it('Renders correctly based on defaultValue', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('button')); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - expect(screen.getByRole('option', { name: values[0] })).toHaveAttribute( - 'aria-selected', - 'true', - ); - expect( - screen.getByRole('option', { name: values[1] }), - ).not.toHaveAttribute('aria-selected'); - expect(screen.getByRole('option', { name: 'All' })).not.toHaveAttribute( - 'aria-selected', - ); - }); - - it('Selecting a value sets filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - const button = screen.getByRole('button'); - - await userEvent.click(button); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('option', { name: values[0] })); - - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ - filters: { [name]: values[0] }, - }), - ); - }); - - await userEvent.click(button); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('option', { name: 'All' })); - - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ - filters: {}, - }), - ); - }); - }); - - it('Selecting a value maintains unrelated filter state', async () => { - render( - - - , - ); - - await waitFor(() => { - expect(screen.getByText(label)).toBeInTheDocument(); - }); - - const button = screen.getByRole('button'); - - await userEvent.click(button); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('option', { name: values[0] })); - - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ - filters: { ...filters, [name]: values[0] }, - }), - ); - }); - - await userEvent.click(button); - - await waitFor(() => { - expect(screen.getByRole('listbox')).toBeInTheDocument(); - }); - - await userEvent.click(screen.getByRole('option', { name: 'All' })); - - await waitFor(() => { - expect(query).toHaveBeenLastCalledWith( - expect.objectContaining({ filters }), - ); - }); - }); - }); -}); diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.tsx deleted file mode 100644 index e58bbd5c14..0000000000 --- a/plugins/search/src/components/SearchFilter/SearchFilter.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React, { ReactElement } from 'react'; - -import { - AutocompleteFilter, - CheckboxFilter, - SearchAutocompleteFilterProps, - SelectFilter, -} from '@backstage/plugin-search-react'; - -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export type SearchFilterComponentProps = { - className?: string; - name: string; - label?: string; - /** - * Either an array of values directly, or an async function to return a list - * of values to be used in the filter. In the autocomplete filter, the last - * input value is provided as an input to allow values to be filtered. This - * function is debounced and values cached. - */ - values?: string[] | ((partial: string) => Promise); - defaultValue?: string[] | string | null; - /** - * Debounce time in milliseconds, used when values is an async callback. - * Defaults to 250ms. - */ - valuesDebounceMs?: number; -}; - -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export type SearchFilterWrapperProps = SearchFilterComponentProps & { - component: (props: SearchFilterComponentProps) => ReactElement; - debug?: boolean; -}; - -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -const SearchFilter = ({ - component: Element, - ...props -}: SearchFilterWrapperProps) => ; - -/** - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -SearchFilter.Checkbox = ( - props: Omit & - SearchFilterComponentProps, -) => ; - -/** - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -SearchFilter.Select = ( - props: Omit & - SearchFilterComponentProps, -) => ; - -/** - * A control surface for a given filter field name, rendered as an autocomplete - * textfield. A hard-coded list of values may be provided, or an async function - * which returns values may be provided instead. - * - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -SearchFilter.Autocomplete = (props: SearchAutocompleteFilterProps) => ( - -); - -export { SearchFilter }; diff --git a/plugins/search/src/components/SearchFilter/index.ts b/plugins/search/src/components/SearchFilter/index.ts deleted file mode 100644 index 3050330038..0000000000 --- a/plugins/search/src/components/SearchFilter/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { SearchFilter } from './SearchFilter'; -export type { - SearchFilterComponentProps, - SearchFilterWrapperProps, -} from './SearchFilter'; -export type { SearchAutocompleteFilterProps } from './SearchFilter.Autocomplete'; diff --git a/plugins/search/src/components/SearchModal/SearchModal.stories.tsx b/plugins/search/src/components/SearchModal/SearchModal.stories.tsx index aad018c334..eac01cceb8 100644 --- a/plugins/search/src/components/SearchModal/SearchModal.stories.tsx +++ b/plugins/search/src/components/SearchModal/SearchModal.stories.tsx @@ -27,8 +27,8 @@ import { import { makeStyles } from '@material-ui/core/styles'; import React, { ComponentType } from 'react'; import { rootRouteRef } from '../../plugin'; -import { SearchBar } from '../SearchBar'; import { + SearchBar, DefaultResultListItem, searchApiRef, MockSearchApi, diff --git a/plugins/search/src/components/SearchPage/SearchPage.test.tsx b/plugins/search/src/components/SearchPage/SearchPage.test.tsx index 59e6e99aaf..459a541cbd 100644 --- a/plugins/search/src/components/SearchPage/SearchPage.test.tsx +++ b/plugins/search/src/components/SearchPage/SearchPage.test.tsx @@ -16,7 +16,7 @@ import { renderInTestApp } from '@backstage/test-utils'; import React from 'react'; -import { useLocation, useOutlet } from 'react-router'; +import { useLocation } from 'react-router'; import { useSearch } from '@backstage/plugin-search-react'; import { SearchPage } from './SearchPage'; @@ -50,11 +50,6 @@ jest.mock('@backstage/plugin-search-react', () => ({ }), })); -jest.mock('../LegacySearchPage', () => ({ - ...jest.requireActual('@backstage/plugin-search-react'), - LegacySearchPage: jest.fn().mockReturnValue('LegacySearchPageMock'), -})); - describe('SearchPage', () => { const origReplaceState = window.history.replaceState; @@ -96,13 +91,6 @@ describe('SearchPage', () => { expect(getByText('Route Children')).toBeInTheDocument(); }); - it('renders legacy search when no router children are provided', async () => { - (useOutlet as jest.Mock).mockReturnValueOnce(null); - const { getByText } = await renderInTestApp(); - - expect(getByText('LegacySearchPageMock')).toBeInTheDocument(); - }); - it('replaces window history with expected query parameters', async () => { (useSearch as jest.Mock).mockReturnValueOnce({ term: 'bieber', diff --git a/plugins/search/src/components/SearchPage/SearchPage.tsx b/plugins/search/src/components/SearchPage/SearchPage.tsx index 7145c7a5ef..f267918e12 100644 --- a/plugins/search/src/components/SearchPage/SearchPage.tsx +++ b/plugins/search/src/components/SearchPage/SearchPage.tsx @@ -23,7 +23,6 @@ import { useSearch, } from '@backstage/plugin-search-react'; import { JsonObject } from '@backstage/types'; -import { LegacySearchPage } from '../LegacySearchPage'; export const UrlUpdater = () => { const location = useLocation(); @@ -96,7 +95,7 @@ export const SearchPage = () => { return ( - {outlet || } + {outlet} ); }; diff --git a/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx b/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx deleted file mode 100644 index b1cad8d748..0000000000 --- a/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { renderInTestApp } from '@backstage/test-utils'; -import { waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import React from 'react'; -import { useSearch } from '@backstage/plugin-search-react'; -import { SearchResultPager } from './SearchResultPager'; - -jest.mock('@backstage/plugin-search-react', () => ({ - ...jest.requireActual('@backstage/plugin-search-react'), - useSearch: jest.fn().mockReturnValue({ - result: {}, - }), -})); - -describe('SearchResultPager', () => { - it('renders pager buttons', async () => { - const fetchNextPage = jest.fn(); - const fetchPreviousPage = jest.fn(); - (useSearch as jest.Mock).mockReturnValueOnce({ - result: { loading: false, value: [] }, - fetchNextPage, - fetchPreviousPage, - }); - - const { getByLabelText } = await renderInTestApp(); - - await waitFor(() => { - expect(getByLabelText('previous page')).toBeInTheDocument(); - }); - await userEvent.click(getByLabelText('previous page')); - expect(fetchPreviousPage).toBeCalled(); - - await waitFor(() => { - expect(getByLabelText('next page')).toBeInTheDocument(); - }); - await userEvent.click(getByLabelText('next page')); - - expect(fetchNextPage).toBeCalled(); - }); -}); diff --git a/plugins/search/src/components/SearchResultPager/SearchResultPager.tsx b/plugins/search/src/components/SearchResultPager/SearchResultPager.tsx deleted file mode 100644 index 287e485dd1..0000000000 --- a/plugins/search/src/components/SearchResultPager/SearchResultPager.tsx +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Button, makeStyles } from '@material-ui/core'; -import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos'; -import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos'; -import React from 'react'; -import { useSearch } from '@backstage/plugin-search-react'; - -const useStyles = makeStyles(theme => ({ - root: { - display: 'flex', - justifyContent: 'space-between', - gap: theme.spacing(2), - margin: theme.spacing(2, 0), - }, -})); - -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export const SearchResultPager = () => { - const { fetchNextPage, fetchPreviousPage } = useSearch(); - const classes = useStyles(); - - if (!fetchNextPage && !fetchPreviousPage) { - return <>; - } - - return ( - - ); -}; diff --git a/plugins/search/src/index.ts b/plugins/search/src/index.ts index fd0e70c61a..8e1db7c2b8 100644 --- a/plugins/search/src/index.ts +++ b/plugins/search/src/index.ts @@ -20,25 +20,8 @@ * @packageDocumentation */ -export { Filters, FiltersButton } from './components/Filters'; -export type { - FilterOptions, - FiltersState, - FiltersProps, - FiltersButtonProps, -} from './components/Filters'; export type { HomePageSearchBarProps } from './components/HomePageComponent'; -export { SearchBar, SearchBarBase } from './components/SearchBar'; -export type { - SearchBarBaseProps, - SearchBarProps, -} from './components/SearchBar'; -export { SearchFilter } from './components/SearchFilter'; -export type { - SearchAutocompleteFilterProps, - SearchFilterComponentProps, - SearchFilterWrapperProps, -} from './components/SearchFilter'; + export { SearchModal, SearchModalProvider, @@ -51,7 +34,6 @@ export type { SearchModalValue, } from './components/SearchModal'; export { SearchPage as Router } from './components/SearchPage'; -export { SearchResultPager } from './components/SearchResultPager'; export { SearchType } from './components/SearchType'; export type { SearchTypeAccordionProps, @@ -63,11 +45,9 @@ export type { SidebarSearchProps } from './components/SidebarSearch'; export type { SidebarSearchModalProps } from './components/SidebarSearchModal'; export { - DefaultResultListItem, HomePageSearchBar, SearchPage, searchPlugin as plugin, searchPlugin, - SearchResult, SidebarSearchModal, } from './plugin'; diff --git a/plugins/search/src/plugin.ts b/plugins/search/src/plugin.ts index 19fd501129..07a645f73e 100644 --- a/plugins/search/src/plugin.ts +++ b/plugins/search/src/plugin.ts @@ -15,11 +15,7 @@ */ import { SearchClient } from './apis'; -import { - searchApiRef, - SearchResult as RealSearchResult, - DefaultResultListItem as RealDefaultResultListItem, -} from '@backstage/plugin-search-react'; +import { searchApiRef } from '@backstage/plugin-search-react'; import { createApiFactory, createPlugin, @@ -64,12 +60,6 @@ export const SearchPage = searchPlugin.provide( }), ); -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export const SearchResult = RealSearchResult; - /** * @public */ @@ -85,12 +75,6 @@ export const SidebarSearchModal = searchPlugin.provide( }), ); -/** - * @public - * @deprecated Import from `@backstage/plugin-search-react` instead. - */ -export const DefaultResultListItem = RealDefaultResultListItem; - /** * @public */ diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index 02052d7593..fc0bab0a3d 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-sentry +## 0.4.0 + +### Minor Changes + +- 1b7c691a3b: Added the possibility to specify organization per component, now the annotation `sentry.io/project-slug` can have the format of `[organization]/[project-slug]` or just `[project-slug]`. + + **BREAKING**: The method `fetchIssue` changed the signature: + + ```diff + export interface SentryApi { + fetchIssues( + - project: string, + - statsFor: string, + - query?: string, + + entity: Entity, + + options: { + + statsFor: string; + + query?: string; + + }, + ): Promise; + } + ``` + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.4.0-next.3 ### Minor Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 4990827960..612b57c0d3 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.4.0-next.3", + "version": "0.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index b10f277885..beae0399bb 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-shortcuts +## 0.2.8 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.2.8-next.3 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 1d864a9e67..a47280f64c 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.2.8-next.3", + "version": "0.2.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,9 +24,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 0d6ef3a2b1..f63342285f 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-sonarqube +## 0.3.7 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 15201b1032: Updated dependency `rc-progress` to `3.4.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.7-next.3 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 5d14b6d017..c3f7df960c 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.3.7-next.3", + "version": "0.3.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,11 +36,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 354204d7a3..4b772e69ed 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-splunk-on-call +## 0.3.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + ## 0.3.31-next.3 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index bb3ad8b58a..188e744432 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.3.31-next.3", + "version": "0.3.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 6c19f2bfe4..1b952f8414 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-stack-overflow-backend +## 0.1.3 + +### Patch Changes + +- 52b4f796e3: app-config is now picked up properly. +- Updated dependencies + - @backstage/plugin-search-common@1.0.0 + ## 0.1.3-next.0 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 07cdbfb242..079c4961e6 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.1.3-next.0", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/plugin-search-common": "^1.0.0", "@backstage/config": "^1.0.1", "qs": "^6.9.4", "cross-fetch": "^3.1.5", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index 36a85b361d..553c7ae5b9 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-stack-overflow +## 0.1.3 + +### Patch Changes + +- 12ae3eed2f: - Publicly exports `StackOverflowIcon`. + - `HomePageStackOverflowQuestions` accepts optional icon property. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 52b4f796e3: app-config is now picked up properly. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-home@0.4.23 + - @backstage/theme@0.2.16 + ## 0.1.3-next.3 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 48f5165520..3023d47190 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.3-next.3", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,11 +24,11 @@ }, "dependencies": { "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/plugin-home": "^0.4.23-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/plugin-home": "^0.4.23", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index 9c509c4807..bdbcfd34c4 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.18 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/errors@1.1.0 + ## 0.1.18-next.2 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index a6fdfb69ce..17506bfdf1 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.18-next.2", + "version": "0.1.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-tech-insights-common": "^0.2.5-next.0", - "@backstage/plugin-tech-insights-node": "^0.3.2-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-tech-insights-common": "^0.2.5", + "@backstage/plugin-tech-insights-node": "^0.3.2", "ajv": "^8.10.0", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index b10f03269b..1aa753a236 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-tech-insights-backend +## 0.5.0 + +### Minor Changes + +- 818fa28d71: Allow FactRetrieverRegistry to be injected into buildTechInsightsContext so that we can override default registry implementation. +- 46cfda58aa: **BREAKING**: Update FactRetrieverRegistry interface to be async so that db backed implementations can be passed through to the FactRetrieverEngine. + + If you have existing custom `FactRetrieverRegistry` implementations, you'll need to remove the `retrievers` member and make all the methods async. + +### Patch Changes + +- 2ef58ab539: TechInsightsBackend: Added missing 'scheduler' to code examples +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- bcc122c46d: The `FactRetriever` model has been extended by adding optional title and description fields, allowing you to display them in the UI. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/catalog-client@1.0.4 + - @backstage/backend-tasks@0.3.3 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-tech-insights-node@0.3.2 + - @backstage/errors@1.1.0 + ## 0.5.0-next.3 ### Minor Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 3fefe0e1e7..646e7f6068 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.0-next.3", + "version": "0.5.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,14 +34,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-tech-insights-common": "^0.2.5-next.0", - "@backstage/plugin-tech-insights-node": "^0.3.2-next.1", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-tech-insights-common": "^0.2.5", + "@backstage/plugin-tech-insights-node": "^0.3.2", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -54,8 +54,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "@types/semver": "^7.3.8", "supertest": "^6.1.3", diff --git a/plugins/tech-insights-common/CHANGELOG.md b/plugins/tech-insights-common/CHANGELOG.md index 5713bbb1b3..241954b039 100644 --- a/plugins/tech-insights-common/CHANGELOG.md +++ b/plugins/tech-insights-common/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-tech-insights-common +## 0.2.5 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. + ## 0.2.5-next.0 ### Patch Changes diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index f06f33e9c1..f998b6f3c7 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-common", - "version": "0.2.5-next.0", + "version": "0.2.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index 69ff7c8b04..f60e6abb29 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights-node +## 0.3.2 + +### Patch Changes + +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- bcc122c46d: The `FactRetriever` model has been extended by adding optional title and description fields, allowing you to display them in the UI. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/plugin-tech-insights-common@0.2.5 + ## 0.3.2-next.1 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 1c05079cb5..07daae455f 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.3.2-next.1", + "version": "0.3.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,16 +33,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.14.1", "@backstage/config": "^1.0.1", - "@backstage/plugin-tech-insights-common": "^0.2.5-next.0", + "@backstage/plugin-tech-insights-common": "^0.2.5", "@backstage/types": "^1.0.0", "@types/luxon": "^2.0.5", "luxon": "^3.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.0" }, "files": [ "dist" diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index c2d408757e..3603de6b7d 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-tech-insights +## 0.2.3 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-tech-insights-common@0.2.5 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.3-next.3 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index bca772d70b..78aed08b60 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.2.3-next.3", + "version": "0.2.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -28,13 +28,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-tech-insights-common": "^0.2.5-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-tech-insights-common": "^0.2.5", + "@backstage/theme": "^0.2.16", "@backstage/types": "^1.0.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 471196a9a9..607fafac45 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-tech-radar +## 0.5.14 + +### Patch Changes + +- b8f608f1ec: Update tech-radar documentation on how to use an external json data source with dates. +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.5.14-next.3 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index ed1c37e2f7..23d613c870 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.5.14-next.3", + "version": "0.5.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index 0b524d9306..637dde1f5a 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-catalog@1.4.0 + - @backstage/core-app-api@1.0.4 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration-react@1.1.2 + - @backstage/test-utils@1.1.2 + - @backstage/plugin-techdocs@1.3.0 + - @backstage/theme@0.2.16 + ## 1.0.2-next.3 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index cf57a0c8aa..6804d5532f 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.2-next.3", + "version": "1.0.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,16 +32,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog": "^1.4.0-next.3", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/plugin-techdocs": "^1.2.1-next.3", - "@backstage/plugin-techdocs-react": "^1.0.2-next.2", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog": "^1.4.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/plugin-techdocs": "^1.3.0", + "@backstage/plugin-techdocs-react": "^1.0.2", + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,8 +56,8 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/dev-utils": "^1.0.4-next.3", + "@backstage/cli": "^0.18.0", + "@backstage/dev-utils": "^1.0.4", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 42b2505d3a..75a50cdda2 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-techdocs-backend +## 1.2.0 + +### Minor Changes + +- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 679b32172e: Updated dependency `knex` to `^2.0.0`. +- 726577958f: Add sample headings on the documented component homepage. +- Updated dependencies + - @backstage/plugin-techdocs-node@1.2.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/plugin-permission-common@0.6.3 + - @backstage/errors@1.1.0 + - @backstage/plugin-catalog-common@1.0.4 + ## 1.2.0-next.3 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 4a1016b417..ebf93a2443 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.2.0-next.3", + "version": "1.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,16 +34,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-catalog-common": "^1.0.4-next.0", - "@backstage/plugin-permission-common": "^0.6.3-next.1", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-techdocs-node": "^1.2.0-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-techdocs-node": "^1.2.0", "@types/express": "^4.17.6", "dockerode": "^3.3.1", "express": "^4.17.1", @@ -56,9 +56,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.26-next.3", - "@backstage/cli": "^0.18.0-next.3", - "@backstage/plugin-search-backend-node": "0.6.3-next.2", + "@backstage/backend-test-utils": "^0.1.26", + "@backstage/cli": "^0.18.0", + "@backstage/plugin-search-backend-node": "1.0.0", "@types/dockerode": "^3.3.0", "msw": "^0.44.0", "supertest": "^6.1.3" diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 827da822b0..255d21bf48 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 693990d4fe: Updated dependency `@react-hookz/web` to `^15.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/theme@0.2.16 + ## 1.0.2-next.3 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 7228295f0f..cc15040830 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.2-next.3", + "version": "1.0.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-techdocs-react": "^1.0.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/integration": "^1.2.2", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-techdocs-react": "^1.0.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,11 +51,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/plugin-techdocs-addons-test-utils": "^1.0.2-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/plugin-techdocs-addons-test-utils": "^1.0.2", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index e09c63cab9..3db4118b00 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-techdocs-node +## 1.2.0 + +### Minor Changes + +- 860765ff45: Added local publishing target directory `config`: `techdocs.publisher.local.publishDirectory` + +### Patch Changes + +- a5d73da942: Fix the flag parsing for `legacyCopyReadmeMdToIndexMd` in `techdocs-cli generate` command, and decouple it's logic from the `techdocs-ref` flag. +- d505b7b37d: Fixed issue with git feedback buttons not appearing automatically in docs pages. This was done by appending `repo_url` to the helper function `getRepoUrlFromLocationAnnotation`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/integration@1.2.2 + - @backstage/errors@1.1.0 + ## 1.2.0-next.3 ### Patch Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 04f24dca50..6563acb8e3 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.2.0-next.3", + "version": "1.2.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -42,12 +42,12 @@ "dependencies": { "@azure/identity": "^2.0.1", "@azure/storage-blob": "^12.5.0", - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/plugin-search-common": "^1.0.0", "@google-cloud/storage": "^6.0.0", "@trendyol-js/openstack-swift-sdk": "^0.0.5", "@types/express": "^4.17.6", @@ -64,7 +64,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/fs-extra": "^9.0.5", "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index ffc63b4c01..d2d82c83c9 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-techdocs-react +## 1.0.2 + +### Patch Changes + +- c3cfc83af2: Updated JSDoc to be MDX compatible. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + ## 1.0.2-next.2 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 6ad4fe4f9c..f8f3344438 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.0.2-next.2", + "version": "1.0.2", "private": false, "publishConfig": { "access": "public", @@ -35,9 +35,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", "@backstage/version-bridge": "^1.0.1", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,8 +56,8 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", - "@backstage/test-utils": "^1.1.2-next.2", - "@backstage/theme": "^0.2.16-next.1" + "@backstage/test-utils": "^1.1.2", + "@backstage/theme": "^0.2.16" }, "files": [ "alpha", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index c8b38e5a70..36b43c24ae 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/plugin-techdocs +## 1.3.0 + +### Minor Changes + +- ebf3eb1641: Use the same initial filter `owned` for the `TechDocsIndexPage` as for the `CatalogPage`. + + If you prefer to keep the previous behavior, you can change the default for the initial filter + to `all` (or `starred` if you rather prefer that). + + ``` + + ``` + + In general, with this change you will be able to set props at `TechDocsIndexPage`. + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- e2d7b76f43: Upgrade git-url-parse to 12.0.0. + + Motivation for upgrade is transitively upgrading parse-url which is vulnerable + to several CVEs detected by Snyk. + + - SNYK-JS-PARSEURL-2935944 + - SNYK-JS-PARSEURL-2935947 + - SNYK-JS-PARSEURL-2936249 + +- 3cbebf710e: Reorder browser tab title in Techdocs pages to have the site name first. +- 726577958f: Remove the 60% factor from the font size calculation of headers to use the exact size defined in BackstageTheme. +- 7739141ab2: Fix: When docs are shown in an entity page under the docs tab the sidebars start overlapping with the header and tabs in the page when you scroll the documentation content. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/plugin-techdocs-react@1.0.2 + - @backstage/plugin-search-react@1.0.0 + - @backstage/plugin-search-common@1.0.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/integration@1.2.2 + - @backstage/integration-react@1.1.2 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 1.2.1-next.3 ### Patch Changes diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index fa7c3c0f3d..ef037fbb05 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -45,15 +45,11 @@ export type ContentStateTypes = // @public export const DefaultTechDocsHome: ( - props: DefaultTechDocsHomeProps, + props: TechDocsIndexPageProps, ) => JSX.Element; -// @public -export type DefaultTechDocsHomeProps = { - initialFilter?: UserListFilterKind; - columns?: TableColumn[]; - actions?: TableProps['actions']; -}; +// @public @deprecated +export type DefaultTechDocsHomeProps = TechDocsIndexPageProps; // @public export const DocsCardGrid: (props: DocsCardGridProps) => JSX.Element | null; @@ -256,7 +252,14 @@ export type TechDocsCustomHomeProps = { export type TechDocsEntityMetadata = TechDocsEntityMetadata_2; // @public -export const TechDocsIndexPage: () => JSX.Element; +export const TechDocsIndexPage: (props: TechDocsIndexPageProps) => JSX.Element; + +// @public +export type TechDocsIndexPageProps = { + initialFilter?: UserListFilterKind; + columns?: TableColumn[]; + actions?: TableProps['actions']; +}; // @public @deprecated (undocumented) export type TechDocsMetadata = TechDocsMetadata_2; diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 79c575b566..da8085b91b 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.2.1-next.3", + "version": "1.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,18 +35,18 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", - "@backstage/integration-react": "^1.1.2-next.3", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/plugin-search-common": "^0.3.6-next.0", - "@backstage/plugin-search-react": "^0.2.2-next.3", - "@backstage/plugin-techdocs-react": "^1.0.2-next.2", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", + "@backstage/integration-react": "^1.1.2", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.0", + "@backstage/plugin-techdocs-react": "^1.0.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -67,10 +67,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx b/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx index bdbb4877ac..9b9b79ef66 100644 --- a/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx +++ b/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx @@ -19,39 +19,34 @@ import { Content, ContentHeader, SupportButton, - TableColumn, - TableProps, } from '@backstage/core-components'; import { CatalogFilterLayout, EntityListProvider, EntityOwnerPicker, EntityTagPicker, - UserListFilterKind, UserListPicker, } from '@backstage/plugin-catalog-react'; import { TechDocsPageWrapper } from './TechDocsPageWrapper'; import { TechDocsPicker } from './TechDocsPicker'; -import { DocsTableRow, EntityListDocsTable } from './Tables'; +import { EntityListDocsTable } from './Tables'; +import { TechDocsIndexPageProps } from './TechDocsIndexPage'; /** * Props for {@link DefaultTechDocsHome} * * @public + * @deprecated Please use `TechDocsIndexPageProps` instead. */ -export type DefaultTechDocsHomeProps = { - initialFilter?: UserListFilterKind; - columns?: TableColumn[]; - actions?: TableProps['actions']; -}; +export type DefaultTechDocsHomeProps = TechDocsIndexPageProps; /** * Component which renders a default documentation landing page. * * @public */ -export const DefaultTechDocsHome = (props: DefaultTechDocsHomeProps) => { - const { initialFilter = 'all', columns, actions } = props; +export const DefaultTechDocsHome = (props: TechDocsIndexPageProps) => { + const { initialFilter = 'owned', columns, actions } = props; return ( diff --git a/plugins/techdocs/src/home/components/TechDocsIndexPage.tsx b/plugins/techdocs/src/home/components/TechDocsIndexPage.tsx index 4467baf2a1..743f3e05d6 100644 --- a/plugins/techdocs/src/home/components/TechDocsIndexPage.tsx +++ b/plugins/techdocs/src/home/components/TechDocsIndexPage.tsx @@ -16,10 +16,24 @@ import React from 'react'; import { useOutlet } from 'react-router'; +import { TableColumn, TableProps } from '@backstage/core-components'; +import { UserListFilterKind } from '@backstage/plugin-catalog-react'; import { DefaultTechDocsHome } from './DefaultTechDocsHome'; +import { DocsTableRow } from './Tables'; -export const TechDocsIndexPage = () => { +/** + * Props for {@link TechDocsIndexPage} + * + * @public + */ +export type TechDocsIndexPageProps = { + initialFilter?: UserListFilterKind; + columns?: TableColumn[]; + actions?: TableProps['actions']; +}; + +export const TechDocsIndexPage = (props: TechDocsIndexPageProps) => { const outlet = useOutlet(); - return outlet || ; + return outlet || ; }; diff --git a/plugins/techdocs/src/home/components/index.ts b/plugins/techdocs/src/home/components/index.ts index d21f992cef..75053cd3c1 100644 --- a/plugins/techdocs/src/home/components/index.ts +++ b/plugins/techdocs/src/home/components/index.ts @@ -24,5 +24,6 @@ export type { TabsConfig, TechDocsCustomHomeProps, } from './TechDocsCustomHome'; +export type { TechDocsIndexPageProps } from './TechDocsIndexPage'; export * from './TechDocsPageWrapper'; export * from './TechDocsPicker'; diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index 285c9c463c..5cec68ed0a 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-todo-backend +## 0.1.31 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/catalog-client@1.0.4 + - @backstage/errors@1.1.0 + ## 0.1.31-next.2 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index b25fc3e41a..713805a0e4 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.31-next.2", + "version": "0.1.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,12 +29,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/catalog-client": "^1.0.4-next.2", - "@backstage/catalog-model": "^1.1.0-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/catalog-client": "^1.0.4", + "@backstage/catalog-model": "^1.1.0", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/integration": "^1.2.2-next.3", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.2.2", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -43,7 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/supertest": "^2.0.8", "msw": "^0.44.0", "supertest": "^6.1.3" diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index d9dde02575..a27dd5ce19 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-todo +## 0.2.9 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.9-next.3 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index f0412472b1..3f791f06e0 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.9-next.3", + "version": "0.2.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -30,12 +30,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index b833b0323a..5acbcf4277 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-user-settings +## 0.4.6 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + ## 0.4.6-next.3 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 5d0c083531..5dbc82aeac 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.4.6-next.3", + "version": "0.4.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index c159aa9ca8..8c61c9c01e 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-vault-backend +## 0.2.0 + +### Minor Changes + +- 5ebf2c7023: Throw exceptions instead of swallow them, remove some exported types from the `api-report`, small changes in the API responses & expose the vault `baseUrl` to the frontend as well + +### Patch Changes + +- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/backend-common@0.14.1 + - @backstage/backend-test-utils@0.1.26 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + ## 0.2.0-next.3 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index e0172dc803..72967ccfd6 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.2.0-next.3", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,11 +34,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", - "@backstage/backend-tasks": "^0.3.3-next.3", - "@backstage/backend-test-utils": "^0.1.26-next.3", + "@backstage/backend-common": "^0.14.1", + "@backstage/backend-tasks": "^0.3.3", + "@backstage/backend-test-utils": "^0.1.26", "@backstage/config": "^1.0.1", - "@backstage/errors": "^1.1.0-next.0", + "@backstage/errors": "^1.1.0", "@types/express": "*", "compression": "^1.7.4", "cors": "^2.8.5", @@ -51,7 +51,7 @@ "yn": "^5.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.0", "@types/compression": "^1.7.2", "@types/supertest": "^2.0.8", "msw": "^0.44.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 219c8e1474..ebdb08938a 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-vault +## 0.1.1 + +### Patch Changes + +- 7ee4abdcc9: Added a path notion in addition to secret name to allow to differentiate secrets in sub-paths +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- 5ebf2c7023: Export missing parameters and added them to the api-report. Also adapted the API to the expected response from the backend +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/catalog-model@1.1.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/plugin-catalog-react@1.1.2 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.1.1-next.3 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 3364323e13..8a3e02b072 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.1-next.3", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.0-next.3", - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/plugin-catalog-react": "^1.1.2-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.2", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 3af3a33967..07a7c98327 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-xcmetrics +## 0.2.27 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- 4e9a90e307: Updated dependency `luxon` to `^3.0.0`. +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. +- Updated dependencies + - @backstage/core-components@0.10.0 + - @backstage/core-plugin-api@1.0.4 + - @backstage/theme@0.2.16 + - @backstage/errors@1.1.0 + ## 0.2.27-next.3 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 1527789e44..d9aac59e3b 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.27-next.3", + "version": "0.2.27", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -24,10 +24,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.10.0-next.3", - "@backstage/core-plugin-api": "^1.0.4-next.0", - "@backstage/errors": "^1.1.0-next.0", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.0", + "@backstage/core-plugin-api": "^1.0.4", + "@backstage/errors": "^1.1.0", + "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", - "@backstage/core-app-api": "^1.0.4-next.1", - "@backstage/dev-utils": "^1.0.4-next.3", - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/cli": "^0.18.0", + "@backstage/core-app-api": "^1.0.4", + "@backstage/dev-utils": "^1.0.4", + "@backstage/test-utils": "^1.1.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 21a307b65a..32b27e06ca 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -209,8 +209,6 @@ const ALLOW_WARNINGS = [ 'plugins/azure-devops-common', 'plugins/badges', 'plugins/badges-backend', - 'plugins/bazaar', - 'plugins/bazaar-backend', 'plugins/bitrise', 'plugins/catalog', 'plugins/catalog-graphql', @@ -241,7 +239,6 @@ const ALLOW_WARNINGS = [ 'plugins/kafka', 'plugins/kafka-backend', 'plugins/kubernetes', - 'plugins/kubernetes-backend', 'plugins/kubernetes-common', 'plugins/lighthouse', 'plugins/newrelic', @@ -566,6 +563,11 @@ async function runApiExtraction({ `The API Report for ${packageDir} is not allowed to have warnings`, ); } + if (warningCountAfter === 0 && ALLOW_WARNINGS.includes(packageDir)) { + console.log( + `No need to allow warnings for ${packageDir}, it does not have any`, + ); + } if (warningCountAfter > warningCountBefore) { warnings.push( `The API Report for ${packageDir} introduces new warnings. ` + diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 5bb8e802d3..3863f311c4 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -7763,9 +7763,9 @@ style-to-object@0.3.0, style-to-object@^0.3.0: inline-style-parser "0.1.1" sucrase@^3.21.0: - version "3.23.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.23.0.tgz#2a7fa80a04f055fb2e95d2aead03fec1dba52838" - integrity sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ== + version "3.24.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.24.0.tgz#66a8f2cc845bc441706ce5f3056de283289067b6" + integrity sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA== dependencies: commander "^4.0.0" glob "7.1.6" diff --git a/yarn.lock b/yarn.lock index 4c635b191b..534947038b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,6 +41,14 @@ ajv-draft-04 "^1.0.0" call-me-maybe "^1.0.1" +"@apollo/explorer@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@apollo/explorer/-/explorer-1.1.1.tgz#58f539f01aaab573eb23c206c920cd742c4241e5" + integrity sha512-et9B4057irrakX2TnorKnOoez49db7O+d/t5TwYpdcYWA4eS5US6c0toOAAfSlusAPF3tCNr4uTZWM4Q9RhgrA== + dependencies: + graphql-ws "^5.9.0" + subscriptions-transport-ws "^0.11.0" + "@apollo/protobufjs@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz#4bd92cd7701ccaef6d517cdb75af2755f049f87c" @@ -1540,29 +1548,7 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@backstage/catalog-client@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.3.tgz#cb91472ccc31df322f69e7e4e80939b3535660cd" - integrity sha512-35Es9jFB9jOZTEtEeCyZHES0bcQkfX4qbmY1GuC6e6ZtO120w+595kmKxc744d7X2WXUIWvhRubqc9/w5blKbg== - dependencies: - "@backstage/catalog-model" "^1.0.3" - "@backstage/errors" "^1.0.0" - cross-fetch "^3.1.5" - -"@backstage/catalog-model@^1.0.0", "@backstage/catalog-model@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-1.0.3.tgz#0d7bd832add56650871b95894878540fc41a4ef9" - integrity sha512-rbXdA/CI8EzpsthlSI4JonLd4RZoki7IN6tFvivjKDMlW8IVb63BJXWO4VnvHH+LLYzH4/OaL051YeoaicdqYw== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/errors" "^1.0.0" - "@backstage/types" "^1.0.0" - ajv "^8.10.0" - json-schema "^0.4.0" - lodash "^4.17.21" - uuid "^8.0.0" - -"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.5": +"@backstage/core-components@^0.9.0": version "0.9.5" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.9.5.tgz#5a0b34867aaee0549bfa67b39a69c09588fa3c7a" integrity sha512-kfAdN70idiEqHeH9ZQryn6C0RxJEKiRc/7srYIz0CVV88zJfc0nmZ5C/S10Gkht2xWfm95tTSw2P1vEYIBbfxg== @@ -1607,171 +1593,6 @@ zen-observable "^0.8.15" zod "^3.11.6" -"@backstage/core-plugin-api@^1.0.0", "@backstage/core-plugin-api@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-1.0.3.tgz#32ecfec2afe1a25d02d41f1813621843121c2d7a" - integrity sha512-4/d9+c+AmqhY5KqsC8ikIcMsmXIcKP3+1/uT2H3/DxxJLx2sH7BvNVVqro5ZAhA7iNsuYdrfV0fHeNxGsdLuNA== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/types" "^1.0.0" - "@backstage/version-bridge" "^1.0.1" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/errors@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@backstage/errors/-/errors-1.0.0.tgz#08ebf53afdeaca32362955ea8551e8ffa0bb3cd7" - integrity sha512-2SpjdhH9ZOQ4RGEeu3/A7ARkl/1E9E6uBGQZ2DZOU4azTK1UZG/HE1KBMOThp3jL/8is2vOIJZLBA3r3DxLfVw== - dependencies: - "@backstage/types" "^1.0.0" - cross-fetch "^3.1.5" - serialize-error "^8.0.1" - -"@backstage/integration-react@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-1.1.1.tgz#936fd1441c47709fa8825360ea14ada26046b910" - integrity sha512-vCXErMhj90eW74A9gQwgKrc0Go5RXSEyM1wQV6+S91CZHYc3fdQJAfrxcmmUybGFtX2a2Yrmm67K8owG9WaYnQ== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/core-components" "^0.9.5" - "@backstage/core-plugin-api" "^1.0.3" - "@backstage/integration" "^1.2.1" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - react-use "^17.2.4" - -"@backstage/integration@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@backstage/integration/-/integration-1.2.1.tgz#a1931d240c2fbd304f0b87d54272709f4ffe83ed" - integrity sha512-9rXD1iIGhKRCfowxWx9sRKxiv1JvDI6ucvtUeXIj1G27kT/Xy7uUcgB8CkVxsvSeog5Z1VdYkFkDmQbKQ6GPrg== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/errors" "^1.0.0" - "@octokit/auth-app" "^3.4.0" - "@octokit/rest" "^18.5.3" - cross-fetch "^3.1.5" - git-url-parse "^11.6.0" - lodash "^4.17.21" - luxon "^2.0.2" - -"@backstage/plugin-catalog-common@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.3.tgz#96b1de2847fec0533c49ee19f93781777eedfd0d" - integrity sha512-Sf5IQocTRQaTh9ofZUy4/szWwDl5Eek6odKVx6v33jrMot5i3grybOELrVM3/Kgcr+5/ixSSopgQPUFO/T9KBA== - dependencies: - "@backstage/plugin-permission-common" "^0.6.2" - "@backstage/plugin-search-common" "^0.3.5" - -"@backstage/plugin-catalog-react@^1.0.0", "@backstage/plugin-catalog-react@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.1.1.tgz#0441bcf1291349ad355ff51e28245d7ea26a3e01" - integrity sha512-HxowTsFaNmAp+TEb0YgBak/61SkwwRV3tUdF5O2dQugbgI3Ci8dMjN2J18LiOEFS13m6IlrCpNC1Db3QMRjwBA== - dependencies: - "@backstage/catalog-client" "^1.0.3" - "@backstage/catalog-model" "^1.0.3" - "@backstage/core-components" "^0.9.5" - "@backstage/core-plugin-api" "^1.0.3" - "@backstage/errors" "^1.0.0" - "@backstage/integration" "^1.2.1" - "@backstage/plugin-catalog-common" "^1.0.3" - "@backstage/plugin-permission-common" "^0.6.2" - "@backstage/plugin-permission-react" "^0.4.2" - "@backstage/theme" "^0.2.15" - "@backstage/types" "^1.0.0" - "@backstage/version-bridge" "^1.0.1" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - classnames "^2.2.6" - jwt-decode "^3.1.0" - lodash "^4.17.21" - qs "^6.9.4" - react-router "6.0.0-beta.0" - react-use "^17.2.4" - yaml "^1.10.0" - zen-observable "^0.8.15" - -"@backstage/plugin-home@^0.4.19", "@backstage/plugin-home@^0.4.22": - version "0.4.22" - resolved "https://registry.npmjs.org/@backstage/plugin-home/-/plugin-home-0.4.22.tgz#efc54ebffb83a2a36dcd43e65142c30be5d8559d" - integrity sha512-0LPCyz1/nJraVdq+vkpS8g+8rnVTqY9oz5a+tOEnA6Beldlnd1xGa/qYfaH7s/5jFjd+XQRYoNw7qvioHLC16Q== - dependencies: - "@backstage/catalog-model" "^1.0.3" - "@backstage/config" "^1.0.1" - "@backstage/core-components" "^0.9.5" - "@backstage/core-plugin-api" "^1.0.3" - "@backstage/plugin-catalog-react" "^1.1.1" - "@backstage/plugin-stack-overflow" "^0.1.2" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - lodash "^4.17.21" - react-router "6.0.0-beta.0" - react-use "^17.2.4" - -"@backstage/plugin-permission-common@^0.6.2": - version "0.6.2" - resolved "https://registry.npmjs.org/@backstage/plugin-permission-common/-/plugin-permission-common-0.6.2.tgz#2ab5cf3d8a4a3394edc0d552719df4f34804bfbb" - integrity sha512-tbKjm0xw6stoaFzeWL59XRz/yEEXxnBMgm3ioNbh0Qdbj44z8KivjkDjWPovI5DW6x0jFxzLQYCNMlZxOpqL6A== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/errors" "^1.0.0" - cross-fetch "^3.1.5" - uuid "^8.0.0" - zod "^3.11.6" - -"@backstage/plugin-permission-react@^0.4.2": - version "0.4.2" - resolved "https://registry.npmjs.org/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.2.tgz#efc39619617e5800a68728871b87c772a0861711" - integrity sha512-isofTbK1gFgLTgr51efbFO0jWOkhQwzErL24pwY6gFVKnz7Z53AfGv1lHabxAWnNhEyTzLPMA/7s7lKuKEtOXw== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/core-plugin-api" "^1.0.3" - "@backstage/plugin-permission-common" "^0.6.2" - cross-fetch "^3.1.5" - react-router "6.0.0-beta.0" - react-use "^17.2.4" - swr "^1.1.2" - -"@backstage/plugin-search-common@^0.3.5": - version "0.3.5" - resolved "https://registry.npmjs.org/@backstage/plugin-search-common/-/plugin-search-common-0.3.5.tgz#6a374541f2bd7d9545e29abbaecc70e7ad1b5ea3" - integrity sha512-sq7IDjCLrgZQHBFi+lFVkna3lLRA5eldiTbit/rCUCO4Eq52lWdQHLrQAhsyuObmIWHDh6R2lp2qoL6aAC2AOg== - dependencies: - "@backstage/plugin-permission-common" "^0.6.2" - "@backstage/types" "^1.0.0" - -"@backstage/plugin-stack-overflow@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@backstage/plugin-stack-overflow/-/plugin-stack-overflow-0.1.2.tgz#bc140bb22d239a7106f91ea1d4c637551dc91ca5" - integrity sha512-6phLbR7E/iZjuNFFStsO2zcJYDijPTS8WEyxhM/rX1Q/OeliMgGBs8V4j1hfHgcjjLz4PPI+EDz/+eeDMi1c4w== - dependencies: - "@backstage/config" "^1.0.1" - "@backstage/core-components" "^0.9.5" - "@backstage/core-plugin-api" "^1.0.3" - "@backstage/plugin-home" "^0.4.22" - "@backstage/plugin-search-common" "^0.3.5" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@testing-library/jest-dom" "^5.10.1" - cross-fetch "^3.1.5" - lodash "^4.17.21" - qs "^6.9.4" - react-use "^17.2.4" - -"@backstage/theme@^0.2.15", "@backstage/theme@^0.2.6", "@backstage/theme@^0.2.7", "@backstage/theme@^0.2.9": - version "0.2.15" - resolved "https://registry.npmjs.org/@backstage/theme/-/theme-0.2.15.tgz#478491c9bca9dca85d5af08767ba512eabcd3669" - integrity sha512-Srl5q0X47tFofw6wuElkUqtlbYSfA3J3zlfN6jcQF4801mTrFRw+pVxZmrdxayt4gUzCN+me3mO7tij6F6xQUQ== - dependencies: - "@material-ui/core" "^4.12.2" - "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -1826,9 +1647,9 @@ "@changesets/types" "^5.0.0" "@changesets/cli@^2.14.0": - version "2.23.1" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.23.1.tgz#3ab7f26db865ed0ca3185ec6919e1a62e9c7fcbd" - integrity sha512-yXQ29Iw/26yq1oJpOCa7BJDeUvuurZmREmCX9p9m5RxlKNDnROJBylQDCVfqQdZbeV2jfvd3XRKvci80SvGssg== + version "2.23.2" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.23.2.tgz#f32d3d9388816721419cff204010b64a864c950e" + integrity sha512-o7CWC+mcwOmA3yK5axqHOSYPYEjX/x+nq/s9aX78AyzH1SQZa6L5HX4P9uUXibyjcKynklkmusxv8vN8+hJggA== dependencies: "@babel/runtime" "^7.10.4" "@changesets/apply-release-plan" "^6.0.1" @@ -2252,19 +2073,7 @@ delay "^5.0.0" ky "0.28.7" -"@gitbeaker/core@^35.6.0": - version "35.7.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.7.0.tgz#426e426dff597c1d094bf1fe66fb1109980e816d" - integrity sha512-1N9QcHElYa1NuLhX9mJJ6tnL7wbCsK8Naj2kLXwNC4qyEcDhMiJDnI3YoqNIXSzPTufoNUAbgIsc/h/JmO17/A== - dependencies: - "@gitbeaker/requester-utils" "^35.7.0" - form-data "^4.0.0" - li "^1.3.0" - mime "^3.0.0" - query-string "^7.0.0" - xcase "^2.0.1" - -"@gitbeaker/core@^35.7.0": +"@gitbeaker/core@^35.6.0", "@gitbeaker/core@^35.7.0": version "35.7.0" resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.7.0.tgz#426e426dff597c1d094bf1fe66fb1109980e816d" integrity sha512-1N9QcHElYa1NuLhX9mJJ6tnL7wbCsK8Naj2kLXwNC4qyEcDhMiJDnI3YoqNIXSzPTufoNUAbgIsc/h/JmO17/A== @@ -2277,23 +2086,14 @@ xcase "^2.0.1" "@gitbeaker/node@^35.1.0": - version "35.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.6.0.tgz#7dffaf2de5df822ccc835d12129efe3e52c49302" - integrity sha512-cJBxZdh8elrdLA8V4yEdISGinycESNaIO8JEIyAhemsovqv29XCJ40A9TBA4RlKNjkKVyVSN23BvcZimgqZSzA== + version "35.7.0" + resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.7.0.tgz#ba4ece7aff388132bdcab8d6fb08c8d063a70e7d" + integrity sha512-zh215EUloAxj2gwTHevBVypEiiwQR0WsFLGPWJwY+yUFJVQRcya+3mcsDbxgCLAk00wwhrTVYyNppvmoYbEZNg== dependencies: - "@gitbeaker/core" "^35.6.0" - "@gitbeaker/requester-utils" "^35.6.0" + "@gitbeaker/core" "^35.7.0" + "@gitbeaker/requester-utils" "^35.7.0" delay "^5.0.0" - got "11.8.3" - xcase "^2.0.1" - -"@gitbeaker/requester-utils@^35.6.0": - version "35.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.6.0.tgz#41e5008f64f5910b3c0793488a2a41b23c9f081f" - integrity sha512-5IVzv1gO626qaC7CEV7LUG68IHgEjWovIHXQsbI9MraxhrI9eSV5/l/81Povv7tJlni7u8OnARPU7bmxlXlx7g== - dependencies: - form-data "^4.0.0" - qs "^6.10.1" + got "^11.8.3" xcase "^2.0.1" "@gitbeaker/requester-utils@^35.7.0": @@ -2341,9 +2141,9 @@ integrity sha512-91ArYvRgXWb73YvEOBMmOcJc0bDRs5yiVHnqkwoG0f3nm7nZuipllz6e7BvFESBvjkDTBC0zMD8QxedUwNLc1A== "@google-cloud/storage@^6.0.0": - version "6.2.2" - resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.2.2.tgz#1fd3ee85e5fea55a9696c98769d097b28ff4d775" - integrity sha512-KhAOxmGfmELKKn6cdvgGfAi/YBLi19hI1jX3QI7xQmbeajSFMgUKrIPbbyfMIxQPOEQ9vG0MQX1uganlA/HTRA== + version "6.2.3" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.2.3.tgz#e3dae8708488cf2e0e4fbf0488083d9d279ee097" + integrity sha512-UJqn3Ln8wFBPLuwBaNu3PlhzQDL3EKKfP1+3mzLRQhcFqgpBSMPLDgAXxc6e9S0l0kqsi4GOuAA7fA+l/VAMjQ== dependencies: "@google-cloud/paginator" "^3.0.7" "@google-cloud/projectify" "^3.0.0" @@ -2366,10 +2166,10 @@ teeny-request "^8.0.0" uuid "^8.0.0" -"@graphiql/react@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@graphiql/react/-/react-0.5.1.tgz#03c89fbe9ae8258b72ac744f2a0cb3d102b9fa9a" - integrity sha512-xkmi9RhjnIlbkCndLDDfYsEAv5M0AIbziPmRcJIFypPWoS917Qoej+AjWYgmx1VCyNry/pWlPB9BM+aU1CGeIQ== +"@graphiql/react@^0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@graphiql/react/-/react-0.5.2.tgz#5beb7bab57103d72efbaaace57157b11efd4b2ce" + integrity sha512-8rfyrFOrZaG/fWHE4nX7XApuiNCd89XatvdJSO1ndXDUz94W3Ob0DHKufWpxXJ7RtJUNat25K+zrLYUP+C2iQw== dependencies: "@graphiql/toolkit" "^0.6.0" codemirror "^5.65.3" @@ -2389,9 +2189,9 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.8.0" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.8.0.tgz#ef596fc1afc18d5641e03a3caa0976270e570ca7" - integrity sha512-qpLnfWLd7M6ISlXN5c9WPwUE9iZkzS6996hwlvKcYpyGWj10ZtDcEQpH+NFoNjNP3Bu+QOSt6gSnpnCnajwadA== + version "2.8.1" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.8.1.tgz#8e8f70417f3a0e87f266953c41c6424c6e76b473" + integrity sha512-o+Za1483WhnbMA5G4JJq72EeqXROsdEiDTfUTxtX1iPPebv+VMekTFfHnBCUXpes0XTeZViXTd16AX6cmtUF4Q== dependencies: "@graphql-codegen/core" "2.6.0" "@graphql-codegen/plugin-helpers" "^2.5.0" @@ -2421,6 +2221,7 @@ mkdirp "^1.0.4" string-env-interpolation "^1.0.1" ts-log "^2.2.3" + tslib "^2.4.0" yaml "^1.10.0" yargs "^17.0.0" @@ -3426,9 +3227,9 @@ integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== "@jridgewell/resolve-uri@^3.0.3": - version "3.0.8" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz#687cc2bbf243f4e9a868ecf2262318e2658873a1" - integrity sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w== + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" @@ -3470,9 +3271,9 @@ integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw== "@keyv/redis@^2.2.3": - version "2.3.7" - resolved "https://registry.npmjs.org/@keyv/redis/-/redis-2.3.7.tgz#4f6f6d85be07668a976bb3c9d910c57d1ab12c70" - integrity sha512-aBxnl2Bt1D7JUXQwdO9dDOBJi3VmKO5yfIiwxvEr/hVSryho0Zn1EuWr3fi6UE8WYw5X8FPUyD6h5wuVQreQsA== + version "2.3.8" + resolved "https://registry.npmjs.org/@keyv/redis/-/redis-2.3.8.tgz#8939a91e5b5d49da43005cf363a63fe475e1a19d" + integrity sha512-zzk/6TiuxqBcQd8vJDJaxTJDrbLDNaiRlLKDgpSB+xYBjd4NJK5Fl8YIPV9A+oteroJtwGgwdML9VJRXmaus3A== dependencies: ioredis "^5.1.0" @@ -4480,6 +4281,18 @@ outvariant "^1.2.1" strict-event-emitter "^0.2.0" +"@mswjs/interceptors@^0.16.3": + version "0.16.6" + resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.16.6.tgz#c1a777ed3f69b55bbbc725b2deb827f160c0107c" + integrity sha512-7ax1sRx5s4ZWl0KvVhhcPOUoPbCCkVh8M8hYaqOyvoAQOiqLVzy+Z6Mh2ywPhYw4zudr5Mo/E8UT/zJBO/Wxrw== + dependencies: + "@open-draft/until" "^1.0.3" + "@xmldom/xmldom" "^0.7.5" + debug "^4.3.3" + headers-polyfill "^3.0.4" + outvariant "^1.2.1" + strict-event-emitter "^0.2.4" + "@mswjs/interceptors@^0.17.2": version "0.17.2" resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.2.tgz#a1d1cd8ef98b944c91d9fe202f27a68ec3673b88" @@ -4818,35 +4631,19 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@octokit/app@^13.0.0": - version "13.0.3" - resolved "https://registry.npmjs.org/@octokit/app/-/app-13.0.3.tgz#6a438e2ab555a27f09f48e4887e650bdce0347eb" - integrity sha512-eJA7jtKtTTYTfVxf/gBmxLpYjAud4FXQdMMY89AuMcyFboHS9XsI/zUJ0xXdMW0G4yNKPxqAt+KWsUJivtrXpA== +"@octokit/app@^13.0.5": + version "13.0.5" + resolved "https://registry.npmjs.org/@octokit/app/-/app-13.0.5.tgz#5abc95f90666b0f3b5f48a343eff664209906843" + integrity sha512-3YoDyuQmC3kWWSio5pEOmLu1x8il3GnTYY5W0Ecni79btXhNIf6yVTZNJ5q541UNKWnNtejTBLYs2PcXwQg2ew== dependencies: "@octokit/auth-app" "^4.0.0" "@octokit/auth-unauthenticated" "^3.0.0" "@octokit/core" "^4.0.0" - "@octokit/oauth-app" "^3.3.2" - "@octokit/plugin-paginate-rest" "^2.13.3" + "@octokit/oauth-app" "^4.0.4" + "@octokit/plugin-paginate-rest" "^3.0.0" "@octokit/types" "^6.27.1" "@octokit/webhooks" "^10.0.0" -"@octokit/auth-app@^3.4.0": - version "3.6.1" - resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" - integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== - dependencies: - "@octokit/auth-oauth-app" "^4.3.0" - "@octokit/auth-oauth-user" "^1.2.3" - "@octokit/request" "^5.6.0" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.0.3" - "@types/lru-cache" "^5.1.0" - deprecation "^2.3.1" - lru-cache "^6.0.0" - universal-github-app-jwt "^1.0.1" - universal-user-agent "^6.0.0" - "@octokit/auth-app@^4.0.0": version "4.0.4" resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.4.tgz#e774da352e7c9d0648d5d0fdf0fb75cd6a16c2af" @@ -4863,19 +4660,6 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-app@^4.0.0", "@octokit/auth-oauth-app@^4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea" - integrity sha512-cETmhmOQRHCz6cLP7StThlJROff3A/ln67Q961GuIr9zvyFXZ4lIJy9RE6Uw5O7D8IXWPU3jhDnG47FTSGQr8Q== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/auth-oauth-user" "^1.2.1" - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.3" - "@types/btoa-lite" "^1.0.0" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-app@^5.0.0": version "5.0.1" resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.1.tgz#294b5edd780d2fca296ade2aa21feba7690c2ac7" @@ -4909,30 +4693,6 @@ "@octokit/types" "^6.10.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3": - version "1.2.4" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.2.4.tgz#3594eb7d40cb462240e7e90849781dfa0045aed5" - integrity sha512-efOajupCZBP1veqx5w59Qey0lIud1rDUgxTRjjkQDU3eOBmkAasY1pXemDsQwW0I85jb1P/gn2dMejedVxf9kw== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/oauth-methods" "^1.1.0" - "@octokit/request" "^5.4.14" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - -"@octokit/auth-oauth-user@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz#da4e4529145181a6aa717ae858afb76ebd6e3360" - integrity sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/oauth-methods" "^1.1.0" - "@octokit/request" "^5.4.14" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-user@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.0.0.tgz#7fe448bb06a4c55102098dd7105670e723d2f7ec" @@ -4959,14 +4719,6 @@ dependencies: "@octokit/types" "^6.0.3" -"@octokit/auth-unauthenticated@^2.0.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-2.1.0.tgz#ef97de366836e09f130de4e2205be955f9cf131c" - integrity sha512-+baofLfSL0CAv3CfGQ9rxiZZQEX8VNJMGuuS4PgrMRBUL52Ho5+hQYb63UJQshw7EXYMPDZxbXznc0y33cbPqw== - dependencies: - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.0.3" - "@octokit/auth-unauthenticated@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.0.tgz#6ef7039c11c7e0dd46dd1cabff8aa4bff4f976a1" @@ -4987,19 +4739,6 @@ before-after-hook "^2.1.0" universal-user-agent "^6.0.0" -"@octokit/core@^3.3.2", "@octokit/core@^3.5.1": - version "3.5.1" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" - integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.0" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - "@octokit/core@^4.0.0": version "4.0.2" resolved "https://registry.npmjs.org/@octokit/core/-/core-4.0.2.tgz#4eaf9c5fd39913b541c5e31a2b8fdc3cf50480bc" @@ -5013,6 +4752,19 @@ before-after-hook "^2.2.0" universal-user-agent "^6.0.0" +"@octokit/core@^4.0.4": + version "4.0.4" + resolved "https://registry.npmjs.org/@octokit/core/-/core-4.0.4.tgz#335d9b377691e3264ce57a9e5a1f6cda783e5838" + integrity sha512-sUpR/hc4Gc7K34o60bWC7WUH6Q7T6ftZ2dUmepSyJr9PRF76/qqkWjE2SOEzCqLA5W83SaISymwKtxks+96hPQ== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^6.0.3" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + "@octokit/endpoint@^6.0.1": version "6.0.3" resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" @@ -5049,25 +4801,22 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/oauth-app@^3.3.2", "@octokit/oauth-app@^3.5.1": - version "3.6.0" - resolved "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-3.6.0.tgz#36f660c7eb6b5a5cd23f6207a8d95e74b6834db0" - integrity sha512-OxPw4ItQXaC2GuEXyZB7EmZ2rHvNFX4y3yAsqdFIRW7qg2HyoEPxacxza6c8wqbEEvu84b98AJ5BXm+IjPWrww== +"@octokit/oauth-app@^4.0.4", "@octokit/oauth-app@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.0.6.tgz#6ec4f8dd9b370cd43ab269f5e44195c5adc5b234" + integrity sha512-78+bfyD8Un2QLnBh7zCPOIywi4HU/P6kCjWmhjh3/GpqTMByXf5J37c7VYNHUFJlijMhc4AiKF8O8FDxbZaPAw== dependencies: - "@octokit/auth-oauth-app" "^4.0.0" - "@octokit/auth-oauth-user" "^1.3.0" - "@octokit/auth-unauthenticated" "^2.0.0" - "@octokit/core" "^3.3.2" - "@octokit/oauth-authorization-url" "^4.2.1" - "@octokit/oauth-methods" "^1.2.2" + "@octokit/auth-oauth-app" "^5.0.0" + "@octokit/auth-oauth-user" "^2.0.0" + "@octokit/auth-unauthenticated" "^3.0.0" + "@octokit/core" "^4.0.0" + "@octokit/oauth-authorization-url" "^5.0.0" + "@octokit/oauth-methods" "^2.0.0" "@types/aws-lambda" "^8.10.83" fromentries "^1.3.1" universal-user-agent "^6.0.0" - -"@octokit/oauth-authorization-url@^4.2.1": - version "4.3.3" - resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz#6a6ef38f243086fec882b62744f39b517528dfb9" - integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== + optionalDependencies: + aws-lambda "^1.0.7" "@octokit/oauth-authorization-url@^4.3.1": version "4.3.1" @@ -5090,17 +4839,6 @@ "@octokit/types" "^6.12.2" btoa-lite "^1.0.0" -"@octokit/oauth-methods@^1.2.2": - version "1.2.6" - resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" - integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== - dependencies: - "@octokit/oauth-authorization-url" "^4.3.1" - "@octokit/request" "^5.4.14" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - "@octokit/oauth-methods@^2.0.0": version "2.0.2" resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.2.tgz#91285b972b80569f2cdc07986923c8c240bcac24" @@ -5137,20 +4875,6 @@ resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^2.13.3": - version "2.17.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" - integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== - dependencies: - "@octokit/types" "^6.34.0" - -"@octokit/plugin-paginate-rest@^2.18.0": - version "2.19.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.19.0.tgz#b52eae6ecacfa1f5583dc2cc0985cfbed3ca78b0" - integrity sha512-hQ4Qysg2hNmEMuZeJkvyzM4eSZiTifOKqYAMsW8FnxFKowhuwWICSgBQ9Gn9GpUmgKB7qaf1hFvMjYaTAg5jQA== - dependencies: - "@octokit/types" "^6.36.0" - "@octokit/plugin-paginate-rest@^2.6.2": version "2.7.0" resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" @@ -5183,14 +4907,6 @@ "@octokit/types" "^6.16.2" deprecation "^2.3.1" -"@octokit/plugin-rest-endpoint-methods@^5.14.0": - version "5.15.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.15.0.tgz#6c8251b55c33315a6e53e5b55654f72023ed5049" - integrity sha512-Gsw9+Xm56jVhfbJoy4pt6eOOyf8/3K6CAnx1Sl7U2GhZWcg8MR6YgXWnpfdF69S2ViMXLA7nfvTDAsZpFlkLRw== - dependencies: - "@octokit/types" "^6.36.0" - deprecation "^2.3.1" - "@octokit/plugin-rest-endpoint-methods@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.0.0.tgz#e4a55d83ec5a00e6b4d7a780f4ec9009095bff6f" @@ -5207,7 +4923,7 @@ "@octokit/types" "^6.0.3" bottleneck "^2.15.3" -"@octokit/plugin-throttling@^4.0.0": +"@octokit/plugin-throttling@^4.0.1": version "4.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-4.0.1.tgz#06cd4af959a98fe601d780d3476063f249b5eec1" integrity sha512-CWAM7+3XkkmzwAd4FrI4+ogOd5oAmMJER8/6AYDTb4ErGuvSdSSGeI5jFw6quNj7qNV7TvSWLTnNgRjSdBEE2A== @@ -5233,7 +4949,7 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0", "@octokit/request@^5.6.3": +"@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0", "@octokit/request@^5.6.3": version "5.6.3" resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== @@ -5246,9 +4962,9 @@ universal-user-agent "^6.0.0" "@octokit/request@^6.0.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@octokit/request/-/request-6.1.0.tgz#80bdac78dff583a8fa0978baeda139a71d98d10c" - integrity sha512-36V+sP4bJli31TRq8sea3d/Q1XGgZ9cnqpsegkLCnvpu+hoYephSkxGlWg4KB6dyUM1IWPXVrLFOKYzObQ+MZg== + version "6.2.0" + resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz#9c25606df84e6f2ccbcc2c58e1d35438e20b688b" + integrity sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" @@ -5291,14 +5007,14 @@ dependencies: "@octokit/openapi-types" "^7.3.2" -"@octokit/types@^6.27.1", "@octokit/types@^6.34.0": +"@octokit/types@^6.27.1": version "6.34.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== dependencies: "@octokit/openapi-types" "^11.2.0" -"@octokit/types@^6.35.0", "@octokit/types@^6.36.0": +"@octokit/types@^6.35.0": version "6.37.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.37.0.tgz#32eb78edb34cf5cea4ba5753ab8db75b776d617a" integrity sha512-BXWQhFKRkjX4dVW5L2oYa0hzWOAqsEsujXsQLSdepPoDZfYdubrD1KDGpyNldGXtR8QM/WezDcxcIN1UKJMGPA== @@ -5317,19 +5033,19 @@ resolved "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.0.tgz#4f4443605233f46abc5f85a857ba105095aa1181" integrity sha512-FAIyAchH9JUKXugKMC17ERAXM/56vVJekwXOON46pmUDYfU7uXB4cFY8yc8nYr5ABqVI7KjRKfFt3mZF7OcyUA== -"@octokit/webhooks-types@6.2.2": - version "6.2.2" - resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.2.2.tgz#adbec417f2061c3148d757bf39f8831af6d45b68" - integrity sha512-CUxPFTKtGq13ja9PC+DoOMpeuWOlLWcfzWSOH29TjI1LHU7p+6Ppb0KH5weCV0tXvdfZdeZrg7UMenGsVOcFGA== +"@octokit/webhooks-types@6.2.3": + version "6.2.3" + resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.2.3.tgz#9ef209ecf542f1c4c4e16bd00aea0638889e116d" + integrity sha512-m2J23W6QZeB7KOMHSgTZG8F0mXqqWlWrVzn41Zj4l2umHb6H3Z+rqFsryTNBTZuUiO7YFOFqYaTtlSGHC5CgUg== "@octokit/webhooks@^10.0.0": - version "10.0.7" - resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.0.7.tgz#cb1a0add18d5e5a5ba796582b506b3bc725ca380" - integrity sha512-6zuCl1ho1f4VKkh10Efth24Kpe6wN6gyI0YCxNW/St7AmsW0hhkA2Fg0IJcxfitdchCqXUcATHTTqPcuNBED2Q== + version "10.0.8" + resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.0.8.tgz#e8fae861432411d80cade44e7d3725ba8613a4cf" + integrity sha512-B6TfNTPDf8y5WqzlT5jmeYaYSf6oT7NhkelcetaDT7PP9btu1iaIKWZG+1DFRm1CBQE9HIHdh9rR65qq64m/5g== dependencies: "@octokit/request-error" "^3.0.0" "@octokit/webhooks-methods" "^3.0.0" - "@octokit/webhooks-types" "6.2.2" + "@octokit/webhooks-types" "6.2.3" aggregate-error "^3.1.0" "@open-draft/until@^1.0.3": @@ -5718,25 +5434,25 @@ resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@spotify/eslint-config-base@^13.0.0": - version "13.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-13.0.0.tgz#bb748bb2b705ffb5085f873aa0daf94dfad59985" - integrity sha512-BrnexUcUQkp6XUw8HWSmE4LpWtJGgEC6A7vrSkgpgKJtZaYkpw8O+Xnk60DA266ecbFHYbQD6ngqKHlvjNB+pA== +"@spotify/eslint-config-base@^14.0.0": + version "14.0.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-14.0.1.tgz#a67a1aff30e20ce6f5d83895d52609af18d7d33f" + integrity sha512-wT3ejMg81CrOhrGlt2HwqgiDQI7mdY3AkzfhR+AlZZM9FFL+7QEvQYeejlfATu2UPOJbEU8C1WsL9XMKKlC+8g== -"@spotify/eslint-config-react@^13.0.0": - version "13.0.1" - resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-13.0.1.tgz#f309f5d3c53ef1e2c7c6ce05f76ee681970112c3" - integrity sha512-gyC0CtJ2H9K57HyQG5/RcMsJiB6qmVbBHOHWukZcPLfYtwkK201kgMjHrVfJXoSN+mJxcWhDVPxqe+eA7LHshQ== +"@spotify/eslint-config-react@^14.0.0": + version "14.0.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-14.0.1.tgz#8269c4c4267e8cec8d7e2252b65831651aa31023" + integrity sha512-Ap3gLGoKsvX4WtclaBaLKVpmnOU2G52k/2c0C1XO98Vix1gBmN1aR2ZMrfv1qq+W7P6LsPt/+YQfkT8M1qNaxQ== -"@spotify/eslint-config-typescript@^13.0.0": - version "13.0.1" - resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-13.0.1.tgz#47801a66d5569074a110f4422eba60aafc6bd7f8" - integrity sha512-1wLQFyN2H2v+rn/mytA2PGzmGxOmdZdcKBpNyW+4z0qJydpvavp2SeBj/X+FEbwKoYBoUdG9QLr40eLQh1ZHZA== +"@spotify/eslint-config-typescript@^14.0.0": + version "14.0.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-14.0.1.tgz#850a435b0defebbb3de591d83e3fc369bbc51753" + integrity sha512-y/8on49Wtg3HvKd9A32Q7iJaOgngcSJR8hjGx/POFhJFcPRcZuTJSlhd31CF8fg78bMuzdvYH8au7FhNKjnEVw== -"@spotify/prettier-config@^13.0.0": - version "13.0.1" - resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-13.0.1.tgz#0fdceb3d4ab543259ce6adc0ec1d10e34898b812" - integrity sha512-oVd4hjx2+y0MeUdk1l+ItwVLwlrDlvTlGwXBWMMzPYc7DLyxuxFvDfoHGkAQkrikfAgtdnzxrW6u9a8ywUqdfw== +"@spotify/prettier-config@^14.0.0": + version "14.0.1" + resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-14.0.1.tgz#a3a2342ec07693647ab76a64a623fbb79d464fa7" + integrity sha512-NHT7IpIVOsAMhPfDVf1S/jfq59j7d2ru3XoU9An/Aqy9MDr/ZmAvQEAPFiz+qlm41xEGkNK34yEi71LC03G2oA== "@sucrase/jest-plugin@^2.1.1": version "2.2.1" @@ -5933,9 +5649,9 @@ "@types/react-dom" "<18.0.0" "@testing-library/user-event@^14.0.0": - version "14.2.1" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.2.1.tgz#8c5ff2d004544bb2220e1d864f7267fe7eb6c556" - integrity sha512-HOr1QiODrq+0j9lKU5i10y9TbhxMBMRMGimNx10asdmau9cb8Xb1Vyg0GvTwyIL2ziQyh2kAloOtAQFBQVuecA== + version "14.2.6" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.2.6.tgz#9ba313a212994eea66e018520e23542ac3eb6fbe" + integrity sha512-l/4W4x3Lm24wkWNkPasXqvEzG+a6n2X872XCUjhyfbNqcoOapaWyCxC5Fz+E4r7JPu8gysQKSSCrK0OO2x+D+A== "@tokenizer/token@^0.3.0": version "0.3.0" @@ -6708,9 +6424,9 @@ integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== "@types/luxon@*", "@types/luxon@^2.0.4", "@types/luxon@^2.0.5", "@types/luxon@^2.0.9": - version "2.3.2" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.2.tgz#8a3f2cdd4858ce698b56cd8597d9243b8e9d3c65" - integrity sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA== + version "2.4.0" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz#897d3abc23b68d78b69d76a12c21e01eb5adab95" + integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== "@types/marked@^4.0.0": version "4.0.3" @@ -6822,9 +6538,9 @@ integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== "@types/node@^16.0.0", "@types/node@^16.11.26", "@types/node@^16.9.2": - version "16.11.43" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.43.tgz#555e5a743f76b6b897d47f945305b618525ddbe6" - integrity sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ== + version "16.11.45" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" + integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -7414,13 +7130,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz#9c6017b6c1d04894141b4a87816388967f64c359" - integrity sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg== + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz#1621dabc1ae4084310e19e9efc80dfdbb97e7493" + integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw== dependencies: - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/type-utils" "5.30.6" - "@typescript-eslint/utils" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/type-utils" "5.30.7" + "@typescript-eslint/utils" "5.30.7" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -7441,13 +7157,13 @@ eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.6.tgz#add440db038fa9d777e4ebdaf66da9e7fb7abe92" - integrity sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA== + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980" + integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A== dependencies: - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/typescript-estree" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" debug "^4.3.4" "@typescript-eslint/scope-manager@5.20.0": @@ -7458,13 +7174,13 @@ "@typescript-eslint/types" "5.20.0" "@typescript-eslint/visitor-keys" "5.20.0" -"@typescript-eslint/scope-manager@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" - integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== +"@typescript-eslint/scope-manager@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz#8269a931ef1e5ae68b5eb80743cc515c4ffe3dd7" + integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" "@typescript-eslint/scope-manager@5.9.0": version "5.9.0" @@ -7474,12 +7190,12 @@ "@typescript-eslint/types" "5.9.0" "@typescript-eslint/visitor-keys" "5.9.0" -"@typescript-eslint/type-utils@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz#a64aa9acbe609ab77f09f53434a6af2b9685f3af" - integrity sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA== +"@typescript-eslint/type-utils@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd" + integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw== dependencies: - "@typescript-eslint/utils" "5.30.6" + "@typescript-eslint/utils" "5.30.7" debug "^4.3.4" tsutils "^3.21.0" @@ -7488,10 +7204,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c" integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg== -"@typescript-eslint/types@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" - integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== +"@typescript-eslint/types@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0" + integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== "@typescript-eslint/types@5.9.0": version "5.9.0" @@ -7511,13 +7227,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" - integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== +"@typescript-eslint/typescript-estree@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07" + integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -7537,15 +7253,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" - integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== +"@typescript-eslint/utils@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb" + integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/typescript-estree" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -7569,12 +7285,12 @@ "@typescript-eslint/types" "5.20.0" eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.30.6": - version "5.30.6" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" - integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== +"@typescript-eslint/visitor-keys@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz#c093abae75b4fd822bfbad9fc337f38a7a14909a" + integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw== dependencies: - "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/types" "5.30.7" eslint-visitor-keys "^3.3.0" "@typescript-eslint/visitor-keys@5.9.0": @@ -7755,9 +7471,9 @@ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== "@yarnpkg/parsers@^3.0.0-rc.4": - version "3.0.0-rc.11" - resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.11.tgz#4c2e69f3c904693eea58a8999ca9a189b0d78b41" - integrity sha512-qQ2EBj1lRA2iB1SwcyvGI53w5TlEBMgJ/hAR42ts+6bKK/am/xQoozQxtBiqodAyphIGVSm3sfQmQXN2pjMlNA== + version "3.0.0-rc.12" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.12.tgz#76890a00c4c14a5c38f6eef5e9ce9b9c2fb3c6da" + integrity sha512-LEijAfCE8dMhW+tRBz9EM3Ui53SX+E6Tsvzaf7opESDARK+2HAyX+M/w73oNTXCOgMRrfMVWP5wJTj9cG96uoQ== dependencies: js-yaml "^3.10.0" tslib "^1.13.0" @@ -8495,6 +8211,16 @@ available-typed-arrays@^1.0.2: dependencies: array-filter "^1.0.0" +aws-lambda@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz#c6b674df47458b5ecd43ab734899ad2e2d457013" + integrity sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w== + dependencies: + aws-sdk "^2.814.0" + commander "^3.0.2" + js-yaml "^3.14.1" + watchpack "^2.0.0-beta.10" + aws-os-connection@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/aws-os-connection/-/aws-os-connection-0.1.0.tgz#02c1be08cf63448c5bdc9d47b03b7ad3222b662c" @@ -8511,10 +8237,10 @@ aws-sdk-mock@^5.2.1: sinon "^13.0.2" traverse "^0.6.6" -aws-sdk@^2.1122.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1172.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1172.0.tgz#7b1c976c60570b1a11b7b13cd10d8c31cd5eb67f" - integrity sha512-B3NXD1ZLfwj8oDavb3GTUkDvCioWbRrf01nNkPvdTpoMBQCGw4elTuvG7ZQ114v5V2XWMxpu+SKMkcxALHEd6Q== +aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: + version "2.1177.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1177.0.tgz#b6f377df30d0ef5d9f7b464b0b57baa26d0baaf3" + integrity sha512-0Ui7hBofMom6F9N4em357NzsUt0pXDLuuUS1Ojf7Vu7S/LjVjB5zwmY7L4H5wuf5KDOjSmNX8/zG6QfGGc5X/w== dependencies: buffer "4.9.2" events "1.1.1" @@ -8523,6 +8249,7 @@ aws-sdk@^2.1122.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: querystring "0.2.0" sax "1.2.1" url "0.10.3" + util "^0.12.4" uuid "8.0.0" xml2js "0.4.19" @@ -8748,7 +8475,7 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backo2@1.0.2: +backo2@1.0.2, backo2@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= @@ -8853,9 +8580,9 @@ better-path-resolve@1.0.0: is-windows "^1.0.0" better-sqlite3@^7.5.0: - version "7.6.0" - resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.0.tgz#66444ba12985071b9070b2b16d10e586ae4ad581" - integrity sha512-wYckL8S8RHP+KKNsZuJGZ7z/6FFmVgwd0U8jSv6t997C+EFR1yvi8p2WIpTb10jiV5rRA5VtMdgtAZFcAnK3Iw== + version "7.6.2" + resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz#47cd8cad5b9573cace535f950ac321166bc31384" + integrity sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg== dependencies: bindings "^1.5.0" prebuild-install "^7.1.0" @@ -10000,16 +9727,16 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== -colorette@2.0.16, colorette@^2.0.10: - version "2.0.16" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -colorette@^2.0.16, colorette@^2.0.17: +colorette@2.0.19, colorette@^2.0.16, colorette@^2.0.17: version "2.0.19" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== +colorette@^2.0.10: + version "2.0.16" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + colors@1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -10078,6 +9805,11 @@ commander@^2.20.0, commander@^2.20.3, commander@^2.7.1: resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + commander@^4.0.0: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -10094,9 +9826,9 @@ commander@^7.2.0: integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^9.1.0, commander@^9.3.0: - version "9.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz#f619114a5a2d2054e0d9ff1b31d5ccf89255e26b" - integrity sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw== + version "9.4.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== common-ancestor-path@^1.0.1: version "1.0.1" @@ -10240,9 +9972,9 @@ concurrently@6.5.1: yargs "^16.2.0" concurrently@^7.0.0: - version "7.2.2" - resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.2.2.tgz#4ad4a4dfd3945f668d727379de2a29502e6a531c" - integrity sha512-DcQkI0ruil5BA/g7Xy3EWySGrFJovF5RYAYxwGvv9Jf9q9B1v3jPFP2tl6axExNf1qgF30kjoNYrangZ0ey4Aw== + version "7.3.0" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz#eb45cdbc8df43da195f619aba218a980cae49184" + integrity sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA== dependencies: chalk "^4.1.0" date-fns "^2.16.1" @@ -10474,9 +10206,9 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.4.1, core-js@^3.6.5: - version "3.23.4" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.23.4.tgz#92d640faa7f48b90bbd5da239986602cfc402aa6" - integrity sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ== + version "3.23.5" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475" + integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -11477,6 +11209,11 @@ dequal@^2.0.0: resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== +dequal@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -11731,9 +11468,9 @@ dompurify@=2.3.3: integrity sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg== dompurify@^2.2.7, dompurify@^2.2.9, dompurify@^2.3.6: - version "2.3.9" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.9.tgz#a4be5e7278338d6db09922dffcf6182cd099d70a" - integrity sha512-3zOnuTwup4lPV/GfGS6UzG4ub9nhSYagR/5tB3AvDEwqyy5dtyCM2dVjwGDCnrPerXifBKTYh/UWCGKK7ydhhw== + version "2.3.10" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz#901f7390ffe16a91a5a556b94043314cd4850385" + integrity sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g== domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" @@ -12362,9 +12099,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.14.1" eslint-plugin-jest@^26.1.2: - version "26.5.3" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz#a3ceeaf4a757878342b8b00eca92379b246e5505" - integrity sha512-sICclUqJQnR1bFRZGLN2jnSVsYOsmPYYnroGCIMVSvTS3y8XR3yjzy1EcTQmk6typ5pRgyIWzbjqxK6cZHEZuQ== + version "26.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.6.0.tgz#546804fa42da75d7d58d4d3b278d5186abd3f6c0" + integrity sha512-f8n46/97ZFdU4KqeQYqO8AEVGIhHWvkpgNBWHH3jrM28/y8llnbf3IjfIKv6p2pZIMinK1PCqbbROxs9Eud02Q== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -12479,9 +12216,9 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.6.0: - version "8.19.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" - integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== + version "8.20.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" + integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" @@ -12615,6 +12352,11 @@ eventemitter2@^6.4.3, eventemitter2@^6.4.4: resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -12639,63 +12381,63 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" "example-app@link:packages/app": - version "0.2.73-next.3" + version "0.2.73" dependencies: - "@backstage/app-defaults" "^1.0.4-next.3" - "@backstage/catalog-model" "^1.1.0-next.3" - "@backstage/cli" "^0.18.0-next.3" + "@backstage/app-defaults" "^1.0.4" + "@backstage/catalog-model" "^1.1.0" + "@backstage/cli" "^0.18.0" "@backstage/config" "^1.0.1" - "@backstage/core-app-api" "^1.0.4-next.1" - "@backstage/core-components" "^0.10.0-next.3" - "@backstage/core-plugin-api" "^1.0.4-next.0" - "@backstage/integration-react" "^1.1.2-next.3" - "@backstage/plugin-airbrake" "^0.3.7-next.3" - "@backstage/plugin-apache-airflow" "^0.2.0-next.3" - "@backstage/plugin-api-docs" "^0.8.7-next.3" - "@backstage/plugin-azure-devops" "^0.1.23-next.3" - "@backstage/plugin-badges" "^0.2.31-next.3" - "@backstage/plugin-catalog" "^1.4.0-next.3" - "@backstage/plugin-catalog-common" "^1.0.4-next.0" - "@backstage/plugin-catalog-graph" "^0.2.19-next.3" - "@backstage/plugin-catalog-import" "^0.8.10-next.3" - "@backstage/plugin-catalog-react" "^1.1.2-next.3" - "@backstage/plugin-circleci" "^0.3.7-next.3" - "@backstage/plugin-cloudbuild" "^0.3.7-next.3" - "@backstage/plugin-code-coverage" "^0.2.0-next.3" - "@backstage/plugin-cost-insights" "^0.11.29-next.3" - "@backstage/plugin-dynatrace" "^0.1.1-next.3" - "@backstage/plugin-explore" "^0.3.38-next.3" - "@backstage/plugin-gcalendar" "^0.3.3-next.3" - "@backstage/plugin-gcp-projects" "^0.3.26-next.3" - "@backstage/plugin-github-actions" "^0.5.7-next.3" - "@backstage/plugin-gocd" "^0.1.13-next.3" - "@backstage/plugin-graphiql" "^0.2.39-next.3" - "@backstage/plugin-home" "^0.4.23-next.3" - "@backstage/plugin-jenkins" "^0.7.6-next.3" - "@backstage/plugin-kafka" "^0.3.7-next.3" - "@backstage/plugin-kubernetes" "^0.7.0-next.3" - "@backstage/plugin-lighthouse" "^0.3.7-next.3" - "@backstage/plugin-newrelic" "^0.3.25-next.3" - "@backstage/plugin-newrelic-dashboard" "^0.2.0-next.3" - "@backstage/plugin-org" "^0.5.7-next.3" - "@backstage/plugin-pagerduty" "0.5.0-next.3" - "@backstage/plugin-permission-react" "^0.4.3-next.1" - "@backstage/plugin-rollbar" "^0.4.7-next.3" - "@backstage/plugin-scaffolder" "^1.4.0-next.3" - "@backstage/plugin-search" "^0.9.1-next.3" - "@backstage/plugin-search-common" "^0.3.6-next.0" - "@backstage/plugin-search-react" "^0.2.2-next.3" - "@backstage/plugin-sentry" "^0.4.0-next.3" - "@backstage/plugin-shortcuts" "^0.2.8-next.3" - "@backstage/plugin-stack-overflow" "^0.1.3-next.3" - "@backstage/plugin-tech-insights" "^0.2.3-next.3" - "@backstage/plugin-tech-radar" "^0.5.14-next.3" - "@backstage/plugin-techdocs" "^1.2.1-next.3" - "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.2-next.3" - "@backstage/plugin-techdocs-react" "^1.0.2-next.2" - "@backstage/plugin-todo" "^0.2.9-next.3" - "@backstage/plugin-user-settings" "^0.4.6-next.3" - "@backstage/theme" "^0.2.16-next.1" + "@backstage/core-app-api" "^1.0.4" + "@backstage/core-components" "^0.10.0" + "@backstage/core-plugin-api" "^1.0.4" + "@backstage/integration-react" "^1.1.2" + "@backstage/plugin-airbrake" "^0.3.7" + "@backstage/plugin-apache-airflow" "^0.2.0" + "@backstage/plugin-api-docs" "^0.8.7" + "@backstage/plugin-azure-devops" "^0.1.23" + "@backstage/plugin-badges" "^0.2.31" + "@backstage/plugin-catalog" "^1.4.0" + "@backstage/plugin-catalog-common" "^1.0.4" + "@backstage/plugin-catalog-graph" "^0.2.19" + "@backstage/plugin-catalog-import" "^0.8.10" + "@backstage/plugin-catalog-react" "^1.1.2" + "@backstage/plugin-circleci" "^0.3.7" + "@backstage/plugin-cloudbuild" "^0.3.7" + "@backstage/plugin-code-coverage" "^0.2.0" + "@backstage/plugin-cost-insights" "^0.11.29" + "@backstage/plugin-dynatrace" "^0.1.1" + "@backstage/plugin-explore" "^0.3.38" + "@backstage/plugin-gcalendar" "^0.3.3" + "@backstage/plugin-gcp-projects" "^0.3.26" + "@backstage/plugin-github-actions" "^0.5.7" + "@backstage/plugin-gocd" "^0.1.13" + "@backstage/plugin-graphiql" "^0.2.39" + "@backstage/plugin-home" "^0.4.23" + "@backstage/plugin-jenkins" "^0.7.6" + "@backstage/plugin-kafka" "^0.3.7" + "@backstage/plugin-kubernetes" "^0.7.0" + "@backstage/plugin-lighthouse" "^0.3.7" + "@backstage/plugin-newrelic" "^0.3.25" + "@backstage/plugin-newrelic-dashboard" "^0.2.0" + "@backstage/plugin-org" "^0.5.7" + "@backstage/plugin-pagerduty" "0.5.0" + "@backstage/plugin-permission-react" "^0.4.3" + "@backstage/plugin-rollbar" "^0.4.7" + "@backstage/plugin-scaffolder" "^1.4.0" + "@backstage/plugin-search" "^1.0.0" + "@backstage/plugin-search-common" "^1.0.0" + "@backstage/plugin-search-react" "^1.0.0" + "@backstage/plugin-sentry" "^0.4.0" + "@backstage/plugin-shortcuts" "^0.2.8" + "@backstage/plugin-stack-overflow" "^0.1.3" + "@backstage/plugin-tech-insights" "^0.2.3" + "@backstage/plugin-tech-radar" "^0.5.14" + "@backstage/plugin-techdocs" "^1.3.0" + "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.2" + "@backstage/plugin-techdocs-react" "^1.0.2" + "@backstage/plugin-todo" "^0.2.9" + "@backstage/plugin-user-settings" "^0.4.6" + "@backstage/theme" "^0.2.16" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.57" @@ -13366,9 +13108,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: - version "7.2.12" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.12.tgz#d15c48745f9092574b41138934aa3de504a39ba1" - integrity sha512-SCjmmjPXPgp5XRQ49hXd2Eqth8rz4+ggtOHygTzyaOn32oIIOd8Kw+xKcgXNkFGlZy5l03bHRYTkbQs+TWhaNA== + version "7.2.13" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz#51ffd6a2f96f03ab64b92f8aedf305dbf3dee0f1" + integrity sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" @@ -13378,6 +13120,7 @@ fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: fs-extra "^10.0.0" memfs "^3.4.1" minimatch "^3.0.4" + node-abort-controller "^3.0.1" schema-utils "^3.1.1" semver "^7.3.5" tapable "^2.2.1" @@ -13866,7 +13609,7 @@ git-up@^6.0.0: is-ssh "^1.4.0" parse-url "^7.0.2" -git-url-parse@^11.4.4, git-url-parse@^11.6.0: +git-url-parse@^11.4.4: version "11.6.0" resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== @@ -14049,9 +13792,9 @@ google-auth-library@^7.14.0: lru-cache "^6.0.0" google-auth-library@^8.0.0, google-auth-library@^8.0.1, google-auth-library@^8.0.2: - version "8.1.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.1.0.tgz#879e8d2e90a9d47e6eab32fd1d5fd9ed52d7d441" - integrity sha512-J/fNXEnqLgbr3kmeUshZCtHQia6ZiNbbrebVzpt/+LTeY6Ka9CtbQvloTjVGVO7nyYbs0KYeuIwgUC/t2Gp1Jw== + version "8.1.1" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.1.1.tgz#4068d2b1512b812d3d3dfbdc848452a0d5a550de" + integrity sha512-eG3pCfrLgVJe19KhAeZwW0m1LplNEo0FX1GboWf3hu18zD2jq8TUH2K8900AB2YRAuJ7A+1aSXDp1BODjwwRzg== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -14120,10 +13863,10 @@ google-protobuf@^3.15.8, google-protobuf@^3.19.1: resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.20.1.tgz#1b255c2b59bcda7c399df46c65206aa3c7a0ce8b" integrity sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw== -got@11.8.3: - version "11.8.3" - resolved "https://registry.npmjs.org/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" - integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== +got@^11.8.3: + version "11.8.5" + resolved "https://registry.npmjs.org/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" + integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" @@ -14153,11 +13896,11 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12, graphiql@^1.8.8: - version "1.9.12" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.9.12.tgz#1177eabb0cc57112df57f59d483c6471966c0d50" - integrity sha512-eS4tDR9ypsdVS2D5bK8i++4TesoZMgxtGbajxzSFE2WNo20GyZaOELycmgzF54RbhuGYfj9DYKzWWeLamu9/sA== + version "1.9.13" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.9.13.tgz#f379425b407bad6eec4aa36a2e38d764a2c13b25" + integrity sha512-w/kFnK0N8ooN07vw5dKcDZ4CAmRfkjkTQbSj6LkEigJB/yTZ92r2QA/XROGlff0xn4r6aWfHjRp5AMrND4dLZg== dependencies: - "@graphiql/react" "^0.5.1" + "@graphiql/react" "^0.5.2" "@graphiql/toolkit" "^0.6.0" entities "^2.0.0" graphql-language-service "^5.0.6" @@ -14231,7 +13974,7 @@ graphql-type-json@^0.3.2: resolved "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== -graphql-ws@^5.4.1: +graphql-ws@^5.4.1, graphql-ws@^5.9.0: version "5.9.1" resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.9.1.tgz#9c0fa48ceb695d61d574ed3ab21b426729e87f2d" integrity sha512-mL/SWGBwIT9Meq0NlfS55yXXTOeWPMbK7bZBEZhFu46bcGk1coTx2Sdtzxdk+9yHWngD+Fk1PZDWaAutQa9tpw== @@ -15895,6 +15638,11 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterall@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + iterare@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" @@ -16465,7 +16213,7 @@ js-yaml@4.1.0, js-yaml@=4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.6.1, js-yaml@^3.8.3: +js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.14.1, js-yaml@^3.6.1, js-yaml@^3.8.3: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -17001,11 +16749,11 @@ kleur@^4.1.4: integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== knex@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/knex/-/knex-2.1.0.tgz#9348aace3a08ff5be26eb1c8e838416ddf1aa216" - integrity sha512-vVsnD6UJdSJy55TvCXfFF9syfwyXNxfE9mvr2hJL/4Obciy2EPGoqjDpgRSlMruHuPWDOeYAG25nyrGvU+jJog== + version "2.2.0" + resolved "https://registry.npmjs.org/knex/-/knex-2.2.0.tgz#86a3176924d37303b3f9ff7f70087418c263ce7a" + integrity sha512-yhm1Qe9Ok0TeXBq3nNHqZYJPrQ4Iw2tq9k/HxjrZ/EWec2ifOjJlkNHr26v8cQrWtk5iG3iwfUazTIWy+VKG5g== dependencies: - colorette "2.0.16" + colorette "2.0.19" commander "^9.1.0" debug "4.3.4" escalade "^3.1.1" @@ -17682,11 +17430,6 @@ luxon@^1.23.x: resolved "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== -luxon@^2.0.2: - version "2.5.0" - resolved "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" - integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== - luxon@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/luxon/-/luxon-3.0.1.tgz#6901111d10ad06fd267ad4e4128a84bef8a77299" @@ -18826,10 +18569,36 @@ msw@^0.39.2: type-fest "^1.2.2" yargs "^17.3.1" +msw@^0.43.0: + version "0.43.1" + resolved "https://registry.npmjs.org/msw/-/msw-0.43.1.tgz#57cb4af56f07442e8a6d14d76032a0ab41434256" + integrity sha512-wzhPpL6RsiYkyIUlTCg0aZY0aRZa4Eiubd6MOA5oJVgfuapDmvZrI8OMi4h4e+fpHD+Qsy+4unAjv3wpWia5yw== + dependencies: + "@mswjs/cookies" "^0.2.0" + "@mswjs/interceptors" "^0.16.3" + "@open-draft/until" "^1.0.3" + "@types/cookie" "^0.4.1" + "@types/js-levenshtein" "^1.1.1" + chalk "4.1.1" + chokidar "^3.4.2" + cookie "^0.4.2" + graphql "^16.3.0" + headers-polyfill "^3.0.4" + inquirer "^8.2.0" + is-node-process "^1.0.1" + js-levenshtein "^1.1.6" + node-fetch "^2.6.7" + outvariant "^1.3.0" + path-to-regexp "^6.2.0" + statuses "^2.0.0" + strict-event-emitter "^0.2.0" + type-fest "^1.2.2" + yargs "^17.3.1" + msw@^0.44.0: - version "0.44.0" - resolved "https://registry.npmjs.org/msw/-/msw-0.44.0.tgz#28f81a789f05855e5403a399d7eefaa2d0216adf" - integrity sha512-LLXfLos7JwzI1bfh0cBIKffXfyISezsMXALS2M1uq56pn1UhGVtyz8OaAguiJFxkirqn+S6e0GcKuGVDwZG1dg== + version "0.44.2" + resolved "https://registry.npmjs.org/msw/-/msw-0.44.2.tgz#00a901b6cc9d119fb30f794330d96dca6944afc2" + integrity sha512-u8wjzzcMWouoZtuIShCwx4M3wFF5sBAV1f8K4a0WX8kiihFjzl89IKE1VYmTclLyMIwpOq8qQ1HTpuh2BFX/3A== dependencies: "@mswjs/cookies" "^0.2.2" "@mswjs/interceptors" "^0.17.2" @@ -19550,17 +19319,17 @@ octokit-plugin-create-pull-request@^3.10.0: "@octokit/types" "^6.8.2" octokit@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/octokit/-/octokit-2.0.2.tgz#46a8d4da3fd12933fc495971470e191af4d9a54c" - integrity sha512-YQ3ysVawtMVp1Tjf0uITLtUW7kf+SGhelgT0xuk25frUNf7sotGxO5wm7XvnEvNL4nnlp1mF2UxqG05dto2iyg== + version "2.0.4" + resolved "https://registry.npmjs.org/octokit/-/octokit-2.0.4.tgz#cfd3adee6b775d3fa8cd8746590bed36127cc0a0" + integrity sha512-9QvgYGzrSTGmr3koSGtbgeMgqYI20QI0Vv8Bk9y6phchk6L2aHFhcrUOIeNUPj1Z+KZnEBd6A/8faNpDFNfVjg== dependencies: - "@octokit/app" "^13.0.0" - "@octokit/core" "^3.5.1" - "@octokit/oauth-app" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.18.0" - "@octokit/plugin-rest-endpoint-methods" "^5.14.0" + "@octokit/app" "^13.0.5" + "@octokit/core" "^4.0.4" + "@octokit/oauth-app" "^4.0.6" + "@octokit/plugin-paginate-rest" "^3.0.0" + "@octokit/plugin-rest-endpoint-methods" "^6.0.0" "@octokit/plugin-retry" "^3.0.9" - "@octokit/plugin-throttling" "^4.0.0" + "@octokit/plugin-throttling" "^4.0.1" "@octokit/types" "^6.35.0" oidc-token-hash@^5.0.1: @@ -21309,9 +21078,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== puppeteer@^15.0.0: - version "15.3.2" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-15.3.2.tgz#62162739044d570ab9907f85b1e1bbcf52adc79e" - integrity sha512-6z4fTHCHTpG3Yu7zqP0mLfCmkNkgw5KSUfLAwuBabz9Pkqoe0Z08hqUx5GNxhhMgEo4YVOSPBshePA6zliznWQ== + version "15.4.0" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-15.4.0.tgz#31f043ee64cc4e1b5cbe99ad900653aab4afb186" + integrity sha512-wxJRbofjaycCaQ9fhABlToJobrjxlABiFi6NvdkOPVJMYFblxDlDTjkg+b6bZYi7xN+lEXn84GBZsA5DYb3wfw== dependencies: cross-fetch "3.1.5" debug "4.3.4" @@ -21710,9 +21479,9 @@ react-markdown@^8.0.0: vfile "^5.0.0" react-query@^3.34.16: - version "3.39.1" - resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.1.tgz#3876c0fdac7a3b5a84e195534e5fa8fbdd628847" - integrity sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A== + version "3.39.2" + resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz#9224140f0296f01e9664b78ed6e4f69a0cc9216f" + integrity sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA== dependencies: "@babel/runtime" "^7.5.5" broadcast-channel "^3.4.1" @@ -22732,9 +22501,9 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: - version "2.76.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.76.0.tgz#c69fe03db530ac53fcb9523b3caa0d3c0b9491a1" - integrity sha512-9jwRIEY1jOzKLj3nsY/yot41r19ITdQrhs+q3ggNWhr9TQgduHqANvPpS32RNpzGklJu3G1AJfvlZLi/6wFgWA== + version "2.77.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" + integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== optionalDependencies: fsevents "~2.3.2" @@ -22762,7 +22531,7 @@ run-script-webpack-plugin@^0.1.0: resolved "https://registry.npmjs.org/run-script-webpack-plugin/-/run-script-webpack-plugin-0.1.1.tgz#dad3114be32eb864d2160306e4d9c52a2c1cfd59" integrity sha512-PrxBRLv1K9itDKMlootSCyGhdTU+KbKGJ2wF6/k0eyo6M0YGPC58HYbS/J/QsDiwM0t7G99WcuCqto0J7omOXA== -rxjs@7.5.5, rxjs@^7.0.0, rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.5: +rxjs@7.5.5, rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.5: version "7.5.5" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== @@ -22776,6 +22545,13 @@ rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" +rxjs@^7.0.0: + version "7.5.6" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" + sade@^1.7.3: version "1.8.1" resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" @@ -24110,10 +23886,21 @@ stylis@^4.0.6: resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== +subscriptions-transport-ws@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz#baf88f050cba51d52afe781de5e81b3c31f89883" + integrity sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0 || ^6.0.0 || ^7.0.0" + sucrase@^3.18.0, sucrase@^3.20.2: - version "3.23.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.23.0.tgz#2a7fa80a04f055fb2e95d2aead03fec1dba52838" - integrity sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ== + version "3.24.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.24.0.tgz#66a8f2cc845bc441706ce5f3056de283289067b6" + integrity sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA== dependencies: commander "^4.0.0" glob "7.1.6" @@ -24269,7 +24056,7 @@ swr@^1.1.2: resolved "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== -symbol-observable@1.2.0: +symbol-observable@1.2.0, symbol-observable@^1.0.4: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -24353,21 +24140,21 @@ tdigest@^0.1.1: bintrees "1.0.1" "techdocs-cli-embedded-app@link:packages/techdocs-cli-embedded-app": - version "0.2.72-next.3" + version "0.2.72" dependencies: - "@backstage/app-defaults" "^1.0.4-next.3" - "@backstage/catalog-model" "^1.1.0-next.3" - "@backstage/cli" "^0.18.0-next.3" + "@backstage/app-defaults" "^1.0.4" + "@backstage/catalog-model" "^1.1.0" + "@backstage/cli" "^0.18.0" "@backstage/config" "^1.0.1" - "@backstage/core-app-api" "^1.0.4-next.1" - "@backstage/core-components" "^0.10.0-next.3" - "@backstage/core-plugin-api" "^1.0.4-next.0" - "@backstage/integration-react" "^1.1.2-next.3" - "@backstage/plugin-catalog" "^1.4.0-next.3" - "@backstage/plugin-techdocs" "^1.2.1-next.3" - "@backstage/plugin-techdocs-react" "^1.0.2-next.2" - "@backstage/test-utils" "^1.1.2-next.2" - "@backstage/theme" "^0.2.16-next.1" + "@backstage/core-app-api" "^1.0.4" + "@backstage/core-components" "^0.10.0" + "@backstage/core-plugin-api" "^1.0.4" + "@backstage/integration-react" "^1.1.2" + "@backstage/plugin-catalog" "^1.4.0" + "@backstage/plugin-techdocs" "^1.3.0" + "@backstage/plugin-techdocs-react" "^1.0.2" + "@backstage/test-utils" "^1.1.2" + "@backstage/theme" "^0.2.16" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" history "^5.0.0" @@ -24807,9 +24594,9 @@ ts-morph@^15.0.0: code-block-writer "^11.0.0" ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0: - version "10.8.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz#3185b75228cef116bf82ffe8762594f54b2a23f2" - integrity sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA== + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -25365,6 +25152,14 @@ url@^0.11.0, url@~0.11.0: punycode "1.3.2" querystring "0.2.0" +use-deep-compare-effect@^1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/use-deep-compare-effect/-/use-deep-compare-effect-1.8.1.tgz#ef0ce3b3271edb801da1ec23bf0754ef4189d0c6" + integrity sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q== + dependencies: + "@babel/runtime" "^7.12.5" + dequal "^2.0.2" + use-immer@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/use-immer/-/use-immer-0.7.0.tgz#e3bfbb806b5e3ff6e37441be74c306d91c1e0962" @@ -25418,7 +25213,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@^0.12.3: +util@^0.12.3, util@^0.12.4: version "0.12.4" resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== @@ -25673,6 +25468,14 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +watchpack@^2.0.0-beta.10: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + watchpack@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" @@ -26077,16 +25880,26 @@ write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@8.8.0, ws@^8.0.0, ws@^8.3.0: +ws@8.8.0: version "8.8.0" resolved "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== +"ws@^5.2.0 || ^6.0.0 || ^7.0.0": + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + ws@^7.3.1, ws@^7.4.6: version "7.5.7" resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== +ws@^8.0.0, ws@^8.3.0: + version "8.8.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" + integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== + ws@^8.4.2: version "8.5.0" resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" @@ -26502,9 +26315,9 @@ zip-stream@^4.1.0: readable-stream "^3.6.0" zod@^3.11.6, zod@^3.9.5: - version "3.17.3" - resolved "https://registry.npmjs.org/zod/-/zod-3.17.3.tgz#86abbc670ff0063a4588d85a4dcc917d6e4af2ba" - integrity sha512-4oKP5zvG6GGbMlqBkI5FESOAweldEhSOZ6LI6cG+JzUT7ofj1ZOC0PJudpQOpT1iqOFpYYtX5Pw0+o403y4bcg== + version "3.17.9" + resolved "https://registry.npmjs.org/zod/-/zod-3.17.9.tgz#6ce737474e51677e7166602ed58f6f8ba8d89c86" + integrity sha512-QF1843pYoRk1jFP+/UiEySXaTSiIyFod3KyDzoO3qHKGZdX7z7RNXI4lEsiibvpnIZQwcDVU58ZrxP4pQ7BmTQ== zustand@3.6.9: version "3.6.9"