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-clocks-drum.md b/.changeset/calm-clocks-drum.md new file mode 100644 index 0000000000..feb35e0133 --- /dev/null +++ b/.changeset/calm-clocks-drum.md @@ -0,0 +1,8 @@ +--- +'@backstage/backend-common': patch +--- + +Improve `scm/git` wrapper around `isomorphic-git` library : + +- Add `checkout` function, +- Add optional `remoteRef` parameter in the `push` function. 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-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/create-app-1656408352.md b/.changeset/create-app-1658824524.md similarity index 100% rename from .changeset/create-app-1656408352.md rename to .changeset/create-app-1658824524.md 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/dull-pumas-hope.md b/.changeset/dull-pumas-hope.md new file mode 100644 index 0000000000..a19811ddbc --- /dev/null +++ b/.changeset/dull-pumas-hope.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': minor +--- + +Added back support for when no branch is provided to the `UrlReader` for Bitbucket Server diff --git a/.changeset/dull-starfishes-chew.md b/.changeset/dull-starfishes-chew.md new file mode 100644 index 0000000000..9733e8b7e6 --- /dev/null +++ b/.changeset/dull-starfishes-chew.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Handle incorrect return type from Octokit paginate plugin to resolve reading URLs from GitHub 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-comics-divide.md b/.changeset/eighty-comics-divide.md deleted file mode 100644 index c486c1fa33..0000000000 --- a/.changeset/eighty-comics-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-model': patch ---- - -Add shared annotations for Kubernetes clusters 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/famous-bikes-brush.md b/.changeset/famous-bikes-brush.md new file mode 100644 index 0000000000..0008a9145c --- /dev/null +++ b/.changeset/famous-bikes-brush.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-plugin-api': patch +--- + +Introduced a new experimental feature that allows you to declare plugin-wide options for your plugin by defining +`__experimentalConfigure` in your `createPlugin` options. See https://backstage.io/docs/plugins/customization.md for more information. + +This is an experimental feature and it will have breaking changes in the future. diff --git a/.changeset/orange-deers-marry.md b/.changeset/fast-panthers-fold.md similarity index 53% rename from .changeset/orange-deers-marry.md rename to .changeset/fast-panthers-fold.md index c565111b60..f8adac413e 100644 --- a/.changeset/orange-deers-marry.md +++ b/.changeset/fast-panthers-fold.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': patch --- -Fix issues with optional directories and files +Add a `publish:gerrit:review` scaffolder action diff --git a/.changeset/few-berries-deny.md b/.changeset/few-berries-deny.md new file mode 100644 index 0000000000..d5e14a807c --- /dev/null +++ b/.changeset/few-berries-deny.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Plugin catalog has been modified to use an experimental feature where you can customize the title of the create button. + +You can modify it by doing: + +```typescript jsx +import { catalogPlugin } from '@backstage/plugin-catalog'; + +catalogPlugin.__experimentalReconfigure({ + createButtonTitle: 'New', +}); +``` 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/fresh-hounds-argue.md b/.changeset/fresh-hounds-argue.md new file mode 100644 index 0000000000..9291a99659 --- /dev/null +++ b/.changeset/fresh-hounds-argue.md @@ -0,0 +1,6 @@ +--- +'@backstage/integration': minor +'@backstage/plugin-scaffolder-backend': minor +--- + +Add support for Basic Auth for Bitbucket Server. diff --git a/.changeset/friendly-sheep-flash.md b/.changeset/friendly-sheep-flash.md new file mode 100644 index 0000000000..58ae309bf1 --- /dev/null +++ b/.changeset/friendly-sheep-flash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow-backend': patch +--- + +Added API key as separate configuration 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/itchy-stingrays-greet.md b/.changeset/itchy-stingrays-greet.md deleted file mode 100644 index ed409abbe3..0000000000 --- a/.changeset/itchy-stingrays-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': patch ---- - -Add processor for ingesting EKS clusters into the catalog diff --git a/.changeset/khaki-meals-hammer.md b/.changeset/khaki-meals-hammer.md new file mode 100644 index 0000000000..1deee2706d --- /dev/null +++ b/.changeset/khaki-meals-hammer.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-common': minor +--- + +- Added `force` and `remoteRef` option to `push` method in `git` actions +- Added `addRemote` and `deleteRemote` methods to `git` actions 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/loud-panthers-arrive.md b/.changeset/loud-panthers-arrive.md new file mode 100644 index 0000000000..a8c69cdc76 --- /dev/null +++ b/.changeset/loud-panthers-arrive.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Fix AWS S3 404 NotFound error + +When reading an object from the S3 bucket through a stream, the aws-sdk getObject() API may throw a 404 NotFound Error with no error message or, in fact, any sort of HTTP-layer error responses. These fail the @backstage/error's assertError() checks, so they must be wrapped. The test for this case was also updated to match the wrapped error message. 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-points-itch.md b/.changeset/metal-points-itch.md new file mode 100644 index 0000000000..752f52c269 --- /dev/null +++ b/.changeset/metal-points-itch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/backend-common': patch +--- + +Add support for Bearer Authorization header / token-based auth at Git commands. 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/mighty-penguins-tap.md b/.changeset/mighty-penguins-tap.md new file mode 100644 index 0000000000..0958e71ffd --- /dev/null +++ b/.changeset/mighty-penguins-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Fixed techdocs sidebar layout bug for medium devices. 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/modern-shrimps-wave.md b/.changeset/modern-shrimps-wave.md new file mode 100644 index 0000000000..9be8c49ca8 --- /dev/null +++ b/.changeset/modern-shrimps-wave.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added Backstage version to output of `yarn backstage-cli info` command 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/nine-mails-crash.md b/.changeset/nine-mails-crash.md new file mode 100644 index 0000000000..ead5553d1c --- /dev/null +++ b/.changeset/nine-mails-crash.md @@ -0,0 +1,9 @@ +--- +'@backstage/backend-common': patch +--- + +The `ZipArchiveResponse` now correctly handles corrupt ZIP archives. + +Before this change, certain corrupt ZIP archives either cause the inflater to throw (as expected), or will hang the parser indefinitely. + +By switching out the `zip` parsing library, we now write to a temporary directory, and load from disk which should ensure that the parsing of the `.zip` files are done correctly because `streaming` of `zip` paths is technically impossible without being able to parse the headers at the end of the file. 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/odd-adults-smash.md b/.changeset/odd-adults-smash.md new file mode 100644 index 0000000000..d0002094bd --- /dev/null +++ b/.changeset/odd-adults-smash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kafka': patch +--- + +Add dashboard URL feature and fix minor styling issues. 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/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-books-peel.md b/.changeset/plenty-books-peel.md deleted file mode 100644 index 423c6f8bd4..0000000000 --- a/.changeset/plenty-books-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Add support for Kubernetes clusters in the catalog. 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..6af2afaf45 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,313 +1,199 @@ { - "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", + "@internal/plugin-catalog-customized": "0.0.0" }, "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" + "calm-clocks-drum", + "create-app-1658824524", + "dull-pumas-hope", + "dull-starfishes-chew", + "famous-bikes-brush", + "fast-panthers-fold", + "few-berries-deny", + "fresh-hounds-argue", + "friendly-sheep-flash", + "khaki-meals-hammer", + "loud-panthers-arrive", + "metal-points-itch", + "mighty-penguins-tap", + "modern-shrimps-wave", + "nine-mails-crash", + "odd-adults-smash", + "olive-tips-camp", + "pretty-gifts-do", + "purple-apricots-build", + "renovate-15030f1", + "renovate-5b7b62b", + "short-trains-roll", + "silver-poets-push", + "strange-crabs-confess", + "thick-readers-invite", + "violet-mayflies-mix", + "violet-trees-play" ] } diff --git a/.changeset/pretty-gifts-do.md b/.changeset/pretty-gifts-do.md new file mode 100644 index 0000000000..8d939db6b6 --- /dev/null +++ b/.changeset/pretty-gifts-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Avoid double encoding of the file path in `getBitbucketDownloadUrl` 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-apricots-build.md b/.changeset/purple-apricots-build.md new file mode 100644 index 0000000000..da473070c9 --- /dev/null +++ b/.changeset/purple-apricots-build.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +The config prop `ensureExists` now applies to schema creation when `pluginDivisionMode` is set to `schema`. This means schemas will no longer accidentally be automatically created when `ensureExists` is set to `false`. 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-15030f1.md b/.changeset/renovate-15030f1.md new file mode 100644 index 0000000000..5347a7f3e8 --- /dev/null +++ b/.changeset/renovate-15030f1.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated dependencies `@svgr/*` to `6.3.x`. 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-5b7b62b.md b/.changeset/renovate-5b7b62b.md new file mode 100644 index 0000000000..4027ee6c7c --- /dev/null +++ b/.changeset/renovate-5b7b62b.md @@ -0,0 +1,17 @@ +--- +'@backstage/backend-common': patch +'@backstage/backend-tasks': patch +'@backstage/integration': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-gocd': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-tech-insights-common': patch +'@backstage/plugin-tech-insights-node': patch +'@backstage/plugin-xcmetrics': patch +--- + +Updated dependency `@types/luxon` to `^3.0.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-9ad149b.md b/.changeset/renovate-9ad149b.md deleted file mode 100644 index aa4baa3dd1..0000000000 --- a/.changeset/renovate-9ad149b.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/cli': patch ---- - -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`. 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-trains-roll.md b/.changeset/short-trains-roll.md new file mode 100644 index 0000000000..709d534d57 --- /dev/null +++ b/.changeset/short-trains-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +User Bearer Authorization header at Git commands with token-based auth at Bitbucket Server. 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/silver-poets-push.md b/.changeset/silver-poets-push.md new file mode 100644 index 0000000000..2e64915a80 --- /dev/null +++ b/.changeset/silver-poets-push.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-pull-requests-board': patch +--- + +Fixed rendering when PR contains references to deleted Github accounts 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-crabs-confess.md b/.changeset/strange-crabs-confess.md new file mode 100644 index 0000000000..48456b870a --- /dev/null +++ b/.changeset/strange-crabs-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Add missing `res.end()` in scaffolder backend `EventStream` usage 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-cycles-shout.md b/.changeset/tender-cycles-shout.md deleted file mode 100644 index b5b069759f..0000000000 --- a/.changeset/tender-cycles-shout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Improve accessibility for CopyTextButton 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/thick-readers-invite.md b/.changeset/thick-readers-invite.md new file mode 100644 index 0000000000..689ae7eb0c --- /dev/null +++ b/.changeset/thick-readers-invite.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Updated `publish:gitlab:merge-request` action to allow commit updates and deletes 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/violet-trees-play.md b/.changeset/violet-trees-play.md new file mode 100644 index 0000000000..00f1e156a8 --- /dev/null +++ b/.changeset/violet-trees-play.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-shortcuts': minor +--- + +Internal observable replaced with a mapping from the storage API. This fixes shortcuts initialization when using firestore. + +`ShortcutApi.get` method, that returns an immediate snapshot of shortcuts, made public. + +Example of how to get and observe `shortcuts`: + +```typescript +const shortcutApi = useApi(shortcutsApiRef); +const shortcuts = useObservable(shortcutApi.shortcut$(), shortcutApi.get()); +``` 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/.changeset/witty-ladybugs-laugh.md b/.changeset/witty-ladybugs-laugh.md deleted file mode 100644 index d47bbb3250..0000000000 --- a/.changeset/witty-ladybugs-laugh.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Allow to create Gerrit project using default owner 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/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index ffada71523..7a046f3c56 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -55,7 +55,7 @@ jobs: run: ls microsite/build/backstage && ls microsite/build/backstage/storybook - name: Deploy both microsite and storybook to gh-pages - uses: JamesIves/github-pages-deploy-action@v4.3.4 + uses: JamesIves/github-pages-deploy-action@v4.4.0 with: branch: gh-pages folder: microsite/build/backstage 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/app-config.yaml b/app-config.yaml index 9a3206026e..cb865a52b9 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -161,6 +161,7 @@ kafka: clientId: backstage clusters: - name: cluster + dashboardUrl: https://akhq.io/ brokers: - localhost:9092 diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 991d2d8562..4270a91f18 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -40,14 +40,14 @@ lodash.once "^4.1.1" "@types/node@*": - version "18.0.0" - resolved "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + version "18.0.6" + resolved "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" + integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== "@types/node@^14.14.31": - version "14.18.21" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz#0155ee46f6be28b2ff0342ca1a9b9fd4468bef41" - integrity sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q== + version "14.18.22" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.22.tgz#fd2a15dca290fc9ad565b672fde746191cd0c6e6" + integrity sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw== "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" @@ -304,9 +304,9 @@ cross-spawn@^7.0.0: which "^2.0.1" cypress@^10.0.0: - version "10.3.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-10.3.0.tgz#fae8d32f0822fcfb938e79c7c31ef344794336ae" - integrity sha512-txkQWKzvBVnWdCuKs5Xc08gjpO89W2Dom2wpZgT9zWZT5jXxqPIxqP/NC1YArtkpmp3fN5HW8aDjYBizHLUFvg== + version "10.3.1" + resolved "https://registry.npmjs.org/cypress/-/cypress-10.3.1.tgz#7fab4ef43481c05a9a17ebe9a0ec860e15b95a19" + integrity sha512-As9HrExjAgpgjCnbiQCuPdw5sWKx5HUJcK2EOKziu642akwufr/GUeqL5UnCPYXTyyibvEdWT/pSC2qnGW/e5w== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -359,9 +359,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" dayjs@^1.10.4: - version "1.11.3" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz#4754eb694a624057b9ad2224b67b15d552589258" - integrity sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A== + version "1.11.4" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz#3b3c10ca378140d8917e06ebc13a4922af4f433e" + integrity sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g== debug@^3.1.0: version "3.2.7" @@ -415,9 +415,9 @@ escape-string-regexp@^1.0.5: integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== eventemitter2@^6.4.3: - version "6.4.5" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" - integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== + version "6.4.6" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.6.tgz#92d56569cc147a4d9b9da9e942e89b20ce236b0a" + integrity sha512-OHqo4wbHX5VbvlbB6o6eDwhYmiTjrpWACjF8Pmof/GTD6rdBNdZFNck3xlhqOiQFGCOoq3uzHvA0cQpFHIGVAQ== execa@4.1.0: version "4.1.0" @@ -853,9 +853,9 @@ proxy-from-env@1.0.0: integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== psl@^1.1.28: - version "1.8.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" @@ -903,9 +903,9 @@ rimraf@^3.0.0: glob "^7.1.3" rxjs@^7.5.1: - version "7.5.5" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== + 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" 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..681b2f9927 100644 --- a/docs/auth/identity-resolver.md +++ b/docs/auth/identity-resolver.md @@ -207,7 +207,7 @@ of lower-level calls: ```ts // File: packages/backend/src/plugins/auth.ts -import { getDefaultOwnershipRefs } from '@backstage/plugin-auth-backend'; +import { getDefaultOwnershipEntityRefs } from '@backstage/plugin-auth-backend'; export default async function createPlugin( // ... @@ -236,7 +236,7 @@ export default async function createPlugin( // an entity you will need to replace this step as well. // // You might also replace it if you for example want to filter out certain groups. - const ownershipRefs = getDefaultOwnershipRefs(entity); + const ownershipRefs = getDefaultOwnershipEntityRefs(entity); // The last step is to issue the token, where we might provide more options in the future. return ctx.issueToken({ @@ -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 dce4e60a87..86c6ea61b4 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -373,23 +373,42 @@ view the Kubernetes API docs for your Kubernetes version (e.g. ### Role Based Access Control -The current RBAC permissions required are read-only cluster wide, for the -following objects: +The current RBAC permissions required are read-only cluster wide, the below +Kubernetes manifest describes which objects are required and will ensure +the plugin functions correctly: -- pods -- services -- configmaps -- deployments -- replicasets -- horizontalpodautoscalers -- ingresses -- statefulsets - -The following RBAC permissions are required on the batch API group for the -following objects: - -- jobs -- cronjobs +```yaml +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: backstage-read-only +rules: + - apiGroups: + - '*' + resources: + - pods + - configmaps + - services + - deployments + - replicasets + - horizontalpodautoscalers + - ingresses + - statefulsets + verbs: + - get + - list + - watch + - apiGroups: + - batch + resources: + - jobs + - cronjobs + verbs: + - get + - list + - watch +``` ## Surfacing your Kubernetes components as part of an entity diff --git a/docs/features/kubernetes/installation.md b/docs/features/kubernetes/installation.md index 3b0895dd23..5b4e2fa716 100644 --- a/docs/features/kubernetes/installation.md +++ b/docs/features/kubernetes/installation.md @@ -62,13 +62,16 @@ add the following: import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; import { Router } from 'express'; import { PluginEnvironment } from '../types'; +import { CatalogClient } from '@backstage/catalog-client'; export default async function createPlugin( env: PluginEnvironment, ): Promise { + const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); const { router } = await KubernetesBuilder.createBuilder({ logger: env.logger, config: env.config, + catalogApi, }).build(); return router; } 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/bitbucket/locations.md b/docs/integrations/bitbucket/locations.md index 878030a29c..4fbb96bb94 100644 --- a/docs/integrations/bitbucket/locations.md +++ b/docs/integrations/bitbucket/locations.md @@ -26,6 +26,16 @@ integrations: token: ${BITBUCKET_SERVER_TOKEN} ``` +or with Basic Auth + +```yaml +integrations: + bitbucketServer: + - host: bitbucket.company.com + username: ${BITBUCKET_SERVER_USERNAME} + password: ${BITBUCKET_SERVER_PASSWORD} +``` + Directly under the `bitbucketServer` key is a list of provider configurations, where you can list the Bitbucket Server providers you want to fetch data from. Each entry is a structure with the following elements: @@ -34,5 +44,9 @@ a structure with the following elements: - `token` (optional): An [personal access token](https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html) as expected by Bitbucket Server. +- `username` (optional): + use for [Basic Auth](https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/#authentication) for Bitbucket Server. +- `password` (optional): + use for [Basic Auth](https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/#authentication) for Bitbucket Server. - `apiBaseUrl` (optional): The URL of the Bitbucket Server API. For self-hosted installations, it is commonly at `https:///rest/api/1.0`. 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/plugins/customization.md b/docs/plugins/customization.md new file mode 100644 index 0000000000..0477ba18a7 --- /dev/null +++ b/docs/plugins/customization.md @@ -0,0 +1,68 @@ +--- +id: customization +title: Customization +description: Documentation on adding a customization logic to the plugin +--- + +## Overview + +The Backstage core logic provides a possibility to make the component customizable in such a way that the application +developer can redefine the labels, icons, elements or even completely replace the component. It's up to each plugin +to decide what can be customized. + +## For a plugin developer + +When you are creating your plugin, you have a possibility to use a metadata field and define there all +customizable elements. For example + +```typescript jsx +const plugin = createPlugin({ + id: 'my-plugin', + __experimentalConfigure( + options?: CatalogInputPluginOptions, + ): CatalogPluginOptions { + const defaultOptions = { + createButtonTitle: 'Create', + }; + return { ...defaultOptions, ...options }; + }, +}); +``` + +And the rendering part of the exposed component can retrieve that metadata as: + +```typescript jsx +export type CatalogPluginOptions = { + createButtonTitle: string; +}; + +export type CatalogInputPluginOptions = { + createButtonTitle: string; +}; + +export const useCatalogPluginOptions = () => + usePluginOptions(); + +export function DefaultMyPluginWelcomePage() { + const { createButtonTitle } = useCatalogPluginOptions(); + + return ( +
+ +
+ ); +} +``` + +## For an application developer using the plugin + +The way to reconfigure the default values provided by the plugin you can do it via reconfigure method, defined on the +plugin. Example: + +```typescript jsx +import { myPlugin } from '@backstage/my-plugin'; + +myPlugin.__experimentalReconfigure({ + createButtonTitle: 'New', +}); +``` 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/docs/releases/v1.5.0-next.0-changelog.md b/docs/releases/v1.5.0-next.0-changelog.md new file mode 100644 index 0000000000..72ca02de50 --- /dev/null +++ b/docs/releases/v1.5.0-next.0-changelog.md @@ -0,0 +1,1400 @@ +# Release v1.5.0-next.0 + +## @backstage/backend-common@0.15.0-next.0 + +### Minor Changes + +- 12e9b54f0e: Added back support for when no branch is provided to the `UrlReader` for Bitbucket Server +- 30012e7d8c: - Added `force` and `remoteRef` option to `push` method in `git` actions + - Added `addRemote` and `deleteRemote` methods to `git` actions + +### Patch Changes + +- fc8a5f797b: Improve `scm/git` wrapper around `isomorphic-git` library : + + - Add `checkout` function, + - Add optional `remoteRef` parameter in the `push` function. + +- 3b7930b3e5: Add support for Bearer Authorization header / token-based auth at Git commands. + +- cfa078e255: The `ZipArchiveResponse` now correctly handles corrupt ZIP archives. + + Before this change, certain corrupt ZIP archives either cause the inflater to throw (as expected), or will hang the parser indefinitely. + + By switching out the `zip` parsing library, we now write to a temporary directory, and load from disk which should ensure that the parsing of the `.zip` files are done correctly because `streaming` of `zip` paths is technically impossible without being able to parse the headers at the end of the file. + +- 770d3f92c4: The config prop `ensureExists` now applies to schema creation when `pluginDivisionMode` is set to `schema`. This means schemas will no longer accidentally be automatically created when `ensureExists` is set to `false`. + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## @backstage/integration@1.3.0-next.0 + +### Minor Changes + +- 593dea6710: Add support for Basic Auth for Bitbucket Server. + +### Patch Changes + +- 163243a4d1: Handle incorrect return type from Octokit paginate plugin to resolve reading URLs from GitHub +- c4b460a47d: Avoid double encoding of the file path in `getBitbucketDownloadUrl` +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. + +## @backstage/plugin-catalog@1.5.0-next.0 + +### Minor Changes + +- 80da5162c7: Plugin catalog has been modified to use an experimental feature where you can customize the title of the create button. + + You can modify it by doing: + + ```typescript jsx + import { catalogPlugin } from '@backstage/plugin-catalog'; + + catalogPlugin.__experimentalReconfigure({ + createButtonTitle: 'New', + }); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +### Minor Changes + +- 593dea6710: Add support for Basic Auth for Bitbucket Server. +- 3b7930b3e5: Add support for Bearer Authorization header / token-based auth at Git commands. +- 3f1316f1c5: User Bearer Authorization header at Git commands with token-based auth at Bitbucket Server. +- eeff5046ae: Updated `publish:gitlab:merge-request` action to allow commit updates and deletes + +### Patch Changes + +- fc8a5f797b: Add a `publish:gerrit:review` scaffolder action +- 014b3b7776: Add missing `res.end()` in scaffolder backend `EventStream` usage +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.1-next.0 + +## @backstage/plugin-shortcuts@0.3.0-next.0 + +### Minor Changes + +- 5b769fddb5: Internal observable replaced with a mapping from the storage API. This fixes shortcuts initialization when using firestore. + + `ShortcutApi.get` method, that returns an immediate snapshot of shortcuts, made public. + + Example of how to get and observe `shortcuts`: + + ```typescript + const shortcutApi = useApi(shortcutsApiRef); + const shortcuts = useObservable(shortcutApi.shortcut$(), shortcutApi.get()); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/app-defaults@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## @backstage/backend-app-api@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## @backstage/backend-plugin-api@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + +## @backstage/backend-tasks@0.3.4-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/backend-test-utils@0.1.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/cli@0.18.1-next.0 + +## @backstage/cli@0.18.1-next.0 + +### Patch Changes + +- a539564c0d: Added Backstage version to output of `yarn backstage-cli info` command +- 94155a41e0: Updated dependencies `@svgr/*` to `6.3.x`. + +## @backstage/core-app-api@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## @backstage/core-components@0.10.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## @backstage/core-plugin-api@1.0.5-next.0 + +### Patch Changes + +- 80da5162c7: Introduced a new experimental feature that allows you to declare plugin-wide options for your plugin by defining + `__experimentalConfigure` in your `createPlugin` options. See for more information. + + This is an experimental feature and it will have breaking changes in the future. + +## @backstage/create-app@0.4.30-next.0 + +### Patch Changes + +- Bumped create-app version. + +## @backstage/dev-utils@1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + +## @backstage/integration-react@1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @techdocs/cli@1.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-techdocs-node@1.2.1-next.0 + +## @backstage/test-utils@1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## @backstage/plugin-adr@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-adr-common@0.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## @backstage/plugin-adr-backend@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-adr-common@0.1.3-next.0 + +## @backstage/plugin-adr-common@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## @backstage/plugin-airbrake@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/dev-utils@1.0.5-next.0 + - @backstage/test-utils@1.1.3-next.0 + +## @backstage/plugin-airbrake-backend@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-allure@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-analytics-module-ga@0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-apache-airflow@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-api-docs@0.8.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-apollo-explorer@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-app-backend@0.3.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-auth-backend@0.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## @backstage/plugin-auth-node@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-azure-devops@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-azure-devops-backend@0.3.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-badges@0.2.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-badges-backend@0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-bazaar@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-bazaar-backend@0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-test-utils@0.1.27-next.0 + +## @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## @backstage/plugin-bitrise@0.1.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-catalog-backend@1.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-catalog-node@1.0.1-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.1.8-next.0 + +### Patch Changes + +- 17d45dbf10: 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). + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.1-next.0 + +### Patch Changes + +- b1995df9f3: Adjust references in deprecation warnings to point to stable URL/document. +- Updated dependencies + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## @backstage/plugin-catalog-graph@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-catalog-import@0.8.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-catalog-node@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.1-next.0 + +## @backstage/plugin-catalog-react@1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## @backstage/plugin-cicd-statistics@0.1.10-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-cicd-statistics@0.1.10-next.0 + +## @backstage/plugin-circleci@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-cloudbuild@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-code-climate@0.1.8-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-code-coverage@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-code-coverage-backend@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## @backstage/plugin-codescene@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-config-schema@0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-cost-insights@0.11.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-dynatrace@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-explore@0.3.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-explore-react@0.0.20-next.0 + +## @backstage/plugin-explore-react@0.0.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## @backstage/plugin-firehydrant@0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-fossa@0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-gcalendar@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-gcp-projects@0.3.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-git-release-manager@0.3.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-github-actions@0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-github-deployments@0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.2-next.0 + +### Patch Changes + +- 73268a67ff: Fixed rendering when PR contains references to deleted Github accounts +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-gitops-profiles@0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-gocd@0.1.14-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-graphiql@0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-graphql-backend@0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-home@0.4.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-stack-overflow@0.1.4-next.0 + +## @backstage/plugin-ilert@0.1.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-jenkins@0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-jenkins-backend@0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## @backstage/plugin-kafka@0.3.8-next.0 + +### Patch Changes + +- bde245f0bf: Add dashboard URL feature and fix minor styling issues. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-kafka-backend@0.2.28-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-kubernetes@0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-kubernetes-backend@0.7.1-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## @backstage/plugin-lighthouse@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-newrelic@0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-newrelic-dashboard@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-org@0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-pagerduty@0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-periskop@0.1.6-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-periskop-backend@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-permission-backend@0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## @backstage/plugin-permission-node@0.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## @backstage/plugin-permission-react@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## @backstage/plugin-proxy-backend@0.2.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-rollbar@0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-rollbar-backend@0.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## @backstage/plugin-scaffolder@1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## @backstage/plugin-search@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## @backstage/plugin-search-backend@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.0.1-next.0 + +## @backstage/plugin-search-backend-module-pg@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + +## @backstage/plugin-search-backend-node@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + +## @backstage/plugin-search-react@1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-sentry@0.4.1-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-sonarqube@0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-splunk-on-call@0.3.32-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-stack-overflow@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-home@0.4.24-next.0 + +## @backstage/plugin-stack-overflow-backend@0.1.4-next.0 + +### Patch Changes + +- ea5631a8b2: Added API key as separate configuration + +## @backstage/plugin-tech-insights@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-tech-insights-backend@0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + +## @backstage/plugin-tech-insights-common@0.2.6-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. + +## @backstage/plugin-tech-insights-node@0.3.3-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + +## @backstage/plugin-tech-radar@0.5.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-techdocs@1.3.1-next.0 + +### Patch Changes + +- 7a98c73dc8: Fixed techdocs sidebar layout bug for medium devices. +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## @backstage/plugin-techdocs-backend@1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-techdocs-node@1.2.1-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## @backstage/plugin-techdocs-node@1.2.1-next.0 + +### Patch Changes + +- c8196bd37d: Fix AWS S3 404 NotFound error + + When reading an object from the S3 bucket through a stream, the aws-sdk getObject() API may throw a 404 NotFound Error with no error message or, in fact, any sort of HTTP-layer error responses. These fail the @backstage/error's assertError() checks, so they must be wrapped. The test for this case was also updated to match the wrapped error message. + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## @backstage/plugin-techdocs-react@1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-todo@0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-todo-backend@0.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## @backstage/plugin-user-settings@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-vault@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @backstage/plugin-vault-backend@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/backend-test-utils@0.1.27-next.0 + +## @backstage/plugin-xcmetrics@0.2.28-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## example-app@0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/plugin-kafka@0.3.8-next.0 + - @backstage/plugin-gocd@0.1.14-next.0 + - @backstage/plugin-sentry@0.4.1-next.0 + - @backstage/plugin-shortcuts@0.3.0-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-import@0.8.11-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/plugin-github-actions@0.5.8-next.0 + - @backstage/plugin-scaffolder@1.4.1-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-airbrake@0.3.8-next.0 + - @backstage/plugin-apache-airflow@0.2.1-next.0 + - @backstage/plugin-api-docs@0.8.8-next.0 + - @backstage/plugin-azure-devops@0.1.24-next.0 + - @backstage/plugin-badges@0.2.32-next.0 + - @backstage/plugin-catalog-graph@0.2.20-next.0 + - @backstage/plugin-circleci@0.3.8-next.0 + - @backstage/plugin-cloudbuild@0.3.8-next.0 + - @backstage/plugin-code-coverage@0.2.1-next.0 + - @backstage/plugin-cost-insights@0.11.30-next.0 + - @backstage/plugin-dynatrace@0.1.2-next.0 + - @backstage/plugin-explore@0.3.39-next.0 + - @backstage/plugin-gcalendar@0.3.4-next.0 + - @backstage/plugin-gcp-projects@0.3.27-next.0 + - @backstage/plugin-graphiql@0.2.40-next.0 + - @backstage/plugin-home@0.4.24-next.0 + - @backstage/plugin-jenkins@0.7.7-next.0 + - @backstage/plugin-kubernetes@0.7.1-next.0 + - @backstage/plugin-lighthouse@0.3.8-next.0 + - @backstage/plugin-newrelic@0.3.26-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.1-next.0 + - @backstage/plugin-org@0.5.8-next.0 + - @backstage/plugin-pagerduty@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + - @backstage/plugin-rollbar@0.4.8-next.0 + - @backstage/plugin-search@1.0.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-stack-overflow@0.1.4-next.0 + - @backstage/plugin-tech-insights@0.2.4-next.0 + - @backstage/plugin-tech-radar@0.5.15-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + - @backstage/plugin-todo@0.2.10-next.0 + - @backstage/plugin-user-settings@0.4.7-next.0 + - @internal/plugin-catalog-customized@0.0.1-next.0 + +## example-backend@0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-kubernetes-backend@0.7.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + - @backstage/plugin-app-backend@0.3.35-next.0 + - @backstage/plugin-auth-backend@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-azure-devops-backend@0.3.14-next.0 + - @backstage/plugin-badges-backend@0.1.29-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-code-coverage-backend@0.2.1-next.0 + - @backstage/plugin-graphql-backend@0.1.25-next.0 + - @backstage/plugin-jenkins-backend@0.1.25-next.0 + - @backstage/plugin-kafka-backend@0.2.28-next.0 + - @backstage/plugin-permission-backend@0.5.10-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + - @backstage/plugin-proxy-backend@0.2.29-next.0 + - @backstage/plugin-rollbar-backend@0.1.32-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.3-next.0 + - @backstage/plugin-search-backend@1.0.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.1-next.0 + - @backstage/plugin-search-backend-module-pg@0.3.6-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + - @backstage/plugin-tech-insights-backend@0.5.1-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.19-next.0 + - @backstage/plugin-techdocs-backend@1.2.1-next.0 + - @backstage/plugin-todo-backend@0.1.32-next.0 + - example-app@0.2.74-next.0 + +## example-backend-next@0.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + - @backstage/backend-app-api@0.1.1-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## techdocs-cli-embedded-app@0.2.73-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## @internal/plugin-catalog-customized@0.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + +## @internal/plugin-todo-list@1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## @internal/plugin-todo-list-backend@1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 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..d1bff97a53 --- /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/6682) 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/data/plugins/backstage-plugin-api-linter b/microsite/data/plugins/backstage-plugin-api-linter new file mode 100644 index 0000000000..ae2a451ea7 --- /dev/null +++ b/microsite/data/plugins/backstage-plugin-api-linter @@ -0,0 +1,9 @@ +--- +title: backstage-plugin-api-linter +author: Zalando +authorUrl: https://github.com/zalando +category: Linting +description: API Linter is a quality assurance tool that checks the compliance of API's specifications to Zalando's API rules. +documentation: https://github.com/zalando/backstage-plugin-api-linter +iconUrl: https://raw.githubusercontent.com/zalando/zally/main/logo.png +npmPackageName: backstage-plugin-api-linter 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/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 680c668fe6..8c8c643879 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.5.0-next.0", "dependencies": { "@manypkg/get-packages": "^1.1.3", "@microsoft/api-documenter": "^7.17.11", diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 8e50e13300..8d7b236eb5 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/app-defaults +## 1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## 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..f941aeb5a9 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.5-next.0", "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@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.1-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..2f4c0e7bff 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,121 @@ # example-app +## 0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/plugin-kafka@0.3.8-next.0 + - @backstage/plugin-gocd@0.1.14-next.0 + - @backstage/plugin-sentry@0.4.1-next.0 + - @backstage/plugin-shortcuts@0.3.0-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-import@0.8.11-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/plugin-github-actions@0.5.8-next.0 + - @backstage/plugin-scaffolder@1.4.1-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-airbrake@0.3.8-next.0 + - @backstage/plugin-apache-airflow@0.2.1-next.0 + - @backstage/plugin-api-docs@0.8.8-next.0 + - @backstage/plugin-azure-devops@0.1.24-next.0 + - @backstage/plugin-badges@0.2.32-next.0 + - @backstage/plugin-catalog-graph@0.2.20-next.0 + - @backstage/plugin-circleci@0.3.8-next.0 + - @backstage/plugin-cloudbuild@0.3.8-next.0 + - @backstage/plugin-code-coverage@0.2.1-next.0 + - @backstage/plugin-cost-insights@0.11.30-next.0 + - @backstage/plugin-dynatrace@0.1.2-next.0 + - @backstage/plugin-explore@0.3.39-next.0 + - @backstage/plugin-gcalendar@0.3.4-next.0 + - @backstage/plugin-gcp-projects@0.3.27-next.0 + - @backstage/plugin-graphiql@0.2.40-next.0 + - @backstage/plugin-home@0.4.24-next.0 + - @backstage/plugin-jenkins@0.7.7-next.0 + - @backstage/plugin-kubernetes@0.7.1-next.0 + - @backstage/plugin-lighthouse@0.3.8-next.0 + - @backstage/plugin-newrelic@0.3.26-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.1-next.0 + - @backstage/plugin-org@0.5.8-next.0 + - @backstage/plugin-pagerduty@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + - @backstage/plugin-rollbar@0.4.8-next.0 + - @backstage/plugin-search@1.0.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-stack-overflow@0.1.4-next.0 + - @backstage/plugin-tech-insights@0.2.4-next.0 + - @backstage/plugin-tech-radar@0.5.15-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + - @backstage/plugin-todo@0.2.10-next.0 + - @backstage/plugin-user-settings@0.4.7-next.0 + - @internal/plugin-catalog-customized@0.0.1-next.0 + +## 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 08833ca1a3..738dbc2246 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,67 +1,66 @@ { "name": "example-app", - "version": "0.2.73-next.3", + "version": "0.2.74-next.0", "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.5-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/cli": "^0.18.1-next.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": "^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-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.5-next.0", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-airbrake": "^0.3.8-next.0", + "@backstage/plugin-api-docs": "^0.8.8-next.0", + "@backstage/plugin-azure-devops": "^0.1.24-next.0", + "@backstage/plugin-apache-airflow": "^0.2.1-next.0", + "@backstage/plugin-badges": "^0.2.32-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-graph": "^0.2.20-next.0", + "@backstage/plugin-catalog-import": "^0.8.11-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-circleci": "^0.3.8-next.0", + "@backstage/plugin-cloudbuild": "^0.3.8-next.0", + "@backstage/plugin-code-coverage": "^0.2.1-next.0", + "@backstage/plugin-cost-insights": "^0.11.30-next.0", + "@backstage/plugin-dynatrace": "^0.1.2-next.0", + "@backstage/plugin-explore": "^0.3.39-next.0", + "@backstage/plugin-gcalendar": "^0.3.4-next.0", + "@backstage/plugin-gcp-projects": "^0.3.27-next.0", + "@backstage/plugin-github-actions": "^0.5.8-next.0", + "@backstage/plugin-gocd": "^0.1.14-next.0", + "@backstage/plugin-graphiql": "^0.2.40-next.0", + "@backstage/plugin-home": "^0.4.24-next.0", + "@backstage/plugin-jenkins": "^0.7.7-next.0", + "@backstage/plugin-kafka": "^0.3.8-next.0", + "@backstage/plugin-kubernetes": "^0.7.1-next.0", + "@backstage/plugin-lighthouse": "^0.3.8-next.0", + "@backstage/plugin-newrelic": "^0.3.26-next.0", + "@backstage/plugin-newrelic-dashboard": "^0.2.1-next.0", + "@backstage/plugin-org": "^0.5.8-next.0", + "@backstage/plugin-pagerduty": "0.5.1-next.0", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@backstage/plugin-rollbar": "^0.4.8-next.0", + "@backstage/plugin-scaffolder": "^1.4.1-next.0", + "@backstage/plugin-search": "^1.0.1-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.1-next.0", + "@backstage/plugin-sentry": "^0.4.1-next.0", + "@backstage/plugin-shortcuts": "^0.3.0-next.0", + "@backstage/plugin-stack-overflow": "^0.1.4-next.0", + "@backstage/plugin-tech-insights": "^0.2.4-next.0", + "@backstage/plugin-tech-radar": "^0.5.15-next.0", + "@backstage/plugin-techdocs": "^1.3.1-next.0", + "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.3-next.0", + "@backstage/plugin-techdocs-react": "^1.0.3-next.0", + "@backstage/plugin-todo": "^0.2.10-next.0", + "@backstage/plugin-user-settings": "^0.4.7-next.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", @@ -70,6 +69,7 @@ "@roadiehq/backstage-plugin-github-insights": "^2.0.0", "@roadiehq/backstage-plugin-github-pull-requests": "^2.0.0", "@roadiehq/backstage-plugin-travis-ci": "^2.0.0", + "@internal/plugin-catalog-customized": "0.0.1-next.0", "history": "^5.0.0", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -81,7 +81,7 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/test-utils": "^1.1.2-next.2", + "@backstage/test-utils": "^1.1.3-next.0", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 35c61f2f16..289af8d40f 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -35,11 +35,13 @@ import { } from '@backstage/core-components'; import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; import { AzurePullRequestsPage } from '@backstage/plugin-azure-devops'; + import { CatalogEntityPage, CatalogIndexPage, catalogPlugin, -} from '@backstage/plugin-catalog'; +} from '@internal/plugin-catalog-customized'; + import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; import { CatalogImportPage, diff --git a/packages/app/src/components/catalog/EntityPage.test.tsx b/packages/app/src/components/catalog/EntityPage.test.tsx index 68ce5fb497..f9d23247c6 100644 --- a/packages/app/src/components/catalog/EntityPage.test.tsx +++ b/packages/app/src/components/catalog/EntityPage.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { EntityLayout } from '@backstage/plugin-catalog'; +import { EntityLayout } from '@internal/plugin-catalog-customized'; import { EntityProvider, starredEntitiesApiRef, diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 155dc071ff..288196266e 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -59,7 +59,7 @@ import { isComponentType, isKind, isOrphan, -} from '@backstage/plugin-catalog'; +} from '@internal/plugin-catalog-customized'; import { Direction, EntityCatalogGraphCard, diff --git a/packages/app/src/components/search/SearchModal.tsx b/packages/app/src/components/search/SearchModal.tsx index 99fc964cb2..218ead9b82 100644 --- a/packages/app/src/components/search/SearchModal.tsx +++ b/packages/app/src/components/search/SearchModal.tsx @@ -33,7 +33,7 @@ import { useContent, } from '@backstage/core-components'; import { useApi, useRouteRef } from '@backstage/core-plugin-api'; -import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; +import { CatalogSearchResultListItem } from '@internal/plugin-catalog-customized'; import { catalogApiRef, CATALOG_FILTER_EXISTS, diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index 053fa81da8..99814130c2 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -24,7 +24,7 @@ import { useSidebarPinState, } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; +import { CatalogSearchResultListItem } from '@internal/plugin-catalog-customized'; import { catalogApiRef, CATALOG_FILTER_EXISTS, diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 334de3b4d8..6794161f1d 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/backend-app-api +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## 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..1655d9ea87 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.1-next.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.1-next.0", + "@backstage/backend-common": "^0.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@backstage/plugin-permission-node": "^0.6.4-next.0", "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.1-next.0" }, "files": [ "dist", diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index 84370721a8..790bb0eedd 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,62 @@ # @backstage/backend-common +## 0.15.0-next.0 + +### Minor Changes + +- 12e9b54f0e: Added back support for when no branch is provided to the `UrlReader` for Bitbucket Server +- 30012e7d8c: - Added `force` and `remoteRef` option to `push` method in `git` actions + - Added `addRemote` and `deleteRemote` methods to `git` actions + +### Patch Changes + +- fc8a5f797b: Improve `scm/git` wrapper around `isomorphic-git` library : + + - Add `checkout` function, + - Add optional `remoteRef` parameter in the `push` function. + +- 3b7930b3e5: Add support for Bearer Authorization header / token-based auth at Git commands. +- cfa078e255: The `ZipArchiveResponse` now correctly handles corrupt ZIP archives. + + Before this change, certain corrupt ZIP archives either cause the inflater to throw (as expected), or will hang the parser indefinitely. + + By switching out the `zip` parsing library, we now write to a temporary directory, and load from disk which should ensure that the parsing of the `.zip` files are done correctly because `streaming` of `zip` paths is technically impossible without being able to parse the headers at the end of the file. + +- 770d3f92c4: The config prop `ensureExists` now applies to schema creation when `pluginDivisionMode` is set to `schema`. This means schemas will no longer accidentally be automatically created when `ensureExists` is set to `false`. +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## 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/api-report.md b/packages/backend-common/api-report.md index 6059e68792..87bc3fca87 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -338,7 +338,10 @@ export class Git { dir: string; remote: string; url: string; + force?: boolean; }): Promise; + // (undocumented) + checkout(options: { dir: string; ref: string }): Promise; clone(options: { url: string; dir: string; @@ -363,11 +366,14 @@ export class Git { dir: string; fullName?: boolean; }): Promise; + // (undocumented) + deleteRemote(options: { dir: string; remote: string }): Promise; fetch(options: { dir: string; remote?: string }): Promise; // (undocumented) static fromAuth: (options: { username?: string; password?: string; + token?: string; logger?: Logger; }) => Git; // (undocumented) @@ -387,7 +393,12 @@ export class Git { }; }): Promise; // (undocumented) - push(options: { dir: string; remote: string }): Promise; + push(options: { + dir: string; + remote: string; + remoteRef?: string; + force?: boolean; + }): Promise; readCommit(options: { dir: string; sha: string }): Promise; resolveRef(options: { dir: string; ref: string }): Promise; } diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index cb2f653277..7a0d492638 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.15.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -36,17 +36,18 @@ "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.3.0-next.0", "@backstage/types": "^1.0.0", "@google-cloud/storage": "^6.0.0", + "@keyv/redis": "^2.2.3", "@manypkg/get-packages": "^1.1.3", "@octokit/rest": "^19.0.3", "@types/cors": "^2.8.6", "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/webpack-env": "^1.15.2", "archiver": "^5.0.2", "aws-sdk": "^2.840.0", @@ -64,7 +65,6 @@ "jose": "^4.6.0", "keyv": "^4.0.3", "keyv-memcache": "^1.2.5", - "@keyv/redis": "^2.2.3", "knex": "^2.0.0", "lodash": "^4.17.21", "logform": "^2.3.2", @@ -78,8 +78,8 @@ "selfsigned": "^2.0.0", "stoppable": "^1.1.0", "tar": "^6.1.2", - "unzipper": "^0.10.11", "winston": "^3.2.1", + "yauzl": "^2.10.0", "yn": "^4.0.0" }, "peerDependencies": { @@ -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.27-next.0", + "@backstage/cli": "^0.18.1-next.0", "@types/archiver": "^5.1.0", "@types/base64-stream": "^1.0.2", "@types/compression": "^1.7.0", @@ -106,7 +106,7 @@ "@types/stoppable": "^1.1.0", "@types/supertest": "^2.0.8", "@types/tar": "^6.1.1", - "@types/unzipper": "^0.10.3", + "@types/yauzl": "^2.10.0", "@types/webpack-env": "^1.15.2", "aws-sdk-mock": "^5.2.1", "better-sqlite3": "^7.5.0", diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts index ea8aca38ea..9e8af44fc0 100644 --- a/packages/backend-common/src/database/DatabaseManager.test.ts +++ b/packages/backend-common/src/database/DatabaseManager.test.ts @@ -612,6 +612,31 @@ describe('DatabaseManager', () => { ); }); + it('ensureExists does not create database or schema when false', async () => { + const testManager = DatabaseManager.fromConfig( + new ConfigReader({ + backend: { + database: { + client: 'pg', + pluginDivisionMode: 'schema', + ensureExists: false, + connection: { + host: 'localhost', + user: 'foo', + password: 'bar', + database: 'foodb', + }, + }, + }, + }), + ); + const pluginId = 'testdbname'; + await testManager.forPlugin(pluginId).getClient(); + + expect(mocked(ensureDatabaseExists)).toHaveBeenCalledTimes(0); + expect(mocked(ensureSchemaExists)).toHaveBeenCalledTimes(0); + }); + it('fetches and merges additional knex config', async () => { const testManager = DatabaseManager.fromConfig( new ConfigReader({ diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index 004e7d13cd..39ff864f8c 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -321,13 +321,15 @@ export class DatabaseManager { let schemaOverrides; if (this.getPluginDivisionModeConfig() === 'schema') { - try { - schemaOverrides = this.getSchemaOverrides(pluginId); - await ensureSchemaExists(pluginConfig, pluginId); - } catch (error) { - throw new Error( - `Failed to connect to the database to make sure that schema for plugin '${pluginId}' exists, ${error}`, - ); + schemaOverrides = this.getSchemaOverrides(pluginId); + if (this.getEnsureExistsConfig(pluginId)) { + try { + await ensureSchemaExists(pluginConfig, pluginId); + } catch (error) { + throw new Error( + `Failed to connect to the database to make sure that schema for plugin '${pluginId}' exists, ${error}`, + ); + } } } diff --git a/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts b/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts index 4584ba75f8..f308b4d33d 100644 --- a/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts +++ b/packages/backend-common/src/reading/BitbucketServerUrlReader.test.ts @@ -109,6 +109,55 @@ describe('BitbucketServerUrlReader', () => { }); }); + describe('readTree without branch', () => { + const repoBuffer = fs.readFileSync( + path.resolve(__dirname, '__fixtures__/bitbucket-server-repo.tar.gz'), + ); + + beforeEach(() => { + worker.use( + rest.get( + 'https://api.bitbucket.mycompany.net/rest/api/1.0/projects/backstage/repos/mock/archive', + (_, res, ctx) => + res( + ctx.status(200), + ctx.set('Content-Type', 'application/zip'), + ctx.set( + 'content-disposition', + 'attachment; filename=backstage-mock.tgz', + ), + ctx.body(repoBuffer), + ), + ), + rest.get( + 'https://api.bitbucket.mycompany.net/rest/api/1.0/projects/backstage/repos/mock/commits/*', + (_, res, ctx) => + res( + ctx.status(200), + ctx.json({ + values: [{ id: '12ab34cd56ef78gh90ij12kl34mn56op78qr90st' }], + }), + ), + ), + ); + }); + + it('uses private bitbucket host', async () => { + const response = await reader.readTree( + 'https://bitbucket.mycompany.net/projects/backstage/repos/mock/browse/docs?at=some-branch', + ); + + expect(response.etag).toBe('12ab34cd56ef'); + + const files = await response.files(); + + expect(files.length).toBe(1); + const indexMarkdownFile = await files[0].content(); + + expect(indexMarkdownFile.toString()).toBe('# Test\n'); + }); + }); + describe('search private', () => { const repoBuffer = fs.readFileSync( path.resolve(__dirname, '__fixtures__/bitbucket-server-repo.tar.gz'), diff --git a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts index 31894cf823..e9a229a1ff 100644 --- a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts @@ -205,10 +205,21 @@ export class BitbucketServerUrlReader implements UrlReader { const commits = await commitResponse.json(); + // Handles case when a branch is provided in the URL if (commits && commits.id) { return commits.id.substring(0, 12); } + // Handles case when no branch is provided in the URL + if ( + commits && + commits.values && + commits.values.length > 0 && + commits.values[0].id + ) { + return commits.values[0].id.substring(0, 12); + } + throw new Error(`Failed to read response from ${commitApiUrl}`); } } 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/reading/__fixtures__/mock-corrupted.zip b/packages/backend-common/src/reading/__fixtures__/mock-corrupted.zip new file mode 100644 index 0000000000..5130a72f6f Binary files /dev/null and b/packages/backend-common/src/reading/__fixtures__/mock-corrupted.zip differ diff --git a/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts b/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts index a54bac0c4a..f1915cf99b 100644 --- a/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts +++ b/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts @@ -22,6 +22,9 @@ import { ZipArchiveResponse } from './ZipArchiveResponse'; const archiveData = fs.readFileSync( resolvePath(__filename, '../../__fixtures__/mock-main.zip'), ); +const archiveDataCorrupted = fs.readFileSync( + resolvePath(__filename, '../../__fixtures__/mock-corrupted.zip'), +); const archiveDataWithExtraDir = fs.readFileSync( resolvePath(__filename, '../../__fixtures__/mock-with-extra-root-dir.zip'), ); @@ -31,6 +34,7 @@ describe('ZipArchiveResponse', () => { mockFs({ '/test-archive.zip': archiveData, '/test-archive-with-extra-root-dir.zip': archiveDataWithExtraDir, + '/test-archive-corrupted.zip': archiveDataCorrupted, '/tmp': mockFs.directory(), }); }); @@ -55,6 +59,7 @@ describe('ZipArchiveResponse', () => { content: expect.any(Function), }, ]); + const contents = await Promise.all(files.map(f => f.content())); expect(contents.map(c => c.toString('utf8').trim())).toEqual([ 'site_name: Test', @@ -129,7 +134,6 @@ describe('ZipArchiveResponse', () => { const res = new ZipArchiveResponse(stream, 'docs/', '/tmp', 'etag'); const dir = await res.dir(); - expect(dir).toMatch(/^[\/\\]tmp[\/\\].*$/); await expect( fs.readFile(resolvePath(dir, 'index.md'), 'utf8'), @@ -152,4 +156,15 @@ describe('ZipArchiveResponse', () => { fs.pathExists(resolvePath(dir, 'docs/index.md')), ).resolves.toBe(false); }); + + it('should throw on invalid archive', async () => { + const stream = fs.createReadStream('/test-archive-corrupted.zip'); + + const res = new ZipArchiveResponse(stream, '', '/tmp', 'etag'); + const filesPromise = res.files(); + + await expect(filesPromise).rejects.toThrow( + 'invalid comment length. expected: 55. found: 0', + ); + }); }); diff --git a/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts b/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts index e07cedde87..1a6658b0c2 100644 --- a/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts +++ b/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts @@ -15,15 +15,16 @@ */ import archiver from 'archiver'; +import yauzl, { Entry } from 'yauzl'; import fs from 'fs-extra'; import platformPath from 'path'; import { Readable } from 'stream'; -import unzipper, { Entry } from 'unzipper'; import { ReadTreeResponse, ReadTreeResponseDirOptions, ReadTreeResponseFile, } from '../types'; +import { streamToBuffer } from './util'; /** * Wraps a zip archive stream into a tree response reader. @@ -67,43 +68,85 @@ export class ZipArchiveResponse implements ReadTreeResponse { private shouldBeIncluded(entry: Entry): boolean { if (this.subPath) { - if (!entry.path.startsWith(this.subPath)) { + if (!entry.fileName.startsWith(this.subPath)) { return false; } } if (this.filter) { - return this.filter(this.getInnerPath(entry.path), { - size: - (entry.vars as { uncompressedSize?: number }).uncompressedSize ?? - entry.vars.compressedSize, + return this.filter(this.getInnerPath(entry.fileName), { + size: entry.uncompressedSize, }); } return true; } - async files(): Promise { - this.onlyOnce(); + private async streamToTemporaryFile( + stream: Readable, + ): Promise<{ fileName: string; cleanup: () => Promise }> { + const tmpDir = await fs.mkdtemp( + platformPath.join(this.workDir, 'backstage-tmp'), + ); + const tmpFile = platformPath.join(tmpDir, 'tmp.zip'); - const files = Array(); + const writeStream = fs.createWriteStream(tmpFile); - await this.stream - .pipe(unzipper.Parse()) - .on('entry', (entry: Entry) => { - if (entry.type === 'Directory') { - entry.resume(); + return new Promise((resolve, reject) => { + writeStream.on('error', reject); + writeStream.on('finish', () => + resolve({ fileName: tmpFile, cleanup: () => fs.remove(tmpFile) }), + ); + stream.pipe(writeStream); + }); + } + + private forEveryZipEntry( + zip: string, + callback: (entry: Entry, content: Readable) => Promise, + ): Promise { + return new Promise((resolve, reject) => { + yauzl.open(zip, { lazyEntries: true }, (err, zipfile) => { + if (err || !zipfile) { + reject(err || new Error(`Failed to open zip file ${zip}`)); return; } - if (this.shouldBeIncluded(entry)) { - files.push({ - path: this.getInnerPath(entry.path), - content: () => entry.buffer(), - }); - } else { - entry.autodrain(); - } - }) - .promise(); + zipfile.on('entry', async (entry: Entry) => { + // Check that the file is not a directory, and that is matches the filter. + if (!entry.fileName.endsWith('/') && this.shouldBeIncluded(entry)) { + zipfile.openReadStream(entry, async (openErr, readStream) => { + if (openErr || !readStream) { + reject( + openErr || + new Error(`Failed to open zip entry ${entry.fileName}`), + ); + return; + } + + await callback(entry, readStream); + }); + } + zipfile.readEntry(); + }); + zipfile.once('end', () => resolve()); + zipfile.on('error', e => reject(e)); + zipfile.readEntry(); + }); + }); + } + + async files(): Promise { + this.onlyOnce(); + const files = Array(); + const temporary = await this.streamToTemporaryFile(this.stream); + + await this.forEveryZipEntry(temporary.fileName, async (entry, content) => { + files.push({ + path: this.getInnerPath(entry.fileName), + content: async () => await streamToBuffer(content), + }); + }); + + temporary.cleanup(); return files; } @@ -116,45 +159,46 @@ export class ZipArchiveResponse implements ReadTreeResponse { } const archive = archiver('zip'); - await this.stream - .pipe(unzipper.Parse()) - .on('entry', (entry: Entry) => { - if (entry.type === 'File' && this.shouldBeIncluded(entry)) { - archive.append(entry, { name: this.getInnerPath(entry.path) }); - } else { - entry.autodrain(); - } - }) - .promise(); + const temporary = await this.streamToTemporaryFile(this.stream); + + await this.forEveryZipEntry(temporary.fileName, async (entry, content) => { + archive.append(await streamToBuffer(content), { + name: this.getInnerPath(entry.fileName), + }); + }); + archive.finalize(); + temporary.cleanup(); + return archive; } async dir(options?: ReadTreeResponseDirOptions): Promise { this.onlyOnce(); - const dir = options?.targetDir ?? (await fs.mkdtemp(platformPath.join(this.workDir, 'backstage-'))); - await this.stream - .pipe(unzipper.Parse()) - .on('entry', async (entry: Entry) => { - // Ignore directory entries since we handle that with the file entries - // as a zip can have files with directories without directory entries - if (entry.type === 'File' && this.shouldBeIncluded(entry)) { - const entryPath = this.getInnerPath(entry.path); - const dirname = platformPath.dirname(entryPath); - if (dirname) { - await fs.mkdirp(platformPath.join(dir, dirname)); - } - entry.pipe(fs.createWriteStream(platformPath.join(dir, entryPath))); - } else { - entry.autodrain(); - } - }) - .promise(); + const temporary = await this.streamToTemporaryFile(this.stream); + + await this.forEveryZipEntry(temporary.fileName, async (entry, content) => { + const entryPath = this.getInnerPath(entry.fileName); + const dirname = platformPath.dirname(entryPath); + + if (dirname) { + await fs.mkdirp(platformPath.join(dir, dirname)); + } + return new Promise(async (resolve, reject) => { + const file = fs.createWriteStream(platformPath.join(dir, entryPath)); + file.on('finish', resolve); + + content.on('error', reject); + content.pipe(file); + }); + }); + + temporary.cleanup(); return dir; } diff --git a/packages/backend-common/src/reading/tree/util.ts b/packages/backend-common/src/reading/tree/util.ts index cfb986a0b0..63192102f4 100644 --- a/packages/backend-common/src/reading/tree/util.ts +++ b/packages/backend-common/src/reading/tree/util.ts @@ -14,12 +14,28 @@ * limitations under the License. */ +import { Readable, pipeline as pipelineCb } from 'stream'; +import { promisify } from 'util'; +import concatStream from 'concat-stream'; + +const pipeline = promisify(pipelineCb); + // Matches a directory name + one `/` at the start of any string, // containing any character except `/` one or more times, and ending with a `/` // e.g. Will match `dirA/` in `dirA/dirB/file.ext` const directoryNameRegex = /^[^\/]+\//; - // Removes the first segment of a forward-slash-separated path export function stripFirstDirectoryFromPath(path: string): string { return path.replace(directoryNameRegex, ''); } + +// Collect the stream into a buffer and return +export const streamToBuffer = (stream: Readable): Promise => { + return new Promise(async (resolve, reject) => { + try { + await pipeline(stream, concatStream(resolve)); + } catch (ex) { + reject(ex); + } + }); +}; diff --git a/packages/backend-common/src/scm/git.test.ts b/packages/backend-common/src/scm/git.test.ts index 46aa0804b6..e9c66a896e 100644 --- a/packages/backend-common/src/scm/git.test.ts +++ b/packages/backend-common/src/scm/git.test.ts @@ -26,6 +26,7 @@ describe('Git', () => { beforeEach(() => { jest.resetAllMocks(); }); + describe('add', () => { it('should call isomorphic-git add with the correct arguments', async () => { const git = Git.fromAuth({}); @@ -48,14 +49,48 @@ describe('Git', () => { const dir = 'mockdirectory'; const remote = 'origin'; const url = 'git@github.com/something/sads'; + const force = true; - await git.addRemote({ dir, remote, url }); + await git.addRemote({ dir, remote, url, force }); expect(isomorphic.addRemote).toHaveBeenCalledWith({ fs, dir, remote, url, + force, + }); + }); + }); + + describe('deleteRemote', () => { + it('should call isomorphic-git with the correct arguments', async () => { + const git = Git.fromAuth({}); + const dir = 'mockdirectory'; + const remote = 'origin'; + + await git.deleteRemote({ dir, remote }); + + expect(isomorphic.deleteRemote).toHaveBeenCalledWith({ + fs, + dir, + remote, + }); + }); + }); + + describe('checkout', () => { + it('should call isomorphic-git with the correct arguments', async () => { + const git = Git.fromAuth({}); + const dir = 'mockdirectory'; + const ref = 'master'; + + await git.checkout({ dir, ref }); + + expect(isomorphic.checkout).toHaveBeenCalledWith({ + fs, + dir, + ref, }); }); }); @@ -112,6 +147,33 @@ describe('Git', () => { onAuth: expect.any(Function), }); }); + + it('should call isomorphic-git with the correct arguments (Bearer)', async () => { + const url = 'http://github.com/some/repo'; + const dir = '/some/mock/dir'; + const auth = { + token: 'test', + }; + const git = Git.fromAuth(auth); + + await git.clone({ url, dir }); + + expect(isomorphic.clone).toHaveBeenCalledWith({ + fs, + http, + url, + dir, + singleBranch: true, + depth: 1, + onProgress: expect.any(Function), + headers: { + Authorization: 'Bearer test', + 'user-agent': 'git/@isomorphic-git', + }, + onAuth: expect.any(Function), + }); + }); + it('should pass a function that returns the authorization as the onAuth handler', async () => { const url = 'http://github.com/some/repo'; const dir = '/some/mock/dir'; @@ -129,6 +191,27 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propagate 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', () => { @@ -179,6 +262,31 @@ describe('Git', () => { onAuth: expect.any(Function), }); }); + + it('should call isomorphic-git with the correct arguments (Bearer)', async () => { + const remote = 'http://github.com/some/repo'; + const dir = '/some/mock/dir'; + const auth = { + token: 'test', + }; + const git = Git.fromAuth(auth); + + await git.fetch({ remote, dir }); + + expect(isomorphic.fetch).toHaveBeenCalledWith({ + fs, + http, + remote, + dir, + onProgress: expect.any(Function), + headers: { + Authorization: 'Bearer test', + 'user-agent': 'git/@isomorphic-git', + }, + onAuth: expect.any(Function), + }); + }); + it('should pass a function that returns the authorization as the onAuth handler', async () => { const remote = 'http://github.com/some/repo'; const dir = '/some/mock/dir'; @@ -196,6 +304,27 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propagate 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', () => { @@ -253,14 +382,72 @@ describe('Git', () => { password: 'hunter2', }; const git = Git.fromAuth(auth); + const remoteRef = 'master'; + const force = true; - await git.push({ dir, remote }); + await git.push({ dir, remote, remoteRef, force }); expect(isomorphic.push).toHaveBeenCalledWith({ fs, http, remote, dir, + remoteRef, + force, + onProgress: expect.any(Function), + headers: { + 'user-agent': 'git/@isomorphic-git', + }, + onAuth: expect.any(Function), + }); + }); + + it('should call isomorphic-git with the correct arguments (Bearer)', async () => { + const remote = 'origin'; + const dir = '/some/mock/dir'; + const auth = { + token: 'test', + }; + const git = Git.fromAuth(auth); + const remoteRef = 'master'; + const force = true; + + await git.push({ dir, remote, remoteRef, force }); + + expect(isomorphic.push).toHaveBeenCalledWith({ + fs, + http, + remote, + dir, + remoteRef, + force, + onProgress: expect.any(Function), + headers: { + Authorization: 'Bearer test', + 'user-agent': 'git/@isomorphic-git', + }, + onAuth: expect.any(Function), + }); + }); + + it('should call isomorphic-git with remoteRef parameter', async () => { + const remote = 'origin'; + const remoteRef = 'refs/for/master'; + const dir = '/some/mock/dir'; + const auth = { + username: 'blob', + password: 'hunter2', + }; + const git = Git.fromAuth(auth); + + await git.push({ dir, remote, remoteRef }); + + expect(isomorphic.push).toHaveBeenCalledWith({ + fs, + http, + remote, + remoteRef, + dir, onProgress: expect.any(Function), headers: { 'user-agent': 'git/@isomorphic-git', @@ -268,6 +455,7 @@ describe('Git', () => { onAuth: expect.any(Function), }); }); + it('should pass a function that returns the authorization as the onAuth handler', async () => { const remote = 'origin'; const dir = '/some/mock/dir'; @@ -276,8 +464,10 @@ describe('Git', () => { password: 'hunter2', }; const git = Git.fromAuth(auth); + const remoteRef = 'master'; + const force = true; - await git.push({ remote, dir }); + await git.push({ remote, dir, remoteRef, force }); const { onAuth } = ( isomorphic.push as unknown as jest.Mock @@ -285,6 +475,29 @@ describe('Git', () => { expect(onAuth()).toEqual(auth); }); + + it('should propagate 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); + const remoteRef = 'master'; + const force = true; + + (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, remoteRef, force })).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..8a72c7af89 100644 --- a/packages/backend-common/src/scm/git.ts +++ b/packages/backend-common/src/scm/git.ts @@ -24,13 +24,17 @@ import fs from 'fs-extra'; import { Logger } from 'winston'; /* -provider username password -GitHub 'x-access-token' token -BitBucket 'x-token-auth' token -GitLab 'oauth2' token +provider username password +Azure 'notempty' token +Bitbucket Cloud 'x-token-auth' token +Bitbucket Server username password or token +GitHub 'x-access-token' token +GitLab 'oauth2' token + From : https://isomorphic-git.org/docs/en/onAuth with fix for GitHub -Azure 'notempty' token +Or token provided as `token` for Bearer auth header +instead of Basic Auth (e.g., Bitbucket Server). */ /** @@ -39,13 +43,23 @@ Azure 'notempty' token * @public */ export class Git { + private readonly headers: { + [x: string]: string; + }; + private constructor( private readonly config: { username?: string; password?: string; + token?: string; logger?: Logger; }, - ) {} + ) { + this.headers = { + 'user-agent': 'git/@isomorphic-git', + ...(config.token ? { Authorization: `Bearer ${config.token}` } : {}), + }; + } async add(options: { dir: string; filepath: string }): Promise { const { dir, filepath } = options; @@ -58,12 +72,26 @@ export class Git { dir: string; remote: string; url: string; + force?: boolean; }): Promise { - const { dir, url, remote } = options; + const { dir, url, remote, force } = options; this.config.logger?.info( `Creating new remote {dir=${dir},remote=${remote},url=${url}}`, ); - return git.addRemote({ fs, dir, remote, url }); + return git.addRemote({ fs, dir, remote, url, force }); + } + + async deleteRemote(options: { dir: string; remote: string }): Promise { + const { dir, remote } = options; + this.config.logger?.info(`Deleting remote {dir=${dir},remote=${remote}}`); + return git.deleteRemote({ fs, dir, remote }); + } + + async checkout(options: { dir: string; ref: string }): Promise { + const { dir, ref } = options; + this.config.logger?.info(`Checking out branch {dir=${dir},ref=${ref}}`); + + return git.checkout({ fs, dir, ref }); } async commit(options: { @@ -90,21 +118,28 @@ 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: this.headers, + 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 +159,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: this.headers, + 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 { @@ -170,22 +216,37 @@ export class Git { }); } - async push(options: { dir: string; remote: string }) { - const { dir, remote } = options; + async push(options: { + dir: string; + remote: string; + remoteRef?: string; + force?: boolean; + }) { + const { dir, remote, remoteRef, force } = options; 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(), + remoteRef, + force, + headers: this.headers, + 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 */ @@ -239,9 +300,10 @@ export class Git { static fromAuth = (options: { username?: string; password?: string; + token?: string; logger?: Logger; }) => { - const { username, password, logger } = options; - return new Git({ username, password, logger }); + const { username, password, token, logger } = options; + return new Git({ username, password, token, logger }); }; } diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 42d40130c9..4226d86709 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,23 @@ # example-backend-next +## 0.0.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + - @backstage/backend-app-api@0.1.1-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..934ddd3a71 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.2-next.0", "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.1-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.0", + "@backstage/plugin-scaffolder-backend": "^1.5.0-next.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist" diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index 30f00578fa..f6003e3f59 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/backend-plugin-api +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + +## 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..9bb6fba154 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.1-next.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.15.0-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/backend-tasks": "^0.3.4-next.0", "@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.1-next.0" }, "files": [ "dist", diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index e7fa4e6eeb..96e03f0232 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/backend-tasks +## 0.3.4-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..7322446c40 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.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "private": false, @@ -33,11 +33,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.15.0-next.0", "@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", + "@types/luxon": "^3.0.0", "cron": "^2.0.0", "knex": "^2.0.0", "lodash": "^4.17.21", @@ -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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..1b37f615ee 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/backend-test-utils +## 0.1.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/cli@0.18.1-next.0 + +## 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..c3ba763bd2 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.27-next.0", "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.15.0-next.0", + "@backstage/cli": "^0.18.1-next.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.1-next.0" }, "files": [ "dist" diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index c38a16c86f..56266d0a0e 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,81 @@ # example-backend +## 0.2.74-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-kubernetes-backend@0.7.1-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + - @backstage/plugin-app-backend@0.3.35-next.0 + - @backstage/plugin-auth-backend@0.15.1-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-azure-devops-backend@0.3.14-next.0 + - @backstage/plugin-badges-backend@0.1.29-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-code-coverage-backend@0.2.1-next.0 + - @backstage/plugin-graphql-backend@0.1.25-next.0 + - @backstage/plugin-jenkins-backend@0.1.25-next.0 + - @backstage/plugin-kafka-backend@0.2.28-next.0 + - @backstage/plugin-permission-backend@0.5.10-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + - @backstage/plugin-proxy-backend@0.2.29-next.0 + - @backstage/plugin-rollbar-backend@0.1.32-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.3-next.0 + - @backstage/plugin-search-backend@1.0.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.0.1-next.0 + - @backstage/plugin-search-backend-module-pg@0.3.6-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + - @backstage/plugin-tech-insights-backend@0.5.1-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.19-next.0 + - @backstage/plugin-techdocs-backend@1.2.1-next.0 + - @backstage/plugin-todo-backend@0.1.32-next.0 + - example-app@0.2.74-next.0 + +## 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..415a966242 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.74-next.0", "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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@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.3.0-next.0", + "@backstage/plugin-app-backend": "^0.3.35-next.0", + "@backstage/plugin-auth-backend": "^0.15.1-next.0", + "@backstage/plugin-auth-node": "^0.2.4-next.0", + "@backstage/plugin-azure-devops-backend": "^0.3.14-next.0", + "@backstage/plugin-badges-backend": "^0.1.29-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.0", + "@backstage/plugin-code-coverage-backend": "^0.2.1-next.0", + "@backstage/plugin-graphql-backend": "^0.1.25-next.0", + "@backstage/plugin-jenkins-backend": "^0.1.25-next.0", + "@backstage/plugin-kubernetes-backend": "^0.7.1-next.0", + "@backstage/plugin-kafka-backend": "^0.2.28-next.0", + "@backstage/plugin-permission-backend": "^0.5.10-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.4-next.0", + "@backstage/plugin-proxy-backend": "^0.2.29-next.0", + "@backstage/plugin-rollbar-backend": "^0.1.32-next.0", + "@backstage/plugin-scaffolder-backend": "^1.5.0-next.0", + "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.3-next.0", + "@backstage/plugin-search-backend": "^1.0.1-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-backend-node": "^1.0.1-next.0", + "@backstage/plugin-search-backend-module-elasticsearch": "^1.0.1-next.0", + "@backstage/plugin-search-backend-module-pg": "^0.3.6-next.0", + "@backstage/plugin-techdocs-backend": "^1.2.1-next.0", + "@backstage/plugin-tech-insights-backend": "^0.5.1-next.0", + "@backstage/plugin-tech-insights-node": "^0.3.3-next.0", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.19-next.0", + "@backstage/plugin-todo-backend": "^0.1.32-next.0", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^19.0.3", "better-sqlite3": "^7.5.0", @@ -75,11 +76,11 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.1-next.0", "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", - "@types/luxon": "^2.0.4" + "@types/luxon": "^3.0.0" }, "files": [ "dist" 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..448e5cfb83 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.1-next.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/package.json b/packages/catalog-model/package.json index 081ffff289..40eb5419b3 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.1-next.0", "@types/jest": "^26.0.7", "@types/json-schema": "^7.0.5", "@types/lodash": "^4.14.151", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index ba8f773fdb..f2e1af08e1 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,51 @@ # @backstage/cli +## 0.18.1-next.0 + +### Patch Changes + +- a539564c0d: Added Backstage version to output of `yarn backstage-cli info` command +- 94155a41e0: Updated dependencies `@svgr/*` to `6.3.x`. + +## 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 ab0c8ac4d3..e8108f5f7d 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.1-next.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", @@ -50,10 +50,10 @@ "@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", - "@svgr/plugin-svgo": "6.2.x", - "@svgr/rollup": "6.2.x", - "@svgr/webpack": "6.2.x", + "@svgr/plugin-jsx": "6.3.x", + "@svgr/plugin-svgo": "6.3.x", + "@svgr/rollup": "6.3.x", + "@svgr/webpack": "6.3.x", "@types/webpack-env": "^1.15.2", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", @@ -126,14 +126,14 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-common": "^0.14.1-next.3", + "@backstage/backend-common": "^0.15.0-next.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/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.5-next.0", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", + "@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/cli/src/commands/info.ts b/packages/cli/src/commands/info.ts index 4042d2cb8e..f3740de1a9 100644 --- a/packages/cli/src/commands/info.ts +++ b/packages/cli/src/commands/info.ts @@ -19,17 +19,30 @@ import os from 'os'; import { runPlain } from '../lib/run'; import { paths } from '../lib/paths'; import { Lockfile } from '../lib/versioning'; +import fs from 'fs-extra'; export default async () => { await new Promise(async () => { const yarnVersion = await runPlain('yarn --version'); - // eslint-disable-next-line no-restricted-syntax - const isLocal = require('fs').existsSync(paths.resolveOwn('./src')); + const isLocal = fs.existsSync(paths.resolveOwn('./src')); + + const backstageFile = paths.resolveTargetRoot('backstage.json'); + let backstageVersion = 'N/A'; + if (fs.existsSync(backstageFile)) { + try { + const backstageJson = await fs.readJSON(backstageFile); + backstageVersion = backstageJson.version ?? 'N/A'; + } catch (error) { + console.warn('The "backstage.json" file is not in the expected format'); + console.log(); + } + } console.log(`OS: ${os.type} ${os.release} - ${os.platform}/${os.arch}`); console.log(`node: ${process.version}`); console.log(`yarn: ${yarnVersion}`); console.log(`cli: ${cliVersion} (${isLocal ? 'local' : 'installed'})`); + console.log(`backstage: ${backstageVersion}`); console.log(); console.log('Dependencies:'); const lockfilePath = paths.resolveTargetRoot('yarn.lock'); 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/config/package.json b/packages/config/package.json index fc99531bb4..eebebf0b59 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -37,7 +37,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/test-utils": "^1.1.2-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@types/jest": "^26.0.7", "@types/node": "^16.0.0" }, diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 115b41d76e..c78206bbea 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/core-app-api +## 1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## 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..3df868ad3d 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.5-next.0", "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.5-next.0", "@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.1-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..8edd7e8242 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/core-components +## 0.10.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## 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/package.json b/packages/core-components/package.json index 43ab5d1775..5a67fa32c3 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.1-next.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.5-next.0", + "@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.5-next.0", + "@backstage/cli": "^0.18.1-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/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..ce81ff83dc 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/core-plugin-api +## 1.0.5-next.0 + +### Patch Changes + +- 80da5162c7: Introduced a new experimental feature that allows you to declare plugin-wide options for your plugin by defining + `__experimentalConfigure` in your `createPlugin` options. See https://backstage.io/docs/plugins/customization.md for more information. + + This is an experimental feature and it will have breaking changes in the future. + +## 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/api-report.md b/packages/core-plugin-api/api-report.md index 1921c1b715..49e0be3800 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -214,6 +214,7 @@ export type BackstageIdentityResponse = { export type BackstagePlugin< Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, + PluginInputOptions extends {} = {}, > = { getId(): string; getApis(): Iterable; @@ -221,6 +222,7 @@ export type BackstagePlugin< provide(extension: Extension): T; routes: Routes; externalRoutes: ExternalRoutes; + __experimentalReconfigure(options: PluginInputOptions): void; }; // @public @@ -303,9 +305,10 @@ export function createExternalRouteRef< export function createPlugin< Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, + PluginInputOptions extends {} = {}, >( - config: PluginConfig, -): BackstagePlugin; + config: PluginConfig, +): BackstagePlugin; // @public export function createReactExtension< @@ -621,12 +624,14 @@ export type PendingOAuthRequest = { export type PluginConfig< Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes, + PluginInputOptions extends {}, > = { id: string; apis?: Iterable; routes?: Routes; externalRoutes?: ExternalRoutes; featureFlags?: PluginFeatureFlagConfig[]; + __experimentalConfigure?(options?: PluginInputOptions): {}; }; // @public @@ -634,6 +639,20 @@ export type PluginFeatureFlagConfig = { name: string; }; +// @alpha +export interface PluginOptionsProviderProps { + // (undocumented) + children: ReactNode; + // (undocumented) + plugin?: BackstagePlugin; +} + +// @alpha +export const PluginProvider: ({ + children, + plugin, +}: PluginOptionsProviderProps) => JSX.Element; + // @public export type ProfileInfo = { email?: string; @@ -734,6 +753,11 @@ export function useElementFilter( dependencies?: any[], ): T; +// @alpha +export function usePluginOptions< + TPluginOptions extends {} = {}, +>(): TPluginOptions; + // @public export function useRouteRef( routeRef: ExternalRouteRef, diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 132abe72a5..fdf49e2e82 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.5-next.0", "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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-plugin-api/src/extensions/extensions.tsx b/packages/core-plugin-api/src/extensions/extensions.tsx index efc8e3525d..18b815debf 100644 --- a/packages/core-plugin-api/src/extensions/extensions.tsx +++ b/packages/core-plugin-api/src/extensions/extensions.tsx @@ -15,12 +15,13 @@ */ import React, { lazy, Suspense } from 'react'; -import { AnalyticsContext } from '../analytics/AnalyticsContext'; +import { AnalyticsContext } from '../analytics'; import { useApp } from '../app'; import { RouteRef, useRouteRef } from '../routing'; import { attachComponentData } from './componentData'; -import { Extension, BackstagePlugin } from '../plugin/types'; +import { Extension, BackstagePlugin } from '../plugin'; import { PluginErrorBoundary } from './PluginErrorBoundary'; +import { PluginProvider } from '../plugin-options'; /** * Lazy or synchronous retrieving of extension components. @@ -245,7 +246,9 @@ export function createReactExtension< ...(mountPoint && { routeRef: mountPoint.id }), }} > - + + + diff --git a/packages/core-plugin-api/src/index.ts b/packages/core-plugin-api/src/index.ts index 30fc35b62a..e8edd38ff3 100644 --- a/packages/core-plugin-api/src/index.ts +++ b/packages/core-plugin-api/src/index.ts @@ -22,6 +22,7 @@ export * from './analytics'; export * from './apis'; +export * from './plugin-options'; export * from './app'; export * from './extensions'; export * from './icons'; diff --git a/plugins/search/src/components/LegacySearchPage/Filters/index.ts b/packages/core-plugin-api/src/plugin-options/index.ts similarity index 81% rename from plugins/search/src/components/LegacySearchPage/Filters/index.ts rename to packages/core-plugin-api/src/plugin-options/index.ts index de890e0eaf..1737a1c836 100644 --- a/plugins/search/src/components/LegacySearchPage/Filters/index.ts +++ b/packages/core-plugin-api/src/plugin-options/index.ts @@ -14,6 +14,5 @@ * limitations under the License. */ -export { FiltersButton } from './FiltersButton'; -export { Filters } from './Filters'; -export type { FiltersState } from './Filters'; +export { usePluginOptions, PluginProvider } from './usePluginOptions'; +export type { PluginOptionsProviderProps } from './usePluginOptions'; diff --git a/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx b/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx new file mode 100644 index 0000000000..11bf85aafa --- /dev/null +++ b/packages/core-plugin-api/src/plugin-options/usePluginOptions.test.tsx @@ -0,0 +1,53 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { usePluginOptions, PluginProvider } from './usePluginOptions'; +import { createPlugin } from '../plugin'; + +describe('usePluginOptions', () => { + it('should provide a versioned value to hook', () => { + type TestInputPluginOptions = { + 'key-1': string; + }; + + type TestPluginOptions = { + 'key-1': string; + 'key-2': string; + }; + + const plugin = createPlugin({ + id: 'my-plugin', + __experimentalConfigure(_: TestInputPluginOptions): TestPluginOptions { + return { 'key-1': 'value-1', 'key-2': 'value-2' }; + }, + }); + + const rendered = renderHook(() => usePluginOptions(), { + wrapper: ({ children }) => ( + {children} + ), + }); + + const config = rendered.result.current; + + expect(config).toEqual({ + 'key-1': 'value-1', + 'key-2': 'value-2', + }); + }); +}); diff --git a/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx new file mode 100644 index 0000000000..82684636d6 --- /dev/null +++ b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx @@ -0,0 +1,92 @@ +/* + * 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 { + createVersionedContext, + createVersionedValueMap, + useVersionedContext, +} from '@backstage/version-bridge'; +import { BackstagePlugin } from '../plugin'; +import React, { ReactNode } from 'react'; + +const contextKey: string = 'plugin-context'; + +/** + * Properties for the PluginProvider component. + * + * @alpha + */ +export interface PluginOptionsProviderProps { + children: ReactNode; + plugin?: BackstagePlugin; +} + +/** + * Contains the plugin configuration. + * + * @alpha + */ +export const PluginProvider = ({ + children, + plugin, +}: PluginOptionsProviderProps): JSX.Element => { + const { Provider } = createVersionedContext<{ + 1: { plugin: BackstagePlugin | undefined }; + }>(contextKey); + + return ( + + {children} + + ); +}; + +/** + * Grab the current entity from the context, throws if the entity has not yet been loaded + * or is not available. + * + * @alpha + */ +export function usePluginOptions< + TPluginOptions extends {} = {}, +>(): TPluginOptions { + const versionedHolder = useVersionedContext<{ 1: TPluginOptions }>( + contextKey, + ); + + if (!versionedHolder) { + throw new Error('Plugin Options context is not available'); + } + + const value = versionedHolder.atVersion(1); + if (!value) { + throw new Error('Plugin Options v1 is not available'); + } + + return ( + value as unknown as { + plugin: { + getPluginOptions(): {}; + }; + } + ).plugin.getPluginOptions() as TPluginOptions; +} diff --git a/packages/core-plugin-api/src/plugin/Plugin.tsx b/packages/core-plugin-api/src/plugin/Plugin.tsx index d97554b27b..da26cd4db0 100644 --- a/packages/core-plugin-api/src/plugin/Plugin.tsx +++ b/packages/core-plugin-api/src/plugin/Plugin.tsx @@ -30,9 +30,18 @@ import { AnyApiFactory } from '../apis'; export class PluginImpl< Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes, -> implements BackstagePlugin + PluginInputOptions extends {}, +> implements BackstagePlugin { - constructor(private readonly config: PluginConfig) {} + constructor( + private readonly config: PluginConfig< + Routes, + ExternalRoutes, + PluginInputOptions + >, + ) {} + + private options: {} | undefined = undefined; getId(): string { return this.config.id; @@ -58,6 +67,19 @@ export class PluginImpl< return extension.expose(this); } + __experimentalReconfigure(options: PluginInputOptions): void { + if (this.config.__experimentalConfigure) { + this.options = this.config.__experimentalConfigure(options); + } + } + + getPluginOptions(): {} { + if (this.config.__experimentalConfigure && !this.options) { + this.options = this.config.__experimentalConfigure(); + } + return this.options ?? {}; + } + toString() { return `plugin{${this.config.id}}`; } @@ -72,8 +94,9 @@ export class PluginImpl< export function createPlugin< Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, + PluginInputOptions extends {} = {}, >( - config: PluginConfig, -): BackstagePlugin { + config: PluginConfig, +): BackstagePlugin { return new PluginImpl(config); } diff --git a/packages/core-plugin-api/src/plugin/index.ts b/packages/core-plugin-api/src/plugin/index.ts index 95f5a6b219..7d088ef823 100644 --- a/packages/core-plugin-api/src/plugin/index.ts +++ b/packages/core-plugin-api/src/plugin/index.ts @@ -15,6 +15,7 @@ */ export { createPlugin } from './Plugin'; + export type { AnyExternalRoutes, AnyRoutes, diff --git a/packages/core-plugin-api/src/plugin/types.ts b/packages/core-plugin-api/src/plugin/types.ts index d2dad6f639..37ce6c9e7c 100644 --- a/packages/core-plugin-api/src/plugin/types.ts +++ b/packages/core-plugin-api/src/plugin/types.ts @@ -15,7 +15,7 @@ */ import { RouteRef, SubRouteRef, ExternalRouteRef } from '../routing'; -import { AnyApiFactory } from '../apis/system'; +import { AnyApiFactory } from '../apis'; /** * Plugin extension type. @@ -52,6 +52,7 @@ export type AnyExternalRoutes = { [name: string]: ExternalRouteRef }; export type BackstagePlugin< Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, + PluginInputOptions extends {} = {}, > = { getId(): string; getApis(): Iterable; @@ -62,6 +63,7 @@ export type BackstagePlugin< provide(extension: Extension): T; routes: Routes; externalRoutes: ExternalRoutes; + __experimentalReconfigure(options: PluginInputOptions): void; }; /** @@ -82,12 +84,14 @@ export type PluginFeatureFlagConfig = { export type PluginConfig< Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes, + PluginInputOptions extends {}, > = { id: string; apis?: Iterable; routes?: Routes; externalRoutes?: ExternalRoutes; featureFlags?: PluginFeatureFlagConfig[]; + __experimentalConfigure?(options?: PluginInputOptions): {}; }; /** diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index fd8aa38def..adbd0c50fd 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/create-app +## 0.4.30-next.0 + +### Patch Changes + +- Bumped create-app version. + +## 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..3182e2e83a 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.30-next.0", "private": false, "publishConfig": { "access": "public" diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 7f89910f3b..c6a51cc55b 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/dev-utils +## 1.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + +## 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..0e5bce2f02 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.5-next.0", "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.5-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/test-utils": "^1.1.3-next.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", @@ -59,7 +59,7 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.1-next.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..8bd53e0848 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.1-next.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..0114c5fb0b 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/integration-react +## 1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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..f4d9e3a0d1 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.3-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration": "^1.3.0-next.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", @@ -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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.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/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index edfb621431..e2487eb1fb 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,41 @@ # @backstage/integration +## 1.3.0-next.0 + +### Minor Changes + +- 593dea6710: Add support for Basic Auth for Bitbucket Server. + +### Patch Changes + +- 163243a4d1: Handle incorrect return type from Octokit paginate plugin to resolve reading URLs from GitHub +- c4b460a47d: Avoid double encoding of the file path in `getBitbucketDownloadUrl` +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. + +## 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/api-report.md b/packages/integration/api-report.md index 8d8d017095..cf52bec65b 100644 --- a/packages/integration/api-report.md +++ b/packages/integration/api-report.md @@ -150,6 +150,8 @@ export type BitbucketServerIntegrationConfig = { host: string; apiBaseUrl: string; token?: string; + username?: string; + password?: string; }; // @public diff --git a/packages/integration/config.d.ts b/packages/integration/config.d.ts index 22acc5cd70..7c897d637a 100644 --- a/packages/integration/config.d.ts +++ b/packages/integration/config.d.ts @@ -92,6 +92,16 @@ export interface Config { * @visibility secret */ token?: string; + /** + * Username used to authenticate requests with Basic Auth. + * @visibility secret + */ + username?: string; + /** + * Password (or token as password) used to authenticate requests with Basic Auth. + * @visibility secret + */ + password?: string; /** * The base url for the Bitbucket Server API, for example https:///rest/api/1.0 * @visibility frontend diff --git a/packages/integration/package.json b/packages/integration/package.json index 68b6ba369c..ade3399415 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.3.0-next.0", "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,11 +43,11 @@ "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.1-next.0", + "@backstage/config-loader": "^1.1.3", + "@backstage/test-utils": "^1.1.3-next.0", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "msw": "^0.44.0" }, "files": [ diff --git a/packages/integration/src/bitbucket/core.test.ts b/packages/integration/src/bitbucket/core.test.ts index 2b16be82d4..23a193e6fe 100644 --- a/packages/integration/src/bitbucket/core.test.ts +++ b/packages/integration/src/bitbucket/core.test.ts @@ -139,6 +139,20 @@ describe('bitbucket core', () => { ); }); + it('does not double encode the filepath', async () => { + const config: BitbucketIntegrationConfig = { + host: 'bitbucket.mycompany.net', + apiBaseUrl: 'https://api.bitbucket.mycompany.net/rest/api/1.0', + }; + const result = await getBitbucketDownloadUrl( + 'https://bitbucket.mycompany.net/projects/backstage/repos/mock/browse/%2Fdocs?at=some-branch', + config, + ); + expect(result).toEqual( + 'https://api.bitbucket.mycompany.net/rest/api/1.0/projects/backstage/repos/mock/archive?format=tgz&at=some-branch&prefix=backstage-mock&path=%2Fdocs', + ); + }); + it('do not add path param if no path is specified for Bitbucket Server', async () => { const defaultBranchResponse = { displayId: 'main', diff --git a/packages/integration/src/bitbucket/core.ts b/packages/integration/src/bitbucket/core.ts index f6018ad27a..5c5533155d 100644 --- a/packages/integration/src/bitbucket/core.ts +++ b/packages/integration/src/bitbucket/core.ts @@ -100,7 +100,9 @@ export async function getBitbucketDownloadUrl( // path will limit the downloaded content // /docs will only download the docs folder and everything below it // /docs/index.md will download the docs folder and everything below it - const path = filepath ? `&path=${encodeURIComponent(filepath)}` : ''; + const path = filepath + ? `&path=${encodeURIComponent(decodeURIComponent(filepath))}` + : ''; const archiveUrl = isHosted ? `${protocol}://${resource}/${project}/${repoName}/get/${branch}.tar.gz` : `${config.apiBaseUrl}/projects/${project}/repos/${repoName}/archive?format=tgz&at=${branch}&prefix=${project}-${repoName}${path}`; diff --git a/packages/integration/src/bitbucketServer/config.test.ts b/packages/integration/src/bitbucketServer/config.test.ts index 83c28f5e9d..985165f23f 100644 --- a/packages/integration/src/bitbucketServer/config.test.ts +++ b/packages/integration/src/bitbucketServer/config.test.ts @@ -55,7 +55,7 @@ describe('readBitbucketServerIntegrationConfig', () => { ); } - it('reads all values', () => { + it('reads all values, token', () => { const output = readBitbucketServerIntegrationConfig( buildConfig({ host: 'a.com', @@ -70,6 +70,23 @@ describe('readBitbucketServerIntegrationConfig', () => { }); }); + it('reads all values, basic auth', () => { + const output = readBitbucketServerIntegrationConfig( + buildConfig({ + host: 'a.com', + apiBaseUrl: 'https://a.com/api', + username: 'u', + password: 'p', + }), + ); + expect(output).toEqual({ + host: 'a.com', + apiBaseUrl: 'https://a.com/api', + username: 'u', + password: 'p', + }); + }); + it('rejects funky configs', () => { const valid: any = { host: 'a.com', diff --git a/packages/integration/src/bitbucketServer/config.ts b/packages/integration/src/bitbucketServer/config.ts index ec7930616c..2f93bdeb07 100644 --- a/packages/integration/src/bitbucketServer/config.ts +++ b/packages/integration/src/bitbucketServer/config.ts @@ -46,6 +46,24 @@ export type BitbucketServerIntegrationConfig = { * If no token is specified, anonymous access is used. */ token?: string; + + /** + * The credentials for Basic Authentication for requests to a Bitbucket Server provider. + * + * If `token` was provided, it will be preferred. + * + * See https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/#authentication + */ + username?: string; + + /** + * The credentials for Basic Authentication for requests to a Bitbucket Server provider. + * + * If `token` was provided, it will be preferred. + * + * See https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/#authentication + */ + password?: string; }; /** @@ -60,6 +78,8 @@ export function readBitbucketServerIntegrationConfig( const host = config.getString('host'); let apiBaseUrl = config.getOptionalString('apiBaseUrl'); const token = config.getOptionalString('token'); + const username = config.getOptionalString('username'); + const password = config.getOptionalString('password'); if (!isValidHost(host)) { throw new Error( @@ -77,6 +97,8 @@ export function readBitbucketServerIntegrationConfig( host, apiBaseUrl, token, + username, + password, }; } diff --git a/packages/integration/src/bitbucketServer/core.test.ts b/packages/integration/src/bitbucketServer/core.test.ts index 076a2c7a4f..de18dcd821 100644 --- a/packages/integration/src/bitbucketServer/core.test.ts +++ b/packages/integration/src/bitbucketServer/core.test.ts @@ -36,7 +36,13 @@ describe('bitbucketServer core', () => { apiBaseUrl: '', token: 'A', }; - const withoutToken: BitbucketServerIntegrationConfig = { + const withBasicAuth: BitbucketServerIntegrationConfig = { + host: '', + apiBaseUrl: '', + username: 'u', + password: 'p', + }; + const withoutCredentials: BitbucketServerIntegrationConfig = { host: '', apiBaseUrl: '', }; @@ -45,7 +51,11 @@ describe('bitbucketServer core', () => { .Authorization, ).toEqual('Bearer A'); expect( - (getBitbucketServerRequestOptions(withoutToken).headers as any) + (getBitbucketServerRequestOptions(withBasicAuth).headers as any) + .Authorization, + ).toEqual('Basic dTpw'); + expect( + (getBitbucketServerRequestOptions(withoutCredentials).headers as any) .Authorization, ).toBeUndefined(); }); diff --git a/packages/integration/src/bitbucketServer/core.ts b/packages/integration/src/bitbucketServer/core.ts index 0c57b0d3ed..5fca2aba68 100644 --- a/packages/integration/src/bitbucketServer/core.ts +++ b/packages/integration/src/bitbucketServer/core.ts @@ -140,6 +140,10 @@ export function getBitbucketServerRequestOptions( if (config.token) { headers.Authorization = `Bearer ${config.token}`; } + if (config.username && config.password) { + const buffer = Buffer.from(`${config.username}:${config.password}`, 'utf8'); + headers.Authorization = `Basic ${buffer.toString('base64')}`; + } return { headers, diff --git a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts index 246a859b7a..d738edf417 100644 --- a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts +++ b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.test.ts @@ -20,6 +20,7 @@ const octokit = { paginate: async (fn: any) => (await fn()).data, apps: { listInstallations: jest.fn(), + listReposAccessibleToInstallation: jest.fn(), createInstallationAccessToken: jest.fn(), }, }; @@ -325,4 +326,78 @@ describe('SingleInstanceGithubCredentialsProvider tests', () => { expect(headers).toEqual({ Authorization: 'Bearer secret_token' }); expect(token).toEqual('secret_token'); }); + + it('should not throw when paginate response is an array of repositories', async () => { + const repoName = 'foobar'; + octokit.apps.listInstallations.mockResolvedValue({ + headers: { + etag: '123', + }, + data: [ + { + id: 1, + repository_selection: 'all', + account: { + login: 'backstage', + }, + }, + ], + } as RestEndpointMethodTypes['apps']['listInstallations']['response']); + + octokit.apps.createInstallationAccessToken.mockResolvedValueOnce({ + data: { + expires_at: DateTime.local().plus({ hours: 1 }).toString(), + token: 'secret_token', + repository_selection: 'selected', + }, + } as RestEndpointMethodTypes['apps']['createInstallationAccessToken']['response']); + + octokit.apps.listReposAccessibleToInstallation.mockReturnValue({ + data: [{ name: repoName }], + } as unknown as RestEndpointMethodTypes['apps']['listReposAccessibleToInstallation']['response']); + + await expect( + github.getCredentials({ + url: `https://github.com/backstage/${repoName}`, + }), + ).resolves.not.toThrow(); + }); + + it('should not throw when paginate response is an object with a property containing an array of repositories', async () => { + const repoName = 'foobar'; + octokit.apps.listInstallations.mockResolvedValue({ + headers: { + etag: '123', + }, + data: [ + { + id: 1, + repository_selection: 'all', + account: { + login: 'backstage', + }, + }, + ], + } as RestEndpointMethodTypes['apps']['listInstallations']['response']); + + octokit.apps.createInstallationAccessToken.mockResolvedValueOnce({ + data: { + expires_at: DateTime.local().plus({ hours: 1 }).toString(), + token: 'secret_token', + repository_selection: 'selected', + }, + } as RestEndpointMethodTypes['apps']['createInstallationAccessToken']['response']); + + octokit.apps.listReposAccessibleToInstallation.mockReturnValue({ + data: { + repositories: [{ name: repoName }], + }, + } as RestEndpointMethodTypes['apps']['listReposAccessibleToInstallation']['response']); + + await expect( + github.getCredentials({ + url: `https://github.com/backstage/${repoName}`, + }), + ).resolves.not.toThrow(); + }); }); diff --git a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.ts b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.ts index e56c1521dd..2fd2e7f7dc 100644 --- a/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.ts +++ b/packages/integration/src/github/SingleInstanceGithubCredentialsProvider.ts @@ -119,7 +119,10 @@ class GithubAppManager { const repos = await installationClient.paginate( installationClient.apps.listReposAccessibleToInstallation, ); - const hasRepo = repos.repositories.some(repository => { + // The return type of the paginate method is incorrect. + const repositories: RestEndpointMethodTypes['apps']['listReposAccessibleToInstallation']['response']['data']['repositories'] = + repos.repositories ?? repos; + const hasRepo = repositories.some(repository => { return repository.name === repo; }); if (!hasRepo) { 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..330f89b5ac 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.3-next.0", "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..1b05441c42 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,39 @@ # techdocs-cli-embedded-app +## 0.2.73-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/app-defaults@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## 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..9d294b5c04 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.73-next.0", "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.5-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/cli": "^0.18.1-next.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.5-next.0", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/plugin-techdocs": "^1.3.1-next.0", + "@backstage/plugin-techdocs-react": "^1.0.3-next.0", + "@backstage/test-utils": "^1.1.3-next.0", + "@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.1-next.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..fe5db6db4c 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,24 @@ # @techdocs/cli +## 1.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-techdocs-node@1.2.1-next.0 + +## 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..14e09515ea 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.4-next.0", "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.1-next.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.15.0-next.0", + "@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.1-next.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..7162c293dd 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/test-utils +## 1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## 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..d7558a8c57 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.3-next.0", "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.5-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@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.1-next.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..4323549ffb 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.1-next.0" }, "files": [ "dist" diff --git a/packages/types/package.json b/packages/types/package.json index d1410631bd..697c9f17f3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -34,7 +34,7 @@ }, "dependencies": {}, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.1-next.0", "@types/zen-observable": "^0.8.0", "zen-observable": "^0.8.15" }, diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index 4b9ce2ed11..37d23238ba 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1", + "@backstage/cli": "^0.18.1-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0" diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 129e6bf56b..b68f6f3bd2 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-adr-backend +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-adr-common@0.1.3-next.0 + +## 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..137a94a66d 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.3-next.0", "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.15.0-next.0", + "@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.3.0-next.0", + "@backstage/plugin-adr-common": "^0.1.3-next.0", + "@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.1-next.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..a5f58a7ed4 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-adr-common +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## 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..f1418000d6 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.3-next.0", "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.3.0-next.0", + "@backstage/plugin-search-common": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.1" + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist" diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 34c81a7f80..12feb4e6cd 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/plugin-adr +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-adr-common@0.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## 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/api-report.md b/plugins/adr/api-report.md index fbe04b1dc4..5059d51023 100644 --- a/plugins/adr/api-report.md +++ b/plugins/adr/api-report.md @@ -25,6 +25,7 @@ export const adrPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 22cb883ae1..4fd6c399cd 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.3-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-adr-common": "^0.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.1-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1513dd88ac 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-airbrake-backend +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..888cf84cfa 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.8-next.0", "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.15.0-next.0", "@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.1-next.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..fefe587abe 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-airbrake +## 0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/dev-utils@1.0.5-next.0 + - @backstage/test-utils@1.1.3-next.0 + +## 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/api-report.md b/plugins/airbrake/api-report.md index bd274e604d..e48fbf9cde 100644 --- a/plugins/airbrake/api-report.md +++ b/plugins/airbrake/api-report.md @@ -13,6 +13,7 @@ export const airbrakePlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 665929d69f..25e36a0a35 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/test-utils": "^1.1.3-next.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/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.5-next.0", + "@backstage/cli": "^0.18.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..62a17f240b 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-allure +## 0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/allure/api-report.md index c5c4253cd4..e6f5d2aa67 100644 --- a/plugins/allure/api-report.md +++ b/plugins/allure/api-report.md @@ -21,6 +21,7 @@ export const allurePlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 508f42f14c..77c175f12d 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.24-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..6ea8760a2b 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-analytics-module-ga +## 0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/analytics-module-ga/api-report.md index 9a359f81e9..557f472f71 100644 --- a/plugins/analytics-module-ga/api-report.md +++ b/plugins/analytics-module-ga/api-report.md @@ -10,7 +10,7 @@ import { Config } from '@backstage/config'; import { IdentityApi } from '@backstage/core-plugin-api'; // @public @deprecated (undocumented) -export const analyticsModuleGA: BackstagePlugin<{}, {}>; +export const analyticsModuleGA: BackstagePlugin<{}, {}, {}>; // @public export class GoogleAnalytics implements AnalyticsApi { diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 499a957d70..300402bc83 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.19-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..eeea48e192 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-apache-airflow +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/apache-airflow/api-report.md index 333e4543cf..428f3238e8 100644 --- a/plugins/apache-airflow/api-report.md +++ b/plugins/apache-airflow/api-report.md @@ -10,8 +10,8 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public export const ApacheAirflowDagTable: ({ - dagIds, - }: { + dagIds, +}: { dagIds?: string[] | undefined; }) => JSX.Element; @@ -27,6 +27,7 @@ export const apacheAirflowPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; ``` diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 8494b1e7a8..29448beef5 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..925f81219f 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.1-next.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..ca61827a0a 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-api-docs +## 0.8.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/api-docs/api-report.md index 991c73d4ab..e32a529df2 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -47,7 +47,8 @@ const apiDocsPlugin: BackstagePlugin< }, { registerApi: ExternalRouteRef; - } + }, + {} >; export { apiDocsPlugin }; export { apiDocsPlugin as plugin }; diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 96b95b51f0..a690e819ad 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..abc2865c01 --- /dev/null +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -0,0 +1,22 @@ +# @backstage/plugin-apollo-explorer + +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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..80dae62e60 --- /dev/null +++ b/plugins/apollo-explorer/api-report.md @@ -0,0 +1,49 @@ +## 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..67e6394adf --- /dev/null +++ b/plugins/apollo-explorer/package.json @@ -0,0 +1,54 @@ +{ + "name": "@backstage/plugin-apollo-explorer", + "version": "0.1.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", + "@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/SearchBar/index.tsx b/plugins/apollo-explorer/src/components/ApolloExplorerBrowser/index.ts similarity index 77% rename from plugins/search/src/components/SearchBar/index.tsx rename to plugins/apollo-explorer/src/components/ApolloExplorerBrowser/index.ts index f95d2ec0fc..d8bc44bfa7 100644 --- a/plugins/search/src/components/SearchBar/index.tsx +++ 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,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 { 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/apollo-explorer/src/index.ts b/plugins/apollo-explorer/src/index.ts new file mode 100644 index 0000000000..6d07535fc3 --- /dev/null +++ b/plugins/apollo-explorer/src/index.ts @@ -0,0 +1,16 @@ +/* + * 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 { 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/apollo-explorer/src/setupTests.ts b/plugins/apollo-explorer/src/setupTests.ts new file mode 100644 index 0000000000..9bb3e72355 --- /dev/null +++ b/plugins/apollo-explorer/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * 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 '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index cea1375cee..6b18abee30 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-app-backend +## 0.3.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..a6c7649d40 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.35-next.0", "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.15.0-next.0", + "@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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..fda3eb1a6c 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,45 @@ # @backstage/plugin-auth-backend +## 0.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## 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..330d617bcf 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.1-next.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.4-next.0", + "@backstage/backend-common": "^0.15.0-next.0", + "@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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..1251030658 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-auth-node +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..294bc08889 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.4-next.0", "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.15.0-next.0", "@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.1-next.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..5171a92bf7 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-azure-devops-backend +## 0.3.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..d960c1e311 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.14-next.0", "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.15.0-next.0", "@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.1-next.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..40803ae633 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.1-next.0" }, "files": [ "dist" diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 15a6f1df08..baed6b3958 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-azure-devops +## 0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/azure-devops/api-report.md index b366166d95..0fe600f15d 100644 --- a/plugins/azure-devops/api-report.md +++ b/plugins/azure-devops/api-report.md @@ -170,7 +170,7 @@ export class AzureDevOpsClient implements AzureDevOpsApi { // Warning: (ae-missing-release-tag) "azureDevOpsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const azureDevOpsPlugin: BackstagePlugin<{}, {}>; +export const azureDevOpsPlugin: BackstagePlugin<{}, {}, {}>; // Warning: (ae-missing-release-tag) "AzurePullRequestsIcon" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index f2f3ee1e2f..bf782919a0 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.24-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-azure-devops-common": "^0.2.4", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..a4ab10f37d 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-badges-backend +## 0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..ba8d0221b6 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.29-next.0", "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.15.0-next.0", + "@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.1-next.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index acfbcd6e0a..67ca470268 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-badges +## 0.2.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/badges/api-report.md index f4ba97cabc..e3af0857a4 100644 --- a/plugins/badges/api-report.md +++ b/plugins/badges/api-report.md @@ -10,7 +10,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; // Warning: (ae-missing-release-tag) "badgesPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const badgesPlugin: BackstagePlugin<{}, {}>; +export const badgesPlugin: BackstagePlugin<{}, {}, {}>; // Warning: (ae-missing-release-tag) "EntityBadgesDialog" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 7c73b55f9e..d7b6bd6489 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.32-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..e72e36100d 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-bazaar-backend +## 0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-test-utils@0.1.27-next.0 + +## 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..e0484c86ee 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.19-next.0", "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.15.0-next.0", + "@backstage/backend-test-utils": "^0.1.27-next.0", "@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.1-next.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..d99afa93ec 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-bazaar +## 0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/cli@0.18.1-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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 e7816757b3..c6afde73f2 100644 --- a/plugins/bazaar/api-report.md +++ b/plugins/bazaar/api-report.md @@ -8,28 +8,21 @@ 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< { root: RouteRef; }, + {}, {} >; -// 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..d08ca17676 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.23-next.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-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.1-next.0", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", "@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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", "@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..6e55f5e507 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + +## 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..a03324d3af 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.2-next.0", "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.3.0-next.0", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.1-next.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..0f4f2cb893 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-bitrise +## 0.1.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/bitrise/api-report.md index 293ea5fe40..f8421a532a 100644 --- a/plugins/bitrise/api-report.md +++ b/plugins/bitrise/api-report.md @@ -11,7 +11,7 @@ import { Entity } from '@backstage/catalog-model'; // Warning: (ae-missing-release-tag) "bitrisePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const bitrisePlugin: BackstagePlugin<{}, {}>; +export const bitrisePlugin: BackstagePlugin<{}, {}, {}>; // Warning: (ae-missing-release-tag) "EntityBitriseContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 00cca959d2..0517a594f8 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.35-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..faf6d2abea 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.1.8-next.0 + +### Patch Changes + +- 17d45dbf10: 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). + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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 4e8db41fac..b1f6358979 100644 --- a/plugins/catalog-backend-module-aws/api-report.md +++ b/plugins/catalog-backend-module-aws/api-report.md @@ -54,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..53224a0408 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.8-next.0", "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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.1-next.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/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-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index a215ff308e..f8f1553359 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..2d23f6190e 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.6-next.0", "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.15.0-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/backend-tasks": "^0.3.4-next.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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..4d3f05ad30 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 + +## 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..2d991e21b4 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.2-next.0", "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.4-next.0", "@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.3.0-next.0", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.2-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.15.0-next.0", + "@backstage/backend-test-utils": "^0.1.27-next.0", + "@backstage/cli": "^0.18.1-next.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..65f9da80d6 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 + +## 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..0cc8d38833 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.2-next.0", "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.15.0-next.0", + "@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.3.0-next.0", + "@backstage/plugin-bitbucket-cloud-common": "^0.1.2-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..13a0ec487f 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..946bd3099f 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.3-next.0", "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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..aabee0b1eb 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-catalog-backend-module-github +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..ed45d98b73 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.6-next.0", "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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..d123fb01bc 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,41 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..2e30380f0f 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.6-next.0", "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.15.0-next.0", + "@backstage/catalog-model": "^1.1.0", + "@backstage/backend-tasks": "^0.3.4-next.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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..7c71053e0d 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..cfb867b69b 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.2-next.0", "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.4-next.0", + "@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.1-next.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.1-next.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..3ff8a4d90d 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,123 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.4.1-next.0 + +### Patch Changes + +- b1995df9f3: Adjust references in deprecation warnings to point to stable URL/document. +- Updated dependencies + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..f96c95854a 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.1-next.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.4-next.0", + "@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.1-next.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.15.0-next.0", + "@backstage/backend-test-utils": "^0.1.27-next.0", + "@backstage/cli": "^0.18.1-next.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..85a14917d8 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 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..d2d4d4989c 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.1-next.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.15.0-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.0", "openapi-types": "^12.0.0" }, "files": [ diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index d809c40018..287ab75267 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,83 @@ # @backstage/plugin-catalog-backend +## 1.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-catalog-node@1.0.1-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## 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..fbc9dabf85 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.1-next.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.1-next.0", + "@backstage/plugin-catalog-node": "^1.0.1-next.0", + "@backstage/backend-common": "^0.15.0-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.4-next.0", + "@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.27-next.0", + "@backstage/cli": "^0.18.1-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-search-backend-node": "1.0.1-next.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..329db25c75 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.1-next.0" }, "files": [ "dist", diff --git a/plugins/catalog-customized/.eslintrc.js b/plugins/catalog-customized/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/catalog-customized/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md new file mode 100644 index 0000000000..c6e3c86ff4 --- /dev/null +++ b/plugins/catalog-customized/CHANGELOG.md @@ -0,0 +1,9 @@ +# @internal/plugin-catalog-customized + +## 0.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 diff --git a/plugins/catalog-customized/README.md b/plugins/catalog-customized/README.md new file mode 100644 index 0000000000..129d70ad58 --- /dev/null +++ b/plugins/catalog-customized/README.md @@ -0,0 +1,57 @@ +# Backstage Catalog Frontend + +This is the React frontend to customize Backstage [software +catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview). +This package supplies the example how it can be achieved. + +## Installation + +This `@internal/plugin-catalog-customized` package comes installed by default in example application of +Backstage application. + +To check if you already have the package, look under +`packages/app/package.json`, in the `dependencies` block, for +`@internal/plugin-catalog-customized`. The instructions below walk through restoring the +plugin, if you previously removed it. + +### Install the package + +```bash +# From your Backstage root directory +yarn add --cwd packages/app @internal/plugin-catalog-customized +``` + +### Add the plugin to your `packages/app` + +Add the import to a file where is your plugin catalog is defined: + +```diff +// packages/app/src/App.tsx + +import from '@internal/plugin-catalog-customized'; + +... + +import { + CatalogIndexPage, + CatalogEntityPage, +} from '@backstage/plugin-catalog'; + +... +``` + +## Development + +This frontend plugin can be started in a standalone mode from directly in this +package with `yarn start`. However, it will have limited functionality and that +process is most convenient when developing the catalog frontend plugin itself. + +To evaluate the catalog and have a greater amount of functionality available, +run the entire Backstage example application from the root folder: + +```bash +yarn dev +``` + +This will launch both frontend and backend in the same window, populated with +some example entities. diff --git a/plugins/catalog-customized/api-report.md b/plugins/catalog-customized/api-report.md new file mode 100644 index 0000000000..5cf6eefde1 --- /dev/null +++ b/plugins/catalog-customized/api-report.md @@ -0,0 +1,9 @@ +## API Report File for "@internal/plugin-catalog-customized" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +export * from '@backstage/plugin-catalog'; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json new file mode 100644 index 0000000000..ee4d22eb09 --- /dev/null +++ b/plugins/catalog-customized/package.json @@ -0,0 +1,49 @@ +{ + "name": "@internal/plugin-catalog-customized", + "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", + "version": "0.0.1-next.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-customized" + }, + "keywords": [ + "backstage" + ], + "scripts": { + "build": "backstage-cli package build", + "start": "backstage-cli package start", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" + }, + "dependencies": { + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0" + }, + "devDependencies": { + "@types/react": "^16.13.1 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/search/src/components/LegacySearchPage/index.ts b/plugins/catalog-customized/src/index.ts similarity index 84% rename from plugins/search/src/components/LegacySearchPage/index.ts rename to plugins/catalog-customized/src/index.ts index 5b64054f8d..cc8aefeaa6 100644 --- a/plugins/search/src/components/LegacySearchPage/index.ts +++ b/plugins/catalog-customized/src/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * 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. @@ -13,5 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import './plugin'; -export { LegacySearchPage } from './LegacySearchPage'; +export * from '@backstage/plugin-catalog'; diff --git a/plugins/catalog-customized/src/plugin.ts b/plugins/catalog-customized/src/plugin.ts new file mode 100644 index 0000000000..ce729d5226 --- /dev/null +++ b/plugins/catalog-customized/src/plugin.ts @@ -0,0 +1,22 @@ +/* + * 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 { catalogPlugin } from '@backstage/plugin-catalog'; + +// id: 'catalog-customized' +catalogPlugin.__experimentalReconfigure({ + createButtonTitle: 'New', +}); diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 30e2b3dacb..6df82d987c 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-catalog-graph +## 0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/catalog-graph/api-report.md index 1a2b03a292..ed4ca2a2c9 100644 --- a/plugins/catalog-graph/api-report.md +++ b/plugins/catalog-graph/api-report.md @@ -48,7 +48,8 @@ export const catalogGraphPlugin: BackstagePlugin< }, true >; - } + }, + {} >; // @public diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 8de941e1a0..e444c84713 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.20-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..082bd43c34 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.1-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..18f74d447f 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/plugin-catalog-import +## 0.8.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/catalog-import/api-report.md index 5a9e8f03fd..90c01255b0 100644 --- a/plugins/catalog-import/api-report.md +++ b/plugins/catalog-import/api-report.md @@ -133,6 +133,7 @@ const catalogImportPlugin: BackstagePlugin< { importPage: RouteRef; }, + {}, {} >; export { catalogImportPlugin }; diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 65a3c89bd5..d44b9aaa67 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.11-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..78fe4d3873 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-node +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.1.1-next.0 + +## 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..0684112075 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.1-next.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.1-next.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.15.0-next.0", + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 5acff71be3..51ef8b15a0 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,71 @@ # @backstage/plugin-catalog-react +## 1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## 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..8bc5f1dfd0 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.3-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/test-utils": "^1.1.3-next.0", "@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..e1583cb69e 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,118 @@ # @backstage/plugin-catalog +## 1.5.0-next.0 + +### Minor Changes + +- 80da5162c7: Plugin catalog has been modified to use an experimental feature where you can customize the title of the create button. + + You can modify it by doing: + + ```typescript jsx + import { catalogPlugin } from '@backstage/plugin-catalog'; + + catalogPlugin.__experimentalReconfigure({ + createButtonTitle: 'New', + }); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## 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 bfdf62bdb0..d13f2acbc2 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -79,6 +79,8 @@ export interface CatalogKindHeaderProps { initialFilter?: string; } +// Warning: (ae-forgotten-export) The symbol "CatalogInputPluginOptions" needs to be exported by the entry point index.d.ts +// // @public (undocumented) export const catalogPlugin: BackstagePlugin< { @@ -99,7 +101,8 @@ export const catalogPlugin: BackstagePlugin< }, true >; - } + }, + CatalogInputPluginOptions >; // @public (undocumented) @@ -132,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..7bf2c9d5ec 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.5.0-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.1-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index c3135e5697..cc00a57314 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -23,8 +23,10 @@ import { } from '@backstage/catalog-model'; import { TableColumn, TableProps } from '@backstage/core-components'; import { + createPlugin, IdentityApi, identityApiRef, + PluginProvider, ProfileInfo, storageApiRef, } from '@backstage/core-plugin-api'; @@ -133,6 +135,22 @@ describe('DefaultCatalogPage', () => { }; const storageApi = MockStorageApi.create(); + type TestInputPluginOptions = { + 'key-1': string; + }; + + type TestPluginOptions = { + 'key-1': string; + 'key-2': string; + }; + + const plugin = createPlugin({ + id: 'my-plugin', + __experimentalConfigure(_: TestInputPluginOptions): TestPluginOptions { + return { 'key-1': 'value-1', 'key-2': 'value-2' }; + }, + }); + const renderWrapped = (children: React.ReactNode) => renderWithEffects( wrapInTestApp( @@ -144,7 +162,7 @@ describe('DefaultCatalogPage', () => { [starredEntitiesApiRef, new MockStarredEntitiesApi()], ]} > - {children} + {children} , { mountedRoutes: { diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx index 51ef12ac74..39c19d717a 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx @@ -39,6 +39,7 @@ import React from 'react'; import { createComponentRouteRef } from '../../routes'; import { CatalogTable, CatalogTableRow } from '../CatalogTable'; import { CatalogKindHeader } from '../CatalogKindHeader'; +import { useCatalogPluginOptions } from '../../options'; /** * Props for root catalog pages. @@ -65,6 +66,8 @@ export function DefaultCatalogPage(props: DefaultCatalogPageProps) { useApi(configApiRef).getOptionalString('organization.name') ?? 'Backstage'; const createComponentLink = useRouteRef(createComponentRouteRef); + const { createButtonTitle } = useCatalogPluginOptions(); + return ( @@ -73,7 +76,7 @@ export function DefaultCatalogPage(props: DefaultCatalogPageProps) { titleComponent={} > All your software catalog entities 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/catalog/src/options.ts b/plugins/catalog/src/options.ts new file mode 100644 index 0000000000..1d8b972ec2 --- /dev/null +++ b/plugins/catalog/src/options.ts @@ -0,0 +1,28 @@ +/* + * 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 { usePluginOptions } from '@backstage/core-plugin-api'; + +export type CatalogPluginOptions = { + createButtonTitle: string; +}; + +export type CatalogInputPluginOptions = { + createButtonTitle: string; +}; + +export const useCatalogPluginOptions = () => + usePluginOptions(); diff --git a/plugins/catalog/src/plugin.ts b/plugins/catalog/src/plugin.ts index 1b9083e7ca..5419854cb6 100644 --- a/plugins/catalog/src/plugin.ts +++ b/plugins/catalog/src/plugin.ts @@ -43,6 +43,7 @@ import { HasSubcomponentsCardProps } from './components/HasSubcomponentsCard'; import { HasSystemsCardProps } from './components/HasSystemsCard'; import { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; import { rootRouteRef } from './routes'; +import { CatalogInputPluginOptions, CatalogPluginOptions } from './options'; /** @public */ export const catalogPlugin = createPlugin({ @@ -72,6 +73,14 @@ export const catalogPlugin = createPlugin({ createComponent: createComponentRouteRef, viewTechDoc: viewTechDocRouteRef, }, + __experimentalConfigure( + options?: CatalogInputPluginOptions, + ): CatalogPluginOptions { + const defaultOptions = { + createButtonTitle: 'Create', + }; + return { ...defaultOptions, ...options }; + }, }); /** @public */ diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 2f863ebd11..24fa1a0e2e 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-cicd-statistics@0.1.10-next.0 + +## 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..2d3db01baf 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.4-next.0", "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.10-next.0", "@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.5-next.0", + "@backstage/catalog-model": "^1.1.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist" diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index afc0811c29..ac12967919 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-cicd-statistics +## 0.1.10-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + +## 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/api-report.md b/plugins/cicd-statistics/api-report.md index 3c7a52cdad..e49c6b27dc 100644 --- a/plugins/cicd-statistics/api-report.md +++ b/plugins/cicd-statistics/api-report.md @@ -107,6 +107,7 @@ export const cicdStatisticsPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 3b90b365dc..40dd26fcd8 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.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,12 +34,12 @@ }, "devDependencies": { "@types/react": "^16.13.1 || ^17.0.0", - "@types/luxon": "^2.0.5" + "@types/luxon": "^3.0.0" }, "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.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", "@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..36e078b38d 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-circleci +## 0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/circleci/api-report.md index 5cdf916514..e8640ec78b 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -75,7 +75,7 @@ export const circleCIBuildRouteRef: SubRouteRef>; // Warning: (ae-missing-release-tag) "circleCIPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const circleCIPlugin: BackstagePlugin<{}, {}>; +const circleCIPlugin: BackstagePlugin<{}, {}, {}>; export { circleCIPlugin }; export { circleCIPlugin as plugin }; diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 2c376c26c7..8810aca917 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..ef60bc0855 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-cloudbuild +## 0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/cloudbuild/api-report.md index 4077a8991a..ecc6d7b460 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -141,6 +141,7 @@ const cloudbuildPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { cloudbuildPlugin }; diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index fcac623363..8107d4c411 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..5addc18681 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-code-climate +## 0.1.8-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/code-climate/api-report.md index 11366384d3..b0cc3e1450 100644 --- a/plugins/code-climate/api-report.md +++ b/plugins/code-climate/api-report.md @@ -48,6 +48,7 @@ export const codeClimatePlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 3fe1ff5ae1..5e1313a8f8 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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,15 +40,15 @@ "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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/humanize-duration": "^3.27.1", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.9", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.44.0" diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 95a7188dd4..0a7653cb81 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-code-coverage-backend +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## 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..29a7c84512 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.1-next.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.15.0-next.0", + "@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.3.0-next.0", "@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.1-next.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..7c4b2f8541 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-code-coverage +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/code-coverage/api-report.md index 152cc93103..5dcb5fcfd1 100644 --- a/plugins/code-coverage/api-report.md +++ b/plugins/code-coverage/api-report.md @@ -14,6 +14,7 @@ export const codeCoveragePlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index bd90d2abee..d6e67ae320 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..9a859ca0dc 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-codescene +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/codescene/api-report.md index 962a20a618..75dfddd09e 100644 --- a/plugins/codescene/api-report.md +++ b/plugins/codescene/api-report.md @@ -23,6 +23,7 @@ export const codescenePlugin: BackstagePlugin< projectId: string; }>; }, + {}, {} >; diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 516280149f..519839b9c9 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.3-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..12a6a1f4e8 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-config-schema +## 0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/config-schema/api-report.md index f3b620738f..4b9f47c950 100644 --- a/plugins/config-schema/api-report.md +++ b/plugins/config-schema/api-report.md @@ -38,6 +38,7 @@ export const configSchemaPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 3e70dfbf63..80fdaf693c 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.31-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..b06b7032e0 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.1-next.0" }, "files": [ "dist" diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 05d8d5d640..cf24d21df7 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-cost-insights +## 0.11.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/cost-insights/api-report.md index 5a9024de5a..94cab949c7 100644 --- a/plugins/cost-insights/api-report.md +++ b/plugins/cost-insights/api-report.md @@ -382,6 +382,7 @@ const costInsightsPlugin: BackstagePlugin< growthAlerts: RouteRef; unlabeledDataflowAlerts: RouteRef; }, + {}, {} >; export { costInsightsPlugin }; diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 9dfa45e67c..980b916e31 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.30-next.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/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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..6148b15877 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-dynatrace +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/dynatrace/api-report.md index 026df62189..59fd145250 100644 --- a/plugins/dynatrace/api-report.md +++ b/plugins/dynatrace/api-report.md @@ -9,7 +9,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; // @public -export const dynatracePlugin: BackstagePlugin<{}, {}>; +export const dynatracePlugin: BackstagePlugin<{}, {}, {}>; // @public export const DynatraceTab: () => JSX.Element; diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 8862bbf548..673a9d07bc 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.2-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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", @@ -33,14 +33,14 @@ "react-use": "^17.2.4" }, "peerDependencies": { - "@backstage/plugin-catalog-react": "^1.1.2-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..dec5c014e4 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @internal/plugin-todo-list-backend +## 1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## 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..d72f238bba 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.4-next.0", "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.15.0-next.0", "@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.4-next.0", "@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.1-next.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..34154fd174 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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..e1d74010ec 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,22 @@ # @internal/plugin-todo-list +## 1.0.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/example-todo-list/api-report.md index 534c33200e..68b3ffd73e 100644 --- a/plugins/example-todo-list/api-report.md +++ b/plugins/example-todo-list/api-report.md @@ -16,6 +16,7 @@ export const todoListPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index d9ccb7f524..e767c59cd4 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.4-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..9a560155ca 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-explore-react +## 0.0.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## 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..ae4bd3a918 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.20-next.0", "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.5-next.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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..d3663aa82c 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-explore +## 0.3.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-explore-react@0.0.20-next.0 + +## 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/api-report.md b/plugins/explore/api-report.md index 412c0cc54b..c7181af19d 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -68,7 +68,8 @@ const explorePlugin: BackstagePlugin< }, true >; - } + }, + {} >; export { explorePlugin }; export { explorePlugin as plugin }; diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 0706739a42..209a22ff39 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.39-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-explore-react": "^0.0.20-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..e52b331db8 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-firehydrant +## 0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/firehydrant/api-report.md index 86f090c34d..c12048e81f 100644 --- a/plugins/firehydrant/api-report.md +++ b/plugins/firehydrant/api-report.md @@ -20,6 +20,7 @@ export const firehydrantPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; ``` diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 9053ed4ed2..100ed11839 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.25-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..67b0e32bba 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-fossa +## 0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/fossa/api-report.md index d6e229d3d6..ca9610b992 100644 --- a/plugins/fossa/api-report.md +++ b/plugins/fossa/api-report.md @@ -40,6 +40,7 @@ export const fossaPlugin: BackstagePlugin< { fossaOverview: RouteRef; }, + {}, {} >; ``` diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index e22228061b..b24f02fa71 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.40-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..5b171e4e56 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-gcalendar +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/gcalendar/api-report.md index b4aebf1ff3..61c39aaf2a 100644 --- a/plugins/gcalendar/api-report.md +++ b/plugins/gcalendar/api-report.md @@ -65,6 +65,7 @@ export const gcalendarPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index ad111311c2..e55268a4eb 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.4-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1e5e274bc8 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-gcp-projects +## 0.3.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/gcp-projects/api-report.md index 8049441b1f..46c8dd2c2f 100644 --- a/plugins/gcp-projects/api-report.md +++ b/plugins/gcp-projects/api-report.md @@ -57,6 +57,7 @@ const gcpProjectsPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { gcpProjectsPlugin }; diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 19c881a7fb..3f78ea6609 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.27-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1a5bb54447 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-git-release-manager +## 0.3.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/git-release-manager/api-report.md index 743ea4e0f9..24207de991 100644 --- a/plugins/git-release-manager/api-report.md +++ b/plugins/git-release-manager/api-report.md @@ -203,6 +203,7 @@ export const gitReleaseManagerPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 27bf139560..fb357a2944 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.21-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration": "^1.3.0-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..0732f6bfb7 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-github-actions +## 0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/github-actions/api-report.md index 4e5c7f30e9..862d20d608 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -198,6 +198,7 @@ const githubActionsPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { githubActionsPlugin }; diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 3e0b6f5055..a589741d33 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..436e329263 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-github-deployments +## 0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/github-deployments/api-report.md index 36680cb020..3e75b2f9bc 100644 --- a/plugins/github-deployments/api-report.md +++ b/plugins/github-deployments/api-report.md @@ -47,7 +47,7 @@ export const EntityGithubDeploymentsCard: (props: { // Warning: (ae-missing-release-tag) "githubDeploymentsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const githubDeploymentsPlugin: BackstagePlugin<{}, {}>; +export const githubDeploymentsPlugin: BackstagePlugin<{}, {}, {}>; // Warning: (ae-forgotten-export) The symbol "GithubDeploymentsTableProps" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "GithubDeploymentsTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 1829974873..75b7fcbb92 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.39-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..985380782f 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.2-next.0 + +### Patch Changes + +- 73268a67ff: Fixed rendering when PR contains references to deleted Github accounts +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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..ee48ebc9fe 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.2-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/src/utils/functions.test.ts b/plugins/github-pull-requests-board/src/utils/functions.test.ts new file mode 100644 index 0000000000..b968d68af9 --- /dev/null +++ b/plugins/github-pull-requests-board/src/utils/functions.test.ts @@ -0,0 +1,54 @@ +/* + * 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 { filterSameUser } from './functions'; + +import { Author } from './types'; + +const users = [ + null, + { + login: 'myuserlogin', + avatarUrl: '', + id: '', + email: '', + name: '', + }, + { + login: 'anotheruserlogin', + avatarUrl: '', + id: '', + email: '', + name: '', + }, + { + login: 'myuserlogin', + avatarUrl: '', + id: '', + email: '', + name: '', + }, +] as Author[]; + +describe('filterSameUser', () => { + it('should return distinct users', () => { + expect(filterSameUser(users).length).toEqual(2); + }); + + // null users a.k.a. Ghost users are accounts that have been deleted + it('should contain null user', () => { + expect(filterSameUser(users)).not.toContain(null); + }); +}); diff --git a/plugins/github-pull-requests-board/src/utils/functions.ts b/plugins/github-pull-requests-board/src/utils/functions.ts index bfb0e0edc5..69b3ecf794 100644 --- a/plugins/github-pull-requests-board/src/utils/functions.ts +++ b/plugins/github-pull-requests-board/src/utils/functions.ts @@ -42,7 +42,11 @@ export const getChangeRequests = (reviews: Reviews = []): Reviews => { }; export const filterSameUser = (users: Author[]): Author[] => { - return users.reduce((acc, curr) => { + const filterGhostUsers = (usersToFilter: Author[]): Author[] => { + return usersToFilter.filter(user => user !== null); + }; + + return filterGhostUsers(users).reduce((acc, curr) => { const containsUser = acc.find(({ login }) => login === curr.login); if (!containsUser) { diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 71c5bb74ce..ff5dee0460 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-gitops-profiles +## 0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/gitops-profiles/api-report.md index 3c77d0301b..245a1fb30b 100644 --- a/plugins/gitops-profiles/api-report.md +++ b/plugins/gitops-profiles/api-report.md @@ -149,6 +149,7 @@ const gitopsProfilesPlugin: BackstagePlugin< }>; createPage: RouteRef; }, + {}, {} >; export { gitopsProfilesPlugin }; diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index dcd243a244..630c4ded07 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.26-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..de55f23583 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-gocd +## 0.1.14-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/gocd/api-report.md index de2c76e06b..df93b5f2eb 100644 --- a/plugins/gocd/api-report.md +++ b/plugins/gocd/api-report.md @@ -15,7 +15,7 @@ export const EntityGoCdContent: () => JSX.Element; export const GOCD_PIPELINES_ANNOTATION = 'gocd.org/pipelines'; // @public -export const gocdPlugin: BackstagePlugin<{}, {}>; +export const gocdPlugin: BackstagePlugin<{}, {}, {}>; // @public export const isGoCdAvailable: (entity: Entity) => boolean; diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 187a8d0d79..ecc8d8a4d0 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.14-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -49,16 +49,16 @@ "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/lodash": "^4.14.173", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.44.0" diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index 6d71375b40..5206051fc6 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-graphiql +## 0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/graphiql/api-report.md index 5c613b1f57..c96966c585 100644 --- a/plugins/graphiql/api-report.md +++ b/plugins/graphiql/api-report.md @@ -39,7 +39,7 @@ export const GraphiQLIcon: IconComponent; export const GraphiQLPage: () => JSX.Element; // @public (undocumented) -const graphiqlPlugin: BackstagePlugin<{}, {}>; +const graphiqlPlugin: BackstagePlugin<{}, {}, {}>; export { graphiqlPlugin }; export { graphiqlPlugin as plugin }; diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index e260be0852..5d0c221ed5 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.40-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..e41866c272 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-graphql-backend +## 0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..64cd268e00 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.25-next.0", "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.15.0-next.0", "@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.1-next.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..69b215106a 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,52 @@ # @backstage/plugin-home +## 0.4.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-stack-overflow@0.1.4-next.0 + +## 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/api-report.md b/plugins/home/api-report.md index 452b3e1685..0870a23ba7 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -107,6 +107,7 @@ export const homePlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/home/package.json b/plugins/home/package.json index be39d23679..f11a7d33fb 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.24-next.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-stack-overflow": "^0.1.3-next.3", - "@backstage/theme": "^0.2.16-next.1", + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-stack-overflow": "^0.1.4-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1aeb85d6b6 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-ilert +## 0.1.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/ilert/api-report.md index 3c6965b2c4..a4e6a7a76c 100644 --- a/plugins/ilert/api-report.md +++ b/plugins/ilert/api-report.md @@ -249,6 +249,7 @@ const ilertPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { ilertPlugin }; diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 81e22a3676..9b73003de7 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.34-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..f1c6ed84e9 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-jenkins-backend +## 0.1.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## 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..4877a73093 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.25-next.0", "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.15.0-next.0", + "@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.4-next.0", + "@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.1-next.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..75a4c60b35 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.1-next.0" }, "files": [ "dist" diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index d7f9e2f18e..bee2b3ca63 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-jenkins +## 0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/jenkins/api-report.md index fc9de04a7a..33072ecf49 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -108,6 +108,7 @@ const jenkinsPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { jenkinsPlugin }; diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 5c803382ab..a3f0b2b533 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.7-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..658959494c 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-kafka-backend +## 0.2.28-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..c2ddfd4cad 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.28-next.0", "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.15.0-next.0", + "@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.1-next.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..5e50d58a98 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-kafka +## 0.3.8-next.0 + +### Patch Changes + +- bde245f0bf: Add dashboard URL feature and fix minor styling issues. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/README.md b/plugins/kafka/README.md index 9de9bd7d71..77106baba7 100644 --- a/plugins/kafka/README.md +++ b/plugins/kafka/README.md @@ -73,6 +73,8 @@ kafka: 5. Add the `kafka.apache.org/consumer-groups` annotation to your services: +Can be a comma separated list. + ```yaml apiVersion: backstage.io/v1alpha1 kind: Component @@ -84,6 +86,34 @@ spec: type: service ``` +6. Configure dashboard urls: + +You have two options. +Either configure it with an annotation called `kafka.apache.org/dashboard-urls` + +```yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + # ... + annotations: + kafka.apache.org/dashboard-urls: cluster-name/consumer-group-name/dashboard-url +spec: + type: service +``` + +> The consumer-group-name is optional. + +or with configs in `app-config.yaml` + +```yaml +kafka: + # ... + clusters: + - name: cluster-name + dashboardUrl: https://dashboard.com +``` + ## Features - List topics offsets and consumer group offsets for configured services. diff --git a/plugins/kafka/api-report.md b/plugins/kafka/api-report.md index 95eed1dc13..844082764e 100644 --- a/plugins/kafka/api-report.md +++ b/plugins/kafka/api-report.md @@ -34,6 +34,7 @@ const kafkaPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { kafkaPlugin }; diff --git a/plugins/search/src/components/Filters/index.tsx b/plugins/kafka/config.d.ts similarity index 68% rename from plugins/search/src/components/Filters/index.tsx rename to plugins/kafka/config.d.ts index dc4d811dbd..1ae6de7d75 100644 --- a/plugins/search/src/components/Filters/index.tsx +++ b/plugins/kafka/config.d.ts @@ -13,8 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export { FiltersButton } from './FiltersButton'; -export type { FiltersButtonProps } from './FiltersButton'; -export { Filters } from './Filters'; -export type { FilterOptions, FiltersProps, FiltersState } from './Filters'; +export interface Config { + kafka?: { + clusters: Array<{ + /** + * Cluster name + * @visibility frontend + */ + name: string; + /** + * Cluster dashboard url + * @visibility frontend + */ + dashboardUrl?: string; + }>; + }; +} diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 9cd7e169ad..68c05a0a4c 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.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -13,6 +13,7 @@ "backstage": { "role": "frontend-plugin" }, + "configSchema": "config.d.ts", "scripts": { "build": "backstage-cli package build", "start": "backstage-cli package start", @@ -24,11 +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/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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/theme": "^0.2.16", + "@backstage/config": "^1.0.1", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", @@ -54,6 +56,7 @@ "msw": "^0.44.0" }, "files": [ - "dist" + "dist", + "config.d.ts" ] } diff --git a/plugins/kafka/src/api/KafkaDashboardClient.test.ts b/plugins/kafka/src/api/KafkaDashboardClient.test.ts new file mode 100644 index 0000000000..332b17cba6 --- /dev/null +++ b/plugins/kafka/src/api/KafkaDashboardClient.test.ts @@ -0,0 +1,138 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { KafkaDashboardClient } from './KafkaDashboardClient'; +import { ConfigApi, configApiRef } from '@backstage/core-plugin-api'; +import { KAFKA_DASHBOARD_URL } from '../constants'; + +const mockConfigApi: jest.Mocked> = { + getConfigArray: jest.fn(_ => []), +}; + +describe('KafkaDashboardClient', () => { + let kafkaDashboardClient: KafkaDashboardClient; + + beforeEach(() => { + kafkaDashboardClient = new KafkaDashboardClient({ + configApi: mockConfigApi as ConfigApi, + }); + }); + + it('Should return undefined on empty annotation', async () => { + const mockEntity = { + metadata: { annotations: { [KAFKA_DASHBOARD_URL]: '' } }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl('', '', mockEntity).url, + ).toBeUndefined(); + }); + + it('Should return consumer group and cluster based dashboard url', async () => { + const mockEntity = { + metadata: { + annotations: { + [KAFKA_DASHBOARD_URL]: 'cluster1/consumerGroup1/https://example.com', + }, + }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl( + 'cluster1', + 'consumerGroup1', + mockEntity, + ).url, + ).toEqual('https://example.com'); + }); + + it('Should return cluster based dashboard url', async () => { + const mockEntity = { + metadata: { + annotations: { [KAFKA_DASHBOARD_URL]: 'cluster1/https://example.com' }, + }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl( + 'cluster1', + 'consumerGroup1', + mockEntity, + ).url, + ).toEqual('https://example.com'); + }); + + it('Should return one dashboard url for list of dashboards', async () => { + const mockEntity = { + metadata: { + annotations: { + [KAFKA_DASHBOARD_URL]: + 'cluster1/https://example.com,cluster2/https://example2.com', + }, + }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl('cluster2', '', mockEntity).url, + ).toEqual('https://example2.com'); + }); + + it('Should return most specific dashboard url for list of dashboards', async () => { + const mockEntity = { + metadata: { + annotations: { + [KAFKA_DASHBOARD_URL]: + 'cluster1/https://example.com,cluster1/consumerGroup1/https://example2.com', + }, + }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl( + 'cluster1', + 'consumerGroup1', + mockEntity, + ).url, + ).toEqual('https://example2.com'); + }); + + it('Should return dashboard url with query parameters', async () => { + const mockEntity = { + metadata: { + annotations: { + [KAFKA_DASHBOARD_URL]: + 'cluster1/https://example.com?consumer-group=consumergroup1', + }, + }, + } as unknown as Entity; + + expect( + kafkaDashboardClient.getDashboardUrl('cluster1', '', mockEntity).url, + ).toEqual('https://example.com?consumer-group=consumergroup1'); + }); + + it('Should return should fallback to config', async () => { + const mockEntity = { + metadata: { + annotations: { [KAFKA_DASHBOARD_URL]: 'cluster1/https://example.com' }, + }, + } as unknown as Entity; + + kafkaDashboardClient.getDashboardUrl('cluster2', '', mockEntity); + expect(mockConfigApi.getConfigArray).toBeCalled(); + }); +}); diff --git a/plugins/kafka/src/api/KafkaDashboardClient.ts b/plugins/kafka/src/api/KafkaDashboardClient.ts new file mode 100644 index 0000000000..2ce428d446 --- /dev/null +++ b/plugins/kafka/src/api/KafkaDashboardClient.ts @@ -0,0 +1,66 @@ +/* + * 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 { KafkaDashboardApi } from './types'; +import { Entity } from '@backstage/catalog-model'; +import { ConfigApi } from '@backstage/core-plugin-api'; +import { KAFKA_DASHBOARD_URL } from '../constants'; + +export class KafkaDashboardClient implements KafkaDashboardApi { + private readonly configApi: ConfigApi; + private readonly regexPattern = + /^([a-z0-9._-]+)\/([a-z0-9._-]+)?\/?(https?.*)$/i; + + constructor(options: { configApi: ConfigApi }) { + this.configApi = options.configApi; + } + + getDashboardUrl( + clusterId: string, + consumerGroup: string, + entity: Entity, + ): { url?: string } { + const annotation = entity.metadata.annotations?.[KAFKA_DASHBOARD_URL] ?? ''; + + const dashboardList = annotation + .split(',') + .filter(value => value !== undefined && value !== '') + .map(value => value.match(this.regexPattern) as string[]) + .filter( + value => + value[1] === clusterId && + (value[2] === undefined || value[2] === consumerGroup), + ) + .sort((a, b) => { + if (a[2] === b[2]) return 0; + if (a[2] !== undefined) return -1; + return 1; + }); + + if (dashboardList.length > 0) { + return { url: dashboardList[0][3] }; + } + + return { + url: + this.configApi + .getConfigArray('kafka.clusters') + .filter(value => value.getString('name') === clusterId) + .map(value => value.getOptionalString('dashboardUrl'))[0] || + undefined, + }; + } +} diff --git a/plugins/kafka/src/api/types.ts b/plugins/kafka/src/api/types.ts index 7804574761..8bc79398d2 100644 --- a/plugins/kafka/src/api/types.ts +++ b/plugins/kafka/src/api/types.ts @@ -15,11 +15,16 @@ */ import { createApiRef } from '@backstage/core-plugin-api'; +import { Entity } from '@backstage/catalog-model'; export const kafkaApiRef = createApiRef({ id: 'plugin.kafka.service', }); +export const kafkaDashboardApiRef = createApiRef({ + id: 'plugin.kafka.dashboard', +}); + export type ConsumerGroupOffsetsResponse = { consumerId: string; offsets: { @@ -36,3 +41,11 @@ export interface KafkaApi { consumerGroup: string, ): Promise; } + +export interface KafkaDashboardApi { + getDashboardUrl( + clusterId: string, + consumerGroup: string, + entity: Entity, + ): { url?: string }; +} diff --git a/plugins/kafka/src/components/ConsumerGroupOffsets/ConsumerGroupOffsets.tsx b/plugins/kafka/src/components/ConsumerGroupOffsets/ConsumerGroupOffsets.tsx index 79f38af42f..17f7af3740 100644 --- a/plugins/kafka/src/components/ConsumerGroupOffsets/ConsumerGroupOffsets.tsx +++ b/plugins/kafka/src/components/ConsumerGroupOffsets/ConsumerGroupOffsets.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Box, Grid, Typography } from '@material-ui/core'; +import { Box, Grid, Typography, Link } from '@material-ui/core'; import RetryIcon from '@material-ui/icons/Replay'; import React from 'react'; import { useConsumerGroupsOffsetsForEntity } from './useConsumerGroupsOffsetsForEntity'; @@ -74,6 +74,7 @@ type Props = { loading: boolean; retry: () => void; clusterId: string; + dashboardUrl?: string; consumerGroup: string; topics?: TopicPartitionInfo[]; }; @@ -82,6 +83,7 @@ export const ConsumerGroupOffsets = ({ loading, topics, clusterId, + dashboardUrl, consumerGroup, retry, }: Props) => { @@ -100,7 +102,14 @@ export const ConsumerGroupOffsets = ({ title={ - Consumed Topics for {consumerGroup} ({clusterId}) + Consumed Topics for {consumerGroup} ( + {(dashboardUrl && ( + + {clusterId} + + )) || + clusterId} + ) } @@ -112,13 +121,15 @@ export const ConsumerGroupOffsets = ({ export const KafkaTopicsForConsumer = () => { const [tableProps, { retry }] = useConsumerGroupsOffsetsForEntity(); return ( - + {tableProps.consumerGroupsTopics?.map(consumerGroup => ( - + + + ))} ); diff --git a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.test.tsx b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.test.tsx index d239370b6b..ead3e03934 100644 --- a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.test.tsx +++ b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.test.tsx @@ -18,12 +18,22 @@ import { EntityProvider } from '@backstage/plugin-catalog-react'; import { renderHook } from '@testing-library/react-hooks'; import React, { PropsWithChildren } from 'react'; import { useConsumerGroupsForEntity } from './useConsumerGroupsForEntity'; +import { TestApiProvider } from '@backstage/test-utils'; +import { configApiRef } from '@backstage/core-plugin-api'; + +const mockConfigApi: jest.Mocked> = { + getConfigArray: jest.fn(_ => []), +}; describe('useConsumerGroupOffsets', () => { let entity: Entity; const wrapper = ({ children }: PropsWithChildren<{}>) => { - return {children}; + return ( + + {children} + + ); }; const subject = () => renderHook(useConsumerGroupsForEntity, { wrapper }); @@ -53,6 +63,32 @@ describe('useConsumerGroupOffsets', () => { ]); }); + it('returns correct dashboard url for cluster for annotation', async () => { + entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'test', + annotations: { + 'kafka.apache.org/consumer-groups': 'prod/consumer', + 'kafka.apache.org/dashboard-urls': 'prod/https://akhq.io', + }, + }, + spec: { + owner: 'guest', + type: 'Website', + lifecycle: 'development', + }, + }; + const { result } = subject(); + expect(result.current).toStrictEqual([ + { + clusterId: 'prod', + consumerGroup: 'consumer', + }, + ]); + }); + it('returns correct cluster and consumer group for multiple consumers', async () => { entity = { apiVersion: 'v1', @@ -72,7 +108,10 @@ describe('useConsumerGroupOffsets', () => { }; const { result } = subject(); expect(result.current).toStrictEqual([ - { clusterId: 'prod', consumerGroup: 'consumer' }, + { + clusterId: 'prod', + consumerGroup: 'consumer', + }, { clusterId: 'dev', consumerGroup: 'another-consumer', @@ -99,7 +138,10 @@ describe('useConsumerGroupOffsets', () => { }; const { result } = subject(); expect(result.current).toStrictEqual([ - { clusterId: 'prod', consumerGroup: 'consumer' }, + { + clusterId: 'prod', + consumerGroup: 'consumer', + }, { clusterId: 'dev', consumerGroup: 'another-consumer', diff --git a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.ts b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.ts index cc008d8e33..c0854d34cf 100644 --- a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.ts +++ b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsForEntity.ts @@ -23,7 +23,7 @@ export const useConsumerGroupsForEntity = () => { const annotation = entity.metadata.annotations?.[KAFKA_CONSUMER_GROUP_ANNOTATION] ?? ''; - const consumerList = useMemo(() => { + return useMemo(() => { return annotation.split(',').map(consumer => { const [clusterId, consumerGroup] = consumer.split('/'); @@ -32,12 +32,11 @@ export const useConsumerGroupsForEntity = () => { `Failed to parse kafka consumer group annotation: got "${annotation}"`, ); } + return { clusterId: clusterId.trim(), consumerGroup: consumerGroup.trim(), }; }); }, [annotation]); - - return consumerList; }; diff --git a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.test.tsx b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.test.tsx index 0be9cabacd..8a7f28d69b 100644 --- a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.test.tsx +++ b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.test.tsx @@ -22,11 +22,14 @@ import { ConsumerGroupOffsetsResponse, KafkaApi, kafkaApiRef, + KafkaDashboardApi, + kafkaDashboardApiRef, } from '../../api/types'; import { useConsumerGroupsOffsetsForEntity } from './useConsumerGroupsOffsetsForEntity'; import * as data from './__fixtures__/consumer-group-offsets.json'; import { errorApiRef } from '@backstage/core-plugin-api'; +import { configApiRef } from '@backstage/core-plugin-api'; import { TestApiProvider } from '@backstage/test-utils'; const consumerGroupOffsets = data as ConsumerGroupOffsetsResponse; @@ -40,6 +43,15 @@ const mockKafkaApi: jest.Mocked = { getConsumerGroupOffsets: jest.fn(), }; +const mockKafkaDashboardApi: jest.Mocked = { + getDashboardUrl: jest.fn(), +}; + +// @ts-ignore +const mockConfigApi: jest.Mocked = { + getConfigArray: jest.fn(_ => []), +}; + describe('useConsumerGroupOffsets', () => { const entity: Entity = { apiVersion: 'v1', @@ -63,6 +75,8 @@ describe('useConsumerGroupOffsets', () => { apis={[ [errorApiRef, mockErrorApi], [kafkaApiRef, mockKafkaApi], + [kafkaDashboardApiRef, mockKafkaDashboardApi], + [configApiRef, mockConfigApi], ]} > {children} @@ -80,6 +94,7 @@ describe('useConsumerGroupOffsets', () => { when(mockKafkaApi.getConsumerGroupOffsets) .calledWith('prod', consumerGroupOffsets.consumerId) .mockResolvedValue(consumerGroupOffsets); + when(mockKafkaDashboardApi.getDashboardUrl).mockReturnValue({}); const { result, waitForNextUpdate } = subject(); await waitForNextUpdate(); @@ -89,6 +104,7 @@ describe('useConsumerGroupOffsets', () => { { clusterId: 'prod', consumerGroup: consumerGroupOffsets.consumerId, + dashboardUrl: undefined, topics: consumerGroupOffsets.offsets, }, ]); diff --git a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.ts b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.ts index 0be098c3f9..15d7beff2b 100644 --- a/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.ts +++ b/plugins/kafka/src/components/ConsumerGroupOffsets/useConsumerGroupsOffsetsForEntity.ts @@ -15,13 +15,16 @@ */ import useAsyncRetry from 'react-use/lib/useAsyncRetry'; -import { kafkaApiRef } from '../../api/types'; +import { kafkaApiRef, kafkaDashboardApiRef } from '../../api/types'; import { useConsumerGroupsForEntity } from './useConsumerGroupsForEntity'; import { errorApiRef, useApi } from '@backstage/core-plugin-api'; +import { useEntity } from '@backstage/plugin-catalog-react'; export const useConsumerGroupsOffsetsForEntity = () => { const consumers = useConsumerGroupsForEntity(); + const { entity } = useEntity(); const api = useApi(kafkaApiRef); + const apiDashboard = useApi(kafkaDashboardApiRef); const errorApi = useApi(errorApiRef); const { @@ -36,14 +39,23 @@ export const useConsumerGroupsOffsetsForEntity = () => { clusterId, consumerGroup, ); - return { clusterId, consumerGroup, topics: response.offsets }; + return { + clusterId, + dashboardUrl: apiDashboard.getDashboardUrl( + clusterId, + consumerGroup, + entity, + ).url, + consumerGroup, + topics: response.offsets, + }; }), ); } catch (e) { errorApi.post(e); throw e; } - }, [consumers, api, errorApi]); + }, [consumers, api, apiDashboard, errorApi, entity]); return [ { diff --git a/plugins/kafka/src/constants.ts b/plugins/kafka/src/constants.ts index 93db0835f6..b85a738888 100644 --- a/plugins/kafka/src/constants.ts +++ b/plugins/kafka/src/constants.ts @@ -15,3 +15,4 @@ */ export const KAFKA_CONSUMER_GROUP_ANNOTATION = 'kafka.apache.org/consumer-groups'; +export const KAFKA_DASHBOARD_URL = 'kafka.apache.org/dashboard-urls'; diff --git a/plugins/kafka/src/plugin.ts b/plugins/kafka/src/plugin.ts index 0c345cdabc..6caa4ca5ca 100644 --- a/plugins/kafka/src/plugin.ts +++ b/plugins/kafka/src/plugin.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { KafkaBackendClient } from './api/KafkaBackendClient'; -import { kafkaApiRef } from './api/types'; +import { kafkaApiRef, kafkaDashboardApiRef } from './api/types'; import { createApiFactory, createPlugin, @@ -22,7 +22,9 @@ import { createRouteRef, discoveryApiRef, identityApiRef, + configApiRef, } from '@backstage/core-plugin-api'; +import { KafkaDashboardClient } from './api/KafkaDashboardClient'; export const rootCatalogKafkaRouteRef = createRouteRef({ id: 'kafka', @@ -37,6 +39,11 @@ export const kafkaPlugin = createPlugin({ factory: ({ discoveryApi, identityApi }) => new KafkaBackendClient({ discoveryApi, identityApi }), }), + createApiFactory({ + api: kafkaDashboardApiRef, + deps: { configApi: configApiRef }, + factory: ({ configApi }) => new KafkaDashboardClient({ configApi }), + }), ], routes: { entityContent: rootCatalogKafkaRouteRef, diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index c534efba45..7468feadd5 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,60 @@ # @backstage/plugin-kubernetes-backend +## 0.7.1-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## 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 + // Import CatalogClient + import { CatalogClient } from '@backstage/catalog-client'; + // 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/package.json b/plugins/kubernetes-backend/package.json index 9957ce60f4..1f36ee0fc3 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.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,17 +36,17 @@ }, "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.15.0-next.0", + "@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.4-next.0", + "@backstage/plugin-kubernetes-common": "^0.4.0", "@google-cloud/container": "^4.0.0", "@kubernetes/client-node": "^0.17.0", "@types/express": "^4.17.6", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "aws-sdk": "^2.840.0", "aws4": "^1.11.0", "compression": "^1.7.4", @@ -63,7 +63,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3", + "@backstage/cli": "^0.18.1-next.0", "@types/aws4": "^1.5.1", "aws-sdk-mock": "^5.2.1", "supertest": "^6.1.3" 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..3dd0be7670 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.1-next.0" }, "jest": { "roots": [ diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index ffcf3edb7b..0784be7f50 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,42 @@ # @backstage/plugin-kubernetes +## 0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/kubernetes/api-report.md index da6948043c..e85c9cbeca 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -353,6 +353,7 @@ const kubernetesPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { kubernetesPlugin }; diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 3633942c15..c46b56809c 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..afe71853b4 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-lighthouse +## 0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/lighthouse/api-report.md index 26db053ef0..a53bef3cb0 100644 --- a/plugins/lighthouse/api-report.md +++ b/plugins/lighthouse/api-report.md @@ -175,6 +175,7 @@ const lighthousePlugin: BackstagePlugin< root: RouteRef; entityContent: RouteRef; }, + {}, {} >; export { lighthousePlugin }; diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index cdf5089350..eae133af16 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..d027680170 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/newrelic-dashboard/api-report.md index fd0846bc4e..d74d69cad6 100644 --- a/plugins/newrelic-dashboard/api-report.md +++ b/plugins/newrelic-dashboard/api-report.md @@ -42,6 +42,7 @@ export const newRelicDashboardPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index f90676e994..7c977ad733 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", "@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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", "@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..8e9359798f 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-newrelic +## 0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/newrelic/api-report.md index 43beb3807f..fbf639ee9d 100644 --- a/plugins/newrelic/api-report.md +++ b/plugins/newrelic/api-report.md @@ -20,6 +20,7 @@ const newRelicPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { newRelicPlugin }; diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index d5c40c44cd..32d6397940 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.26-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..96b650bdd4 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-org +## 0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/org/api-report.md index d020dfb438..f8cf8afe22 100644 --- a/plugins/org/api-report.md +++ b/plugins/org/api-report.md @@ -58,7 +58,8 @@ const orgPlugin: BackstagePlugin< {}, { catalogIndex: ExternalRouteRef; - } + }, + {} >; export { orgPlugin }; export { orgPlugin as plugin }; diff --git a/plugins/org/package.json b/plugins/org/package.json index 4c2546d1b9..49b0d78821 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..7ae0109110 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,56 @@ # @backstage/plugin-pagerduty +## 0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/pagerduty/api-report.md index be3fa9fa23..c81da24454 100644 --- a/plugins/pagerduty/api-report.md +++ b/plugins/pagerduty/api-report.md @@ -166,7 +166,7 @@ export type PagerDutyOnCallsResponse = { // Warning: (ae-missing-release-tag) "pagerDutyPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const pagerDutyPlugin: BackstagePlugin<{}, {}>; +const pagerDutyPlugin: BackstagePlugin<{}, {}, {}>; export { pagerDutyPlugin }; export { pagerDutyPlugin as plugin }; diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 9affc33584..ae4819b5e6 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..15fe0034d7 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-periskop-backend +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..dca1ac34ce 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.6-next.0", "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.15.0-next.0", "@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.1-next.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..ce916eb035 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-periskop +## 0.1.6-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/periskop/api-report.md index 2cf84faccf..3332dd9edb 100644 --- a/plugins/periskop/api-report.md +++ b/plugins/periskop/api-report.md @@ -119,7 +119,7 @@ export class PeriskopClient implements PeriskopApi { } // @public (undocumented) -export const periskopPlugin: BackstagePlugin<{}, {}>; +export const periskopPlugin: BackstagePlugin<{}, {}, {}>; // @public (undocumented) export interface RequestHeaders { diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 20991bc9fe..9e9f94bda9 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.6-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -42,15 +42,15 @@ "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.44.0" diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 717f36b4f2..22ef7b3b24 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-permission-backend +## 0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + +## 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..20b508c833 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.10-next.0", "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.15.0-next.0", "@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.4-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.4-next.0", "@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.1-next.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..2ae26ad6f9 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.1-next.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..177522ab2f 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-permission-node +## 0.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + +## 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..be15aff4ce 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.4-next.0", "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.15.0-next.0", "@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.4-next.0", + "@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.1-next.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..8d5a99b1ba 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-permission-react +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + +## 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..9a077a5bea 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.4-next.0", "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.5-next.0", + "@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.1-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1c124fcf8c 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-proxy-backend +## 0.2.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..52cae9d7c9 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.29-next.0", "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.15.0-next.0", "@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.1-next.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..2c9f3c7665 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-rollbar-backend +## 0.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + +## 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..e2150eb67c 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.32-next.0", "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.15.0-next.0", "@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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..6ad6ef4fb5 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-rollbar +## 0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/rollbar/api-report.md index f666ade34c..27f0e4641b 100644 --- a/plugins/rollbar/api-report.md +++ b/plugins/rollbar/api-report.md @@ -91,6 +91,7 @@ const rollbarPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; export { rollbarPlugin as plugin }; diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 2b98731096..e343d841af 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.8-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..22c4364082 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## 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..41afcdabe4 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.10-next.0", "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.15.0-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/plugin-scaffolder-backend": "^1.5.0-next.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.1-next.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..65e91bb9d3 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## 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..6c4b6e3a58 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.3-next.0", "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.15.0-next.0", + "@backstage/plugin-scaffolder-backend": "^1.5.0-next.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.3.0-next.0", "@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.1-next.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..6155eaf3da 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.5.0-next.0 + +## 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..a1f9ac9fc9 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.8-next.0", "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.5.0-next.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.15.0-next.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index e3f67eb447..e2c5b51281 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,78 @@ # @backstage/plugin-scaffolder-backend +## 1.5.0-next.0 + +### Minor Changes + +- 593dea6710: Add support for Basic Auth for Bitbucket Server. +- 3b7930b3e5: Add support for Bearer Authorization header / token-based auth at Git commands. +- 3f1316f1c5: User Bearer Authorization header at Git commands with token-based auth at Bitbucket Server. +- eeff5046ae: Updated `publish:gitlab:merge-request` action to allow commit updates and deletes + +### Patch Changes + +- fc8a5f797b: Add a `publish:gerrit:review` scaffolder action +- 014b3b7776: Add missing `res.end()` in scaffolder backend `EventStream` usage +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-plugin-api@0.1.1-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + - @backstage/plugin-catalog-node@1.0.1-next.0 + +## 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..615d6aa8fb 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; @@ -319,6 +321,19 @@ export function createPublishGerritAction(options: { sourcePath?: string | undefined; }>; +// @public +export function createPublishGerritReviewAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}): TemplateAction<{ + repoUrl: string; + branch?: string | undefined; + sourcePath?: string | undefined; + gitCommitMessage?: string | undefined; + gitAuthorName?: string | undefined; + gitAuthorEmail?: string | undefined; +}>; + // @public export function createPublishGithubAction(options: { integrations: ScmIntegrationRegistry; @@ -330,6 +345,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; @@ -403,8 +419,10 @@ export const createPublishGitlabMergeRequestAction: (options: { branchName: string; targetPath: string; token?: string | undefined; + commitAction?: 'update' | 'create' | 'delete' | 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..7c2b2b4401 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.5.0-next.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.15.0-next.0", + "@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.3.0-next.0", + "@backstage/plugin-catalog-backend": "^1.3.1-next.0", + "@backstage/plugin-scaffolder-common": "^1.1.2", + "@backstage/backend-plugin-api": "^0.1.1-next.0", + "@backstage/plugin-catalog-node": "^1.0.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index 91f1e180d0..fcddf127e2 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -49,6 +49,7 @@ import { createPublishBitbucketCloudAction, createPublishBitbucketServerAction, createPublishGerritAction, + createPublishGerritReviewAction, createPublishGithubAction, createPublishGithubPullRequestAction, createPublishGitlabAction, @@ -118,6 +119,10 @@ export const createBuiltinActions = ( integrations, config, }), + createPublishGerritReviewAction({ + integrations, + config, + }), createPublishGithubAction({ integrations, config, 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 3e4ad61260..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/, ); }); @@ -357,57 +372,105 @@ describe('fetch:template', () => { ).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.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.test.ts index 78156a1075..b5a375d83d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.test.ts @@ -15,14 +15,16 @@ */ import { Git, getVoidLogger } from '@backstage/backend-common'; -import { initRepoAndPush } from './helpers'; +import { commitAndPushRepo, initRepoAndPush } from './helpers'; jest.mock('@backstage/backend-common', () => ({ Git: { fromAuth: jest.fn().mockReturnValue({ init: jest.fn(), add: jest.fn(), + checkout: jest.fn(), commit: jest.fn(), + fetch: jest.fn(), addRemote: jest.fn(), push: jest.fn(), }), @@ -31,8 +33,6 @@ jest.mock('@backstage/backend-common', () => ({ })); const mockedGit = Git.fromAuth({ - username: 'test-user', - password: 'test-password', logger: getVoidLogger(), }); @@ -99,6 +99,22 @@ describe('initRepoAndPush', () => { }); }); + it('with token', async () => { + await initRepoAndPush({ + dir: '/test/repo/dir/', + remoteUrl: 'git@github.com:test/repo.git', + auth: { + token: 'test-token', + }, + logger: getVoidLogger(), + }); + + expect(mockedGit.init).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + defaultBranch: 'master', + }); + }); + it('allows overriding the default branch', async () => { await initRepoAndPush({ dir: '/test/repo/dir/', @@ -146,3 +162,142 @@ describe('initRepoAndPush', () => { }); }); }); + +describe('commitAndPushRepo', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('with minimal parameters', () => { + beforeEach(async () => { + await commitAndPushRepo({ + dir: '/test/repo/dir/', + auth: { + username: 'test-user', + password: 'test-password', + }, + logger: getVoidLogger(), + commitMessage: 'commit message', + }); + }); + + it('fetches commits', () => { + expect(mockedGit.fetch).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + }); + }); + + it('checkouts to master', () => { + expect(mockedGit.checkout).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + ref: 'master', + }); + }); + + it('stages all files in the repo', () => { + expect(mockedGit.add).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + filepath: '.', + }); + }); + + it('creates a commit', () => { + expect(mockedGit.commit).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + message: 'commit message', + author: { + name: 'Scaffolder', + email: 'scaffolder@backstage.io', + }, + committer: { + name: 'Scaffolder', + email: 'scaffolder@backstage.io', + }, + }); + }); + + it('pushes to the remote', () => { + expect(mockedGit.push).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + remote: 'origin', + remoteRef: 'refs/heads/master', + }); + }); + }); + + it('allows overriding the default branch', async () => { + await commitAndPushRepo({ + dir: '/test/repo/dir/', + auth: { + username: 'test-user', + password: 'test-password', + }, + logger: getVoidLogger(), + commitMessage: 'commit message', + branch: 'otherbranch', + }); + + expect(mockedGit.checkout).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + ref: 'otherbranch', + }); + expect(mockedGit.push).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + remote: 'origin', + remoteRef: 'refs/heads/otherbranch', + }); + }); + + it('allows overriding the remote ref', async () => { + await commitAndPushRepo({ + dir: '/test/repo/dir/', + auth: { + username: 'test-user', + password: 'test-password', + }, + logger: getVoidLogger(), + commitMessage: 'commit message', + remoteRef: 'refs/for/master', + }); + + expect(mockedGit.checkout).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + ref: 'master', + }); + expect(mockedGit.push).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + remote: 'origin', + remoteRef: 'refs/for/master', + }); + }); + + it('allows overriding the author', async () => { + await commitAndPushRepo({ + dir: '/test/repo/dir/', + commitMessage: 'commit message', + gitAuthorInfo: { + name: 'Custom Scaffolder Author', + email: 'scaffolder@example.org', + }, + auth: { + username: 'test-user', + password: 'test-password', + }, + logger: getVoidLogger(), + branch: 'master', + }); + + expect(mockedGit.commit).toHaveBeenCalledWith({ + dir: '/test/repo/dir/', + message: 'commit message', + author: { + name: 'Custom Scaffolder Author', + email: 'scaffolder@example.org', + }, + committer: { + name: 'Custom Scaffolder Author', + email: 'scaffolder@example.org', + }, + }); + }); +}); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts index 8753d44041..d0cdcd627a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts @@ -83,15 +83,17 @@ export async function initRepoAndPush({ }: { dir: string; remoteUrl: string; - auth: { username: string; password: string }; + // For use cases where token has to be used with Basic Auth + // it has to be provided as password together with a username + // which may be a fixed value defined by the provider. + auth: { username: string; password: string } | { token: string }; logger: Logger; defaultBranch?: string; commitMessage?: string; gitAuthorInfo?: { name?: string; email?: string }; }): Promise { const git = Git.fromAuth({ - username: auth.username, - password: auth.password, + ...auth, logger, }); @@ -127,6 +129,55 @@ export async function initRepoAndPush({ }); } +export async function commitAndPushRepo({ + dir, + auth, + logger, + commitMessage, + gitAuthorInfo, + branch = 'master', + remoteRef, +}: { + dir: string; + // For use cases where token has to be used with Basic Auth + // it has to be provided as password together with a username + // which may be a fixed value defined by the provider. + auth: { username: string; password: string } | { token: string }; + logger: Logger; + commitMessage: string; + gitAuthorInfo?: { name?: string; email?: string }; + branch?: string; + remoteRef?: string; +}): Promise { + const git = Git.fromAuth({ + ...auth, + logger, + }); + + await git.fetch({ dir }); + await git.checkout({ dir, ref: branch }); + await git.add({ dir, filepath: '.' }); + + // use provided info if possible, otherwise use fallbacks + const authorInfo = { + name: gitAuthorInfo?.name ?? 'Scaffolder', + email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io', + }; + + await git.commit({ + dir, + message: commitMessage, + author: authorInfo, + committer: authorInfo, + }); + + await git.push({ + dir, + remote: 'origin', + remoteRef: remoteRef ?? `refs/heads/${branch}`, + }); +} + type BranchProtectionOptions = { client: Octokit; owner: string; @@ -135,6 +186,7 @@ type BranchProtectionOptions = { requireCodeOwnerReviews: boolean; requiredStatusCheckContexts?: string[]; defaultBranch?: string; + enforceAdmins?: boolean; }; export const enableBranchProtectionOnDefaultRepoBranch = async ({ @@ -145,6 +197,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ requireCodeOwnerReviews, requiredStatusCheckContexts = [], defaultBranch = 'master', + enforceAdmins = true, }: BranchProtectionOptions): Promise => { const tryOnce = async () => { try { @@ -167,7 +220,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/bitbucketServer.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.test.ts index 338231ea55..06d3dfb735 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.test.ts @@ -36,7 +36,13 @@ describe('publish:bitbucketServer', () => { apiBaseUrl: 'https://hosted.bitbucket.com/rest/api/1.0', }, { - host: 'notoken.bitbucket.com', + host: 'basic-auth.bitbucket.com', + username: 'test-user', + password: 'test-password', + apiBaseUrl: 'https://basic-auth.bitbucket.com/rest/api/1.0', + }, + { + host: 'no-credentials.bitbucket.com', }, ], }, @@ -96,21 +102,21 @@ describe('publish:bitbucketServer', () => { ).rejects.toThrow(/No matching integration configuration/); }); - it('should throw if there is no token in the integration config that is returned', async () => { + it('should throw if there no credentials in the integration config that is returned', async () => { await expect( action.handler({ ...mockContext, input: { ...mockContext.input, - repoUrl: 'notoken.bitbucket.com?project=project&repo=repo', + repoUrl: 'no-credentials.bitbucket.com?project=project&repo=repo', }, }), ).rejects.toThrow( - /Authorization has not been provided for notoken.bitbucket.com/, + /Authorization has not been provided for no-credentials.bitbucket.com/, ); }); - it('should call the correct APIs', async () => { + it('should call the correct APIs with token', async () => { expect.assertions(2); server.use( rest.post( @@ -150,12 +156,54 @@ describe('publish:bitbucketServer', () => { }); }); + it('should call the correct APIs with basic auth', async () => { + expect.assertions(2); + server.use( + rest.post( + 'https://basic-auth.bitbucket.com/rest/api/1.0/projects/project/repos', + (req, res, ctx) => { + expect(req.headers.get('Authorization')).toBe( + 'Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=', + ); + expect(req.body).toEqual({ public: false, name: 'repo' }); + return res( + ctx.status(201), + ctx.set('Content-Type', 'application/json'), + ctx.json({ + links: { + self: [ + { + href: 'https://bitbucket.mycompany.com/projects/project/repos/repo', + }, + ], + clone: [ + { + name: 'http', + href: 'https://bitbucket.mycompany.com/scm/project/repo', + }, + ], + }, + }), + ); + }, + ), + ); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + repoUrl: 'basic-auth.bitbucket.com?project=project&repo=repo', + }, + }); + }); + it('should work if the token is provided through ctx.input', async () => { expect.assertions(2); const token = 'user-token'; server.use( rest.post( - 'https://notoken.bitbucket.com/rest/api/1.0/projects/project/repos', + 'https://no-credentials.bitbucket.com/rest/api/1.0/projects/project/repos', (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe(`Bearer ${token}`); expect(req.body).toEqual({ public: false, name: 'repo' }); @@ -185,7 +233,7 @@ describe('publish:bitbucketServer', () => { ...mockContext, input: { ...mockContext.input, - repoUrl: 'notoken.bitbucket.com?project=project&repo=repo', + repoUrl: 'no-credentials.bitbucket.com?project=project&repo=repo', token: token, }, }); @@ -273,7 +321,7 @@ describe('publish:bitbucketServer', () => { }); }); - it('should call initAndPush with the correct values', async () => { + it('should call initAndPush with the correct values with token', async () => { server.use( rest.post( 'https://hosted.bitbucket.com/rest/api/1.0/projects/project/repos', @@ -309,7 +357,57 @@ describe('publish:bitbucketServer', () => { dir: mockContext.workspacePath, remoteUrl: 'https://bitbucket.mycompany.com/scm/project/repo', defaultBranch: 'master', - auth: { username: 'x-token-auth', password: 'thing' }, + auth: { token: 'thing' }, + logger: mockContext.logger, + gitAuthorInfo: {}, + }); + }); + + it('should call initAndPush with the correct values with basic auth', async () => { + server.use( + rest.post( + 'https://basic-auth.bitbucket.com/rest/api/1.0/projects/project/repos', + (req, res, ctx) => { + expect(req.headers.get('Authorization')).toBe( + 'Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=', + ); + expect(req.body).toEqual({ public: false, name: 'repo' }); + return res( + ctx.status(201), + ctx.set('Content-Type', 'application/json'), + ctx.json({ + links: { + self: [ + { + href: 'https://bitbucket.mycompany.com/projects/project/repos/repo', + }, + ], + clone: [ + { + name: 'http', + href: 'https://bitbucket.mycompany.com/scm/project/repo', + }, + ], + }, + }), + ); + }, + ), + ); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + repoUrl: 'basic-auth.bitbucket.com?project=project&repo=repo', + }, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + remoteUrl: 'https://bitbucket.mycompany.com/scm/project/repo', + defaultBranch: 'master', + auth: { username: 'test-user', password: 'test-password' }, logger: mockContext.logger, gitAuthorInfo: {}, }); @@ -357,7 +455,7 @@ describe('publish:bitbucketServer', () => { dir: mockContext.workspacePath, remoteUrl: 'https://bitbucket.mycompany.com/scm/project/repo', defaultBranch: 'main', - auth: { username: 'x-token-auth', password: 'thing' }, + auth: { token: 'thing' }, logger: mockContext.logger, gitAuthorInfo: {}, }); @@ -373,7 +471,7 @@ describe('publish:bitbucketServer', () => { apiBaseUrl: 'https://hosted.bitbucket.com/rest/api/1.0', }, { - host: 'notoken.bitbucket.com', + host: 'no-credentials.bitbucket.com', }, ], }, @@ -426,7 +524,7 @@ describe('publish:bitbucketServer', () => { expect(initRepoAndPush).toHaveBeenCalledWith({ dir: mockContext.workspacePath, remoteUrl: 'https://bitbucket.mycompany.com/scm/project/repo', - auth: { username: 'x-token-auth', password: 'thing' }, + auth: { token: 'thing' }, logger: mockContext.logger, defaultBranch: 'master', gitAuthorInfo: { name: 'Test', email: 'example@example.com' }, @@ -443,7 +541,7 @@ describe('publish:bitbucketServer', () => { apiBaseUrl: 'https://hosted.bitbucket.com/rest/api/1.0', }, { - host: 'notoken.bitbucket.com', + host: 'no-credentials.bitbucket.com', }, ], }, @@ -493,7 +591,7 @@ describe('publish:bitbucketServer', () => { expect(initRepoAndPush).toHaveBeenCalledWith({ dir: mockContext.workspacePath, remoteUrl: 'https://bitbucket.mycompany.com/scm/project/repo', - auth: { username: 'x-token-auth', password: 'thing' }, + auth: { token: 'thing' }, logger: mockContext.logger, defaultBranch: 'master', commitMessage: 'Test commit message', diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.ts index 208403d6f4..712a17de70 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/bitbucketServer.ts @@ -15,7 +15,10 @@ */ import { InputError } from '@backstage/errors'; -import { ScmIntegrationRegistry } from '@backstage/integration'; +import { + getBitbucketServerRequestOptions, + ScmIntegrationRegistry, +} from '@backstage/integration'; import fetch, { Response, RequestInit } from 'node-fetch'; import { initRepoAndPush } from '../helpers'; import { createTemplateAction } from '../../createTemplateAction'; @@ -79,10 +82,6 @@ const createRepository = async (opts: { return { remoteUrl, repoContentsUrl }; }; -const getAuthorizationHeader = (config: { token: string }) => { - return `Bearer ${config.token}`; -}; - const performEnableLFS = async (opts: { authorization: string; host: string; @@ -213,14 +212,19 @@ export function createPublishBitbucketServerAction(options: { } const token = ctx.input.token ?? integrationConfig.config.token; - if (!token) { + + const authConfig = { + ...integrationConfig.config, + ...{ token }, + }; + const reqOpts = getBitbucketServerRequestOptions(authConfig); + const authorization = reqOpts.headers.Authorization; + if (!authorization) { throw new Error( - `Authorization has not been provided for ${integrationConfig.config.host}. Please add either token to the Integrations config or a user login auth token`, + `Authorization has not been provided for ${integrationConfig.config.host}. Please add either (a) a user login auth token, or (b) a token or (c) username + password to the integration config.`, ); } - const authorization = getAuthorizationHeader({ token }); - const apiBaseUrl = integrationConfig.config.apiBaseUrl; const { remoteUrl, repoContentsUrl } = await createRepository({ @@ -237,10 +241,14 @@ export function createPublishBitbucketServerAction(options: { email: config.getOptionalString('scaffolder.defaultAuthor.email'), }; - const auth = { - username: 'x-token-auth', - password: token, - }; + const auth = authConfig.token + ? { + token: token!, + } + : { + username: authConfig.username!, + password: authConfig.password!, + }; await initRepoAndPush({ dir: getRepoSourceDirectory(ctx.workspacePath, ctx.input.sourcePath), 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 1cd1c33df6..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 @@ -213,7 +213,7 @@ 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' }, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.test.ts new file mode 100644 index 0000000000..55d7bde5a7 --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.test.ts @@ -0,0 +1,118 @@ +/* + * 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. + */ + +jest.mock('../helpers'); + +import { createPublishGerritReviewAction } from './gerritReview'; +import { ScmIntegrations } from '@backstage/integration'; +import { ConfigReader } from '@backstage/config'; +import { getVoidLogger } from '@backstage/backend-common'; +import { PassThrough } from 'stream'; +import { commitAndPushRepo } from '../helpers'; + +describe('publish:gerrit:review', () => { + const config = new ConfigReader({ + integrations: { + gerrit: [ + { + host: 'gerrithost.org', + username: 'gerrituser', + password: 'usertoken', + }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + const action = createPublishGerritReviewAction({ integrations, config }); + const mockContext = { + input: { + repoUrl: + 'gerrithost.org?owner=owner&workspace=parent&project=project&repo=repo', + gitCommitMessage: 'Review from backstage', + }, + workspacePath: 'workspace', + logger: getVoidLogger(), + logStream: new PassThrough(), + output: jest.fn(), + createTemporaryDirectory: jest.fn(), + }; + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('should throw an error when the repoUrl is not well formed', async () => { + await expect( + action.handler({ + ...mockContext, + input: { + repoUrl: 'gerrithost.org?workspace=w&owner=o', + }, + }), + ).rejects.toThrow(/missing repo/); + }); + + it('should throw an error when no commit message is provided', async () => { + await expect( + action.handler({ + ...mockContext, + input: { repoUrl: 'gerrithost.org?workspace=w&owner=o&repo=r' }, + }), + ).rejects.toThrow(/Missing gitCommitMessage input/); + }); + + it('should throw if there is no integration config provided', async () => { + await expect( + action.handler({ + ...mockContext, + input: { + repoUrl: 'missing.com?workspace=w&owner=o&repo=repo', + }, + }), + ).rejects.toThrow(/No matching integration configuration/); + }); + + it('can correctly create a review', async () => { + expect.assertions(3); + + await action.handler(mockContext); + + expect(commitAndPushRepo).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + auth: { username: 'gerrituser', password: 'usertoken' }, + logger: mockContext.logger, + commitMessage: expect.stringContaining( + 'Review from backstage\n\nChange-Id:', + ), + gitAuthorInfo: {}, + branch: 'master', + remoteRef: 'refs/for/master', + }); + + expect(mockContext.output).toHaveBeenCalledWith( + 'repoContentsUrl', + 'https://gerrithost.org/repo/+/refs/heads/master', + ); + expect(mockContext.output).toHaveBeenCalledWith( + 'reviewUrl', + expect.stringMatching(new RegExp('^https://gerrithost.org/#/q/I')), + ); + }); + afterEach(() => { + jest.resetAllMocks(); + }); +}); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.ts new file mode 100644 index 0000000000..17068654c0 --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gerritReview.ts @@ -0,0 +1,156 @@ +/* + * 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 crypto from 'crypto'; +import { InputError } from '@backstage/errors'; +import { Config } from '@backstage/config'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { createTemplateAction } from '../../createTemplateAction'; +import { getRepoSourceDirectory, parseRepoUrl } from './util'; +import { commitAndPushRepo } from '../helpers'; + +const generateGerritChangeId = (): string => { + const changeId = crypto.randomBytes(20).toString('hex'); + return `I${changeId}`; +}; + +/** + * Creates a new action that creates a Gerrit review + * @public + */ +export function createPublishGerritReviewAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}) { + const { integrations, config } = options; + + return createTemplateAction<{ + repoUrl: string; + branch?: string; + sourcePath?: string; + gitCommitMessage?: string; + gitAuthorName?: string; + gitAuthorEmail?: string; + }>({ + id: 'publish:gerrit:review', + description: 'Creates a new Gerrit review.', + schema: { + input: { + type: 'object', + required: ['repoUrl', 'gitCommitMessage'], + properties: { + repoUrl: { + title: 'Repository Location', + type: 'string', + }, + branch: { + title: 'Repository branch', + type: 'string', + description: + 'Branch of the repository the review will be created on', + }, + sourcePath: { + type: 'string', + title: 'Working Subdirectory', + description: + 'Subdirectory of working directory containing the repository', + }, + gitCommitMessage: { + title: 'Git Commit Message', + type: 'string', + description: `Sets the commit message on the repository.`, + }, + gitAuthorName: { + title: 'Default Author Name', + type: 'string', + description: `Sets the default author name for the commit. The default value is 'Scaffolder'`, + }, + gitAuthorEmail: { + title: 'Default Author Email', + type: 'string', + description: `Sets the default author email for the commit.`, + }, + }, + }, + output: { + type: 'object', + properties: { + reviewUrl: { + title: 'A URL to the review', + type: 'string', + }, + repoContentsUrl: { + title: 'A URL to the root of the repository', + type: 'string', + }, + }, + }, + }, + async handler(ctx) { + const { + repoUrl, + branch = 'master', + sourcePath, + gitAuthorName, + gitAuthorEmail, + gitCommitMessage, + } = ctx.input; + const { host, repo } = parseRepoUrl(repoUrl, integrations); + + if (!gitCommitMessage) { + throw new InputError(`Missing gitCommitMessage input`); + } + + const integrationConfig = integrations.gerrit.byHost(host); + + if (!integrationConfig) { + throw new InputError( + `No matching integration configuration for host ${host}, please check your integrations config`, + ); + } + + const auth = { + username: integrationConfig.config.username!, + password: integrationConfig.config.password!, + }; + const gitAuthorInfo = { + name: gitAuthorName + ? gitAuthorName + : config.getOptionalString('scaffolder.defaultAuthor.name'), + email: gitAuthorEmail + ? gitAuthorEmail + : config.getOptionalString('scaffolder.defaultAuthor.email'), + }; + const changeId = generateGerritChangeId(); + const commitMessage = `${gitCommitMessage}\n\nChange-Id: ${changeId}`; + + await commitAndPushRepo({ + dir: getRepoSourceDirectory(ctx.workspacePath, sourcePath), + auth, + logger: ctx.logger, + commitMessage, + gitAuthorInfo, + branch, + remoteRef: `refs/for/${branch}`, + }); + + const repoContentsUrl = `${integrationConfig.config.gitilesBaseUrl}/${repo}/+/refs/heads/${branch}`; + const reviewUrl = `${integrationConfig.config.baseUrl}/#/q/${changeId}`; + ctx.logger?.info(`Review available on ${reviewUrl}`); + ctx.output('repoContentsUrl', repoContentsUrl); + ctx.output('reviewUrl', reviewUrl); + }, + }); +} 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..76fe60a2b0 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,342 @@ 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, + }, + ); + }); + }); + + describe('createGitLabMergeRequestWithoutCommitAction', () => { + it('default commitAction is create', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'This MR is really good', + draft: true, + targetPath: 'source', + }; + 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.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + }); + + describe('createGitLabMergeRequestWithCommitAction', () => { + it('commitAction is create when create is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'create', + draft: true, + targetPath: 'source', + }; + 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.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'create', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it('commitAction is update when update is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'MR description', + commitAction: 'update', + draft: true, + targetPath: 'source', + }; + 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.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'update', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: false, + }, + ], + ); + }); + + it('commitAction is delete when delete is passed in options', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + title: 'Create my new MR', + branchName: 'new-mr', + description: 'other MR description', + commitAction: 'delete', + draft: true, + targetPath: 'source', + }; + 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.Commits.create).toHaveBeenCalledWith( + 'owner/repo', + 'new-mr', + 'Create my new MR', + [ + { + action: 'delete', + filePath: 'source/foo.txt', + content: 'SGVsbG8gdGhlcmUh', + encoding: 'base64', + execute_filemode: 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..1410096a73 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlabMergeRequest.ts @@ -40,9 +40,11 @@ export const createPublishGitlabMergeRequestAction = (options: { branchName: string; targetPath: string; token?: string; + commitAction?: 'create' | 'delete' | 'update'; /** @deprecated Use projectPath instead */ projectid?: string; removeSourceBranch?: boolean; + assignee?: string; }>({ id: 'publish:gitlab:merge-request', schema: { @@ -86,12 +88,24 @@ export const createPublishGitlabMergeRequestAction = (options: { type: 'string', description: 'The token to use for authorization to GitLab', }, + commitAction: { + title: 'Commit action', + type: 'string', + enum: ['create', 'update', 'delete'], + description: + 'The action to be used for git commit. Defaults to create.', + }, removeSourceBranch: { title: 'Delete source branch', type: 'boolean', 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 +160,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, @@ -155,7 +184,7 @@ export const createPublishGitlabMergeRequestAction = (options: { }); const actions: Types.CommitAction[] = fileContents.map(file => ({ - action: 'create', + action: ctx.input.commitAction ?? 'create', filePath: path.posix.join(ctx.input.targetPath, file.path), encoding: 'base64', content: file.content.toString('base64'), @@ -199,6 +228,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/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts index 11ecd2b127..8819c93d08 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/index.ts @@ -20,6 +20,7 @@ export { createPublishBitbucketCloudAction } from './bitbucketCloud'; export { createPublishBitbucketServerAction } from './bitbucketServer'; export { createPublishFileAction } from './file'; export { createPublishGerritAction } from './gerrit'; +export { createPublishGerritReviewAction } from './gerritReview'; export { createPublishGithubAction } from './github'; export { createPublishGithubPullRequestAction } from './githubPullRequest'; export type { 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..c7d9af8e64 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({ @@ -305,6 +311,7 @@ export async function createRouter( logger.error( `Received error from event stream when observing taskId '${taskId}', ${error}`, ); + res.end(); }, next: ({ events }) => { let shouldUnsubscribe = false; @@ -318,7 +325,10 @@ export async function createRouter( } // res.flush() is only available with the compression middleware res.flush?.(); - if (shouldUnsubscribe) subscription.unsubscribe(); + if (shouldUnsubscribe) { + subscription.unsubscribe(); + res.end(); + } }, }); 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..6e12684ef1 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.1-next.0" } } diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index d411c07f14..a1f7c1a68d 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,63 @@ # @backstage/plugin-scaffolder +## 1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-permission-react@0.4.4-next.0 + +## 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 3fa623b5b9..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[]; } @@ -365,7 +367,8 @@ export const scaffolderPlugin: BackstagePlugin< }, { registerComponent: ExternalRouteRef; - } + }, + {} >; // @public diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 9766cbdb31..ca54750dd0 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-common": "^1.0.4", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-permission-react": "^0.4.4-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx index f0ef5ba4b5..f6fa37109d 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx @@ -171,6 +171,7 @@ export const RepoUrlPicker = ( )} {hostType === 'bitbucket' && ( { '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..737babecff 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-search-backend-module-pg +## 0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + +## 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..273f3b5e8f 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.6-next.0", "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.15.0-next.0", "@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.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..49835bd31c 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-search-backend-node +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + +## 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..7772837347 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.1-next.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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", "@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.15.0-next.0", + "@backstage/cli": "^0.18.1-next.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..9a48c96755 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-search-backend +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-auth-node@0.2.4-next.0 + - @backstage/plugin-permission-node@0.6.4-next.0 + - @backstage/plugin-search-backend-node@1.0.1-next.0 + +## 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..49aa696f58 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.1-next.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.15.0-next.0", "@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.4-next.0", + "@backstage/plugin-permission-common": "^0.6.3", + "@backstage/plugin-permission-node": "^0.6.4-next.0", + "@backstage/plugin-search-backend-node": "^1.0.1-next.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.1-next.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..ae643941b7 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.1-next.0" }, "jest": { "roots": [ diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 926972a646..1c5bc6b2ed 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-search-react +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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..e57816582a 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", "@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.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..f37169a212 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,45 @@ # @backstage/plugin-search +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + +## 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 800fa7e7fc..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, @@ -194,17 +75,12 @@ const searchPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; 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..994d9c3f1f 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.1-next.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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..f8f8887ac1 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,50 @@ # @backstage/plugin-sentry +## 0.4.1-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/sentry/api-report.md index 625db39959..e752eb2110 100644 --- a/plugins/sentry/api-report.md +++ b/plugins/sentry/api-report.md @@ -145,6 +145,7 @@ const sentryPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { sentryPlugin as plugin }; diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 4990827960..2f7243dead 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/theme": "^0.2.16", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -53,15 +53,15 @@ "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index b10f277885..ddaddfc537 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-shortcuts +## 0.3.0-next.0 + +### Minor Changes + +- 5b769fddb5: Internal observable replaced with a mapping from the storage API. This fixes shortcuts initialization when using firestore. + + `ShortcutApi.get` method, that returns an immediate snapshot of shortcuts, made public. + + Example of how to get and observe `shortcuts`: + + ```typescript + const shortcutApi = useApi(shortcutsApiRef); + const shortcuts = useObservable(shortcutApi.shortcut$(), shortcutApi.get()); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/shortcuts/api-report.md index 4b5a8e74df..7f81df835d 100644 --- a/plugins/shortcuts/api-report.md +++ b/plugins/shortcuts/api-report.md @@ -9,7 +9,7 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; import { Observable } from '@backstage/types'; -import ObservableImpl from 'zen-observable'; +import { default as Observable_2 } from 'zen-observable'; import { StorageApi } from '@backstage/core-plugin-api'; // Warning: (ae-missing-release-tag) "LocalStoredShortcuts" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -20,11 +20,13 @@ export class LocalStoredShortcuts implements ShortcutApi { // (undocumented) add(shortcut: Omit): Promise; // (undocumented) + get(): Shortcut[]; + // (undocumented) getColor(url: string): string; // (undocumented) remove(id: string): Promise; // (undocumented) - shortcut$(): ObservableImpl; + shortcut$(): Observable_2; // (undocumented) update(shortcut: Shortcut): Promise; } @@ -43,6 +45,7 @@ export type Shortcut = { // @public (undocumented) export interface ShortcutApi { add(shortcut: Omit): Promise; + get(): Shortcut[]; getColor(url: string): string; remove(id: string): Promise; shortcut$(): Observable; @@ -62,7 +65,7 @@ export const shortcutsApiRef: ApiRef; // Warning: (ae-missing-release-tag) "shortcutsPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const shortcutsPlugin: BackstagePlugin<{}, {}>; +export const shortcutsPlugin: BackstagePlugin<{}, {}, {}>; // @public export interface ShortcutsProps { diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 1d864a9e67..6ff802fd22 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.3.0-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/src/Shortcuts.tsx b/plugins/shortcuts/src/Shortcuts.tsx index b8af1f2e29..28aa33e8f2 100644 --- a/plugins/shortcuts/src/Shortcuts.tsx +++ b/plugins/shortcuts/src/Shortcuts.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import React, { useMemo } from 'react'; +import React from 'react'; import useObservable from 'react-use/lib/useObservable'; import PlayListAddIcon from '@material-ui/icons/PlaylistAdd'; import { ShortcutItem } from './ShortcutItem'; @@ -39,9 +39,7 @@ export interface ShortcutsProps { export const Shortcuts = (props: ShortcutsProps) => { const shortcutApi = useApi(shortcutsApiRef); - const shortcuts = useObservable( - useMemo(() => shortcutApi.shortcut$(), [shortcutApi]), - ); + const shortcuts = useObservable(shortcutApi.shortcut$(), shortcutApi.get()); const [anchorEl, setAnchorEl] = React.useState(); const loading = Boolean(!shortcuts); diff --git a/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts b/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts index c8401e8b1a..dbea91863c 100644 --- a/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts +++ b/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts @@ -27,17 +27,22 @@ describe('LocalStoredShortcuts', () => { ); const shortcut: Shortcut = { id: 'id', title: 'title', url: '/url' }; - await shortcutApi.add(shortcut); + const observerNextHandler = jest.fn(); await new Promise(resolve => { - const subscription = shortcutApi.shortcut$().subscribe(data => { - expect(data).toEqual( - expect.arrayContaining([{ ...shortcut, id: expect.anything() }]), - ); - subscription.unsubscribe(); - resolve(); + shortcutApi.shortcut$().subscribe({ + next: data => { + observerNextHandler(data); + resolve(); + }, }); + shortcutApi.add(shortcut); }); + + expect(observerNextHandler).toHaveBeenCalledTimes(1); + expect(observerNextHandler).toHaveBeenCalledWith( + expect.arrayContaining([{ ...shortcut, id: expect.anything() }]), + ); }); it('should add shortcuts with ids', async () => { diff --git a/plugins/shortcuts/src/api/LocalStoredShortcuts.ts b/plugins/shortcuts/src/api/LocalStoredShortcuts.ts index ef54f68acd..82f4b7dd1a 100644 --- a/plugins/shortcuts/src/api/LocalStoredShortcuts.ts +++ b/plugins/shortcuts/src/api/LocalStoredShortcuts.ts @@ -15,11 +15,11 @@ */ import { pageTheme } from '@backstage/theme'; -import ObservableImpl from 'zen-observable'; import { v4 as uuid } from 'uuid'; import { ShortcutApi } from './ShortcutApi'; import { Shortcut } from '../types'; import { StorageApi } from '@backstage/core-plugin-api'; +import Observable from 'zen-observable'; /** * Implementation of the ShortcutApi that uses the StorageApi to store shortcuts. @@ -28,7 +28,15 @@ export class LocalStoredShortcuts implements ShortcutApi { constructor(private readonly storageApi: StorageApi) {} shortcut$() { - return this.observable; + return Observable.from(this.storageApi.observe$('items')).map( + snapshot => snapshot.value ?? [], + ); + } + + get() { + return Array.from( + this.storageApi.snapshot('items').value ?? [], + ).sort((a, b) => (a.title >= b.title ? 1 : -1)); } async add(shortcut: Omit) { @@ -36,14 +44,12 @@ export class LocalStoredShortcuts implements ShortcutApi { shortcuts.push({ ...shortcut, id: uuid() }); await this.storageApi.set('items', shortcuts); - this.notify(); } async remove(id: string) { const shortcuts = this.get().filter(s => s.id !== id); await this.storageApi.set('items', shortcuts); - this.notify(); } async update(shortcut: Shortcut) { @@ -51,7 +57,6 @@ export class LocalStoredShortcuts implements ShortcutApi { shortcuts.push(shortcut); await this.storageApi.set('items', shortcuts); - this.notify(); } getColor(url: string) { @@ -63,33 +68,8 @@ export class LocalStoredShortcuts implements ShortcutApi { return pageTheme[theme].colors[0]; } - private subscribers = new Set< - ZenObservable.SubscriptionObserver - >(); - - private readonly observable = new ObservableImpl(subscriber => { - subscriber.next(this.get()); - this.subscribers.add(subscriber); - - return () => { - this.subscribers.delete(subscriber); - }; - }); - private readonly THEME_MAP: Record = { catalog: 'home', docs: 'documentation', }; - - private get() { - return Array.from( - this.storageApi.snapshot('items').value ?? [], - ).sort((a, b) => (a.title >= b.title ? 1 : -1)); - } - - private notify() { - for (const subscription of this.subscribers) { - subscription.next(this.get()); - } - } } diff --git a/plugins/shortcuts/src/api/ShortcutApi.ts b/plugins/shortcuts/src/api/ShortcutApi.ts index 893a2fd74b..1f93baa66c 100644 --- a/plugins/shortcuts/src/api/ShortcutApi.ts +++ b/plugins/shortcuts/src/api/ShortcutApi.ts @@ -28,6 +28,11 @@ export interface ShortcutApi { */ shortcut$(): Observable; + /** + * Returns an immediate snapshot of shortcuts, sorted by title + */ + get(): Shortcut[]; + /** * Generates a unique id for the shortcut and then saves it. */ diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 0d6ef3a2b1..8f2f86fc1a 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-sonarqube +## 0.3.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/sonarqube/api-report.md index a7549a689c..06e4b8578e 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -44,7 +44,7 @@ export const SonarQubeCard: ({ // Warning: (ae-missing-release-tag) "sonarQubePlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const sonarQubePlugin: BackstagePlugin<{}, {}>; +const sonarQubePlugin: BackstagePlugin<{}, {}, {}>; export { sonarQubePlugin as plugin }; export { sonarQubePlugin }; diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 5d14b6d017..c5c27d800a 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.8-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..35cf497a0e 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-splunk-on-call +## 0.3.32-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/splunk-on-call/api-report.md index 60ec38ca6d..b24a68e07a 100644 --- a/plugins/splunk-on-call/api-report.md +++ b/plugins/splunk-on-call/api-report.md @@ -98,6 +98,7 @@ const splunkOnCallPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { splunkOnCallPlugin as plugin }; diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index bb3ad8b58a..63b4ddf1e2 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.32-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -51,15 +51,15 @@ "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.44.0" diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 6c19f2bfe4..478d7f5ac3 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-stack-overflow-backend +## 0.1.4-next.0 + +### Patch Changes + +- ea5631a8b2: Added API key as separate configuration + +## 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/README.md b/plugins/stack-overflow-backend/README.md index f2eaf660c2..62115b889c 100644 --- a/plugins/stack-overflow-backend/README.md +++ b/plugins/stack-overflow-backend/README.md @@ -15,6 +15,16 @@ stackoverflow: baseUrl: https://api.stackexchange.com/2.2 # alternative: your internal stack overflow instance ``` +### Stack Overflow for Teams (private stack overflow instance) + +If you have a private stack overflow instance you will need to supply an API key as well. You can read more about how to set this up by going to [Stack Overflows Help Page](https://stackoverflow.help/en/articles/4385859-stack-overflow-for-teams-api) + +```yaml +stackoverflow: + baseUrl: https://api.stackexchange.com/2.2 # alternative: your internal stack overflow instance + apiKey: $STACK_OVERFLOW_API_KEY +``` + ## Areas of Responsibility This stack overflow backend plugin is primarily responsible for the following: diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md index fc4c610d3e..1a21ff34ac 100644 --- a/plugins/stack-overflow-backend/api-report.md +++ b/plugins/stack-overflow-backend/api-report.md @@ -41,6 +41,7 @@ export class StackOverflowQuestionsCollatorFactory // @public export type StackOverflowQuestionsCollatorFactoryOptions = { baseUrl?: string; + apiKey?: string; requestParams: StackOverflowQuestionsRequestParams; logger: Logger; }; diff --git a/plugins/stack-overflow-backend/config.d.ts b/plugins/stack-overflow-backend/config.d.ts index 2c39d61bfb..d329a4389f 100644 --- a/plugins/stack-overflow-backend/config.d.ts +++ b/plugins/stack-overflow-backend/config.d.ts @@ -24,5 +24,11 @@ export interface Config { * @visibility backend */ baseUrl?: string; + + /** + * The api key to authenticate to Stack Overflow API + * @visibility secret + */ + apiKey?: string; }; } diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 07cdbfb242..5b11dbdaab 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.4-next.0", "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-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts index 98fc86c2ea..45261ce546 100644 --- a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts +++ b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts @@ -50,6 +50,7 @@ export type StackOverflowQuestionsRequestParams = { */ export type StackOverflowQuestionsCollatorFactoryOptions = { baseUrl?: string; + apiKey?: string; requestParams: StackOverflowQuestionsRequestParams; logger: Logger; }; @@ -64,11 +65,13 @@ export class StackOverflowQuestionsCollatorFactory { protected requestParams: StackOverflowQuestionsRequestParams; private readonly baseUrl: string | undefined; + private readonly apiKey: string | undefined; private readonly logger: Logger; public readonly type: string = 'stack-overflow'; private constructor(options: StackOverflowQuestionsCollatorFactoryOptions) { this.baseUrl = options.baseUrl; + this.apiKey = options.apiKey; this.requestParams = options.requestParams; this.logger = options.logger; } @@ -77,10 +80,15 @@ export class StackOverflowQuestionsCollatorFactory config: Config, options: StackOverflowQuestionsCollatorFactoryOptions, ) { + const apiKey = config.getOptionalString('stackoverflow.apiKey'); const baseUrl = config.getOptionalString('stackoverflow.baseUrl') || 'https://api.stackexchange.com/2.2'; - return new StackOverflowQuestionsCollatorFactory({ ...options, baseUrl }); + return new StackOverflowQuestionsCollatorFactory({ + ...options, + baseUrl, + apiKey, + }); } async getCollator() { @@ -93,12 +101,28 @@ export class StackOverflowQuestionsCollatorFactory `No stackoverflow.baseUrl configured in your app-config.yaml`, ); } + + try { + if (Object.keys(this.requestParams).indexOf('key') >= 0) { + this.logger.warn( + 'The API Key should be passed as a seperate param to bypass encoding', + ); + delete this.requestParams.key; + } + } catch (e) { + this.logger.error(`Caught ${e}`); + } + const params = qs.stringify(this.requestParams, { arrayFormat: 'comma', addQueryPrefix: true, }); - const res = await fetch(`${this.baseUrl}/questions${params}`); + const apiKeyParam = this.apiKey + ? `${params ? '&' : '?'}key=${this.apiKey}` + : ''; + + const res = await fetch(`${this.baseUrl}/questions${params}${apiKeyParam}`); const data = await res.json(); for (const question of data.items) { diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index 36a85b361d..0a38c211a7 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-stack-overflow +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-home@0.4.24-next.0 + +## 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/api-report.md b/plugins/stack-overflow/api-report.md index e4912fcd18..9404c74700 100644 --- a/plugins/stack-overflow/api-report.md +++ b/plugins/stack-overflow/api-report.md @@ -20,7 +20,7 @@ export const HomePageStackOverflowQuestions: ( export const StackOverflowIcon: () => JSX.Element; // @public -export const stackOverflowPlugin: BackstagePlugin<{}, {}>; +export const stackOverflowPlugin: BackstagePlugin<{}, {}, {}>; // @public export type StackOverflowQuestion = { diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 48f5165520..8c896fb602 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.4-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/plugin-home": "^0.4.24-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..f666bb2fa9 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + +## 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..890b521daf 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.19-next.0", "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.15.0-next.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.6-next.0", + "@backstage/plugin-tech-insights-node": "^0.3.3-next.0", "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.1-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index b10f03269b..e5d471a439 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-tech-insights-backend +## 0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-tech-insights-node@0.3.3-next.0 + +## 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..44b84d5fd3 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.1-next.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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@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.6-next.0", + "@backstage/plugin-tech-insights-node": "^0.3.3-next.0", "@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.27-next.0", + "@backstage/cli": "^0.18.1-next.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..09a21f5386 100644 --- a/plugins/tech-insights-common/CHANGELOG.md +++ b/plugins/tech-insights-common/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-tech-insights-common +## 0.2.6-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. + +## 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..172344d005 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.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@types/luxon": "^2.0.5", + "@types/luxon": "^3.0.0", "luxon": "^3.0.0", "@backstage/types": "^1.0.0" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index 69ff7c8b04..817eb1def5 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-tech-insights-node +## 0.3.3-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + +## 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..3d65d662c3 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.3-next.0", "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.15.0-next.0", "@backstage/config": "^1.0.1", - "@backstage/plugin-tech-insights-common": "^0.2.5-next.0", + "@backstage/plugin-tech-insights-common": "^0.2.6-next.0", "@backstage/types": "^1.0.0", - "@types/luxon": "^2.0.5", + "@types/luxon": "^3.0.0", "luxon": "^3.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.18.0-next.3" + "@backstage/cli": "^0.18.1-next.0" }, "files": [ "dist" diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index c2d408757e..c18f60c696 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-tech-insights +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-tech-insights-common@0.2.6-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/tech-insights/api-report.md index 54884f12ea..694fb583d2 100644 --- a/plugins/tech-insights/api-report.md +++ b/plugins/tech-insights/api-report.md @@ -112,6 +112,7 @@ export const techInsightsPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index bca772d70b..bf6c21fcdf 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.4-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-tech-insights-common": "^0.2.6-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..77a6efb764 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-tech-radar +## 0.5.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/tech-radar/api-report.md index 75824f0509..a55cf79f28 100644 --- a/plugins/tech-radar/api-report.md +++ b/plugins/tech-radar/api-report.md @@ -126,6 +126,7 @@ const techRadarPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; export { techRadarPlugin as plugin }; diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index ed1c37e2f7..1c73979600 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.15-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..5dd3c9da8c 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog@1.5.0-next.0 + - @backstage/plugin-techdocs@1.3.1-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/core-app-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/test-utils@1.1.3-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## 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..217ed5a935 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.3-next.0", "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog": "^1.5.0-next.0", + "@backstage/plugin-search-react": "^1.0.1-next.0", + "@backstage/plugin-techdocs": "^1.3.1-next.0", + "@backstage/plugin-techdocs-react": "^1.0.3-next.0", + "@backstage/test-utils": "^1.1.3-next.0", + "@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.1-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", "@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..56b01d5bf0 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-techdocs-backend +## 1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/plugin-techdocs-node@1.2.1-next.0 + +## 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..6b724686c9 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.1-next.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.15.0-next.0", + "@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.3.0-next.0", + "@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.1-next.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.27-next.0", + "@backstage/cli": "^0.18.1-next.0", + "@backstage/plugin-search-backend-node": "1.0.1-next.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..a7756a3221 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## 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/api-report.md b/plugins/techdocs-module-addons-contrib/api-report.md index efe88e2d5c..f787e0678c 100644 --- a/plugins/techdocs-module-addons-contrib/api-report.md +++ b/plugins/techdocs-module-addons-contrib/api-report.md @@ -33,7 +33,7 @@ export type ReportIssueTemplateBuilder = ({ }) => ReportIssueTemplate; // @public -export const techdocsModuleAddonsContribPlugin: BackstagePlugin<{}, {}>; +export const techdocsModuleAddonsContribPlugin: BackstagePlugin<{}, {}, {}>; // @public export const TextSize: () => JSX.Element | null; diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 7228295f0f..635037bb81 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.3-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-techdocs-react": "^1.0.3-next.0", + "@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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/plugin-techdocs-addons-test-utils": "^1.0.3-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..4405c103af 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,43 @@ # @backstage/plugin-techdocs-node +## 1.2.1-next.0 + +### Patch Changes + +- c8196bd37d: Fix AWS S3 404 NotFound error + + When reading an object from the S3 bucket through a stream, the aws-sdk getObject() API may throw a 404 NotFound Error with no error message or, in fact, any sort of HTTP-layer error responses. These fail the @backstage/error's assertError() checks, so they must be wrapped. The test for this case was also updated to match the wrapped error message. + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## 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..9f61fa54a0 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.1-next.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.15.0-next.0", + "@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.3.0-next.0", + "@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.1-next.0", "@types/fs-extra": "^9.0.5", "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts index 6372093c4b..1ca9cf2abf 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts @@ -478,7 +478,7 @@ describe('AwsS3Publish', () => { await expect(fails).rejects.toMatchObject({ message: expect.stringMatching( - /TechDocs metadata fetch failed; caused by Error: The file .* does not exist/i, + 'TechDocs metadata fetch failed; caused by Error: Unable to read stream; caused by Error: The file invalid/triplet/path/techdocs_metadata.json does not exist', ), }); }); diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.ts b/plugins/techdocs-node/src/stages/publish/awsS3.ts index e5914d2fdf..12940e0117 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.ts @@ -49,7 +49,9 @@ const streamToBuffer = (stream: Readable): Promise => { try { const chunks: any[] = []; stream.on('data', chunk => chunks.push(chunk)); - stream.on('error', reject); + stream.on('error', (e: Error) => + reject(new ForwardedError('Unable to read stream', e)), + ); stream.on('end', () => resolve(Buffer.concat(chunks))); } catch (e) { throw new ForwardedError('Unable to parse the response data', e); diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index ffc63b4c01..f11f3a6ae3 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs-react +## 1.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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 8eeab98e2b..4dd45f7942 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.3-next.0", "private": false, "publishConfig": { "access": "public", @@ -35,10 +35,10 @@ "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/config": "^1.0.1", + "@backstage/catalog-model": "^1.1.0", + "@backstage/config": "^1.0.1" + "@backstage/core-components": "^0.10.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", "@backstage/version-bridge": "^1.0.1", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.57", @@ -57,8 +57,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.3-next.0", + "@backstage/theme": "^0.2.16" }, "files": [ "alpha", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index c8b38e5a70..bbc5b31139 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,63 @@ # @backstage/plugin-techdocs +## 1.3.1-next.0 + +### Patch Changes + +- 7a98c73dc8: Fixed techdocs sidebar layout bug for medium devices. +- Updated dependencies + - @backstage/integration@1.3.0-next.0 + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/integration-react@1.1.3-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + - @backstage/plugin-search-react@1.0.1-next.0 + - @backstage/plugin-techdocs-react@1.0.3-next.0 + +## 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 d4ec65ed53..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; @@ -288,6 +291,7 @@ const techdocsPlugin: BackstagePlugin< }>; entityContent: RouteRef; }, + {}, {} >; export { techdocsPlugin as plugin }; diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 79c575b566..1cf6dd7bd8 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.1-next.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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/integration": "^1.3.0-next.0", + "@backstage/integration-react": "^1.1.3-next.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.0", + "@backstage/plugin-search-common": "^1.0.0", + "@backstage/plugin-search-react": "^1.0.1-next.0", + "@backstage/plugin-techdocs-react": "^1.0.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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/techdocs/src/reader/transformers/styles/rules/layout.ts b/plugins/techdocs/src/reader/transformers/styles/rules/layout.ts index 2488504dd9..400a9144d8 100644 --- a/plugins/techdocs/src/reader/transformers/styles/rules/layout.ts +++ b/plugins/techdocs/src/reader/transformers/styles/rules/layout.ts @@ -16,6 +16,8 @@ import { RuleOptions } from './types'; +const SIDEBAR_WIDTH = '224px'; + export default ({ theme, sidebar }: RuleOptions) => ` /*================== Layout ==================*/ @@ -61,7 +63,7 @@ export default ({ theme, sidebar }: RuleOptions) => ` scrollbar-width: thin; } .md-sidebar .md-sidebar__scrollwrap { - width: calc(16rem - 10px); + width: calc(12.1rem); } .md-sidebar--secondary { right: ${theme.spacing(3)}px; @@ -169,7 +171,9 @@ export default ({ theme, sidebar }: RuleOptions) => ` width: 12.1rem !important; z-index: 200; left: ${ - sidebar.isPinned ? 'calc(-12.1rem + 242px)' : 'calc(-12.1rem + 72px)' + sidebar.isPinned + ? `calc(-12.1rem + ${SIDEBAR_WIDTH})` + : 'calc(-12.1rem + 72px)' } !important; } .md-sidebar--secondary:not([hidden]) { diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index 285c9c463c..8d086e4608 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-todo-backend +## 0.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + +## 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..fc99d715b1 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.32-next.0", "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.15.0-next.0", + "@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.3.0-next.0", "@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.1-next.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..b77a46c738 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-todo +## 0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/todo/api-report.md index c1667f1111..09356cd48f 100644 --- a/plugins/todo/api-report.md +++ b/plugins/todo/api-report.md @@ -84,6 +84,7 @@ export const todoPlugin: BackstagePlugin< { entityContent: RouteRef; }, + {}, {} >; ``` diff --git a/plugins/todo/package.json b/plugins/todo/package.json index f0412472b1..6e1d555ab0 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.10-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..c563afaa2f 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-user-settings +## 0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/user-settings/api-report.md index a38b37846a..914f8b2385 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -102,6 +102,7 @@ const userSettingsPlugin: BackstagePlugin< { settingsPage: RouteRef; }, + {}, {} >; export { userSettingsPlugin as plugin }; diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 5d0c083531..2a16a80332 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.7-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..00d5360ca4 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-vault-backend +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/backend-test-utils@0.1.27-next.0 + +## 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..1e6292fa00 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.1-next.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.15.0-next.0", + "@backstage/backend-tasks": "^0.3.4-next.0", + "@backstage/backend-test-utils": "^0.1.27-next.0", "@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.1-next.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..a5f1820f6d 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-vault +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/plugin-catalog-react@1.1.3-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/vault/api-report.md index b347989800..8c4e5da829 100644 --- a/plugins/vault/api-report.md +++ b/plugins/vault/api-report.md @@ -27,7 +27,7 @@ export interface VaultApi { export const vaultApiRef: ApiRef; // @public -export const vaultPlugin: BackstagePlugin<{}, {}>; +export const vaultPlugin: BackstagePlugin<{}, {}, {}>; // @public export type VaultSecret = { diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 3364323e13..9bb3b86bd2 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.2-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@backstage/errors": "^1.1.0", + "@backstage/plugin-catalog-react": "^1.1.3-next.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", @@ -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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@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..1b16f43e8d 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-xcmetrics +## 0.2.28-next.0 + +### Patch Changes + +- 29f782eb37: Updated dependency `@types/luxon` to `^3.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.0.5-next.0 + - @backstage/core-components@0.10.1-next.0 + +## 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/api-report.md b/plugins/xcmetrics/api-report.md index 3e2aa23451..373748e9e2 100644 --- a/plugins/xcmetrics/api-report.md +++ b/plugins/xcmetrics/api-report.md @@ -20,6 +20,7 @@ export const xcmetricsPlugin: BackstagePlugin< { root: RouteRef; }, + {}, {} >; ``` diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 1527789e44..2dbc98a290 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.28-next.0", "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.1-next.0", + "@backstage/core-plugin-api": "^1.0.5-next.0", + "@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,15 +40,15 @@ "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.1-next.0", + "@backstage/core-app-api": "^1.0.5-next.0", + "@backstage/dev-utils": "^1.0.5-next.0", + "@backstage/test-utils": "^1.1.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", - "@types/luxon": "^2.0.4", + "@types/luxon": "^3.0.0", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.44.0" diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index a7f36136cc..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', diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 5bb8e802d3..f603d5ba1a 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -1138,23 +1138,23 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/set-array" "^1.0.0" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + 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/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" @@ -1165,14 +1165,14 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + version "0.3.14" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -2125,22 +2125,27 @@ integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== "@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.3" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" - integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== + version "8.4.5" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" + integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": +"@types/estree@*": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== @@ -2211,9 +2216,9 @@ form-data "^3.0.0" "@types/node@*": - version "17.0.44" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.44.tgz#16dd0bb5338f016d8ca10631789f0d0612fe5d5b" - integrity sha512-gWYiOlu6Y4oyLYBvsJAPlwHbC8H4tX+tLsHy6Ee976wedwwZKrG2hFl3Y/HiH6bIyLTbDWQexQF/ohwKkOpUCg== + version "18.6.1" + resolved "https://registry.npmjs.org/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" + integrity sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg== "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0": version "16.11.41" @@ -2483,10 +2488,10 @@ acorn@^7.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.5.0: - version "8.7.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.5.0, acorn@^8.7.1: + version "8.8.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== address@^1.0.1: version "1.2.0" @@ -3000,7 +3005,7 @@ browser-assert@^1.2.1: resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== -browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.20.4: +browserslist@^4.12.0, browserslist@^4.20.2, browserslist@^4.20.4: version "4.20.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== @@ -3011,6 +3016,16 @@ browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^ node-releases "^2.0.5" picocolors "^1.0.0" +browserslist@^4.14.5: + version "4.21.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" + integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== + dependencies: + caniuse-lite "^1.0.30001366" + electron-to-chromium "^1.4.188" + node-releases "^2.0.6" + update-browserslist-db "^1.0.4" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3137,11 +3152,16 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001349: +caniuse-lite@^1.0.30001109: version "1.0.30001354" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001354.tgz#95c5efdb64148bb4870771749b9a619304755ce5" integrity sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg== +caniuse-lite@^1.0.30001349, caniuse-lite@^1.0.30001366: + version "1.0.30001370" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" + integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== + case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -3803,10 +3823,10 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.147: - version "1.4.156" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.156.tgz#fc398e1bfbe586135351ebfaf198473a82923af5" - integrity sha512-/Wj5NC7E0wHaMCdqxWz9B0lv7CcycDTiHyXCtbbu3pXM9TV2AOp8BtMqkVuqvJNdEvltBG6LxT2Q+BxY4LUCIA== +electron-to-chromium@^1.4.147, electron-to-chromium@^1.4.188: + version "1.4.199" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz#e0384fde79fdda89880e8be58196a9153e04db3b" + integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== element-resize-detector@^1.2.2: version "1.2.4" @@ -3839,10 +3859,10 @@ endent@^2.0.1: fast-json-parse "^1.0.3" objectorarray "^1.0.5" -enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== +enhanced-resolve@^5.10.0: + version "5.10.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -6028,10 +6048,10 @@ node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.5, node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" @@ -7763,9 +7783,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" @@ -7878,15 +7898,15 @@ terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3: terser "^5.7.2" terser@^4.6.3: - version "4.8.0" - resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: +terser@^5.10.0, terser@^5.3.4: version "5.14.1" resolved "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== @@ -7896,6 +7916,16 @@ terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.7.2: + version "5.14.2" + resolved "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -8211,6 +8241,14 @@ untildify@^2.0.0: dependencies: os-homedir "^1.0.0" +update-browserslist-db@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -8315,7 +8353,7 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -watchpack@^2.2.0, watchpack@^2.3.1: +watchpack@^2.2.0, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -8405,20 +8443,20 @@ webpack-virtual-modules@^0.4.1: integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== webpack@4, "webpack@>=4.43.0 <6.0.0", webpack@^5.73.0, webpack@^5.9.0: - version "5.73.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== + version "5.74.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" + acorn "^8.7.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" + enhanced-resolve "^5.10.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -8431,7 +8469,7 @@ webpack@4, "webpack@>=4.43.0 <6.0.0", webpack@^5.73.0, webpack@^5.9.0: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + watchpack "^2.4.0" webpack-sources "^3.2.3" whatwg-url@^5.0.0: diff --git a/yarn.lock b/yarn.lock index cd607fcc68..a1e5c018aa 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" @@ -391,7 +399,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.0.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== @@ -405,7 +413,7 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4": version "7.16.8" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== @@ -415,7 +423,12 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== -"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5": +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0": version "7.16.12" resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== @@ -457,6 +470,27 @@ json5 "^2.1.2" semver "^6.3.0" +"@babel/core@^7.18.5": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + "@babel/generator@^7.14.0", "@babel/generator@^7.16.8", "@babel/generator@^7.7.2": version "7.16.8" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" @@ -475,6 +509,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -482,13 +525,20 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": version "7.16.7" @@ -510,7 +560,17 @@ browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.7": version "7.16.10" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== @@ -523,6 +583,19 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" +"@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" + integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" @@ -531,6 +604,14 @@ "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" @@ -552,12 +633,17 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== +"@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" "@babel/helper-function-name@^7.16.7": version "7.16.7" @@ -568,6 +654,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -582,6 +676,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-member-expression-to-functions@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" @@ -589,6 +690,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -596,6 +704,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-transforms@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" @@ -624,6 +739,20 @@ "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -631,19 +760,32 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== +"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/helper-replace-supers@^7.16.7": version "7.16.7" @@ -656,6 +798,17 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-simple-access@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" @@ -670,6 +823,13 @@ dependencies: "@babel/types" "^7.17.0" +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -677,6 +837,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + dependencies: + "@babel/types" "^7.18.9" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -684,6 +851,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" @@ -694,15 +868,20 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz#ae1feddc6ebbaa2fd79346b77821c3bd73a39646" + integrity sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ== dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/helpers@^7.16.7": version "7.16.7" @@ -722,6 +901,15 @@ "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/highlight@^7.0.0": version "7.16.10" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -745,32 +933,38 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" +"@babel/parser@^7.18.6", "@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + +"@babel/plugin-proposal-async-generator-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.7": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== @@ -778,48 +972,56 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" - integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== @@ -827,15 +1029,23 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": +"@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== @@ -846,15 +1056,26 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.7": +"@babel/plugin-proposal-optional-chaining@^7.13.12": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== @@ -863,25 +1084,42 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== @@ -938,6 +1176,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -959,6 +1204,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -1022,37 +1274,65 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.16.7": +"@babel/plugin-syntax-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.16.7": +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.16.7": +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.16.7": +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-classes@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== @@ -1066,21 +1346,57 @@ "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.16.7": +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-dotall-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== @@ -1088,20 +1404,20 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.16.7": version "7.16.7" @@ -1111,14 +1427,21 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-flow" "^7.16.7" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.16.7": +"@babel/plugin-transform-for-of@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.16.7": +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== @@ -1127,30 +1450,53 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.16.7": +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.16.7": +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.16.8": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8": version "7.16.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== @@ -1160,40 +1506,51 @@ "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.16.7": +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== @@ -1201,6 +1558,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" @@ -1208,35 +1573,56 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.16.7": +"@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-constant-elements@^7.14.5": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" - integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.7": +"@babel/plugin-transform-react-constant-elements@^7.17.12": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz#ff6aeedd38f57ba6b41dcf824fcc8bcedb3e783f" + integrity sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-react-display-name@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.16.7": +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== @@ -1247,36 +1633,55 @@ "@babel/plugin-syntax-jsx" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz#2721e96d31df96e3b7ad48ff446995d26bc028ff" + integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + regenerator-transform "^0.15.0" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.16.7": +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.16.7": +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== @@ -1284,26 +1689,41 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.16.7": +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.16.7": version "7.16.8" @@ -1314,52 +1734,62 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript" "^7.16.7" -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== +"@babel/plugin-transform-typescript@^7.18.6": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz#303feb7a920e650f2213ef37b36bbf327e6fa5a0" + integrity sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-typescript" "^7.18.6" -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== +"@babel/plugin-transform-unicode-escapes@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.15.6": - version "7.16.11" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.18.2": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1369,44 +1799,44 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + "@babel/types" "^7.18.9" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-flow@^7.13.13": @@ -1429,19 +1859,19 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.14.5": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== +"@babel/preset-react@^7.17.12": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.13.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== @@ -1450,6 +1880,15 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" +"@babel/preset-typescript@^7.17.12": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/register@^7.13.16": version "7.16.9" resolved "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz#fcfb23cfdd9ad95c9771e58183de83b513857806" @@ -1476,7 +1915,14 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6": +"@babel/runtime@^7.10.4", "@babel/runtime@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== @@ -1492,6 +1938,15 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/template@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": version "7.16.10" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" @@ -1524,7 +1979,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.16.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== @@ -1540,29 +2011,60 @@ "@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== +"@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== dependencies: - "@backstage/catalog-model" "^1.0.3" - "@backstage/errors" "^1.0.0" - cross-fetch "^3.1.5" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" -"@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== +"@backstage/core-components@^0.10.0": + version "0.10.0" + resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.10.0.tgz#d7f802eee82c49677f5d9b63d8c33b7405096caa" + integrity sha512-aG41uf05Jrq44nv8i9WyzRGMEKmQmM1n0MRKz4YUhBksFexXMd+pPST7D9aSFivNm/92o7obPLjcKfx2QYbJqg== 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" + "@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" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@react-hookz/web" "^15.0.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" lodash "^4.17.21" - uuid "^8.0.0" + pluralize "^8.0.0" + prop-types "^15.7.2" + qs "^6.9.4" + rc-progress "3.4.0" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-markdown "^8.0.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.19.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.6" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.8.15" + zod "^3.11.6" -"@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,10 +2109,10 @@ 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== +"@backstage/core-plugin-api@^1.0.0", "@backstage/core-plugin-api@^1.0.3", "@backstage/core-plugin-api@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-1.0.4.tgz#0dbe80be1d298273df0299ef69baa18522d9a808" + integrity sha512-fMMpjqW2RjwclnHUJsSyPCTguplflQYEWv7wsk7IoanEkWx39pensi8OsdIBawXrOixXEnI47dgxtVMOQUxOKA== dependencies: "@backstage/config" "^1.0.1" "@backstage/types" "^1.0.0" @@ -1620,67 +2122,50 @@ 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== + version "1.1.2" + resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-1.1.2.tgz#001a736f5ce222bf770a26c2c15b42705012e495" + integrity sha512-5MA9cuIDRviQ2Qi9slbHE2i2tBnIcs4JdRukc3sTw7zarcmYaVkDI7N2pQiBkVxATKwXoY8gDuEQD8VYr62cnw== 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" + "@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" 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== +"@backstage/integration@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@backstage/integration/-/integration-1.2.2.tgz#f0a9cb6ae31444832505d9f57dfa3f921fb0c6c0" + integrity sha512-MIttnW6xEIun94muo0nmJ3hK9ks9IgUvBsYGNwfxsKpWBv3g3zZ4cU0pXpUdtvzhWOHw7w3HQrSPEVmm6MSqbA== dependencies: "@backstage/config" "^1.0.1" - "@backstage/errors" "^1.0.0" - "@octokit/auth-app" "^3.4.0" - "@octokit/rest" "^18.5.3" + "@backstage/errors" "^1.1.0" + "@octokit/auth-app" "^4.0.0" + "@octokit/rest" "^19.0.3" cross-fetch "^3.1.5" - git-url-parse "^11.6.0" + git-url-parse "^12.0.0" lodash "^4.17.21" - luxon "^2.0.2" + luxon "^3.0.0" -"@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== +"@backstage/plugin-catalog-react@^1.0.0", "@backstage/plugin-catalog-react@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.1.2.tgz#253a99d9ced5d751f9d1fb3d278511d754aaed4e" + integrity sha512-4O9TotC4aWuLA8gFcgvq/HeKXA80LUZ98WTdIqSA6iFjzh1BZbD/nvaG7Hw7X8m5C/Z7Ck4PM+ocB4XxxlVAZw== 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/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" @@ -1692,21 +2177,21 @@ qs "^6.9.4" react-router "6.0.0-beta.0" react-use "^17.2.4" - yaml "^1.10.0" + yaml "^2.0.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== +"@backstage/plugin-home@^0.4.19", "@backstage/plugin-home@^0.4.23": + version "0.4.23" + resolved "https://registry.npmjs.org/@backstage/plugin-home/-/plugin-home-0.4.23.tgz#5b6a105615bdd63292470ca3906920d8fc810cc1" + integrity sha512-LrNc88Px2HjjVXe5VUBU3TuayJCibiju8GoEDerVk4aL9IW8pom0MMVBGj6qB7NvWOoOUSL19GmSA1ysZ5NN/g== dependencies: - "@backstage/catalog-model" "^1.0.3" + "@backstage/catalog-model" "^1.1.0" "@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" + "@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" @@ -1714,49 +2199,30 @@ 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== +"@backstage/plugin-permission-react@^0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.3.tgz#9d844e178aa01b838e80ce3a4716211f79a3dec8" + integrity sha512-ZyvZ+39fw0WBFbgWYgkbfITCm9vz2onf5FAYAhzSpO3uXarKm8FXtioV93/VkOcA6uJVzkU8AvFjKW2Chd1cfA== 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" + "@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" 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== +"@backstage/plugin-stack-overflow@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@backstage/plugin-stack-overflow/-/plugin-stack-overflow-0.1.3.tgz#6a345f02b56443fb10303176882a6b32e83a6fdd" + integrity sha512-Oy1YNnfZB6MUVOgH5zd28yyCMKlU78aZQS1RNX34Plpf6xd+wb0Ihqhno3B0+Slp1EIAHpQBQAsGnZWPIToDhg== 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" + "@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" @@ -1765,13 +2231,6 @@ 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" @@ -1787,16 +2246,16 @@ resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f" integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w== -"@changesets/apply-release-plan@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.0.1.tgz#7d7b13d4dc1f03e287bc563e029ed0bf955332a9" - integrity sha512-KGtai19+Uo7k8uco9m+hIPGoet9E6eZq15RIeHoivvgwwI66AC6ievbUO5h0NqGlZjBWnYJQNkuT66kvBYzxsA== +"@changesets/apply-release-plan@^6.0.3": + version "6.0.3" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.0.3.tgz#cd1113e57ac58d98ea9a52f2d39304c2d398a9dd" + integrity sha512-/3JKqtDefs2YSEQI6JQo43/MKTLfhPdrW/BFmqnRpW8UmPB+YXjjQgfjR/2KOaObLOkoixcL3WCK4wNkn/Krmw== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/config" "^2.0.1" + "@changesets/config" "^2.1.0" "@changesets/get-version-range-type" "^0.3.2" - "@changesets/git" "^1.3.2" - "@changesets/types" "^5.0.0" + "@changesets/git" "^1.4.1" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" detect-indent "^6.0.0" fs-extra "^7.0.1" @@ -1806,44 +2265,44 @@ resolve-from "^5.0.0" semver "^5.4.1" -"@changesets/assemble-release-plan@^5.1.3": - version "5.1.3" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.3.tgz#b415c5db64e5a30c53aed8c1adc5ab4c4aaad283" - integrity sha512-I+TTkUoqvxBEuDLoJfJYKDXIJ+nyiTbVJ8KGhpXEsLq4N/ms/AStSbouJwF2d/p3cB+RCPr5+gXh31GSN4kA7w== +"@changesets/assemble-release-plan@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.0.tgz#35158dc9b496a4c108936ae8ad776ef855795ff6" + integrity sha512-ewY24PEbSec2eKX0+KM7eyENA2hUUp6s4LF9p/iBxTtc+TX2Xbx5rZnlLKZkc8tpuQ3PZbyjLFXWhd1PP6SjCg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.2" - "@changesets/types" "^5.0.0" + "@changesets/get-dependents-graph" "^1.3.3" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" semver "^5.4.1" -"@changesets/changelog-git@^0.1.11": - version "0.1.11" - resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.11.tgz#80eb45d3562aba2164f25ccc31ac97b9dcd1ded3" - integrity sha512-sWJvAm+raRPeES9usNpZRkooeEB93lOpUN0Lmjz5vhVAb7XGIZrHEJ93155bpE1S0c4oJ5Di9ZWgzIwqhWP/Wg== +"@changesets/changelog-git@^0.1.12": + version "0.1.12" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.12.tgz#5393f74ce9591c25d6a632c20184e92ae343db0d" + integrity sha512-Xv2CPjTBmwjl8l4ZyQ3xrsXZMq8WafPUpEonDpTmcb24XY8keVzt7ZSCJuDz035EiqrjmDKDhODoQ6XiHudlig== dependencies: - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" "@changesets/cli@^2.14.0": - 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== + version "2.24.1" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.24.1.tgz#cb4c13c7712a3cb62fa9199cdda04567faf3d3b2" + integrity sha512-7Lz1inqGQjBrXgnXlENtzQ7EmO/9c+09d9oi8XoK4ARqlJe8GpafjqKRobcjcA/TTI7Fn2+cke4CrXFZfVF8Rw== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/apply-release-plan" "^6.0.1" - "@changesets/assemble-release-plan" "^5.1.3" - "@changesets/changelog-git" "^0.1.11" - "@changesets/config" "^2.0.1" + "@changesets/apply-release-plan" "^6.0.3" + "@changesets/assemble-release-plan" "^5.2.0" + "@changesets/changelog-git" "^0.1.12" + "@changesets/config" "^2.1.0" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.2" - "@changesets/get-release-plan" "^3.0.10" - "@changesets/git" "^1.3.2" + "@changesets/get-dependents-graph" "^1.3.3" + "@changesets/get-release-plan" "^3.0.12" + "@changesets/git" "^1.4.1" "@changesets/logger" "^0.0.5" - "@changesets/pre" "^1.0.11" - "@changesets/read" "^0.5.5" - "@changesets/types" "^5.0.0" - "@changesets/write" "^0.1.8" + "@changesets/pre" "^1.0.12" + "@changesets/read" "^0.5.7" + "@changesets/types" "^5.1.0" + "@changesets/write" "^0.1.9" "@manypkg/get-packages" "^1.1.3" "@types/is-ci" "^3.0.0" "@types/semver" "^6.0.0" @@ -1864,15 +2323,15 @@ term-size "^2.1.0" tty-table "^4.1.5" -"@changesets/config@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@changesets/config/-/config-2.0.1.tgz#9c71f01032f8b12237a18edeac2a39e6142e8a50" - integrity sha512-rJaQWqsjM54T7bDiCoMDcgOuY2HzyovvRs68C//C+tYgbHyjs00JcNVcScjlV47hATrNG1AI8qTD7V9bcO/1cg== +"@changesets/config@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@changesets/config/-/config-2.1.0.tgz#bfb663a338fc86e9ea2cb471089aa6dd8dfd7c3d" + integrity sha512-43potf+DwYHmH7EY19vxtCq6fqj7UUIrZ4DTwM3pVBqCKxFIytm7GPy7wNAsH06UvMw7NRuOu4QK5HN02GsIrw== dependencies: "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.2" + "@changesets/get-dependents-graph" "^1.3.3" "@changesets/logger" "^0.0.5" - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" micromatch "^4.0.2" @@ -1884,28 +2343,28 @@ dependencies: extendable-error "^0.1.5" -"@changesets/get-dependents-graph@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.2.tgz#f3ec7ce75f4afb6e3e4b6a87fde065f552c85998" - integrity sha512-tsqA6qZRB86SQuApSoDvI8yEWdyIlo/WLI4NUEdhhxLMJ0dapdeT6rUZRgSZzK1X2nv5YwR0MxQBbDAiDibKrg== +"@changesets/get-dependents-graph@^1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.3.tgz#9b8011d9993979a1f039ee6ce70793c81f780fea" + integrity sha512-h4fHEIt6X+zbxdcznt1e8QD7xgsXRAXd2qzLlyxoRDFSa6SxJrDAUyh7ZUNdhjBU4Byvp4+6acVWVgzmTy4UNQ== dependencies: - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" chalk "^2.1.0" fs-extra "^7.0.1" semver "^5.4.1" -"@changesets/get-release-plan@^3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.10.tgz#badbea8c113c976486d2eebaa66126a7ddd7ff0c" - integrity sha512-QeKHeo+mX1baRy3OIHQePMPebPFymq/ZxS6Bk3Y3FXiU+pXVnjrfqARj1E4xQT5c+48u6ISqJ8tW5f3EZ1/hng== +"@changesets/get-release-plan@^3.0.12": + version "3.0.12" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.12.tgz#15038a553c7ba9aa764f69cef4705bcfb1be2fdc" + integrity sha512-TlpEdpxV5ZQmNeHoD6KNKAc01wjRrcu9/CQqzmO4qAlX7ARA4pIuAxd8QZ1AQXv/l4qhHox7SUYH3VLHfarv5w== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/assemble-release-plan" "^5.1.3" - "@changesets/config" "^2.0.1" - "@changesets/pre" "^1.0.11" - "@changesets/read" "^0.5.5" - "@changesets/types" "^5.0.0" + "@changesets/assemble-release-plan" "^5.2.0" + "@changesets/config" "^2.1.0" + "@changesets/pre" "^1.0.12" + "@changesets/read" "^0.5.7" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" "@changesets/get-version-range-type@^0.3.2": @@ -1913,14 +2372,14 @@ resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== -"@changesets/git@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.2.tgz#336051d9a6d965806b1bc473559a9a2cc70773a6" - integrity sha512-p5UL+urAg0Nnpt70DLiBe2iSsMcDubTo9fTOD/61krmcJ466MGh71OHwdAwu1xG5+NKzeysdy1joRTg8CXcEXA== +"@changesets/git@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@changesets/git/-/git-1.4.1.tgz#3f30330d94e8bcb45c4a221f34897a29cc72cd05" + integrity sha512-GWwRXEqBsQ3nEYcyvY/u2xUK86EKAevSoKV/IhELoZ13caZ1A1TSak/71vyKILtzuLnFPk5mepP5HjBxr7lZ9Q== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" is-subdir "^1.1.1" spawndamnit "^2.0.0" @@ -1932,35 +2391,35 @@ dependencies: chalk "^2.1.0" -"@changesets/parse@^0.3.13": - version "0.3.13" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.13.tgz#82788c1fc18da4750b07357a7a06142d0d975aa1" - integrity sha512-wh9Ifa0dungY6d2nMz6XxF6FZ/1I7j+mEgPAqrIyKS64nifTh1Ua82qKKMMK05CL7i4wiB2NYc3SfnnCX3RVeA== +"@changesets/parse@^0.3.14": + version "0.3.14" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.14.tgz#97321604206db2572c17a12ed37671d9ee6d5e14" + integrity sha512-SWnNVyC9vz61ueTbuxvA6b4HXcSx2iaWr2VEa37lPg1Vw+cEyQp7lOB219P7uow1xFfdtIEEsxbzXnqLAAaY8w== dependencies: - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" js-yaml "^3.13.1" -"@changesets/pre@^1.0.11": - version "1.0.11" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.11.tgz#46a56790fdceabd03407559bbf91340c8e83fb6a" - integrity sha512-CXZnt4SV9waaC9cPLm7818+SxvLKIDHUxaiTXnJYDp1c56xIexx1BNfC1yMuOdzO2a3rAIcZua5Odxr3dwSKfg== +"@changesets/pre@^1.0.12": + version "1.0.12" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.12.tgz#1eaeef1a264b32c24d85dc15cf5445c1aa8b87c6" + integrity sha512-RFzWYBZx56MtgMesXjxx7ymyI829/rcIw/41hvz3VJPnY8mDscN7RJyYu7Xm7vts2Fcd+SRcO0T/Ws3I1/6J7g== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" -"@changesets/read@^0.5.5": - version "0.5.5" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.5.tgz#9ed90ef3e9f1ba3436ba5580201854a3f4163058" - integrity sha512-bzonrPWc29Tsjvgh+8CqJ0apQOwWim0zheeD4ZK44ApSa/GudnZJTODtA3yNOOuQzeZmL0NUebVoHIurtIkA7w== +"@changesets/read@^0.5.7": + version "0.5.7" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.7.tgz#ad2454ba8e2dfceb1230102aacffcbbe4d3d4291" + integrity sha512-Iteg0ccTPpkJ+qFzY97k7qqdVE5Kz30TqPo9GibpBk2g8tcLFUqf+Qd0iXPLcyhUZpPL1U6Hia1gINHNKIKx4g== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/git" "^1.3.2" + "@changesets/git" "^1.4.1" "@changesets/logger" "^0.0.5" - "@changesets/parse" "^0.3.13" - "@changesets/types" "^5.0.0" + "@changesets/parse" "^0.3.14" + "@changesets/types" "^5.1.0" chalk "^2.1.0" fs-extra "^7.0.1" p-filter "^2.1.0" @@ -1970,18 +2429,18 @@ resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== -"@changesets/types@^5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@changesets/types/-/types-5.0.0.tgz#d5eb52d074bc0358ce47d54bca54370b907812a0" - integrity sha512-IT1kBLSbAgTS4WtpU6P5ko054hq12vk4tgeIFRVE7Vnm4a/wgbNvBalgiKP0MjEXbCkZbItiGQHkCGxYWR55sA== +"@changesets/types@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-5.1.0.tgz#e0733b69ddc3efb68524d374d3c44f53a543c8d5" + integrity sha512-uUByGATZCdaPkaO9JkBsgGDjEvHyY2Sb0e/J23+cwxBi5h0fxpLF/HObggO/Fw8T2nxK6zDfJbPsdQt5RwYFJA== -"@changesets/write@^0.1.8": - version "0.1.8" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.8.tgz#feed408f644c496bc52afc4dd1353670b4152ecb" - integrity sha512-oIHeFVMuP6jf0TPnKPpaFpvvAf3JBc+s2pmVChbeEgQTBTALoF51Z9kqxQfG4XONZPHZnqkmy564c7qohhhhTQ== +"@changesets/write@^0.1.9": + version "0.1.9" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.9.tgz#ac9315d5985f83b251820b8a046155c14a9d21f4" + integrity sha512-E90ZrsrfJVOOQaP3Mm5Xd7uDwBAqq3z5paVEavTHKA8wxi7NAL8CmjgbGxSFuiP7ubnJA2BuHlrdE4z86voGOg== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/types" "^5.0.0" + "@changesets/types" "^5.1.0" fs-extra "^7.0.1" human-id "^1.0.2" prettier "^1.19.1" @@ -2007,9 +2466,9 @@ "@lezer/common" "^1.0.0" "@codemirror/language@^6.0.0": - version "6.2.0" - resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.2.0.tgz#f8d103927bb61346e93781b1ca7d3f4ac3c9280b" - integrity sha512-tabB0Ef/BflwoEmTB4a//WZ9P90UQyne9qWB9YFsmeS4bnEqSys7UpGk/da1URMXhyfuzWCwp+AQNMhvu8SfnA== + version "6.2.1" + resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.2.1.tgz#cb10cd785a76e50ecd2fe2dc59ff66af8a41b87a" + integrity sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" @@ -2059,9 +2518,9 @@ "@lezer/highlight" "^1.0.0" "@codemirror/view@^6.0.0": - version "6.0.3" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.0.3.tgz#c0f6cf5c66d76cbe64227717708a714338ac76a4" - integrity sha512-1gDBymhbx2DZzwnR/rNUu1LiQqjxBJtFiB+4uLR6tHQ6vKhTIwUsP5uZUQ7SM7JxVx3UihMynnTqjcsC+mczZg== + version "6.1.1" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.1.1.tgz#a9d085128263998b389682b11e75eb157a11011c" + integrity sha512-ZBLsphk+Tbqxv7Z1vZ+rky7QbHV/ILoCN4rtdcboBmSbkDmVwsU0wmfqTGZyrOw5ulBPu2aE8esQf6cIUZbWqQ== dependencies: "@codemirror/state" "^6.0.0" style-mod "^4.0.0" @@ -2345,10 +2804,10 @@ teeny-request "^8.0.0" uuid "^8.0.0" -"@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== +"@graphiql/react@^0.6.0": + version "0.6.0" + resolved "https://registry.npmjs.org/@graphiql/react/-/react-0.6.0.tgz#5def1c8f5f5ef7e65f6cf97c47ecc6bfc9fbff38" + integrity sha512-eC4K2Bzrih+NMOXcOGXxTcqJz9Hcowp/Hx9TSOWUczSifI309kVhBEuHVa/Fnqqw04WyvL6Wvn92gUlRak51Qg== dependencies: "@graphiql/toolkit" "^0.6.0" codemirror "^5.65.3" @@ -2368,12 +2827,12 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.8.1" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.8.1.tgz#8e8f70417f3a0e87f266953c41c6424c6e76b473" - integrity sha512-o+Za1483WhnbMA5G4JJq72EeqXROsdEiDTfUTxtX1iPPebv+VMekTFfHnBCUXpes0XTeZViXTd16AX6cmtUF4Q== + version "2.9.1" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.9.1.tgz#f3a0edd462cbefb69f9db7789b142a696a2930b4" + integrity sha512-RyGrJTKySi5irJjdgg/9GTnFSCJtKh1YGD9idh2CIsEbkbUx3M7aBk4A+W7Q1afLmC16l59KSXodG8Bqi2eJmg== dependencies: "@graphql-codegen/core" "2.6.0" - "@graphql-codegen/plugin-helpers" "^2.5.0" + "@graphql-codegen/plugin-helpers" "^2.6.0" "@graphql-tools/apollo-engine-loader" "^7.3.1" "@graphql-tools/code-file-loader" "^7.3.0" "@graphql-tools/git-loader" "^7.2.0" @@ -2415,12 +2874,12 @@ tslib "~2.4.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": - version "2.4.1" - resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.4.1.tgz#b9c42ec3667d9f76a858563aad03fe19ab826ba6" - integrity sha512-+jNlVSCBJTT5yqBuzhX8bL1FNCWrD2XBE77YT+C+88ukqjlB+g5jaOXfXpIf1udrjJvNydQdtQ25LBUejdffgQ== + version "2.4.2" + resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.4.2.tgz#db03352ba6525208246d2d8f4be6ee4b6e41f527" + integrity sha512-J0uHHuRIpV9lExzga5kZjbMXIdtfuve92lr1vMYhJE4ULEo4BatlcNpvx2v+yVywV22I62HFcbEMFGvxTqHZaw== dependencies: - "@graphql-codegen/plugin-helpers" "^2.5.0" - "@graphql-codegen/visitor-plugin-common" "2.11.1" + "@graphql-codegen/plugin-helpers" "^2.6.0" + "@graphql-codegen/visitor-plugin-common" "2.12.0" "@graphql-tools/utils" "^8.8.0" change-case-all "1.0.14" parse-filepath "^1.0.2" @@ -2438,6 +2897,18 @@ lodash "~4.17.0" tslib "~2.4.0" +"@graphql-codegen/plugin-helpers@^2.6.0": + version "2.6.0" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.6.0.tgz#ae7005e6a2dcb0095ae350970c41606906048a27" + integrity sha512-z8uw6GdUvtKyt5YSijtj1yRqI0A2lBWdGIgTjgXaAKqSC+InlVBy+89859LlKNMrO7somdt44cbMys8r4Hbqeg== + dependencies: + "@graphql-tools/utils" "^8.8.0" + change-case-all "1.0.14" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.4.0" + "@graphql-codegen/schema-ast@^2.5.0": version "2.5.0" resolved "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.0.tgz#1b33a17924f0dd4c78d4f2c9dfce215d0bdd29ae" @@ -2448,34 +2919,34 @@ tslib "~2.4.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.7.1" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.7.1.tgz#2c0aeb8afbb5842c9d4145a1dbba8600b142c148" - integrity sha512-vFq4tn7werBF8LEk33aVRtmT8B4pOEI/59Iy7OfxcRtZd+Pn3g8xKTezI2STyBj3ZA8nf7j8vX9Dh9BgoxmV3g== + version "2.7.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.7.2.tgz#c5475400e505b145e956f6695944b00c77d341e0" + integrity sha512-Yo0ab37mG438z8xcdtApDyTECqfdH2CeamKTjTQiOxeUBCWZt0MgIjt6jIz2ZTQJVsL7AO5aFjPDoS+00dkLQA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.5.0" - "@graphql-codegen/typescript" "^2.7.1" - "@graphql-codegen/visitor-plugin-common" "2.11.1" + "@graphql-codegen/plugin-helpers" "^2.6.0" + "@graphql-codegen/typescript" "^2.7.2" + "@graphql-codegen/visitor-plugin-common" "2.12.0" "@graphql-tools/utils" "^8.8.0" auto-bind "~4.0.0" tslib "~2.4.0" -"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.7.1": - version "2.7.1" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.7.1.tgz#e237dd8829842282245b79ce7ea024aaa3c39afb" - integrity sha512-qF4SBMgBnLcegba2s9+zC3NwgRhU0Kv+eS8kl9G5ldEHx9Bpu2tft+lk6fjqqhExDzJT+MEOU3Ecog3BzL2R1g== +"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.7.2": + version "2.7.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.7.2.tgz#ad47ad1abf8e49f455a47cb71d2d9fd149d7846d" + integrity sha512-lFqvLgw4oAChA9+ifC2K7Ie+mE+XvHcZqwXsm45bpF7jbmqfgjS0gvQNfu2egi6u4hdg+xL+olNxwnyhayrikw== dependencies: - "@graphql-codegen/plugin-helpers" "^2.5.0" + "@graphql-codegen/plugin-helpers" "^2.6.0" "@graphql-codegen/schema-ast" "^2.5.0" - "@graphql-codegen/visitor-plugin-common" "2.11.1" + "@graphql-codegen/visitor-plugin-common" "2.12.0" auto-bind "~4.0.0" tslib "~2.4.0" -"@graphql-codegen/visitor-plugin-common@2.11.1": - version "2.11.1" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.11.1.tgz#2653e25a8888767a6422a204441083299c3a83a4" - integrity sha512-AlrtGWKn2o89SPna75ATEHYAu95MUMucgBqLgcRvK9n/PHhVAbkDrNCH5pL03fE0HLOup3GpjX8DcnFBMU46IA== +"@graphql-codegen/visitor-plugin-common@2.12.0": + version "2.12.0" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.12.0.tgz#49b055c5c2c5c0890f2226ce9e84bb73dfd83801" + integrity sha512-ULhFgOY05U+dlPsXkPT2wSBaAZMtEuHPL5Q1u8xwBdHWHi/uT4L5zEcBx+If/f6UWrOw7ufjEM0L7XSupe1iCA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.5.0" + "@graphql-codegen/plugin-helpers" "^2.6.0" "@graphql-tools/optimize" "^1.3.0" "@graphql-tools/relay-operation-optimizer" "^6.5.0" "@graphql-tools/utils" "^8.8.0" @@ -3405,11 +3876,33 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": 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/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -3439,6 +3932,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -3450,9 +3951,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" @@ -4366,9 +4867,9 @@ react-is "^16.8.0 || ^17.0.0" "@maxim_mazurok/gapi.client.calendar@^3.0.20220408": - version "3.0.20220708" - resolved "https://registry.npmjs.org/@maxim_mazurok/gapi.client.calendar/-/gapi.client.calendar-3.0.20220708.tgz#b8eb22479a33df5330cb276c8d5fe9d7a88e322c" - integrity sha512-FwIIJy57HH7agFzqUOYtGWbCedw2MzGFpfnfWEvhlc/j0RNvlPVK68LagsUVoxqRXw9rflC5P3WZ0uk2VwgOmQ== + version "3.0.20220715" + resolved "https://registry.npmjs.org/@maxim_mazurok/gapi.client.calendar/-/gapi.client.calendar-3.0.20220715.tgz#a187185a8d52f210acd8bef223e3150877e00285" + integrity sha512-ZnjM4PiB4Pu2SGYXYglUK+dv1rOUmaEK6tEMedSAdzdYq0H7HBUsWayzAl8Zuo1CfkiUWZe6j0g25L5e//RhYw== dependencies: "@types/gapi.client" "*" @@ -4460,6 +4961,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" @@ -4811,22 +5324,6 @@ "@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" @@ -4843,19 +5340,6 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.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" @@ -4889,18 +5373,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@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.0.0.tgz#7fe448bb06a4c55102098dd7105670e723d2f7ec" @@ -5157,7 +5629,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== @@ -5241,19 +5713,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.4": + version "6.2.4" + resolved "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.2.4.tgz#fe386d1e4749ff93bb143907b9673eb1e4f01a30" + integrity sha512-MlumL1ClswnrebjNWmUFiHjEqpRl2T3Eh6j6R9mP2SNK7SjYw4tXGeCKHOyZiNpLjc5/1+P39BxwLN28zNn8iQ== "@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.9" + resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.0.9.tgz#0b11925cf34abb62293af55273ed2c63d7e11e3a" + integrity sha512-KcUWo8HnZ7QOjYGUNYkNpd7TSj8Ck0Q1FzEeMyiMQg52K2sv/Lc/rfW2iJQLxpSrDhXfFTVQ75S10YjWdIj4kA== dependencies: "@octokit/request-error" "^3.0.0" "@octokit/webhooks-methods" "^3.0.0" - "@octokit/webhooks-types" "6.2.2" + "@octokit/webhooks-types" "6.2.4" aggregate-error "^3.1.0" "@open-draft/until@^1.0.3": @@ -5543,6 +6015,14 @@ estree-walker "^2.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + "@rushstack/node-core-library@3.45.4": version "3.45.4" resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.45.4.tgz#a5e1246c462940d16a5acc667c1ffe460b514087" @@ -5676,124 +6156,124 @@ dependencies: loader-utils "^1.1.0" -"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" - integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== +"@svgr/babel-plugin-add-jsx-attribute@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz#b9a5d84902be75a05ede92e70b338d28ab63fa74" + integrity sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w== -"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" - integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== +"@svgr/babel-plugin-remove-jsx-attribute@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz#4877995452efc997b36777abe1fde9705ef78e8b" + integrity sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ== -"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" - integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== +"@svgr/babel-plugin-remove-jsx-empty-expression@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz#2d67a0e92904c9be149a5b22d3a3797ce4d7b514" + integrity sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" - integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz#306f5247139c53af70d1778f2719647c747998ee" + integrity sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA== -"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" - integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== +"@svgr/babel-plugin-svg-dynamic-title@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz#6ce26d34cbc93eb81737ef528528907c292e7aa2" + integrity sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA== -"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" - integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== +"@svgr/babel-plugin-svg-em-dimensions@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz#5ade2a724b290873c30529d1d8cd23523856287a" + integrity sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw== -"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" - integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== +"@svgr/babel-plugin-transform-react-native-svg@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz#d654f509d692c3a09dfb475757a44bd9f6ad7ddf" + integrity sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw== -"@svgr/babel-plugin-transform-svg-component@^6.2.0": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" - integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== +"@svgr/babel-plugin-transform-svg-component@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz#21a285dbffdce9567c437ebf0d081bf9210807e6" + integrity sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw== -"@svgr/babel-preset@^6.2.0": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" - integrity sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ== +"@svgr/babel-preset@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.3.1.tgz#8bd1ead79637d395e9362b01dd37cfd59702e152" + integrity sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g== dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" - "@svgr/babel-plugin-transform-svg-component" "^6.2.0" + "@svgr/babel-plugin-add-jsx-attribute" "^6.3.1" + "@svgr/babel-plugin-remove-jsx-attribute" "^6.3.1" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.3.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.3.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.3.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.3.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.3.1" + "@svgr/babel-plugin-transform-svg-component" "^6.3.1" -"@svgr/core@^6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" - integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== +"@svgr/core@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz#752adf49d8d5473b15d76ca741961de093f715bd" + integrity sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA== dependencies: - "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-jsx" "^6.3.1" camelcase "^6.2.0" cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" - integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== +"@svgr/hast-util-to-babel-ast@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz#59614e24d2a4a28010e02089213b3448d905769d" + integrity sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ== dependencies: - "@babel/types" "^7.15.6" - entities "^3.0.1" + "@babel/types" "^7.18.4" + entities "^4.3.0" -"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" - integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== +"@svgr/plugin-jsx@6.3.x", "@svgr/plugin-jsx@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz#de7b2de824296b836d6b874d498377896e367f50" + integrity sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw== dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.2.1" - svg-parser "^2.0.2" + "@babel/core" "^7.18.5" + "@svgr/babel-preset" "^6.3.1" + "@svgr/hast-util-to-babel-ast" "^6.3.1" + svg-parser "^2.0.4" -"@svgr/plugin-svgo@6.2.x", "@svgr/plugin-svgo@^6.2.0": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" - integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== +"@svgr/plugin-svgo@6.3.x", "@svgr/plugin-svgo@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz#3c1ff2efaed10e5c5d35a6cae7bacaedc18b5d4a" + integrity sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw== dependencies: cosmiconfig "^7.0.1" deepmerge "^4.2.2" - svgo "^2.5.0" + svgo "^2.8.0" -"@svgr/rollup@6.2.x": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-6.2.1.tgz#23ac3173d2bd85842ca8858d3435332af1f064ab" - integrity sha512-5X6aMiGL1F5g0TubLY41GJ/Qf0Kz2xtbF37UbRJEHe2Z9CMlGl9Z3fQ8e28vmHrTptmymNRoHssgQ2Ejb1DARQ== +"@svgr/rollup@6.3.x": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-6.3.1.tgz#cf59c39f1f145383dfdeea7068ec18149360668e" + integrity sha512-TXcRT7pwsNU30bXxgooGAZQIXmPy7fxUnN/v5cuCpLiondRtKiV321kh/S/qhcQ6gSs6DvJmNDpbiqPZF66usw== dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-transform-react-constant-elements" "^7.14.5" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.16.0" - "@svgr/core" "^6.2.1" - "@svgr/plugin-jsx" "^6.2.1" - "@svgr/plugin-svgo" "^6.2.0" - rollup-pluginutils "^2.8.2" + "@babel/core" "^7.18.5" + "@babel/plugin-transform-react-constant-elements" "^7.17.12" + "@babel/preset-env" "^7.18.2" + "@babel/preset-react" "^7.17.12" + "@babel/preset-typescript" "^7.17.12" + "@rollup/pluginutils" "^4.2.1" + "@svgr/core" "^6.3.1" + "@svgr/plugin-jsx" "^6.3.1" + "@svgr/plugin-svgo" "^6.3.1" -"@svgr/webpack@6.2.x": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" - integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== +"@svgr/webpack@6.3.x": + version "6.3.1" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.3.1.tgz#001d03236ebb03bf47c0a4b92d5423e05095ebe6" + integrity sha512-eODxwIUShLxSMaRjzJtrj9wg89D75JLczvWg9SaB5W+OtVTkiC1vdGd8+t+pf5fTlBOy4RRXAq7x1E3DUl3D0A== dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-transform-react-constant-elements" "^7.14.5" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.15.0" - "@svgr/core" "^6.2.1" - "@svgr/plugin-jsx" "^6.2.1" - "@svgr/plugin-svgo" "^6.2.0" + "@babel/core" "^7.18.5" + "@babel/plugin-transform-react-constant-elements" "^7.17.12" + "@babel/preset-env" "^7.18.2" + "@babel/preset-react" "^7.17.12" + "@babel/preset-typescript" "^7.17.12" + "@svgr/core" "^6.3.1" + "@svgr/plugin-jsx" "^6.3.1" + "@svgr/plugin-svgo" "^6.3.1" "@szmarczak/http-timer@^4.0.5": version "4.0.5" @@ -5857,9 +6337,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.3.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.3.0.tgz#0a6750b94b40e4739706d41e8efc2ccf64d2aad9" + integrity sha512-P02xtBBa8yMaLhK8CzJCIns8rqwnF6FxhR9zs810flHOBXUYCFjLd8Io1rQrAkQRWEmW2PGdZIEdMxf/KLsqFA== "@tokenizer/token@^0.3.0": version "0.3.0" @@ -6211,14 +6691,14 @@ "@types/d3-time" "^2" "@types/d3-selection@*", "@types/d3-selection@^3.0.1": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.2.tgz#23e48a285b24063630bbe312cc0cfe2276de4a59" - integrity sha512-d29EDd0iUBrRoKhPndhDY6U/PYxOWqgIZwKTooy2UkBfU7TNZNpRho0yLWPxlatQrFWk2mnTu71IZQ4+LRgKlQ== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.3.tgz#57be7da68e7d9c9b29efefd8ea5a9ef1171e42ba" + integrity sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA== "@types/d3-shape@^1": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.5.tgz#c0164c1be1429473016f855871d487f806c4e968" - integrity sha512-aPEax03owTAKynoK8ZkmkZEDZvvT4Y5pWgii4Jp4oQt0gH45j6siDl9gNDVC5kl64XHN2goN9jbYoHK88tFAcA== + version "1.3.8" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" + integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== dependencies: "@types/d3-path" "^1" @@ -6631,10 +7111,15 @@ resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" 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== +"@types/luxon@*": + version "2.4.0" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz#897d3abc23b68d78b69d76a12c21e01eb5adab95" + integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== + +"@types/luxon@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.0.0.tgz#47fb7891e41875fce7018a8bd3d09b204c5621f5" + integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw== "@types/marked@^4.0.0": version "4.0.3" @@ -6746,9 +7231,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.44" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.44.tgz#447e3eecad9d19bd779f4a575f361d34898c0722" - integrity sha512-gwP6+QDgL5TDBIWh1lbYh3EFPU11pa+8xcamcsA3ROkp3A9X+/3Y5cRgq93VPEEE+CGfxlQnqkg1kkWGBgh3fw== + 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" @@ -7241,13 +7726,6 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/unzipper@^0.10.3": - version "0.10.5" - resolved "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.5.tgz#36a963cf025162b4ac31642590cb4192971d633b" - integrity sha512-NrLJb29AdnBARpg9S/4ktfPEisbJ0AvaaAr3j7Q1tg8AgcEUsq2HqbNzvgLRoWyRtjzeLEv7vuL39u1mrNIyNA== - dependencies: - "@types/node" "*" - "@types/uuid@^8.0.0": version "8.3.4" resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" @@ -7320,6 +7798,13 @@ resolved "https://registry.npmjs.org/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.5.tgz#9639020e1fb65120a2f4387db8f1e8b63efdf229" integrity sha512-8NYnGOctzsI4W0ApsP/BIHD/LnxpJ6XaGf2AZmz4EyDYJMxtprN4279dLNI1CPZcwC9H18qYcaFv4bXi0wmokg== +"@types/yauzl@^2.10.0": + version "2.10.0" + resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + "@types/yauzl@^2.9.1": version "2.9.2" resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" @@ -7338,13 +7823,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.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz#cae1967b1e569e6171bbc6bec2afa4e0c8efccfe" + integrity sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ== 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.31.0" + "@typescript-eslint/type-utils" "5.31.0" + "@typescript-eslint/utils" "5.31.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -7365,13 +7850,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.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz#7f42d7dcc68a0a6d80a0f3d9a65063aee7bb8d2c" + integrity sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw== 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.31.0" + "@typescript-eslint/types" "5.31.0" + "@typescript-eslint/typescript-estree" "5.31.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.20.0": @@ -7382,13 +7867,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz#f47a794ba84d9b818ab7f8f44fff55a61016c606" + integrity sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.31.0" + "@typescript-eslint/visitor-keys" "5.31.0" "@typescript-eslint/scope-manager@5.9.0": version "5.9.0" @@ -7398,12 +7883,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz#70a0b7201360b5adbddb0c36080495aa08f6f3d9" + integrity sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w== dependencies: - "@typescript-eslint/utils" "5.30.6" + "@typescript-eslint/utils" "5.31.0" debug "^4.3.4" tsutils "^3.21.0" @@ -7412,10 +7897,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz#7aa389122b64b18e473c1672fb3b8310e5f07a9a" + integrity sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g== "@typescript-eslint/types@5.9.0": version "5.9.0" @@ -7435,13 +7920,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz#eb92970c9d6e3946690d50c346fb9b1d745ee882" + integrity sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.31.0" + "@typescript-eslint/visitor-keys" "5.31.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -7461,15 +7946,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz#e146fa00dca948bfe547d665b2138a2dc1b79acd" + integrity sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg== 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.31.0" + "@typescript-eslint/types" "5.31.0" + "@typescript-eslint/typescript-estree" "5.31.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -7493,12 +7978,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.31.0": + version "5.31.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz#b0eca264df01ce85dceb76aebff3784629258f54" + integrity sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg== dependencies: - "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/types" "5.31.0" eslint-visitor-keys "^3.3.0" "@typescript-eslint/visitor-keys@5.9.0": @@ -7679,9 +8164,9 @@ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== "@yarnpkg/parsers@^3.0.0-rc.4": - 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== + version "3.0.0-rc.14" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.14.tgz#3ce7fb8f9b7ecdda0531d382909c29140b11d723" + integrity sha512-vLwjxSdmRNF/pPsubkmpkAgRHBbBylRDn13gv2fyTkHjeT2257NBNefjR7Dx5gSy8PM93VZitnmtWCnXEsSvkA== dependencies: js-yaml "^3.10.0" tslib "^1.13.0" @@ -7767,12 +8252,7 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -acorn@^8.4.1, acorn@^8.7.1: +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1: version "8.7.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -8446,9 +8926,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0: - version "2.1174.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1174.0.tgz#3e2acb1ee29229cc5d97015b2d1a18c41e967979" - integrity sha512-t/Cwbdunmoj3WAI+u+hw/kr6mla1sYCn+VncxxIjkACStA47+ZTsfd7cQfpoVMit5KubkHaJ3SHX4/qvmt0Jfg== + version "2.1181.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1181.0.tgz#6ec2997881ae3df76e56d7150fc2992f12ce43dc" + integrity sha512-AAHSknRFAIjXBA/XNAL7gS79agr1LbS0oGimOJqJauGSJfWNaOpDc7z6OLNUQqGa5Joc3maD5QJcSKp1Pm/deQ== dependencies: buffer "4.9.2" events "1.1.1" @@ -8471,10 +8951,10 @@ aws4@^1.11.0, aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -8562,7 +9042,7 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.0: +babel-plugin-polyfill-corejs2@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== @@ -8571,15 +9051,15 @@ babel-plugin-polyfill-corejs2@^0.3.0: "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" - integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== +babel-plugin-polyfill-corejs3@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.20.0" + core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.0: +babel-plugin-polyfill-regenerator@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== @@ -8683,7 +9163,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= @@ -8788,9 +9268,9 @@ better-path-resolve@1.0.0: is-windows "^1.0.0" better-sqlite3@^7.5.0: - version "7.6.1" - resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.1.tgz#bffc5515552ab950668f5e9f6c6d77463ab9f5e5" - integrity sha512-kI2NV1qjKyO2I7iDKgrsbpYR7CxNVrObiGVxbrwYJRy6Sjn/4N6YwZmi0LP2kWZswSqeJlnnEThoYJ7eKCmqAg== + 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" @@ -8805,7 +9285,7 @@ bfj@^7.0.2: hoopy "^0.1.4" tryer "^1.0.1" -big-integer@^1.6.16, big-integer@^1.6.17: +big-integer@^1.6.16: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== @@ -8847,14 +9327,6 @@ binary-search@^1.3.5: resolved "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz#e32426016a0c5092f0f3598836a1c7da3560565c" integrity sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA== -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - binaryextensions@^4.15.0, binaryextensions@^4.16.0: version "4.18.0" resolved "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz#22aeada2d14de062c60e8ca59a504a5636a76ceb" @@ -8896,11 +9368,6 @@ bluebird@3.7.2, bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= - bmp-js@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" @@ -9103,7 +9570,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1: version "4.19.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== @@ -9114,6 +9581,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4 node-releases "^2.0.1" picocolors "^1.0.0" +browserslist@^4.20.2, browserslist@^4.21.2: + version "4.21.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" + integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== + dependencies: + caniuse-lite "^1.0.30001366" + electron-to-chromium "^1.4.188" + node-releases "^2.0.6" + update-browserslist-db "^1.0.4" + bser@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -9142,14 +9619,9 @@ buffer-equal@0.0.1: integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-writer@2.0.0: version "2.0.0" @@ -9186,11 +9658,6 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= - builtin-modules@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" @@ -9411,6 +9878,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz#f1b1efd1171ee1170d52709a7252632dacbd7c77" integrity sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ== +caniuse-lite@^1.0.30001366: + version "1.0.30001367" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz#2b97fe472e8fa29c78c5970615d7cd2ee414108a" + integrity sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw== + canvas@^2.6.1: version "2.9.3" resolved "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz#8723c4f970442d4cdcedba5221579f9660a58bdb" @@ -9439,13 +9911,6 @@ ccount@^2.0.0: resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25" integrity sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA== -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= - dependencies: - traverse ">=0.3.0 <0.4" - chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -9935,16 +10400,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" @@ -9998,16 +10463,21 @@ command-exists@^1.2.9: resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@*, commander@8.3.0, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@*, commander@^9.1.0, commander@^9.3.0: + version "9.4.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== commander@7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== +commander@8.3.0, commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commander@^2.20.0, commander@^2.20.3, commander@^2.7.1: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -10033,11 +10503,6 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 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== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -10180,9 +10645,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" @@ -10395,12 +10860,12 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" - integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.5" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz#11edce2f1c4f69a96d30ce77c805ce118909cd5b" + integrity sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg== dependencies: - browserslist "^4.19.1" + browserslist "^4.21.2" semver "7.0.0" core-js-pure@^3.20.2, core-js-pure@^3.6.5: @@ -10414,9 +10879,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.24.0" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57" + integrity sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -10860,9 +11325,9 @@ cypress-plugin-snapshots@^1.4.4: unidiff "1.0.2" cypress@^10.0.0: - version "10.3.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-10.3.0.tgz#fae8d32f0822fcfb938e79c7c31ef344794336ae" - integrity sha512-txkQWKzvBVnWdCuKs5Xc08gjpO89W2Dom2wpZgT9zWZT5jXxqPIxqP/NC1YArtkpmp3fN5HW8aDjYBizHLUFvg== + version "10.3.1" + resolved "https://registry.npmjs.org/cypress/-/cypress-10.3.1.tgz#7fab4ef43481c05a9a17ebe9a0ec860e15b95a19" + integrity sha512-As9HrExjAgpgjCnbiQCuPdw5sWKx5HUJcK2EOKziu642akwufr/GUeqL5UnCPYXTyyibvEdWT/pSC2qnGW/e5w== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -11417,6 +11882,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" @@ -11671,9 +12141,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" @@ -11721,13 +12191,6 @@ dset@^3.1.2: resolved "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -11807,6 +12270,11 @@ electron-to-chromium@^1.4.17: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4" integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA== +electron-to-chromium@^1.4.188: + version "1.4.194" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.194.tgz#2f83fcec5067907044a3d502ac7c3efb1fe6430b" + integrity sha512-ola5UH0xAP1oYY0FFUsPvwtucEzCQHucXnT7PQ1zjHJMccZhCDktEugI++JUR3YuIs7Ff7afz+OVEhVAIMhLAQ== + elliptic@^6.0.0: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -11904,10 +12372,10 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" -enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== +enhanced-resolve@^5.10.0: + version "5.10.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -11929,10 +12397,10 @@ entities@^2.0.0, entities@~2.1.0: resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== +entities@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4" + integrity sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg== env-paths@^2.2.0: version "2.2.0" @@ -12054,75 +12522,75 @@ es6-error@^4.1.1: resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -esbuild-android-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" - integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== +esbuild-android-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.50.tgz#a46fc80fa2007690e647680d837483a750a3097f" + integrity sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q== -esbuild-android-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" - integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== +esbuild-android-arm64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.50.tgz#bdda7851fa7f5f770d6ff0ad593a8945d3a0fcdd" + integrity sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ== -esbuild-darwin-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" - integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== +esbuild-darwin-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.50.tgz#f0535435f9760766f30db14a991ee5ca94c022a4" + integrity sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA== -esbuild-darwin-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" - integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== +esbuild-darwin-arm64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.50.tgz#76a41a40e8947a15ae62970e9ed2853883c4b16c" + integrity sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA== -esbuild-freebsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" - integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== +esbuild-freebsd-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.50.tgz#2ed6633c17ed42c20a1bd68e82c4bbc75ea4fb57" + integrity sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA== -esbuild-freebsd-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" - integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== +esbuild-freebsd-arm64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.50.tgz#cb115f4cdafe9cdbe58875ba482fccc54d32aa43" + integrity sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw== -esbuild-linux-32@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" - integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== +esbuild-linux-32@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.50.tgz#fe2b724994dcf1d4e48dc4832ff008ad7d00bcfd" + integrity sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw== -esbuild-linux-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" - integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== +esbuild-linux-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.50.tgz#7851ab5151df9501a2187bd4909c594ad232b623" + integrity sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig== -esbuild-linux-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" - integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== +esbuild-linux-arm64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.50.tgz#76a76afef484a0512f1fbbcc762edd705dee8892" + integrity sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ== -esbuild-linux-arm@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" - integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== +esbuild-linux-arm@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.50.tgz#6d7a8c0712091b0c3a668dd5d8b5c924adbaeb12" + integrity sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg== -esbuild-linux-mips64le@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" - integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== +esbuild-linux-mips64le@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.50.tgz#43426909c1884c5dc6b40765673a08a7ec1d2064" + integrity sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw== -esbuild-linux-ppc64le@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" - integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== +esbuild-linux-ppc64le@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.50.tgz#c754ea3da1dd180c6e9b6b508dc18ce983d92b11" + integrity sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ== -esbuild-linux-riscv64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" - integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== +esbuild-linux-riscv64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.50.tgz#f3b2dd3c4c2b91bf191d3b98a9819c8aa6f5ad7f" + integrity sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg== -esbuild-linux-s390x@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" - integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== +esbuild-linux-s390x@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.50.tgz#3dfbc4578b2a81995caabb79df2b628ea86a5390" + integrity sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA== esbuild-loader@^2.18.0: version "2.19.0" @@ -12136,61 +12604,61 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" - integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== +esbuild-netbsd-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.50.tgz#17dbf51eaa48d983e794b588d195415410ef8c85" + integrity sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg== -esbuild-openbsd-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" - integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== +esbuild-openbsd-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.50.tgz#cf6b1a50c8cf67b0725aaa4bce9773976168c50e" + integrity sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w== -esbuild-sunos-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" - integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== +esbuild-sunos-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.50.tgz#f705ae0dd914c3b45dc43319c4f532216c3d841f" + integrity sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ== -esbuild-windows-32@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" - integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== +esbuild-windows-32@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.50.tgz#6364905a99c1e6c1e2fe7bfccebd958131b1cd6c" + integrity sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw== -esbuild-windows-64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" - integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== +esbuild-windows-64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.50.tgz#56603cb6367e30d14098deb77de6aa18d76dd89b" + integrity sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ== -esbuild-windows-arm64@0.14.49: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" - integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== +esbuild-windows-arm64@0.14.50: + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.50.tgz#e7ddde6a97194051a5a4ac05f4f5900e922a7ea5" + integrity sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ== esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.39: - version "0.14.49" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" - integrity sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw== + version "0.14.50" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.50.tgz#7a665392c8df94bf6e1ae1e999966a5ee62c6cbc" + integrity sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w== optionalDependencies: - esbuild-android-64 "0.14.49" - esbuild-android-arm64 "0.14.49" - esbuild-darwin-64 "0.14.49" - esbuild-darwin-arm64 "0.14.49" - esbuild-freebsd-64 "0.14.49" - esbuild-freebsd-arm64 "0.14.49" - esbuild-linux-32 "0.14.49" - esbuild-linux-64 "0.14.49" - esbuild-linux-arm "0.14.49" - esbuild-linux-arm64 "0.14.49" - esbuild-linux-mips64le "0.14.49" - esbuild-linux-ppc64le "0.14.49" - esbuild-linux-riscv64 "0.14.49" - esbuild-linux-s390x "0.14.49" - esbuild-netbsd-64 "0.14.49" - esbuild-openbsd-64 "0.14.49" - esbuild-sunos-64 "0.14.49" - esbuild-windows-32 "0.14.49" - esbuild-windows-64 "0.14.49" - esbuild-windows-arm64 "0.14.49" + esbuild-android-64 "0.14.50" + esbuild-android-arm64 "0.14.50" + esbuild-darwin-64 "0.14.50" + esbuild-darwin-arm64 "0.14.50" + esbuild-freebsd-64 "0.14.50" + esbuild-freebsd-arm64 "0.14.50" + esbuild-linux-32 "0.14.50" + esbuild-linux-64 "0.14.50" + esbuild-linux-arm "0.14.50" + esbuild-linux-arm64 "0.14.50" + esbuild-linux-mips64le "0.14.50" + esbuild-linux-ppc64le "0.14.50" + esbuild-linux-riscv64 "0.14.50" + esbuild-linux-s390x "0.14.50" + esbuild-netbsd-64 "0.14.50" + esbuild-openbsd-64 "0.14.50" + esbuild-sunos-64 "0.14.50" + esbuild-windows-32 "0.14.50" + esbuild-windows-64 "0.14.50" + esbuild-windows-arm64 "0.14.50" escalade@^3.1.1: version "3.1.1" @@ -12302,27 +12770,27 @@ 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" eslint-plugin-jsx-a11y@^6.5.1: - version "6.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" - integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== + version "6.6.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "@babel/runtime" "^7.18.3" + "@babel/runtime" "^7.18.9" aria-query "^4.2.2" array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.4.2" + axe-core "^4.4.3" axobject-query "^2.2.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.3.1" + jsx-ast-utils "^3.3.2" language-tags "^1.0.5" minimatch "^3.1.2" semver "^6.3.0" @@ -12419,9 +12887,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" @@ -12555,6 +13023,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" @@ -12579,63 +13052,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.74-next.0" 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.5-next.0" + "@backstage/catalog-model" "^1.1.0" + "@backstage/cli" "^0.18.1-next.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.5-next.0" + "@backstage/core-components" "^0.10.1-next.0" + "@backstage/core-plugin-api" "^1.0.5-next.0" + "@backstage/integration-react" "^1.1.3-next.0" + "@backstage/plugin-airbrake" "^0.3.8-next.0" + "@backstage/plugin-apache-airflow" "^0.2.1-next.0" + "@backstage/plugin-api-docs" "^0.8.8-next.0" + "@backstage/plugin-azure-devops" "^0.1.24-next.0" + "@backstage/plugin-badges" "^0.2.32-next.0" + "@backstage/plugin-catalog-common" "^1.0.4" + "@backstage/plugin-catalog-graph" "^0.2.20-next.0" + "@backstage/plugin-catalog-import" "^0.8.11-next.0" + "@backstage/plugin-catalog-react" "^1.1.3-next.0" + "@backstage/plugin-circleci" "^0.3.8-next.0" + "@backstage/plugin-cloudbuild" "^0.3.8-next.0" + "@backstage/plugin-code-coverage" "^0.2.1-next.0" + "@backstage/plugin-cost-insights" "^0.11.30-next.0" + "@backstage/plugin-dynatrace" "^0.1.2-next.0" + "@backstage/plugin-explore" "^0.3.39-next.0" + "@backstage/plugin-gcalendar" "^0.3.4-next.0" + "@backstage/plugin-gcp-projects" "^0.3.27-next.0" + "@backstage/plugin-github-actions" "^0.5.8-next.0" + "@backstage/plugin-gocd" "^0.1.14-next.0" + "@backstage/plugin-graphiql" "^0.2.40-next.0" + "@backstage/plugin-home" "^0.4.24-next.0" + "@backstage/plugin-jenkins" "^0.7.7-next.0" + "@backstage/plugin-kafka" "^0.3.8-next.0" + "@backstage/plugin-kubernetes" "^0.7.1-next.0" + "@backstage/plugin-lighthouse" "^0.3.8-next.0" + "@backstage/plugin-newrelic" "^0.3.26-next.0" + "@backstage/plugin-newrelic-dashboard" "^0.2.1-next.0" + "@backstage/plugin-org" "^0.5.8-next.0" + "@backstage/plugin-pagerduty" "0.5.1-next.0" + "@backstage/plugin-permission-react" "^0.4.4-next.0" + "@backstage/plugin-rollbar" "^0.4.8-next.0" + "@backstage/plugin-scaffolder" "^1.4.1-next.0" + "@backstage/plugin-search" "^1.0.1-next.0" + "@backstage/plugin-search-common" "^1.0.0" + "@backstage/plugin-search-react" "^1.0.1-next.0" + "@backstage/plugin-sentry" "^0.4.1-next.0" + "@backstage/plugin-shortcuts" "^0.3.0-next.0" + "@backstage/plugin-stack-overflow" "^0.1.4-next.0" + "@backstage/plugin-tech-insights" "^0.2.4-next.0" + "@backstage/plugin-tech-radar" "^0.5.15-next.0" + "@backstage/plugin-techdocs" "^1.3.1-next.0" + "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.3-next.0" + "@backstage/plugin-techdocs-react" "^1.0.3-next.0" + "@backstage/plugin-todo" "^0.2.10-next.0" + "@backstage/plugin-user-settings" "^0.4.7-next.0" + "@backstage/theme" "^0.2.16" + "@internal/plugin-catalog-customized" "0.0.1-next.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.57" @@ -13306,9 +13779,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" @@ -13318,6 +13791,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" @@ -13502,16 +13976,6 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -13806,7 +14270,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== @@ -14077,7 +14541,7 @@ got@^11.8.3: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== @@ -14093,11 +14557,11 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12, graphiql@^1.8.8: - version "1.9.13" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.9.13.tgz#f379425b407bad6eec4aa36a2e38d764a2c13b25" - integrity sha512-w/kFnK0N8ooN07vw5dKcDZ4CAmRfkjkTQbSj6LkEigJB/yTZ92r2QA/XROGlff0xn4r6aWfHjRp5AMrND4dLZg== + version "1.10.0" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.10.0.tgz#2f869fe394fca76c7257444f80c5a2661d863ecc" + integrity sha512-OkhTLRzR8gwpePYLlosr0U3i9rPBmHQMHqm7pABjJ7gHfHi3UuokUAJ+tkKfv2cRHkJXB80Fp31ZAcCL6uG2tg== dependencies: - "@graphiql/react" "^0.5.2" + "@graphiql/react" "^0.6.0" "@graphiql/toolkit" "^0.6.0" entities "^2.0.0" graphql-language-service "^5.0.6" @@ -14171,7 +14635,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== @@ -14422,9 +14886,9 @@ headers-polyfill@^3.0.4: integrity sha512-JoLCAdCEab58+2/yEmSnOlficyHFpIl0XJqwu3l+Unkm1gXpFUYsThz6Yha3D6tNhocWkCPfyW0YVIGWFqTi7w== helmet@^5.0.2: - version "5.1.0" - resolved "https://registry.npmjs.org/helmet/-/helmet-5.1.0.tgz#e98a5d4bf89ab8119c856018a3bcc82addadcd47" - integrity sha512-klsunXs8rgNSZoaUrNeuCiWUxyc+wzucnEnFejUg3/A+CaF589k9qepLZZ1Jehnzig7YbD4hEuscGXuBY3fq+g== + version "5.1.1" + resolved "https://registry.npmjs.org/helmet/-/helmet-5.1.1.tgz#609823c5c2e78aea62dd9afc8f544ca409da5e85" + integrity sha512-/yX0oVZBggA9cLJh8aw3PPCfedBnbd7J2aowjzsaWwZh7/UFY0nccn/aHAggIgWUFfnykX8GKd3a1pSbrmlcVQ== hexoid@1.0.0: version "1.0.0" @@ -14912,7 +15376,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -15757,9 +16221,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.18.3" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.18.3.tgz#b2ef91688ac8f4315a8f3ce72f24a76c17bf61ad" - integrity sha512-CVTNt0uU5RQ4g626LxqUyShdoeD15uZppKA0tk7iY/PyikCbRG594a7BksU4JZcOC6RsqUkURdIlFyKhAfdbqg== + version "1.19.1" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.19.1.tgz#99e18db18826b07c40a4c4b32484e917a4c4fd31" + integrity sha512-enp69F9dIWtAAB+aEMV83AVDiOoi7zHTMr1kTP2Bzka/PlX0W6C74W2y9b9UToX65oXvipPzhY5An2+F5BXVQw== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -15835,6 +16299,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" @@ -16637,7 +17106,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.1.3, json5@^2.2.0: +json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -16818,10 +17287,10 @@ jss@~10.8.2: array-includes "^3.1.2" object.assign "^4.1.2" -jsx-ast-utils@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" - integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== +jsx-ast-utils@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" + integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== dependencies: array-includes "^3.1.5" object.assign "^4.1.2" @@ -16941,11 +17410,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" @@ -17156,11 +17625,6 @@ lint-staged@^13.0.0: string-argv "^0.3.1" yaml "^2.1.1" -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= - listr2@^3.8.3: version "3.14.0" resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" @@ -17622,11 +18086,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" @@ -18678,7 +19137,7 @@ mkdirp@0.3.0: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -18766,10 +19225,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" @@ -19062,6 +19547,11 @@ node-releases@^2.0.1: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + nodemon@^2.0.2: version "2.0.19" resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz#cac175f74b9cb8b57e770d47841995eebe4488bd" @@ -19490,9 +19980,9 @@ octokit-plugin-create-pull-request@^3.10.0: "@octokit/types" "^6.8.2" octokit@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/octokit/-/octokit-2.0.3.tgz#7775a8136be69ef4b6e7f474d50d0d967bd3b74a" - integrity sha512-k9YfQ/0vx1vCAhhmx/8LAvevY5eTRCURqqSkxZCdLVvlX12ke4tp6TxFnKo7/ewIQbrWlFd7KpzOyQCNrOlSRQ== + 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.5" "@octokit/core" "^4.0.4" @@ -20991,11 +21481,6 @@ prismjs@^1.27.0, prismjs@~1.27.0: resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -private@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -21249,9 +21734,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== puppeteer@^15.0.0: - version "15.4.0" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-15.4.0.tgz#31f043ee64cc4e1b5cbe99ad900653aab4afb186" - integrity sha512-wxJRbofjaycCaQ9fhABlToJobrjxlABiFi6NvdkOPVJMYFblxDlDTjkg+b6bZYi7xN+lEXn84GBZsA5DYb3wfw== + version "15.4.2" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-15.4.2.tgz#d61756844a9eea91e672ea6d9994aa939a23bdcb" + integrity sha512-RIxzCIU8aJWh3ruc63xcByRYHPYJsXn4VbrrPtVQfMFcfYOnBqUeJ0CstDVv/NEZGpwozIPZBNU6zqY4zIn7vg== dependencies: cross-fetch "3.1.5" debug "4.3.4" @@ -21650,9 +22135,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" @@ -22137,6 +22622,13 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -22149,6 +22641,11 @@ regenerate@^1.4.0: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" @@ -22164,13 +22661,12 @@ regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -22206,11 +22702,28 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -22218,6 +22731,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + regression@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/regression/-/regression-2.0.1.tgz#8d29c3e8224a10850c35e337e85a8b2fac3b0c87" @@ -22557,13 +23077,6 @@ rifm@^0.7.0: dependencies: "@babel/runtime" "^7.3.1" -rimraf@2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -22571,6 +23084,13 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@~2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -22672,9 +23192,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.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.77.1.tgz#63463ebdbc04232fc42630ec72d137cd4400975d" + integrity sha512-GhutNJrvTYD6s1moo+kyq7lD9DeR5HDyXo4bDFlDSkepC9kVKY+KK/NSZFzCmeXeia3kEzVuToQmHRdugyZHxw== optionalDependencies: fsevents "~2.3.2" @@ -22702,7 +23222,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== @@ -22716,6 +23236,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" @@ -23018,7 +23545,7 @@ set-value@^4.1.0: is-plain-object "^2.0.4" is-primitive "^3.0.1" -setimmediate@^1.0.4, setimmediate@^1.0.5, setimmediate@~1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -23438,7 +23965,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -24050,10 +24577,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" @@ -24121,12 +24659,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: +svg-parser@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^2.5.0, svgo@^2.7.0: +svgo@^2.7.0, svgo@^2.8.0: version "2.8.0" resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== @@ -24159,9 +24697,9 @@ swagger-client@^3.18.5: url "~0.11.0" swagger-ui-react@^4.11.1: - version "4.12.0" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.12.0.tgz#bfdf67bd0679fdd62ec3fb98bd827afb81fb7fe6" - integrity sha512-pkSkUe4WVb7omoScK8GG2qgD6LxwZEIA+fKcxeACC7PCW52vFEjle6WO6lFOLj1JmfWriL7Ngi0+wJtVjfhnWw== + version "4.13.0" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.13.0.tgz#da4192b9b2a761a1e761c268606741ba200e971d" + integrity sha512-SNAByPvnpFKXUnrH6+V2TjVrbilftyVLWK+7K73tBX3uRNAYv0hzNs5Q6xPIekq4iq7xRtuUhVA7Qxn9vK4C+w== dependencies: "@babel/runtime-corejs3" "^7.16.8" "@braintree/sanitize-url" "=6.0.0" @@ -24209,7 +24747,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== @@ -24293,21 +24831,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.73-next.0" 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.5-next.0" + "@backstage/catalog-model" "^1.1.0" + "@backstage/cli" "^0.18.1-next.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.5-next.0" + "@backstage/core-components" "^0.10.1-next.0" + "@backstage/core-plugin-api" "^1.0.5-next.0" + "@backstage/integration-react" "^1.1.3-next.0" + "@backstage/plugin-catalog" "^1.5.0-next.0" + "@backstage/plugin-techdocs" "^1.3.1-next.0" + "@backstage/plugin-techdocs-react" "^1.0.3-next.0" + "@backstage/test-utils" "^1.1.3-next.0" + "@backstage/theme" "^0.2.16" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" history "^5.0.0" @@ -24365,13 +24903,13 @@ terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: terser "^5.7.2" terser@^5.10.0, terser@^5.7.2: - version "5.12.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + version "5.14.2" + resolved "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== dependencies: + "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" test-exclude@^6.0.0: @@ -24384,9 +24922,9 @@ test-exclude@^6.0.0: minimatch "^3.0.4" testcontainers@^8.1.2: - version "8.11.1" - resolved "https://registry.npmjs.org/testcontainers/-/testcontainers-8.11.1.tgz#07d46e9da461e03d613c094570edf43506040082" - integrity sha512-sJbc/JiQ509mphYhj79pEpRb6iUePX7MY+YLi3gzSONoSgwPRgtqDMM2UBVjEBI123zavwN9K/HGUXwIIDah4A== + version "8.12.0" + resolved "https://registry.npmjs.org/testcontainers/-/testcontainers-8.12.0.tgz#236dfaec40887348d28bfcd19ebd047eb32f712a" + integrity sha512-6qQqKirdURAXH/V6sVnfbgqLAJK/vxP2ED6qcwiLfsZ6McPkF5TGDAPzkVZUmdrx62H3RzuTTdXGoPcLP7KG6g== dependencies: "@balena/dockerignore" "^1.0.2" "@types/archiver" "^5.3.1" @@ -24666,11 +25204,6 @@ tr46@~0.0.3: resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= - traverse@^0.6.6, traverse@~0.6.6: version "0.6.6" resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" @@ -25036,6 +25569,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -25044,16 +25582,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + unidiff@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/unidiff/-/unidiff-1.0.2.tgz#8706eb36e4aa182a6ca699ecd2f8877f4b906ce0" @@ -25229,27 +25785,19 @@ untildify@^4.0.0: resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -unzipper@^0.10.11: - version "0.10.11" - resolved "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - upath@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== +update-browserslist-db@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + upper-case-first@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" @@ -25305,6 +25853,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" @@ -25613,7 +26169,7 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" -watchpack@^2.0.0-beta.10: +watchpack@^2.0.0-beta.10, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -25621,14 +26177,6 @@ watchpack@^2.0.0-beta.10: 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" - integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" @@ -25742,20 +26290,20 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.66.0: - version "5.73.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== + version "5.74.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" + acorn "^8.7.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" + enhanced-resolve "^5.10.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -25768,7 +26316,7 @@ webpack@^5, webpack@^5.66.0: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + watchpack "^2.4.0" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: @@ -26025,16 +26573,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" @@ -26322,7 +26880,7 @@ yarn-lock-check@^1.0.5: yauzl@^2.10.0: version "2.10.0" resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" @@ -26450,9 +27008,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.10" + resolved "https://registry.npmjs.org/zod/-/zod-3.17.10.tgz#8716a05e6869df6faaa878a44ffe3c79e615defb" + integrity sha512-IHXnQYQuOOOL/XgHhgl8YjNxBHi3xX0mVcHmqsvJgcxKkEczPshoWdxqyFwsARpf41E0v9U95WUROqsHHxt0UQ== zustand@3.6.9: version "3.6.9"