diff --git a/.changeset/beige-apples-press.md b/.changeset/beige-apples-press.md new file mode 100644 index 0000000000..56c46db830 --- /dev/null +++ b/.changeset/beige-apples-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops': patch +--- + +Added alpha support for the New Frontend System (Declarative Integration) diff --git a/.changeset/calm-onions-exercise.md b/.changeset/calm-onions-exercise.md new file mode 100644 index 0000000000..f1c58a173f --- /dev/null +++ b/.changeset/calm-onions-exercise.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. diff --git a/.changeset/cold-cheetahs-pull.md b/.changeset/cold-cheetahs-pull.md new file mode 100644 index 0000000000..140a564e4f --- /dev/null +++ b/.changeset/cold-cheetahs-pull.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': minor +'@backstage/plugin-scaffolder-backend': patch +--- + +New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + +Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` +and replaces its actions related to Bitbucket Server. + +- `publish:bitbucketServer` +- `publish:bitbucketServer:pull-request` diff --git a/.changeset/cool-islands-impress.md b/.changeset/cool-islands-impress.md new file mode 100644 index 0000000000..df6df1ada2 --- /dev/null +++ b/.changeset/cool-islands-impress.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites': patch +--- + +Updated README diff --git a/.changeset/create-app-1706621803.md b/.changeset/create-app-1706621803.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1706621803.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/dirty-cheetahs-shave.md b/.changeset/dirty-cheetahs-shave.md new file mode 100644 index 0000000000..1691adec2d --- /dev/null +++ b/.changeset/dirty-cheetahs-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Support additional algorithms in the `/.well-known/openid-configuration` endpoint. diff --git a/.changeset/dirty-plums-fix.md b/.changeset/dirty-plums-fix.md new file mode 100644 index 0000000000..fb0655377c --- /dev/null +++ b/.changeset/dirty-plums-fix.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +--- + +Add support for the new backend system. + +A new backend module for the tech-insights backend +was added and exported as `default`. + +The module will register the `JsonRulesEngineFactCheckerFactory` +as `FactCheckerFactory`, loading checks from the config. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); +``` diff --git a/.changeset/fast-onions-own.md b/.changeset/fast-onions-own.md new file mode 100644 index 0000000000..6977b035bc --- /dev/null +++ b/.changeset/fast-onions-own.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +`FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. diff --git a/.changeset/flat-roses-happen.md b/.changeset/flat-roses-happen.md new file mode 100644 index 0000000000..e20e063b4f --- /dev/null +++ b/.changeset/flat-roses-happen.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket': minor +--- + +Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into +`@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and +`@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + +`@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. + +Please use any of the two replacements depending on your needs. + +```diff +- backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); ++ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); ++ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); +``` diff --git a/.changeset/fluffy-jeans-eat.md b/.changeset/fluffy-jeans-eat.md new file mode 100644 index 0000000000..8935c33937 --- /dev/null +++ b/.changeset/fluffy-jeans-eat.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added check for the `repository` field in the `repo fix` command. diff --git a/.changeset/forty-beers-sniff.md b/.changeset/forty-beers-sniff.md new file mode 100644 index 0000000000..130726f94f --- /dev/null +++ b/.changeset/forty-beers-sniff.md @@ -0,0 +1,22 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-catalog-graph': patch +--- + +Added possibility to show arrow heads for graph edges for better understandability. + +In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component +(typically in `packages/app/src/App.tsx`): + +```diff +- ++ +``` + +In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components +(typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + +```diff +- ++ +``` diff --git a/.changeset/four-walls-perform.md b/.changeset/four-walls-perform.md new file mode 100644 index 0000000000..5275da7b79 --- /dev/null +++ b/.changeset/four-walls-perform.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. diff --git a/.changeset/fresh-gifts-smile.md b/.changeset/fresh-gifts-smile.md new file mode 100644 index 0000000000..446e9f3c54 --- /dev/null +++ b/.changeset/fresh-gifts-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Fixed the value label text color in dark mode for the TextSize addon. diff --git a/.changeset/friendly-terms-love.md b/.changeset/friendly-terms-love.md new file mode 100644 index 0000000000..18fc399740 --- /dev/null +++ b/.changeset/friendly-terms-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Introduced `knip` to the `knip-reports` command, which generates a `knip-report.md` file for your packages with dependency warnings, if any. diff --git a/.changeset/fuzzy-comics-collect.md b/.changeset/fuzzy-comics-collect.md new file mode 100644 index 0000000000..5ce6b3c967 --- /dev/null +++ b/.changeset/fuzzy-comics-collect.md @@ -0,0 +1,27 @@ +--- +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +--- + +Support loading `TechInsightsJsonRuleCheck` instances from config. + +Uses the check `id` as key. + +Example: + +```yaml title="app-config.yaml" +techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true +``` diff --git a/.changeset/fuzzy-turtles-camp.md b/.changeset/fuzzy-turtles-camp.md new file mode 100644 index 0000000000..ca1767bd30 --- /dev/null +++ b/.changeset/fuzzy-turtles-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli-node': patch +--- + +Added `repository` field to `BackstagePackageJson` type. diff --git a/.changeset/gorgeous-ways-applaud.md b/.changeset/gorgeous-ways-applaud.md new file mode 100644 index 0000000000..4b28e2e656 --- /dev/null +++ b/.changeset/gorgeous-ways-applaud.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-signals': patch +--- + +Fix disconnect loop on server start diff --git a/.changeset/great-rats-collect.md b/.changeset/great-rats-collect.md new file mode 100644 index 0000000000..24b01c0fe3 --- /dev/null +++ b/.changeset/great-rats-collect.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-kubernetes-backend': minor +--- + +**BREAKING** The backend will fail to start if two clusters in the app-config +have the same name. The requirement for unique names has been declared in the +docs for some time, but is now enforced. diff --git a/.changeset/green-dogs-fold.md b/.changeset/green-dogs-fold.md new file mode 100644 index 0000000000..c23f7c2a29 --- /dev/null +++ b/.changeset/green-dogs-fold.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-node': patch +--- + +Add support for the new backend system. + +A new backend plugin for the tech-insights backend +was added and exported as `default`. + +You can use it with the new backend system like + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend')); +``` diff --git a/.changeset/hip-ears-add.md b/.changeset/hip-ears-add.md new file mode 100644 index 0000000000..1e7f656507 --- /dev/null +++ b/.changeset/hip-ears-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +The auth backend will now refuse to issue user tokens are excessively large. diff --git a/.changeset/hot-horses-matter.md b/.changeset/hot-horses-matter.md new file mode 100644 index 0000000000..1b544c0854 --- /dev/null +++ b/.changeset/hot-horses-matter.md @@ -0,0 +1,108 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-events-backend-module-bitbucket-cloud': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-catalog-backend-module-unprocessed': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend-module-sentry': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-catalog-backend-module-puppetdb': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend-module-openapi': patch +'@backstage/plugin-search-backend-module-techdocs': patch +'@backstage/plugin-events-backend-module-aws-sqs': patch +'@backstage/plugin-search-backend-module-catalog': patch +'@backstage/plugin-search-backend-module-explore': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-events-backend-module-gerrit': patch +'@backstage/plugin-events-backend-module-github': patch +'@backstage/plugin-events-backend-module-gitlab': patch +'@backstage/plugin-events-backend-module-azure': patch +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/backend-plugin-api': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/backend-dev-utils': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/backend-defaults': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/backend-app-api': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/backend-common': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-graphql-voyager': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/backend-tasks': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-octopus-deploy': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/app-defaults': patch +'@backstage/core-app-api': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-nomad-backend': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-xcmetrics': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-linguist': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-nomad': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-home': patch +--- + +Use `--cwd` as the first `yarn` argument diff --git a/.changeset/kind-wombats-draw.md b/.changeset/kind-wombats-draw.md new file mode 100644 index 0000000000..29a0e9da3c --- /dev/null +++ b/.changeset/kind-wombats-draw.md @@ -0,0 +1,11 @@ +--- +'@backstage/core-plugin-api': minor +'@backstage/app-defaults': minor +'@backstage/core-app-api': minor +'@backstage/frontend-plugin-api': patch +--- + +Added a utility API for VMware Cloud auth; the API ref is available in the +`@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the +implementation is in `@backstage/core-app-api` and a factory has been added to +`@backstage/app-defaults`. diff --git a/.changeset/large-tables-wonder.md b/.changeset/large-tables-wonder.md index f54402dbd4..9c10f172a1 100644 --- a/.changeset/large-tables-wonder.md +++ b/.changeset/large-tables-wonder.md @@ -2,4 +2,4 @@ '@backstage/cli': patch --- -Add experimental support for optional `auth` app entry point. +Add experimental support for an optional `public` app entry point that lets users sign-in before being able to access the full app. diff --git a/.changeset/lovely-bugs-prove.md b/.changeset/lovely-bugs-prove.md new file mode 100644 index 0000000000..de55f329bb --- /dev/null +++ b/.changeset/lovely-bugs-prove.md @@ -0,0 +1,19 @@ +--- +'@backstage/repo-tools': minor +--- + +**BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. + +The following commands now live under the `package` namespace, + +- `schema openapi generate` is now `package schema openapi generate --server` +- `schema openapi generate-client` is now `package schema openapi generate --client-package` +- `schema openapi init` is now `package schema openapi init` + +And these commands live under the new `repo` namespace, + +- `schema openapi lint` is now `repo schema openapi lint` +- `schema openapi test` is now `repo schema openapi test` +- `schema openapi verify` is now `repo schema openapi verify` + +The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. diff --git a/.changeset/lucky-bugs-bow.md b/.changeset/lucky-bugs-bow.md new file mode 100644 index 0000000000..ee17883408 --- /dev/null +++ b/.changeset/lucky-bugs-bow.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. diff --git a/.changeset/mighty-steaks-shave.md b/.changeset/mighty-steaks-shave.md new file mode 100644 index 0000000000..b85447e5c0 --- /dev/null +++ b/.changeset/mighty-steaks-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped TypeScript to version `5.3`. diff --git a/.changeset/mighty-tomatoes-visit.md b/.changeset/mighty-tomatoes-visit.md new file mode 100644 index 0000000000..beb37d02ed --- /dev/null +++ b/.changeset/mighty-tomatoes-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +adds a x-goog-api-client header to existing API requests in this plugin to clearly identify API requests from this GKE plugin. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GKE plugin and `libName` represent the current Google API used at backstage. diff --git a/.changeset/mighty-toys-laugh.md b/.changeset/mighty-toys-laugh.md new file mode 100644 index 0000000000..ad48e84565 --- /dev/null +++ b/.changeset/mighty-toys-laugh.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Add support to `configSchema` option on the `createEntityCardExtension` factory function. diff --git a/.changeset/nasty-days-jog.md b/.changeset/nasty-days-jog.md new file mode 100644 index 0000000000..09454609b2 --- /dev/null +++ b/.changeset/nasty-days-jog.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-aws-alb-provider': patch +--- + +Refactored to use the `jose` library for JWT handling. diff --git a/.changeset/nasty-shirts-look.md b/.changeset/nasty-shirts-look.md new file mode 100644 index 0000000000..32213ee219 --- /dev/null +++ b/.changeset/nasty-shirts-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. diff --git a/.changeset/neat-eels-greet.md b/.changeset/neat-eels-greet.md new file mode 100644 index 0000000000..5ba4777934 --- /dev/null +++ b/.changeset/neat-eels-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-graph': minor +--- + +Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. diff --git a/.changeset/ninety-hats-kiss.md b/.changeset/ninety-hats-kiss.md new file mode 100644 index 0000000000..ff5ec770f7 --- /dev/null +++ b/.changeset/ninety-hats-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-playlist': patch +--- + +Conditionally render playlist description only when it's non-empty diff --git a/.changeset/olive-boats-agree.md b/.changeset/olive-boats-agree.md new file mode 100644 index 0000000000..e489476bcc --- /dev/null +++ b/.changeset/olive-boats-agree.md @@ -0,0 +1,93 @@ +--- +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/frontend-app-api': patch +'@backstage/frontend-plugin-api': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-entity-feedback': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-github-issues': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-graphql-voyager': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kubernetes-cluster': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-linguist': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-nomad': patch +'@backstage/plugin-octopus-deploy': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-playlist': patch +'@backstage/plugin-puppetdb': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search-react': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-stackstorm': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault': patch +'@backstage/plugin-xcmetrics': patch +'@backstage/test-utils': patch +'@backstage/theme': patch +--- + +Widen `@types/react` dependency range to include version 18. diff --git a/.changeset/orange-gorillas-clean.md b/.changeset/orange-gorillas-clean.md new file mode 100644 index 0000000000..d346adce6c --- /dev/null +++ b/.changeset/orange-gorillas-clean.md @@ -0,0 +1,26 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-node': patch +--- + +Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + +Original exports are marked as deprecated and re-export the moved types. + +Please replace uses like + +```ts +import { + FactRetrieverRegistry, + PersistenceContext, +} from '@backstage/plugin-tech-insights-backend'; +``` + +with + +```ts +import { + FactRetrieverRegistry, + PersistenceContext, +} from '@backstage/plugin-tech-insights-node'; +``` diff --git a/.changeset/perfect-colts-hammer.md b/.changeset/perfect-colts-hammer.md new file mode 100644 index 0000000000..616bcbda6f --- /dev/null +++ b/.changeset/perfect-colts-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Organized imports in plugin.ts diff --git a/.changeset/poor-points-do.md b/.changeset/poor-points-do.md new file mode 100644 index 0000000000..198ef24c83 --- /dev/null +++ b/.changeset/poor-points-do.md @@ -0,0 +1,46 @@ +--- +'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-permission-backend-module-allow-all-policy': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-backstage-openapi': patch +'@backstage/plugin-auth-backend-module-atlassian-provider': patch +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +'@backstage/plugin-auth-backend-module-pinniped-provider': patch +'@backstage/plugin-auth-backend-module-github-provider': patch +'@backstage/plugin-auth-backend-module-gitlab-provider': patch +'@backstage/plugin-auth-backend-module-oauth2-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-auth-backend-module-oidc-provider': patch +'@backstage/plugin-auth-backend-module-okta-provider': patch +'@backstage/plugin-catalog-backend-module-github-org': patch +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-notifications-backend': patch +'@backstage/frontend-test-utils': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications-node': patch +'@backstage/frontend-app-api': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/e2e-test-utils': patch +'@backstage/plugin-kubernetes-node': patch +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-app-visualizer': patch +'@backstage/plugin-notifications': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-vault-node': patch +'@backstage/plugin-app-node': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-signals': patch +--- + +Added or fixed the `repository` field in `package.json`. diff --git a/.changeset/pre.json b/.changeset/pre.json index 7b419c4250..ec2e47ab29 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -267,85 +267,189 @@ "@backstage/plugin-signals": "0.0.0", "@backstage/plugin-signals-backend": "0.0.0", "@backstage/plugin-signals-node": "0.0.0", - "@backstage/plugin-signals-react": "0.0.0" + "@backstage/plugin-signals-react": "0.0.0", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.0.0", + "@backstage/plugin-notifications": "0.0.0", + "@backstage/plugin-notifications-backend": "0.0.0", + "@backstage/plugin-notifications-common": "0.0.0", + "@backstage/plugin-notifications-node": "0.0.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.0.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.0.0" }, "changesets": [ "afraid-numbers-invite", "angry-phones-arrive", + "beige-apples-press", + "blue-keys-do", + "breezy-cobras-sin", "brown-items-hammer", + "calm-cups-rule", + "calm-items-double", + "calm-onions-exercise", "chilled-chefs-notice", + "chilled-ways-wave", "chilly-seahorses-bake", + "cold-cheetahs-pull", "cold-cooks-care", + "cool-islands-impress", + "create-app-1706621803", "curvy-ladybugs-impress", "cyan-bats-lick", "cyan-icons-rest", + "dirty-cheetahs-shave", + "dirty-mirrors-retire", + "dirty-plums-fix", "dry-lizards-taste", "dry-lobsters-flash", + "dry-vans-kiss", "dull-dolphins-explain", "dull-fireants-repeat", + "eight-hounds-dream", "empty-ligers-hang", + "fair-mirrors-hammer", + "famous-houses-thank", "fast-jeans-walk", + "fast-onions-own", "fifty-adults-watch", "fifty-files-argue", + "flat-roses-happen", "flat-wasps-fold", + "forty-beers-sniff", "forty-cars-scream", + "four-mugs-try", + "four-walls-perform", + "fresh-gifts-smile", "friendly-cheetahs-rescue", + "funny-buttons-sip", "funny-timers-visit", + "fuzzy-comics-collect", + "giant-suits-switch", "good-lemons-lick", "gorgeous-bobcats-press", + "gorgeous-pumas-draw", + "gorgeous-ways-applaud", + "great-rats-collect", + "green-dogs-fold", + "green-flies-draw", "grumpy-poets-study", + "hip-ears-add", + "hot-horses-matter", + "hot-paws-tap", "hot-pillows-poke", "hot-tips-doubt", "kind-clouds-fly", + "kind-wombats-draw", "large-frogs-grab", + "large-moons-speak", "large-tables-wonder", "lemon-cameras-remember", "long-suns-bow", "loud-walls-compare", + "lovely-bugs-prove", "lovely-starfishes-remain", + "lucky-bugs-bow", "many-pugs-change", "metal-elephants-sit", "metal-students-drive", + "mighty-steaks-shave", + "mighty-toys-laugh", + "nasty-days-jog", + "nasty-shirts-look", + "neat-eels-greet", "neat-hotels-wink", + "nice-carrots-dream", "nine-bulldogs-camp", "nine-olives-swim", + "ninety-rules-sneeze", + "old-papayas-shave", "old-students-smoke", + "olive-boats-agree", + "olive-experts-fold", "olive-singers-accept", + "orange-gorillas-clean", + "orange-walls-complain", "polite-meals-hug", + "quick-penguins-refuse", + "quick-ties-stare", + "quiet-donkeys-punch", + "rare-seals-thank", "real-eggs-sip", + "real-grapes-sing", + "red-bottles-swim", + "red-eggs-serve", "renovate-47c1714", "renovate-4b698fb", "renovate-5f8d1ca", "renovate-95b717a", + "renovate-97e6aa5", + "renovate-f4b1d70", "renovate-f58dd5c", "renovate-fb2e0b9", "rotten-lemons-cry", + "selfish-mails-scream", "serious-carpets-learn", "seven-dots-serve", "seven-plums-return", + "shaggy-trainers-rule", + "shaggy-windows-cross", "sharp-pandas-hunt", + "shiny-apes-glow", + "shiny-clocks-greet", + "shiny-poets-tease", + "short-cherries-mix", "shy-carrots-decide", "silent-hotels-knock", "silent-poets-grab", + "silent-waves-pretend", + "six-jobs-sin", "six-melons-end", "sixty-shoes-prove", + "slimy-rats-fly", + "smart-numbers-call", + "soft-balloons-relax", "soft-beans-tease", "sour-rivers-fry", + "spotty-jokes-unite", + "spotty-kids-pay", "strange-parents-hammer", + "strong-lobsters-hide", + "strong-news-develop", + "sweet-ravens-glow", + "tall-frogs-clap", + "tall-tools-compare", "tame-numbers-smile", "tame-rockets-sin", + "tasty-feet-cheat", + "tasty-oranges-rescue", "ten-numbers-happen", "ten-planets-guess", + "ten-trainers-cough", + "tender-flowers-collect", + "thirty-dolls-admire", + "tidy-cooks-mix", + "tidy-cooks-mixed", + "tiny-donuts-drive", "tiny-kiwis-know", "tough-drinks-scream", + "twelve-hounds-know", + "twelve-pens-rescue", + "twelve-weeks-march", "twenty-taxis-mate", "two-coats-smile", + "two-geese-explain", "two-singers-learn", + "unlucky-pens-search", "unlucky-wasps-tan", "warm-maps-scream", + "weak-news-jam", "wet-emus-work", + "wet-lions-crash", + "wicked-ants-reflect", "wicked-elephants-scream", "wild-owls-doubt", + "wise-flies-laugh", + "wise-papayas-cough", + "young-ladybugs-decide", "young-rules-repeat" ] } diff --git a/.changeset/real-grapes-sing.md b/.changeset/real-grapes-sing.md new file mode 100644 index 0000000000..484fc7969a --- /dev/null +++ b/.changeset/real-grapes-sing.md @@ -0,0 +1,8 @@ +--- +'@backstage/core-components': patch +'@backstage/app-defaults': minor +'@backstage/plugin-playlist': patch +'@backstage/plugin-scaffolder': minor +--- + +Added stack trace display to `ErrorPage` and updated existing refs diff --git a/.changeset/red-bottles-swim.md b/.changeset/red-bottles-swim.md new file mode 100644 index 0000000000..eebdc85298 --- /dev/null +++ b/.changeset/red-bottles-swim.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +--- + +The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` +were refactored to use the `jose` library. diff --git a/.changeset/red-eggs-serve.md b/.changeset/red-eggs-serve.md new file mode 100644 index 0000000000..1b2c9b3b07 --- /dev/null +++ b/.changeset/red-eggs-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-app-backend': patch +--- + +Support injecting config multiple times in a single bundle diff --git a/.changeset/renovate-235713b.md b/.changeset/renovate-235713b.md new file mode 100644 index 0000000000..148062dadb --- /dev/null +++ b/.changeset/renovate-235713b.md @@ -0,0 +1,11 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Updated dependency `@react-hookz/web` to `^24.0.0`. diff --git a/.changeset/renovate-2d87790.md b/.changeset/renovate-2d87790.md new file mode 100644 index 0000000000..5230172e2b --- /dev/null +++ b/.changeset/renovate-2d87790.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.17.0`. +Updated dependency `@rjsf/core` to `5.17.0`. +Updated dependency `@rjsf/material-ui` to `5.17.0`. +Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. diff --git a/.changeset/renovate-97e6aa5.md b/.changeset/renovate-97e6aa5.md new file mode 100644 index 0000000000..51f4edccd2 --- /dev/null +++ b/.changeset/renovate-97e6aa5.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-opencost': patch +--- + +Updated dependency `date-fns` to `^3.0.0`. diff --git a/.changeset/renovate-c392808.md b/.changeset/renovate-c392808.md new file mode 100644 index 0000000000..4d7f660d34 --- /dev/null +++ b/.changeset/renovate-c392808.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-techdocs': patch +--- + +Updated dependency `dompurify` to `^3.0.0`. +Updated dependency `@types/dompurify` to `^3.0.0`. diff --git a/.changeset/renovate-f4b1d70.md b/.changeset/renovate-f4b1d70.md new file mode 100644 index 0000000000..7b07ee8364 --- /dev/null +++ b/.changeset/renovate-f4b1d70.md @@ -0,0 +1,6 @@ +--- +'@backstage/cli': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Updated dependency `esbuild` to `^0.20.0`. diff --git a/.changeset/shiny-apes-glow.md b/.changeset/shiny-apes-glow.md new file mode 100644 index 0000000000..5ff66157cd --- /dev/null +++ b/.changeset/shiny-apes-glow.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': minor +'@backstage/plugin-scaffolder-backend': patch +--- + +New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + +Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` +and replaces its actions related to Bitbucket Cloud. + +- `publish:bitbucketCloud` +- `bitbucket:pipelines:run` diff --git a/.changeset/shiny-clocks-greet.md b/.changeset/shiny-clocks-greet.md new file mode 100644 index 0000000000..0c112ff81f --- /dev/null +++ b/.changeset/shiny-clocks-greet.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': patch +--- + +conditionally rendering the user name and email in user settings page diff --git a/.changeset/short-cherries-mix.md b/.changeset/short-cherries-mix.md new file mode 100644 index 0000000000..866f7a0971 --- /dev/null +++ b/.changeset/short-cherries-mix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +--- + +Provide default branch when creating repositories. diff --git a/.changeset/slimy-rats-fly.md b/.changeset/slimy-rats-fly.md new file mode 100644 index 0000000000..81fcae5bb2 --- /dev/null +++ b/.changeset/slimy-rats-fly.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Added basic support for the new frontend system, exported from the `/alpha` subpath. diff --git a/.changeset/soft-balloons-relax.md b/.changeset/soft-balloons-relax.md new file mode 100644 index 0000000000..3fae8984a3 --- /dev/null +++ b/.changeset/soft-balloons-relax.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-components': patch +'@backstage/app-defaults': patch +--- + +Fix invalid HTTP status code 501 in Error Page diff --git a/.changeset/spotty-jokes-unite.md b/.changeset/spotty-jokes-unite.md new file mode 100644 index 0000000000..15097e42d0 --- /dev/null +++ b/.changeset/spotty-jokes-unite.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Harmonize the package naming and allow custom prefix diff --git a/.changeset/spotty-kids-pay.md b/.changeset/spotty-kids-pay.md new file mode 100644 index 0000000000..157515201d --- /dev/null +++ b/.changeset/spotty-kids-pay.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Ability for user to configure backstage token expiration diff --git a/.changeset/strong-news-develop.md b/.changeset/strong-news-develop.md new file mode 100644 index 0000000000..1cbe4dda07 --- /dev/null +++ b/.changeset/strong-news-develop.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': patch +--- + +Use the EntityDisplayName component for rendering Group nodes diff --git a/.changeset/tall-frogs-clap.md b/.changeset/tall-frogs-clap.md new file mode 100644 index 0000000000..1e87ca316c --- /dev/null +++ b/.changeset/tall-frogs-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites-backend': patch +--- + +Added `permissionIntegrationRouter` for azure-sites-backend routes diff --git a/.changeset/tasty-oranges-rescue.md b/.changeset/tasty-oranges-rescue.md new file mode 100644 index 0000000000..b146c2e143 --- /dev/null +++ b/.changeset/tasty-oranges-rescue.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +**BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. + +This comes with breaking changes to config options: + +- `audience` is now mandatory +- `wantAuthnResponseSigned` is now exposed and defaults to `true` +- `wantAssertionsSigned` is now exposed and defaults to `true` diff --git a/.changeset/tiny-donuts-drive.md b/.changeset/tiny-donuts-drive.md new file mode 100644 index 0000000000..aadac7a276 --- /dev/null +++ b/.changeset/tiny-donuts-drive.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Backstage will log a warning whenever duplicate cluster names are detected -- +even if clusters sharing the same name come from separate locators. diff --git a/.changeset/twelve-shirts-buy.md b/.changeset/twelve-shirts-buy.md new file mode 100644 index 0000000000..6183c7dabd --- /dev/null +++ b/.changeset/twelve-shirts-buy.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-node': patch +--- + +Add support for `onProcessingError` handler at the catalog plugin (new backend system). + +You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` +as replacement for + +```ts +catalogBuilder.subscribe({ + onProcessingError: hander, +}); +``` diff --git a/.changeset/weak-news-jam.md b/.changeset/weak-news-jam.md new file mode 100644 index 0000000000..a1f44082da --- /dev/null +++ b/.changeset/weak-news-jam.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links diff --git a/.changeset/wet-lions-crash.md b/.changeset/wet-lions-crash.md new file mode 100644 index 0000000000..795e60588d --- /dev/null +++ b/.changeset/wet-lions-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-puppetdb': patch +--- + +Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. diff --git a/.changeset/wicked-ants-reflect.md b/.changeset/wicked-ants-reflect.md new file mode 100644 index 0000000000..4882d12a34 --- /dev/null +++ b/.changeset/wicked-ants-reflect.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-notifications-backend': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications-node': patch +'@backstage/plugin-notifications': patch +--- + +Initial notifications system for backstage diff --git a/.changeset/wicked-dolphins-wash.md b/.changeset/wicked-dolphins-wash.md new file mode 100644 index 0000000000..9258913c41 --- /dev/null +++ b/.changeset/wicked-dolphins-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +On LocalKubectlProxyClusterLocator, when resolving localhost, IPv4 address is placed before IPv6 address, ignoring the order from the DNS resolver. This change is necessary since by default kubectl proxy listen on IPv4 diff --git a/.changeset/wise-papayas-cough.md b/.changeset/wise-papayas-cough.md new file mode 100644 index 0000000000..955e7fefcc --- /dev/null +++ b/.changeset/wise-papayas-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Add a config declaration for `workingDirectory` diff --git a/.github/labeler.yml b/.github/labeler.yml index 5066ebaf05..6653c2d868 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,38 +1,62 @@ area:catalog: - - plugins/catalog/**/* - - plugins/catalog-*/**/* - - packages/catalog-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/catalog/**/* + - plugins/catalog-*/**/* + - packages/catalog-*/**/* area:discoverability: # search + home - - plugins/search/**/* - - plugins/search-*/**/* - - packages/search-*/**/* - - plugins/home/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/search/**/* + - plugins/search-*/**/* + - packages/search-*/**/* + - plugins/home/**/* area:kubernetes: - - plugins/kubernetes/**/* - - plugins/kubernetes-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/kubernetes/**/* + - plugins/kubernetes-*/**/* area:permission: - - plugins/permission-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/permission-*/**/* area:scaffolder: - - plugins/scaffolder/**/* - - plugins/scaffolder-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/scaffolder/**/* + - plugins/scaffolder-*/**/* area:techdocs: - - plugins/techdocs/**/* - - plugins/techdocs-*/**/* - - packages/techdocs-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/techdocs/**/* + - plugins/techdocs-*/**/* + - packages/techdocs-*/**/* auth: - - plugins/auth-*/**/* - - packages/core-app-api/src/apis/implementations/auth/**/* - - packages/core-app-api/src/lib/Auth*/**/* - - packages/core-plugin-api/src/apis/definitions/auth.ts + - changed-files: + - any-glob-to-any-file: + - plugins/auth-*/**/* + - packages/core-app-api/src/apis/implementations/auth/**/* + - packages/core-app-api/src/lib/Auth*/**/* + - packages/core-plugin-api/src/apis/definitions/auth.ts documentation: - - docs/**/* + - changed-files: + - any-glob-to-any-file: + - docs/**/* homepage: - - plugins/home/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/home/**/* microsite: - - microsite/**/* + - changed-files: + - any-glob-to-any-file: + - microsite/**/* search: - - plugins/search/**/* - - plugins/search-*/**/* - - packages/search-*/**/* + - changed-files: + - any-glob-to-any-file: + - plugins/search/**/* + - plugins/search-*/**/* + - packages/search-*/**/* storybook: - - storybook/**/* + - changed-files: + - any-glob-to-any-file: + - storybook/**/* diff --git a/.github/renovate.json5 b/.github/renovate.json5 index b58c0beb05..828e5f5481 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,6 +1,15 @@ { + $schema: 'https://docs.renovatebot.com/renovate-schema.json', + labels: ['dependencies'], - extends: ['config:base', ':disableDependencyDashboard', ':gitSignOff'], + + extends: ['config:best-practices', ':gitSignOff'], + // do not pin dev dependencies, which are part of the best-practices preset + ignorePresets: [':pinDevDependencies'], + + // the default limit are 10 PRs + prConcurrentLimit: 20, + postUpdateOptions: ['yarnDedupeHighest'], rangeStrategy: 'update-lockfile', // @elastic/elasticsearch is ignored due to licensing issues. See #10992 diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 940e855828..9bb4a52cf4 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -185,6 +185,7 @@ Kaswell keepalive Keyv Knex +knip Koyeb KPIs Kuang diff --git a/.github/workflows/automate_area-labels.yml b/.github/workflows/automate_area-labels.yml index 5d12e4ca89..632624bd50 100644 --- a/.github/workflows/automate_area-labels.yml +++ b/.github/workflows/automate_area-labels.yml @@ -13,11 +13,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/labeler@v4.3.0 + - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' sync-labels: true diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index bf58b4b49d..89b611f981 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -23,18 +23,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # Fetch the commit that's merged into the base rather than the target ref # This will let us diff only the contents of the PR, without fetching more history ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' - name: fetch base run: git fetch --depth 1 origin ${{ github.base_ref }} - - uses: backstage/actions/changeset-feedback@v0.6.5 + - uses: backstage/actions/changeset-feedback@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 name: Generate feedback with: diff-ref: 'origin/master' diff --git a/.github/workflows/automate_merge_message.yml b/.github/workflows/automate_merge_message.yml index 71e3450235..0c6dacde69 100644 --- a/.github/workflows/automate_merge_message.yml +++ b/.github/workflows/automate_merge_message.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: '${{ github.event.pull_request.merge_commit_sha }}' @@ -44,7 +44,7 @@ jobs: node generate.js ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} > message.txt - name: Post Message - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index 48b329a7b7..b4a7271875 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -15,11 +15,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/stale@v9.0.0 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 id: stale with: stale-issue-message: > diff --git a/.github/workflows/ci-noop.yml b/.github/workflows/ci-noop.yml index f7c6c40832..2c66da768f 100644 --- a/.github/workflows/ci-noop.yml +++ b/.github/workflows/ci-noop.yml @@ -40,7 +40,7 @@ jobs: name: Test ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71d6b2e56a..e2c7d5dc28 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,20 +28,20 @@ jobs: name: Install ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -64,20 +64,20 @@ jobs: name: Verify ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -113,10 +113,10 @@ jobs: run: yarn backstage-repo-tools generate-catalog-info --ci - name: lint openapi yaml files - run: yarn backstage-repo-tools schema openapi lint + run: yarn backstage-repo-tools repo schema openapi lint - name: verify openapi yaml file matches generated ts file - run: yarn backstage-repo-tools schema openapi verify + run: yarn backstage-repo-tools repo schema openapi verify - name: verify doc links run: node scripts/verify-links.js @@ -155,7 +155,7 @@ jobs: name: Test ${{ matrix.node-version }} services: postgres16: - image: postgres:16 + image: postgres:16@sha256:09f23e02d76670d3b346a3c00aa33a27cf57aab8341eedfcdaed41459d14f5c4 env: POSTGRES_PASSWORD: postgres options: >- @@ -166,7 +166,7 @@ jobs: ports: - 5432/tcp postgres12: - image: postgres:12 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_PASSWORD: postgres options: >- @@ -177,7 +177,7 @@ jobs: ports: - 5432/tcp mysql8: - image: mysql:8 + image: mysql:8@sha256:2a9ef1075ff30c65bbcf4f96b25a03ea3b3f492c284e6c4a612c269ce4c5bb19 env: MYSQL_ROOT_PASSWORD: root options: >- @@ -197,18 +197,18 @@ jobs: INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: fetch branch master run: git fetch origin master - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -225,7 +225,7 @@ jobs: # We run the test cases before verifying the specs to prevent any failing tests from causing errors. - name: verify openapi specs against test cases - run: yarn backstage-repo-tools schema openapi test + run: yarn backstage-repo-tools repo schema openapi test - name: ensure clean working directory run: | diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index 4a9e4522f4..6ae0310813 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -9,11 +9,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: backstage/actions/cron@v0.6.5 + - uses: backstage/actions/cron@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 037d4a88d7..ae9c042401 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -16,24 +16,24 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: backstage ref: v${{ github.event.client_payload.version }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -47,17 +47,17 @@ jobs: working-directory: ./example-app - name: Login to GitHub Container Registry - uses: docker/login-action@v3.0.0 + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3.0.0 + uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 - name: Build and push - uses: docker/build-push-action@v5.1.0 + uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 with: context: './example-app' file: ./example-app/packages/backend/Dockerfile diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index 8343b92a66..4f79debb3b 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -24,14 +24,14 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 33dc17f867..3553236c9e 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -27,7 +27,7 @@ jobs: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 6cd6caecf9..a7d2cd048e 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -1,6 +1,11 @@ name: Deploy Packages on: workflow_dispatch: + inputs: + force_release: + description: Unconditionally trigger the release job + required: false + type: boolean push: branches: [master, patch/*] @@ -18,7 +23,7 @@ jobs: services: postgres16: - image: postgres:16 + image: postgres:16@sha256:09f23e02d76670d3b346a3c00aa33a27cf57aab8341eedfcdaed41459d14f5c4 env: POSTGRES_PASSWORD: postgres options: >- @@ -29,7 +34,7 @@ jobs: ports: - 5432/tcp postgres12: - image: postgres:12 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_PASSWORD: postgres options: >- @@ -40,7 +45,7 @@ jobs: ports: - 5432/tcp mysql8: - image: mysql:8 + image: mysql:8@sha256:2a9ef1075ff30c65bbcf4f96b25a03ea3b3f492c284e6c4a612c269ce4c5bb19 env: MYSQL_ROOT_PASSWORD: root options: >- @@ -53,22 +58,22 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: ${{ matrix.node-version == '20.x' && '--max-old-space-size=4096 --no-node-snapshot' || '--max-old-space-size=4096' }} INTEGRATION_TEST_GITHUB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITHUB_TOKEN }} INTEGRATION_TEST_GITLAB_TOKEN: ${{ secrets.INTEGRATION_TEST_GITLAB_TOKEN }} INTEGRATION_TEST_BITBUCKET_TOKEN: ${{ secrets.INTEGRATION_TEST_BITBUCKET_TOKEN }} INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -76,6 +81,7 @@ jobs: run: git fetch origin '${{ github.event.before }}' - name: Check if release + if: inputs.force_release != true id: release_check run: node scripts/check-if-release.js env: @@ -124,7 +130,7 @@ jobs: release: needs: build - if: needs.build.outputs.needs_release == 'true' + if: needs.build.outputs.needs_release == 'true' || inputs.force_release == true runs-on: ubuntu-latest @@ -138,19 +144,19 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -190,7 +196,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} - name: Dispatch repository event - uses: peter-evans/repository-dispatch@bf47d102fdb849e755b0b0023ea3e81a44b6f570 # v2.1.2 + uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0 with: token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} event-type: release-published diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml index c81447e9c0..54bc8d8782 100644 --- a/.github/workflows/issue.yaml +++ b/.github/workflows/issue.yaml @@ -10,9 +10,9 @@ jobs: if: github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Issue sync - uses: backstage/actions/issue-sync@v0.6.5 + uses: backstage/actions/issue-sync@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index bfd1ffef3d..46f7dad8a3 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@v3.1.3 + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml index 7d9869d378..18300b074e 100644 --- a/.github/workflows/pr-review-comment.yaml +++ b/.github/workflows/pr-review-comment.yaml @@ -17,13 +17,13 @@ jobs: steps: # Inspired by https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Read PR Number id: pr-number - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -40,7 +40,7 @@ jobs: const prNumber = artifact.name.slice('pr_number-'.length) core.setOutput('pr-number', prNumber); - - uses: backstage/actions/re-review@v0.6.5 + - uses: backstage/actions/re-review@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 6c2ffcfe77..89531bf70a 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -18,12 +18,12 @@ jobs: if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request ) steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: PR sync - uses: backstage/actions/pr-sync@v0.6.5 + uses: backstage/actions/pr-sync@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d8dd0d9a6a..32db85a0de 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -29,12 +29,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: 'Checkout code' - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: persist-credentials: false @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: SARIF file path: results.sarif @@ -66,6 +66,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 9b5a04198a..fd413de0ec 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -20,12 +20,12 @@ jobs: fetch-depth: 0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/sync_dependabot-changesets.yml b/.github/workflows/sync_dependabot-changesets.yml index f61d8709a5..c2a447e369 100644 --- a/.github/workflows/sync_dependabot-changesets.yml +++ b/.github/workflows/sync_dependabot-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'dependabot[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} @@ -26,7 +26,7 @@ jobs: git config --global user.email noreply@backstage.io git config --global user.name 'Github changeset workflow' - name: Generate changeset - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { promises: fs } = require('fs'); diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 1cab7797e6..b5e0984101 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -8,12 +8,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit # Setup node & install deps before checkout, keeping install quick - - uses: actions/setup-node@v4.0.1 + - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x - name: Install dependencies @@ -21,7 +21,7 @@ jobs: run: npm install semver@7.3.5 fs-extra@10.0.0 @manypkg/get-packages@1.1.1 - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: backstage # 'v' prefix is added here for the tag, we keep it out of the manifest logic @@ -29,7 +29,7 @@ jobs: # Checkout backstage/versions into /backstage/versions, which is where store the output - name: Checkout versions - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: repository: backstage/versions path: backstage/versions @@ -53,7 +53,7 @@ jobs: git push - name: Dispatch update-helper update - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} # TODO(Rugvip): Remove the create-app dispatch once we've been on the release version for a while diff --git a/.github/workflows/sync_renovate-changesets.yml b/.github/workflows/sync_renovate-changesets.yml index 1e93a12f85..83b9f8f574 100644 --- a/.github/workflows/sync_renovate-changesets.yml +++ b/.github/workflows/sync_renovate-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} @@ -26,7 +26,7 @@ jobs: git config --global user.email noreply@backstage.io git config --global user.name 'Github changeset workflow' - name: Generate changeset - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { promises: fs } = require("fs"); diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index ec7c00111d..fcd3d922e8 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -12,19 +12,19 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index ddf6d2cf28..45410bdca7 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -25,11 +25,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Monitor and Synchronize Snyk Policies uses: snyk/actions/node@1d672a455ab3339ef0a0021e1ec809165ee12fad # master with: @@ -58,6 +58,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Upload Snyk report - uses: github/codeql-action/upload-sarif@v3.23.2 + uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: sarif_file: snyk.sarif diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index fc1d7a68f1..3164e471d2 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -14,11 +14,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 20000 fetch-tags: true @@ -26,7 +26,7 @@ jobs: - name: Install Dependencies run: yarn --immutable - name: Create Release Pull Request - uses: backstage/changesets-action@v2.1.0 + uses: backstage/changesets-action@99063c276a7f12e024cb310e7a05a3a5b89449f8 # v2.1.0 with: # Calls out to `changeset version`, but also runs prettier version: yarn release diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index 6eac098448..77a54b2dc9 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -26,21 +26,21 @@ jobs: tags: ${{ steps.meta.outputs.tags }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: setup-node - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x registry-url: https://registry.npmjs.org/ - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: linux-v18 @@ -61,7 +61,7 @@ jobs: - name: Docker metadata id: meta - uses: docker/metadata-action@dbef88086f6cef02e264edb7dbf63250c17cef6c # v5.5.0 + uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 with: images: registry.uffizzi.com/${{ env.UUID_TAG_APP }} tags: type=raw,value=60d @@ -84,12 +84,12 @@ jobs: - build-backstage steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout git repo - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Render Compose File run: | # update image after the build above @@ -98,13 +98,13 @@ jobs: kustomize build . > manifests.rendered.yml cat manifests.rendered.yml - name: Upload Rendered Manifests File as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3 with: name: preview-spec path: ./.github/uffizzi/k8s/manifests/manifests.rendered.yml retention-days: 2 - name: Upload PR Event as Artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: preview-spec path: ${{ github.event_path }} @@ -116,13 +116,13 @@ jobs: if: ${{ github.event.action == 'closed' }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit # If this PR is closing, we will not render a compose file nor pass it to the next workflow. - name: Upload PR Event as Artifact - uses: actions/upload-artifact@v3.1.3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: preview-spec path: ${{ github.event_path }} diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index 47029df5e0..d898209e56 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -23,7 +23,7 @@ jobs: action: ${{ steps.event.outputs.ACTION }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: disable-sudo: true egress-policy: block @@ -32,7 +32,7 @@ jobs: - name: 'Download artifacts' # Fetch output (zip archive) from the workflow run that triggered this workflow. - uses: actions/github-script@v7.0.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ @@ -76,7 +76,7 @@ jobs: - name: Cache Manifests File if: ${{ steps.event.outputs.ACTION != 'closed' }} - uses: actions/cache@v4.0.0 + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: path: manifests.rendered.yml key: ${{ steps.hash.outputs.MANIFESTS_FILE_HASH }} @@ -102,11 +102,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 # Identify comment to be updated - name: Find comment for Ephemeral Environment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2 id: find-comment with: issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -117,7 +117,7 @@ jobs: # Create/Update comment with action deployment status - name: Create or Update Comment with Deployment Notification id: notification - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -140,7 +140,7 @@ jobs: - name: Fetch cached Manifests File id: cache - uses: actions/cache@v4 + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4 with: path: manifests.rendered.yml key: ${{ needs.cache-manifests-file.outputs.manifests-cache-key }} @@ -165,7 +165,7 @@ jobs: echo "Access the \`backstage\` endpoint at [\`${BACKSTAGE_HOST}\`](http://${BACKSTAGE_HOST})" >> $GITHUB_STEP_SUMMARY - name: Create or Update Comment with Deployment URL - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.notification.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} @@ -209,7 +209,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Delete Virtual Cluster uses: UffizziCloud/cluster-action@main @@ -220,7 +220,7 @@ jobs: # Identify comment to be updated - name: Find comment for Ephemeral Environment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2 id: find-comment with: issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -229,7 +229,7 @@ jobs: direction: last - name: Update Comment with Deletion - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} diff --git a/.github/workflows/verify_accessibility-noop.yml b/.github/workflows/verify_accessibility-noop.yml index 79c9962fce..07c92b5b5d 100644 --- a/.github/workflows/verify_accessibility-noop.yml +++ b/.github/workflows/verify_accessibility-noop.yml @@ -7,7 +7,7 @@ on: branches: [master] paths-ignore: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index 1310fc15f4..ec4cdb777c 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -1,11 +1,11 @@ name: Accessibility on: - # NOTE: If you change these you must update verify_accessibility_core-noop.yml as well + # NOTE: If you change these you must update verify_accessibility-noop.yml as well pull_request: branches: [master] paths: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' @@ -20,17 +20,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Use Node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v18.x - name: run Lighthouse CI diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index df0dd80118..4d54a73f85 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -42,12 +42,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3.23.2 + uses: github/codeql-action/init@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -66,7 +66,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3.23.2 + uses: github/codeql-action/autobuild@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -80,4 +80,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3.23.2 + uses: github/codeql-action/analyze@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 diff --git a/.github/workflows/verify_docs-quality.yml b/.github/workflows/verify_docs-quality.yml index d4b83ccefc..63431d9b00 100644 --- a/.github/workflows/verify_docs-quality.yml +++ b/.github/workflows/verify_docs-quality.yml @@ -12,11 +12,11 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 # Vale does not support file excludes, so we use the script to generate a list of files instead # The action also does not allow args or a local config file to be passed in, so the files array diff --git a/.github/workflows/verify_e2e-kubernetes-noop.yml b/.github/workflows/verify_e2e-kubernetes-noop.yml index 7606f78f07..8d8b14d5ba 100644 --- a/.github/workflows/verify_e2e-kubernetes-noop.yml +++ b/.github/workflows/verify_e2e-kubernetes-noop.yml @@ -23,7 +23,7 @@ jobs: name: Kubernetes ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml index db3651cfe1..a09beaf14f 100644 --- a/.github/workflows/verify_e2e-kubernetes.yml +++ b/.github/workflows/verify_e2e-kubernetes.yml @@ -22,20 +22,20 @@ jobs: name: Kubernetes ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_e2e-linux-noop.yml b/.github/workflows/verify_e2e-linux-noop.yml index 19b2508d27..93d48caf22 100644 --- a/.github/workflows/verify_e2e-linux-noop.yml +++ b/.github/workflows/verify_e2e-linux-noop.yml @@ -29,7 +29,7 @@ jobs: name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 0fe258b740..315cb76963 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -19,7 +19,7 @@ jobs: services: postgres: - image: postgres:12 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres @@ -41,11 +41,11 @@ jobs: name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Configure Git run: | @@ -53,12 +53,12 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 6fd912d67d..0bce75f720 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -30,12 +30,12 @@ jobs: name: Techdocs steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 - - uses: actions/setup-python@v5.0.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows-noop.yml b/.github/workflows/verify_e2e-windows-noop.yml index e24f7820fe..a7ebdba4b5 100644 --- a/.github/workflows/verify_e2e-windows-noop.yml +++ b/.github/workflows/verify_e2e-windows-noop.yml @@ -25,7 +25,7 @@ jobs: name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 802247341f..fdedf56fb7 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -31,7 +31,7 @@ jobs: name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit @@ -42,7 +42,7 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Configure Git run: | @@ -50,18 +50,18 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: setup python - uses: actions/setup-python@v5.0.0 + uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.10' - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.3.2 + uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 - name: Setup gyp env run: | @@ -78,7 +78,7 @@ jobs: uses: browser-actions/setup-chrome@803ef6dfb4fdf22089c9563225d95e4a515820a0 # latest - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_fossa.yml b/.github/workflows/verify_fossa.yml index e91a04d6ed..fd555159b1 100644 --- a/.github/workflows/verify_fossa.yml +++ b/.github/workflows/verify_fossa.yml @@ -14,12 +14,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Install Fossa run: "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash" diff --git a/.github/workflows/verify_microsite-noop.yml b/.github/workflows/verify_microsite-noop.yml index d730c7aba6..ad3e67ba70 100644 --- a/.github/workflows/verify_microsite-noop.yml +++ b/.github/workflows/verify_microsite-noop.yml @@ -21,7 +21,7 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 5c76148b92..ef7eef4524 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -24,14 +24,14 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: 18.x diff --git a/.github/workflows/verify_microsite_accessibility-noop.yml b/.github/workflows/verify_microsite_accessibility-noop.yml new file mode 100644 index 0000000000..4b63dc41cc --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility-noop.yml @@ -0,0 +1,31 @@ +# NO-OP placeholder that always passes for other paths +# This is here so that we're able to set the status check as required + +name: Microsite Accessibility +on: + pull_request: + branches: [master] + paths-ignore: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/scripts/**' + - 'microsite/src/**' + - 'microsite/data/**' + - 'microsite/blog/**' + - 'microsite/static/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +permissions: + contents: read + +jobs: + noop: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - run: echo NOOP diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml new file mode 100644 index 0000000000..eb9d3de683 --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility.yml @@ -0,0 +1,40 @@ +name: Microsite Accessibility +on: + # NOTE: If you change these you must update verify_microsite_accessibility-noop.yml as well + pull_request: + branches: [master] + paths: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +jobs: + lhci: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Use Node.js 18.x + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 + with: + node-version: 18.x + + - name: top-level install + run: yarn install --immutable + + - name: yarn install + run: yarn install --immutable + working-directory: microsite + + - name: run Lighthouse CI + run: | + yarn dlx @lhci/cli@0.11.x --config=microsite/lighthouserc.js autorun + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify_storybook-noop.yml b/.github/workflows/verify_storybook-noop.yml index 3c92f0eaa2..74aed57f5c 100644 --- a/.github/workflows/verify_storybook-noop.yml +++ b/.github/workflows/verify_storybook-noop.yml @@ -28,7 +28,7 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 49a0c76df3..563d9b811c 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -28,21 +28,21 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 0 # Required to retrieve git history - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@v0.6.5 + uses: backstage/actions/yarn-install@a674369920067381b450d398b27df7039b7ef635 # v0.6.5 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: storybook yarn install @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@05a82adb1e6919df177f54777e81a2ef3e312323 # v10 + - uses: chromaui/action@c53f50952a7b6d99666d77d8a61eb1b58944d68a # v10 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index 5b188770b4..d9eada0f1d 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -29,14 +29,14 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1 + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 with: egress-policy: audit - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.1 + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.gitignore b/.gitignore index c0ef0d2001..e499faf29e 100644 --- a/.gitignore +++ b/.gitignore @@ -162,4 +162,7 @@ e2e-test-report/ *svg.dtmp # Scripts -plugins-report.csv \ No newline at end of file +plugins-report.csv + +# Temporary knip configs +knip.json diff --git a/.husky/pre-commit b/.husky/pre-commit index d2ae35e84b..3723623171 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - yarn lint-staged diff --git a/.prettierignore b/.prettierignore index c54ee5d821..c561036ebb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ coverage templates api-report.md api-report-*.md +knip-report.md cli-report.md plugins/scaffolder-backend/sample-templates .vscode diff --git a/OWNERS.md b/OWNERS.md index 4d6fb21a80..7ad21c6fee 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -37,14 +37,13 @@ Team: @backstage/discoverability-maintainers Scope: Discoverability within Backstage, including the home page, information architecture, and search -| Name | Organization | Team | GitHub | Discord | -| ------------------------ | ------------ | ---- | ---------------------------------------- | ------------------ | -| Avantika Iyer | Spotify | BUX | [tikabom](http://github.com/tikabom) | - | -| Camila Belo | Spotify | BUX | [camilaibs](http://github.com/camilaibs) | Camila Loiola#0226 | -| Emma Indal | Spotify | BUX | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | -| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | -| Renan Mendes Carvalho | Spotify | BUX | [aitherios](http://github.com/aitherios) | aitherios#0593 | -| Bailey Brooks | Spotify | BUX | [bailey](http://github.com/bailey) | \_bailey4 | +| Name | Organization | Team | GitHub | Discord | +| ------------------------ | ------------ | -------------- | ---------------------------------------- | ----------------- | +| Avantika Iyer | Spotify | Infinite Buck$ | [tikabom](http://github.com/tikabom) | - | +| Emma Indal | Spotify | Infinite Buck$ | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | +| Djamaile Rahamat | Spotify | Infinite Buck$ | [djamaile](http://github.com/djamaile) | dyoqi | +| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | +| Bailey Brooks | Spotify | Infinite Buck$ | [bailey](http://github.com/bailey) | \_bailey4 | ### Helm Charts diff --git a/README-ko_kr.md b/README-ko_kr.md index 0544304cea..e5f50bd2b8 100644 --- a/README-ko_kr.md +++ b/README-ko_kr.md @@ -66,7 +66,7 @@ Backstage의 문서는 다음을 포함합니다: ## License -Copyright 2020-2023 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README-zh_Hans.md b/README-zh_Hans.md index b1e5a16add..3e6cea4e95 100644 --- a/README-zh_Hans.md +++ b/README-zh_Hans.md @@ -66,7 +66,7 @@ Backstage 的文档包括: ## 许可 -版权所有 2020-2023 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage +版权所有 2020-2024 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage 采用 Apache v2.0 许可:http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README.md b/README.md index a1c53e4c8d..f7b74adee4 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ To engage with our community, you can use the following resources: ## License -Copyright 2020-2023 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/beps/0001-notifications-system/README.md b/beps/0001-notifications-system/README.md index c7b0ffff64..5b37016a10 100644 --- a/beps/0001-notifications-system/README.md +++ b/beps/0001-notifications-system/README.md @@ -2,7 +2,9 @@ title: Backstage Notifications System status: provisional authors: - - Rugvip + - '@Rugvip' + - '@drodil' + - '@mareklibra' project-areas: - core creation-date: 2023-01-12 @@ -76,7 +78,15 @@ In the backend the signal plugin implements a general purpose message bus for se In the frontend the signal plugin has a persistent connection to the signal backend. This is initially implemented as a WebSocket connection, but could in the future also receive fallback mechanisms such as Server Sent Events or long polling. It is important that this connection is authenticated as we will be routing signals to specific users. The exact implementation of the authentication is not part of this proposal, but it should use whatever the outcome of the discussion in issue [#19581](https://github.com/backstage/backstage/issues/19581) is. -In order to route signals from the sender to the intended receiver the signal plugin uses the concept of signaling channels. They are just like the topics on the message bus, but we use separate terminology in order to avoid confusion. They also sit one layer beneath the even topic in the protocol stack, where the signal channel is communicated as part of the event payload. In the frontend, the signal plugin exposes an API to subscribe to a signal channel. Each time the user receives a signal on the specified channel, a listener is called with the signal payload. +In order to route signals from the sender to the intended recipient the signal plugin uses the concept of signaling channels. They are just like the topics on the message bus, but we use separate terminology in order to avoid confusion. They also sit one layer beneath the even topic in the protocol stack, where the signal channel is communicated as part of the event payload. In the frontend, the signal plugin exposes an API to subscribe to a signal channel. Each time the user receives a signal on the specified channel, a listener is called with the signal payload. + +Upon creating a new notification, a signal will be emitted by the `notification-backend`. + +The channel for notifications will be named `notifications` and the message will contain necessary information about the notification for rendering as well as action telling to refresh the notifications using the REST API. + +The notification payload must be in the signal to be able to show notification in the UI immediately after receiving the signal. + +If the notification status is updated, the signal service shall emit a signal without the notification payload and only with the action. ### Notifications Plugin @@ -85,13 +95,57 @@ The role of the notifications plugin is to manage the lifecycle of notifications The notification backend stores notification using the [database service](https://backstage.io/docs/backend-system/core-services/index#database). In particular it needs to store the following information for each notification: - ID -- Payload -- Receivers -- Read status by user +- Read date +- Done date +- Saved status +- Creation date +- Updated date (optional, for scoped notifications) +- Payload: + - Title + - Description (optional) + - Origin + - Link + - Recipients + - Severity (optional, default normal) + - Topic (optional) + - Scope (optional) + - Icon (optional) -The receivers is **not** a list of users, but rather a filter that describes who should receive the notification. It must be possible to evaluate this filter in a database query, so that we can efficiently fetch all notifications for a given user. The same filter will also be used by the signal backend to determine which users should receive a signal. +The recipients is **not** a list of users, but rather a filter that describes who should receive the notification. It must be possible to evaluate this filter in a database query, so that we can efficiently fetch all notifications for a given user. The same filter will also be used by the signal backend to determine which users should receive a signal. -The notification backend does not provide any new permissions, since creating notifications can only be done by other backend plugins, while reading notifications can only be done by the authenticated user. It is possible that we want to add a permissions for reading notifications, in particular for admin and impersonation use cases, but that is not part of this proposal or the initial implementation. +The title is mandatory human-readable text shortly describing the notifications. + +The description is an optional human-readable text providing more details to the user. + +The severity is one of the predefined values to help with presentation of the notifications or their filtering. Allowed values are: `critical`, `high`, `normal` (default), and `low`. + +The origin is a string identifying the creator of the notification, i.e. the BE plugin or external system. + +The topic is an optional string helping to group notifications of particular context. Its use cases include: + +- Several notifications emitted by an asynchronous external task can be grouped by a single topic +- A backend plugin can group several related messages to a particular processing, i.e. asynchronous progress monitoring + +If a scope is provided for a notification, it will either: + +- Create a new notification if user doesn't have existing notification in that scope and origin +- Update existing notification in that scope and origin so that it's unread considered as a new notification + +The idea of scope is to be able to reuse notifications about same information for example specific failing CI build. + +The timestamp of notification creation is auto-generated by the notifications backend at the time of receiving a request to create the notification. + +The icon is optional and is meant to improve UX. A string referencing an icon name from MUI icon library of a defined version. If missing, it will be determined from the severity. + +The link is a relative or absolute URL. As an example, it can be used: + +- by an external system to provide more details related to the notification +- by an external system to request an action within an asynchronous task +- by a BE plugin to provide link to other part of the Backstage UI (i.e. to the Catalog) + +The `notification-backend` does not provide any new permissions, since creating notifications can only be done by other backend plugins, while reading notifications can only be done by the authenticated user. It is possible that we want to add a permissions for reading notifications, in particular for admin and impersonation use cases, but that is not part of this proposal or the initial implementation. + +The `notification-backend` shall provide necessary parameters for paging and filtering notifications from the frontend. The notification frontend plugin provides a UI for viewing notifications, which in the initial implementation can be as simple as needed. The only requirement is that a user is able to view recent notifications and distinguish between read and unread notifications. A notification as marked as read once it has been interacted with. The frontend plugin also subscribes to the notifications signal channel and alerts the user when a new notification is received. @@ -129,89 +183,182 @@ The following backend service interfaces are added as part of this proposal. ```ts // TODO - We may want to add an additional wrapping here with interfaces for Notification and NotificationParameters -interface SendNotificationRequest { - receivers: SignalReceivers; - - /* TODO - please contribute :) */ -} - -interface SendNotificationResponse { - id: string; - receivers: SignalReceivers; - - /* TODO - please contribute :) */ -} - -interface NotificationService { - sendNotification( - request: SendNotificationRequest, - ): Promise; -} -``` - -#### `SignalService` - -```ts -type SignalReceivers = +export type NotificationRecipients = | { type: 'entity'; - entityRef: string; // typically a user or group entity + entityRef: string | string[]; // typically a user or group entity, otherwise `spec.owner` of the entity/entities } | { type: 'broadcast'; // all users }; -interface Signal { - channel: string; - receivers: SignalReceivers; - payload: JsonObject; +export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; + +export type NotificationPayload = { + title: string; + description?: string; + link: string; + additionalLinks?: string[]; + severity: NotificationSeverity; + topic?: string; + scope?: string; + icon?: string; +}; + +export type Notification = { + id: string; + userRef: string; + created: Date; + saved?: Date; + read?: Date; + updated?: Date; + origin: string; + payload: NotificationPayload; +}; + +interface SendNotificationRequest { + recipients: NotificationRecipients; + payload: NotificationPayload; } -interface SignalService { - signal(signal: Signal): Promise; +interface NotificationService { + sendNotification(request: SendNotificationRequest): Promise; } ``` +Each notification is always routed to individual users unless it's a broadcast. The `notification-backend` will figure out which users will receive a notification based on the `recipients` parameter, resolving it to the concrete list of users at the time of sending the notification. + +Each notification contains a `title` and a `link` for user to see further information. The `created`, `id`, `read` and `saved` properties are handled by the backend based and cannot be changed during the notification creation. + +Calling `sendNotification` should never throw an error so that it doesn't block the current processing. Notifications should be considered as second-level citizens that are not critical if not delivered. + +#### `SignalService` + +```ts +export type SignalPayload = { + recipients: string[] | string | null; + channel: string; + message: SignalType; +}; + +interface SignalService { + publish( + signal: SignalPayload, + ): Promise; +} +``` + +Example signal payload for a new notification: + +```json +{ + "action": "new_notification", + "notification": { + "title": "New notification", + "description": "This is the longer description of the notification", + "link": "/catalog" + } +} +``` + +#### Future considerations + +- Add icon for the notification request (for UX purposes) +- Broadcast messages are to be saved to a separate table for performance reasons +- OpenAPI tooling is taken into use for the notification router and client + ### Frontend API +Notification frontend shows users their own notifications in its own page and the number of unread notifications in the main menu item. + +By default, notifications that are `undone` will be shown in the notifications view. The notification `read` status is indicated by the UI. + +Notifications are set to `read` when the notification link is opened or the notification is set as `done` by the user. + +Notifications can be set to `done` by the user, and they are filtered out of the main view. + +Notifications can be saved for later use by the user. + +Notifications can be filtered by their `read`, `done` and `saved` statuses. + +Notifications are displayed in pages. + +User can search for notifications based on their title and description. + The following frontend API is added as part of this proposal. +#### `NotificationsApi` + +```ts +export type NotificationType = 'undone' | 'done' | 'saved'; + +export type GetNotificationsOptions = { + type?: NotificationType; + offset?: number; + limit?: number; + search?: string; +}; + +export type NotificationUpdateOptions = { + ids: string[]; + done?: boolean; + read?: boolean; + saved?: boolean; +}; + +export type NotificationStatus = { + unread: number; + read: number; +}; + +interface NotificationsApi { + getNotifications(options?: GetNotificationsOptions): Promise; + + getStatus(): Promise; + + updateNotifications( + options: UpdateNotificationsOptions, + ): Promise; +} +``` + #### `SignalApi` > TODO - we likely need a slightly different approach here, since APIs are lazy loaded. +> TODO - signal typing in https://github.com/backstage/backstage/pull/22656 + +```ts +export type NotificationSignal = { + action: string; + notification?: NotificationPayload; +}; + +const { lastSignal, isSignalsAvailable } = + useSignal('notifications'); +// isSignalsAvailable can be used to fallback to long-polling if wanted +``` + ```ts interface SignalSubscriber { unsubscribe(): void; } interface SignalApi { - subscribe( + subscribe( channel: string, - listener: (payload: JsonObject) => void, + onMessage: (message: SignalType) => void, ): SignalSubscriber; } ``` -> TODO: Add payload formats and API details +#### Future considerations - +- Notification frontend utilizes [Web Notification API](https://developer.mozilla.org/en-US/docs/Web/API/Notification) to notify user for new notifications +- Unread notifications count is displayed in the title of the page +- Configuration can be used to enable or disable features in the notification system (Web Notification API, title change, etc.) +- Replace absent signal service with long polling. This requires changes to the `signals` plugin as well. +- Notifications can have severity that is used to determine how notifications are shown to the user ## Release Plan @@ -220,12 +367,12 @@ The notification and signal plugins are released as two new plugins in the Backs For the notification plugin to reach a stable release we much reach the following: - A stable notifications payload format. -- A stable notifications receiver filter format. +- A stable notifications recipient filter format. - The event broker must have at least one implementation that supports scaled deployments. For the signal plugin to reach a stable release we much reach the following: -- A stable signal receiver filter format. +- A stable signal recipient filter format. - A stable signal channel API in the frontend. If any changes are required to the frontend framework to facilitate the implementation of notifications or signals, these will be released as experimental alpha features. They will stay in alpha until they are deemed stable enough, which must happen before a stable release of the notifications system. @@ -234,6 +381,8 @@ If any changes are required to the frontend framework to facilitate the implemen Since the signal plugin relies on the event broker for communication, it is a dependency for the notifications system as a whole. The event broker does not currently implement any transport for scaled deployments, which is a requirement for scaled deployments of the notification system. +Alternatively the notifications can work without the signals, but in this case the notifications are updated only during page refresh. + ## Alternatives ### Signal Plugin Separation diff --git a/beps/0002-dynamic-frontend-plugins/README.md b/beps/0002-dynamic-frontend-plugins/README.md index fc56e74c83..6581457e06 100644 --- a/beps/0002-dynamic-frontend-plugins/README.md +++ b/beps/0002-dynamic-frontend-plugins/README.md @@ -37,11 +37,11 @@ When editing BEPs, aim for tightly-scoped, single-topic PRs to keep discussions The summary of the BEP is a few paragraphs long and give a high-level overview of the features to be implemented. It should be possible to read *only* the summary and understand what the BEP is proposing to accomplish and what impact it has for users. --> -The dynamic frontend plugins feature is a way of loading additional frontend plugins at runtime, without the requirement of rebuilding and restarting a running backstage instance. +The dynamic frontend plugins feature is a way of loading additional frontend plugins at runtime, without the requirement of rebuilding and restarting a running Backstage instance. It also provides a method for packaging and distributing plugins as standalone artifacts, which can be installed directly into Backstage. -This system should significantly improve frontend plugin management for backstage instances. +This system should significantly improve frontend plugin management for Backstage instances, and makes it possible to deploy changes to the app without rebuilding the app itself. -The dynamic plugins leverage the declarative UI system to define what a plugin is and how it should be represented in the browser. +The dynamic plugins leverage the declarative nature of the new frontend system to define what a plugin is and how it is integrated into the rest of the app. ## Motivation @@ -50,6 +50,10 @@ This section is for explicitly listing the motivation, goals, and non-goals of this BEP. Describe why the change is important and the benefits to users. --> +Being able to dynamically install plugins unlocks new ways of deploying and managing Backstage, and has the potential to hugely improve adoption by lowering the barrier of entry. A Backstage installation currently requires quite a lot of care to maintain, meaning it may not be worth the investment for smaller organizations. By making it possible to set up and maintain a Backstage instance without the need to manage a codebase, we can make Backstage more accessible to a wider audience. + +The ability to dynamically install plugins also allows for more isolated development and deployment of plugins. This can benefit organizations with large Backstage projects, where splitting the codebase into multiple smaller projects can improve development experience and autonomy. + ### Goals -- discover and choose tooling to enable dynamic frontend plugins -- easy way of converting existing frontend plugins to be dynamic -- turning on and off UI plugins at runtime without the requirement of rebuilding or restarting backstage -- manage dynamic plugins declaratively +The overarching goal of this proposal is to outline the full path of how frontend plugin code in a repository makes it way into an existing Backstage app. As part of this, we define the following: -An additional goal might be exploring the scope of a "on demand" rending and loading. Currently all plugins, or at least some portion of them must be loaded at UI bootstrap. This approach is not fully dynamic and might be considered a waste of resources. Fully optimizing dynamic plugins loading would require additional changes to the new UI system. +- **Bundling**: How plugin code is packaged into a portable artifact. +- **Distribution**: How these artifacts are deployed or published and made available for apps to load. +- **Loading**: How an app is able to load these artifacts from remote or local sources at runtime. + +Each of these may have multiple possible solutions, in particular the loading and distribution steps. This proposal should aim to provide the minimum solutions that avoids the need for each adopter to have to re-bundle open source plugins, while still making it simple to use dynamic installation for their own internal plugins. + +There are a couple of sub-goals that are important for this to work: + +- Discover and choose the underlying tooling to enable dynamic frontend plugins. +- An easy way to package existing frontend plugins for dynamic installation. +- Reconfiguring the installed plugins at runtime without rebuilding the app, either declaratively or through code. ### Non-Goals @@ -71,6 +82,12 @@ What is out of scope for this BEP? Listing non-goals helps to focus discussion and make progress. --> +The **integration** of installed plugins and features is not in scope for this proposal, that is the responsibility of the new frontend system. + +This proposal does not contain any form of visual interface for managing dynamically installed plugins. The scope of this proposal only includes configuration of dynamic plugins through static configuration and TypeScript interfaces. + +This proposal does not aim to make it possible to add or remove plugins into an already running frontend app instance as created by `createApp` from the Backstage core APIs. The page must be reloaded for any updates to take effect. + ## Proposal + +## Entry format + +A glossary entry should consist of two required things and two optional things, + +1. a header, +2. a sentence defining what the thing is, and +3. an optional additional sentence or two giving more context into what the thing is and possible pointers on where to find more information, and possibly +4. links out to additional information. + +### The header + +The header (and first sentence) are the way users will discover your entry. The header has two parts, + +1. The actual term, this should be as minimal as possible. You can fit more information into the body of the entry. +2. A disambiguator, this allows users to understand when certain entries are context specific or may have different meanings in different contexts. + +### The term + +Think of this as a dictionary. Single words are the base units and most definitions refer to a single word. Acronyms are acceptable. An adjective and a noun are also useful, `conditional decision`, `backstage framework`, etc. After 3 or _maybe_ 4 words, you should be trying to simplify and place more content in your entry instead. + +In the title, your term should be in Title Case. It should also be in the singular. + +### The disambiguator + +The goal of a disambiguator is to differentiate terms that may have context specific meanings. This can have two interpretations, either + +1. There are multiple terms and we need to create clear boundaries between their contexts, or +2. There are single terms that have meanings that are specific to a single context. + +A good example for the first would be resources. Both the catalog plugin and permission plugin have the idea of resources, but they do not refer to the same thing. + +A good example for the second would be `Query translators`. In our case, this refers to _search_ query translators, but it may refer to database query translators or the latter. By disambiguating early, we avoid confusion. + +Beyond the above advice, there are no strong rules for when or when not to use a disambiguator. It is up to the entry writer and the reviewer. + +Your disambiguator should be short, but need not be a single word -- examples include "use cases", "search plugin", "catalog plugin". When used the disambiguator should have the following form, `({disambiguator})` (a parenthesis enclosed term) and will sit to the right of the title. Your disambiguator should use lower case. + +### Putting it together + +Your title should look like `{word} ({disambiguator})`. Entries are not nested besides the disambiguator and should sit at `##`. + +## The first sentence + +Your first sentence should include the what for your word. Your goal should be to answer the question, "What is x?". Do _not_ use the word in your first sentence. If you are using other words in the glossary in your definition, you should reference them following [the Referencing section](#referencing). + +If you have a term that could mean multiple things in the same context or the context is difficult to add boundaries for, you should separate each meaning into a separate section of the entry using an ordered list. For example, + +```md +## Bundle + +1. A deployment artifact. +2. A collection of packages. +``` + +## Additional sentences + +You may not be able to fully define what you want in a single sentence. Use more sentences to flush out the meaning; however, if you start to get into the weeds, you should reconsider rehousing that information into a plugin specific "concepts" section. It's okay for words to be duplicated across both if the concepts section adds meaningful technical or architectural discussion. + +## Linking out to additional resources + +If the term you're defining has a better or more in depth source for that information, link to it. This can include plugin specific concept documents, external documentation, or core framework documentation. + +You should format these links as + +```md +See [the glossary](./glossary.md) for more details. +``` + +. Additional links beyond the first one should be appended with `and` or `or` as necessary. + +## Putting it all together + +```md +## Component (catalog plugin) + +A software product that is managed in the Backstage [Software Catalog](#software-catalog). A component can be a service, website, library, data pipeline, or any other piece of software managed as a single project. See [the catalog docs](https://backstage.io/docs/features/software-catalog/system-model) for more information. +``` + +## Referencing + +### In the glossary + +You should reference often. Words are defined recursively, especially in tech and un-nesting some terms requires additional glossary items. It's okay if your terms require multiple other terms to build on. Your goal with referencing is to provide small reusable words that you can trust users know the definition of. + +### In the text + +You should reference (and create a new entry if it doesn't exist) whenever you see a new word that a reasonable reader may not know. If you've already added a reference in your current passage -- in the glossary this will be your entry -- don't add a new reference. References should point initially to the glossary and if there is additional information (like a concepts page), the glossary should have a link to that page. diff --git a/docs/releases/v1.23.0-next.1-changelog.md b/docs/releases/v1.23.0-next.1-changelog.md new file mode 100644 index 0000000000..19bdba21dc --- /dev/null +++ b/docs/releases/v1.23.0-next.1-changelog.md @@ -0,0 +1,3250 @@ +# Release v1.23.0-next.1 + +## @backstage/catalog-client@1.6.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- c04c42b: Internal updates to auto-generated files. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/core-compat-api@0.2.0-next.1 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- edfd3a5: Updated dependency `@oriflame/backstage-plugin-score-card` to `^0.8.0`. +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-components@0.14.0-next.0 + +### Minor Changes + +- 281e8c6: **BREAKING**: Removed the `SidebarIntro` component as it was providing instructions for features that do not exist, along with `IntroCard`. If you were relying on this component and want to keep using it you can refer to the original implementations of [`SidebarIntro`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L149) and [`IntroCard`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L100). + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-app-api@0.6.0-next.1 + +### Minor Changes + +- bdf4a8e: **BREAKING**: Removed the experimental `createExtensionTree` API. + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- e586f79: Wrap the root element with the analytics context to ensure it always exists for all extensions. +- fb9b5e7: The default `ComponentsApi` implementation now uses the `ComponentRef` ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of `@backstage/frontend-plugin-api` would break the app. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-plugin-api@0.6.0-next.1 + +### Minor Changes + +- e586f79: **BREAKING**: Replace default plugin extension and plugin ids to be `app` instead of `root`. + +### Patch Changes + +- bc621aa: Added `RouteResolutionsApi` as a replacement for the routing context. +- 1e61ad3: App component extensions are no longer wrapped in an `ExtensionBoundary`, allowing them to inherit the outer context instead. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/integration@1.9.0-next.0 + +### Minor Changes + +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-analytics-module-ga@0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-ga4@0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-newrelic-browser@0.1.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.0 + +### Minor Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-azure-sites-backend@0.2.0-next.1 + +### Minor Changes + +- 28610f4: **BREAKING**: `catalogApi` and `permissionsApi` are now a requirement to be passed through to the `createRouter` function. + + You can fix the typescript issues by passing through the required dependencies like the below `diff` shows: + + ```diff + import { + createRouter, + AzureSitesApi, + } from '@backstage/plugin-azure-sites-backend'; + import { Router } from 'express'; + import { PluginEnvironment } from '../types'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + + const catalogClient = new CatalogClient({ + + discoveryApi: env.discovery, + + }); + + return await createRouter({ + logger: env.logger, + azureSitesApi: AzureSitesApi.fromConfig(env.config), + + catalogApi: catalogClient, + + permissionsApi: env.permissions, + }); + } + ``` + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-catalog-backend@1.17.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- 89b674c: Minor performance improvement for `queryEntities` when the limit is 0. +- efa8160: Rollback the change for wildcard discovery, this fixes a bug with the `AzureUrlReader` not working with wildcard paths +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + +## @backstage/plugin-catalog-backend-module-github@0.5.0-next.1 + +### Minor Changes + +- a950ed0: Prevent Entity Providers from eliminating Users and Groups from the DB when the synchronisation fails + +### Patch Changes + +- 9477133: Decreased number of teams fetched by GraphQL Query responsible for fetching Teams and Members in organization, due to timeouts when running against big organizations +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-scaffolder@1.18.0-next.1 + +### Minor Changes + +- 9b9c05c: Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. + +### Patch Changes + +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- 09f8b31: Simple typo fix in the fetch:template action example on the word 'skeleton'. +- f6792c6: Move the `NODE_OPTIONS` messaging for `--no-node-snapshot` to the `SecureTemplater` in order to get better messaging at runtime +- e1c479d: When using node 20+ the `scaffolder-backend` will now throw an error at startup if the `--no-node-snapshot` option was + not provided to node. +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.1 + +### Minor Changes + +- fd5eb1c: Allow to force the creation of a pull request from a forked repository + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-node@0.3.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.1 + +### Minor Changes + +- b07ec70: Use more distinguishable icons for link (`Link`) and text output (`Description`). + +### Patch Changes + +- 3f60ad5: fix for: converting circular structure to JSON error +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- 82affc7: Fix issue where `ui:schema` was replaced with an empty object if `dependencies` is defined +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-techdocs@1.10.0-next.1 + +### Minor Changes + +- af4d147: Updated the styling for code tags to avoid word break. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/app-defaults@1.4.8-next.1 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/backend-app-api@0.5.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/backend-common@0.21.0-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/backend-dev-utils@0.1.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + +## @backstage/backend-dynamic-feature-service@0.1.1-next.1 + +### Patch Changes + +- 8723c5a: Fix wrong `alpha` support in dynamic plugins support: the `alpha` sub-package should not be required for the dynamic plugins to be loaded under the new backend system. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/backend-openapi-utils@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/catalog-model@1.4.4-next.0 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.1 + +### Patch Changes + +- b58673e: Upgrade jest +- 08804c3: Fixed an issue that would cause an invalid `__backstage-autodetected-plugins__.js` to be written when using experimental module discovery. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/core-app-api@1.11.4-next.0 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-plugin-api@1.8.3-next.0 + +### Patch Changes + +- e586f79: Throw a more specific exception `NotImplementedError` when an API implementation cannot be found. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.1 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/theme@0.5.0 + +## @backstage/frontend-test-utils@0.1.2-next.1 + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + +## @backstage/repo-tools@0.6.0-next.1 + +### Patch Changes + +- c04c42b: Fixes an issue where comments would be duplicated in the template. Also, removes a header with the title and version of the OpenAPI spec from generated code. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + +## @techdocs/cli@1.8.2-next.1 + +### Patch Changes + +- d8d243c: fix: mkdocs parameter casing +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + +## @backstage/test-utils@1.5.0-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-adr@0.6.13-next.1 + +### Patch Changes + +- 987f565: Fix alignment of text in `AdrSearchResultListItem`. Update size and font to match other `SearchResultListItem`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-backend@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-common@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/dev-utils@1.0.27-next.1 + +## @backstage/plugin-airbrake-backend@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-apache-airflow@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-api-docs@0.10.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-apollo-explorer@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-app-backend@0.3.58-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.10-next.1 + +## @backstage/plugin-app-node@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-app-visualizer@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-auth-backend@0.20.4-next.1 + +### Patch Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.1 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.1 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-auth-node@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.1 + +### Patch Changes + +- 25bda45: Fixed bug with `extractPartsFromAsset` that resulted in a leading `.` being removed from the path in an otherwise valid path (ex. `.assets/image.png`). The leading `.` will now only be moved for paths beginning with `./`. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-azure-sites@0.1.19-next.1 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-azure-sites-common@0.1.2-next.0 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-badges@0.2.54-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-bazaar@0.2.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-bitrise@0.1.57-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-catalog@1.17.0-next.1 + +### Patch Changes + +- 987f565: Add line clamping to `CatalogSearchResultListItem` +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-catalog-common@1.0.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-graph@0.3.4-next.1 + +### Patch Changes + +- f937aae: use `CatalogClient.getEntitiesByRefs()` to reduce the number of backend requests from plugin `catalog-graph` +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.10.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-node@1.6.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-catalog-react@1.9.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-cicd-statistics@0.1.32-next.1 + +## @backstage/plugin-circleci@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-cloudbuild@0.4.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-code-climate@0.1.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-code-coverage@0.2.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-codescene@0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.50-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-react@0.4.20-next.0 + +## @backstage/plugin-devtools-backend@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-dynatrace@8.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-entity-feedback@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-events-backend@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-events-node@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-explore@0.4.16-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-explore-react@0.0.36-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-explore-backend@0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + +## @backstage/plugin-explore-react@0.0.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-fossa@0.2.62-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-git-release-manager@0.3.42-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-actions@0.6.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + +## @backstage/plugin-github-deployments@0.1.61-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-issues@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-gitops-profiles@0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-gocd@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-graphql-voyager@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-home@0.6.2-next.1 + +### Patch Changes + +- 384c132: Added filter support for HomePageVisitedByType in order to enable filtering entities from the list +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + +## @backstage/plugin-home-react@0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-ilert@0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## @backstage/plugin-jenkins-backend@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-jenkins-common@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-kafka-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-backend@0.14.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-kubernetes-node@0.1.4-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-common@0.7.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-node@0.1.4-next.1 + +### Patch Changes + +- cceed8a: Introduced `PinnipedHelper` class to enable authentication to Kubernetes clusters through Pinniped +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-react@0.3.0-next.1 + +### Patch Changes + +- 3c184af: Extracted common dialog component. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-lighthouse@0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-nomad-backend@0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-octopus-deploy@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-opencost@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-org@0.6.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-org-react@0.1.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-pagerduty@0.7.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + +## @backstage/plugin-permission-node@0.7.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-react@0.4.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-playlist-backend@0.3.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-rollbar-backend@0.1.55-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-common@1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-search@1.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend@1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-shortcuts@0.3.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-signals-react@0.0.1-next.1 + +## @backstage/plugin-signals-backend@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + +## @backstage/plugin-signals-node@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + +## @backstage/plugin-signals-react@0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-sonarqube-react@0.1.13-next.0 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-sonarqube-react@0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-splunk-on-call@0.4.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + +## @backstage/plugin-stack-overflow@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.1 + +## @backstage/plugin-stackstorm@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + +## @backstage/plugin-tech-insights-node@0.4.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + +## @backstage/plugin-techdocs-backend@1.9.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + +## @backstage/plugin-techdocs-node@1.11.2-next.1 + +### Patch Changes + +- 77e3050: Update to a newer version of `@trendyol-js/openstack-swift-sdk` +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-react@1.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-todo@0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## @backstage/plugin-user-settings@0.8.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + +## @backstage/plugin-vault@0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-vault-node@0.1.3-next.1 + +## @backstage/plugin-vault-node@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + +## @backstage/plugin-xcmetrics@0.2.48-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + +## example-app@0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-stack-overflow@0.1.25-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-nomad@0.1.11-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-signals@0.0.1-next.1 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## example-app-next@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - app-next-example-plugin@0.0.6-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## app-next-example-plugin@0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + +## example-backend@0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - example-app@0.2.92-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-code-coverage-backend@0.2.24-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-explore-backend@0.0.20-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kafka-backend@0.3.8-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-rollbar-backend@0.1.55-next.1 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-signals-backend@0.0.1-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + - @backstage/plugin-tech-insights-backend@0.5.24-next.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + +## example-backend-next@0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-defaults@0.2.10-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-sonarqube-backend@0.2.12-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + +## e2e-test@0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + +## @internal/plugin-todo-list@1.0.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + +## @internal/plugin-todo-list-backend@1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 diff --git a/docs/releases/v1.23.0-next.2-changelog.md b/docs/releases/v1.23.0-next.2-changelog.md new file mode 100644 index 0000000000..2830217e39 --- /dev/null +++ b/docs/releases/v1.23.0-next.2-changelog.md @@ -0,0 +1,3549 @@ +# Release v1.23.0-next.2 + +## @backstage/app-defaults@1.5.0-next.2 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 214f2da: Fix invalid HTTP status code 501 in Error Page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + +## @backstage/core-app-api@1.12.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-plugin-api@1.9.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/repo-tools@0.6.0-next.2 + +### Minor Changes + +- 4c62935: **BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. + + The following commands now live under the `package` namespace, + + - `schema openapi generate` is now `package schema openapi generate --server` + - `schema openapi generate-client` is now `package schema openapi generate --client-package` + - `schema openapi init` is now `package schema openapi init` + + And these commands live under the new `repo` namespace, + + - `schema openapi lint` is now `repo schema openapi lint` + - `schema openapi test` is now `repo schema openapi test` + - `schema openapi verify` is now `repo schema openapi verify` + + The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. + +### Patch Changes + +- aa91cd6: Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend@0.21.0-next.2 + +### Minor Changes + +- 7dd8463: **BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. + + This comes with breaking changes to config options: + + - `audience` is now mandatory + - `wantAuthnResponseSigned` is now exposed and defaults to `true` + - `wantAssertionsSigned` is now exposed and defaults to `true` + +### Patch Changes + +- 97f8724: Support additional algorithms in the `/.well-known/openid-configuration` endpoint. +- a9e0107: The auth backend will now refuse to issue user tokens are excessively large. +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- 8e8a25d: Ability for user to configure backstage token expiration +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.1 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.2 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.2 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.2 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.2 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-graph@0.4.0-next.2 + +### Minor Changes + +- 3dc64e9: Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-react@1.10.0-next.2 + +### Minor Changes + +- 3dc64e9: Add support to `configSchema` option on the `createEntityCardExtension` factory function. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kubernetes-backend@0.15.0-next.2 + +### Minor Changes + +- 666eff5: **BREAKING** The backend will fail to start if two clusters in the app-config + have the same name. The requirement for unique names has been declared in the + docs for some time, but is now enforced. + +### Patch Changes + +- 1c3cb3b: Backstage will log a warning whenever duplicate cluster names are detected -- + even if clusters sharing the same name come from separate locators. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-kubernetes-node@0.1.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-scaffolder@1.18.0-next.2 + +### Minor Changes + +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.2 + +### Minor Changes + +- 5eb6882: Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into + `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and + `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + `@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. + + Please use any of the two replacements depending on your needs. + + ```diff + - backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/backend-app-api@0.5.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-common@0.21.0-next.2 + +### Patch Changes + +- 3489d05: `FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 7fb7a79: Add a config declaration for `workingDirectory` +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-dev-utils@0.1.4-next.0 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + +## @backstage/backend-dev-utils@0.1.4-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +## @backstage/backend-dynamic-feature-service@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/backend-openapi-utils@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/errors@1.2.3 + +## @backstage/backend-plugin-api@0.6.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/backend-tasks@0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/cli@0.25.2-next.2 + +### Patch Changes + +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. +- 5c05f8a: Harmonize the package naming and allow custom prefix +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/release-manifests@0.0.11 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/version-bridge@1.0.7 + +## @backstage/core-components@0.14.0-next.1 + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +- 214f2da: Fix invalid HTTP status code 501 in Error Page + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/version-bridge@1.0.7 + +## @backstage/create-app@0.5.11-next.2 + +### Patch Changes + +- c420081: Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. +- f71352c: Bumped TypeScript to version `5.3`. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/frontend-app-api@0.6.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-plugin-api@0.6.0-next.2 + +### Patch Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## @backstage/frontend-test-utils@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + +## @techdocs/cli@1.8.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + +## @backstage/test-utils@1.5.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/theme@0.5.1-next.0 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +## @backstage/plugin-adr@0.6.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-adr-backend@0.4.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-airbrake@0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/dev-utils@1.0.27-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-airbrake-backend@0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.46-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-analytics-module-ga@0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-ga4@0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-newrelic-browser@0.1.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-apache-airflow@0.2.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-api-docs@0.10.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.6-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + +## @backstage/plugin-apollo-explorer@0.1.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-app-backend@0.3.58-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 998ccf6: Support injecting config multiple times in a single bundle +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-app-node@0.1.10-next.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-app-node@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-app-visualizer@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.1 + +### Patch Changes + +- d309cad: Refactored to use the `jose` library for JWT handling. +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-auth-node@0.4.4-next.2 + +### Patch Changes + +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.12-next.2 + +### Patch Changes + +- e2083df: Added alpha support for the New Frontend System (Declarative Integration) +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## @backstage/plugin-azure-devops-backend@0.5.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-azure-sites@0.1.19-next.2 + +### Patch Changes + +- 09a9c95: Updated README +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-azure-sites-backend@0.2.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 4376655: Added `permissionIntegrationRouter` for azure-sites-backend routes +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-badges@0.2.54-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar@0.2.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.8-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-bitrise@0.1.57-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-catalog@1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-catalog-backend@1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-aws@0.3.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.29-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.23-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.17-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- bc644fb: Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-catalog-import@0.10.6-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-catalog-node@1.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-cicd-statistics@0.1.32-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-circleci@0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-cloudbuild@0.4.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-code-climate@0.1.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-code-coverage@0.2.23-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.24-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-codescene@0.1.22-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.50-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.9-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + +## @backstage/plugin-devtools-backend@0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-dynatrace@9.0.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-entity-feedback@0.2.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-events-backend@0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-events-backend-module-azure@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-gerrit@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-backend-module-github@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-events-backend-test-utils@0.1.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.2 + +## @backstage/plugin-events-node@0.2.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-explore@0.4.16-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 796d427: Use the EntityDisplayName component for rendering Group nodes +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-explore-react@0.0.36-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-explore-backend@0.0.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-explore-react@0.0.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-fossa@0.2.62-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.23-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-git-release-manager@0.3.42-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-actions@0.6.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-deployments@0.1.61-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-issues@0.2.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.24-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-gitops-profiles@0.3.45-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-gocd@0.1.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphiql@0.3.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## @backstage/plugin-graphql-voyager@0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-home@0.6.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- dc7ae8b: Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-home-react@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-ilert@0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.5-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## @backstage/plugin-jenkins-backend@0.3.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-kafka@0.3.30-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-kafka-backend@0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-node@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-kubernetes-react@0.3.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## @backstage/plugin-lighthouse@0.4.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.4.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.45-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-nomad-backend@0.1.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-notifications@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-notifications-backend@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/plugin-notifications-node@0.0.1-next.0 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-notifications-common@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage + +## @backstage/plugin-notifications-node@0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-octopus-deploy@0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-opencost@0.2.5-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 03c5bbe: Updated dependency `date-fns` to `^3.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @backstage/plugin-org@0.6.20-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 6e1bf50: Added basic support for the new frontend system, exported from the `/alpha` subpath. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## @backstage/plugin-org-react@0.1.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-pagerduty@0.7.2-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.28-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-node@0.7.21-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-permission-react@0.4.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-playlist@0.2.4-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-playlist-backend@0.3.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## @backstage/plugin-proxy-backend@0.4.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-rollbar-backend@0.1.55-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend@1.21.0-next.2 + +### Patch Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.2 + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.34-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.2 + +### Patch Changes + +- 8b269e1: Provide default branch when creating repositories. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.18-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.31-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-node@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-scaffolder-react@1.8.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 2985186: Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## @backstage/plugin-search@1.4.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend@1.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-pg@0.5.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-backend-node@1.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-search-react@1.7.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-sentry@0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-shortcuts@0.3.19-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-backend@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-node@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-react@0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-sonarqube-react@0.1.13-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-sonarqube-backend@0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-sonarqube-react@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-splunk-on-call@0.4.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## @backstage/plugin-stack-overflow@0.1.25-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-stack-overflow-backend@0.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.2 + +## @backstage/plugin-stackstorm@0.1.11-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.24-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 + +### Patch Changes + +- 25cfb76: Add support for the new backend system. + + A new backend module for the tech-insights backend + was added and exported as `default`. + + The module will register the `JsonRulesEngineFactCheckerFactory` + as `FactCheckerFactory`, loading checks from the config. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); + ``` + +- bc72782: Support loading `TechInsightsJsonRuleCheck` instances from config. + + Uses the check `id` as key. + + Example: + + ```yaml title="app-config.yaml" + techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-node@0.4.16-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## @backstage/plugin-techdocs@1.10.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + +## @backstage/plugin-techdocs-backend@1.9.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + +### Patch Changes + +- ab9c9eb: Fixed the value label text color in dark mode for the TextSize addon. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-techdocs-node@1.11.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## @backstage/plugin-techdocs-react@1.1.16-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/version-bridge@1.0.7 + +## @backstage/plugin-todo@0.2.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## @backstage/plugin-user-settings@0.8.1-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- d5b14a0: conditionally rendering the user name and email in user settings page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-vault@0.1.25-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-backend@0.4.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-vault-node@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-node@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## @backstage/plugin-xcmetrics@0.2.48-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## example-app@0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-signals@0.0.1-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-nomad@0.1.11-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/plugin-notifications@0.0.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## example-app-next@0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - app-next-example-plugin@0.0.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.2 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## app-next-example-plugin@0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## example-backend@0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-tech-insights-backend@0.5.24-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-code-coverage-backend@0.2.24-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-explore-backend@0.0.20-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/plugin-rollbar-backend@0.1.55-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - example-app@0.2.92-next.2 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-kafka-backend@0.3.8-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## example-backend-next@0.0.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/backend-defaults@0.2.10-next.2 + - @backstage/plugin-sonarqube-backend@0.2.12-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-backend@0.0.1-next.0 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## e2e-test@0.2.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.2 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.91-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + +## @internal/plugin-todo-list@1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## @internal/plugin-todo-list-backend@1.0.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 diff --git a/docs/tutorials/configuring-plugin-databases.md b/docs/tutorials/configuring-plugin-databases.md index 8cd5ce99a9..528d2c6325 100644 --- a/docs/tutorials/configuring-plugin-databases.md +++ b/docs/tutorials/configuring-plugin-databases.md @@ -39,10 +39,10 @@ both of them. ```bash # From your Backstage root directory # install pg if you need PostgreSQL -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg # install SQLite 3 if you intend to set it as the client -yarn add --cwd packages/backend better-sqlite3 +yarn --cwd packages/backend add better-sqlite3 ``` From an operational perspective, you only need to install drivers for clients diff --git a/docs/tutorials/migrate-to-mui5.md b/docs/tutorials/migrate-to-mui5.md index aaf8cff7f5..c65abbc680 100644 --- a/docs/tutorials/migrate-to-mui5.md +++ b/docs/tutorials/migrate-to-mui5.md @@ -19,7 +19,7 @@ By default, the `UnifiedThemeProvider` is already used. If you add a custom them themes: [ { // ... - provider: ({ children }) => ( + Provider: ({ children }) => ( - . - {children}. - /packages/app`) with: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin- +yarn --cwd packages/app add @backstage/plugin- ``` After that, you inject the plugin into the application where you want it to be exposed. Please read the documentation for the specific plugin you are installing for more information. diff --git a/microsite/data/on-demand/20211117-1.yaml b/microsite/data/on-demand/20211117-1.yaml deleted file mode 100644 index 21410fc85f..0000000000 --- a/microsite/data/on-demand/20211117-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: November 17, 2021 -category: Meetup -description: At this month’s adopters session, get the scoop on Spotify’s plan for paid plugins, a first look at Box’s DevPortal, and answers to big questions, like “How will I know if Backstage will work at a large company like mine?” -youtubeUrl: https://youtu.be/apCDT3_DmFk -youtubeImgUrl: https://i1.ytimg.com/vi/apCDT3_DmFk/mqdefault.jpg diff --git a/microsite/data/on-demand/20211118-1.yaml b/microsite/data/on-demand/20211118-1.yaml deleted file mode 100644 index 754344a62e..0000000000 --- a/microsite/data/on-demand/20211118-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: November 18, 2021 -category: Meetup -description: In the contributors track for this month’s community session, hear about upcoming deprecations, the fruits of Hacktoberfest, the future of both the Kubernetes plugin and the Tech Insights plugin, tips on contributing, and more. -youtubeUrl: https://youtu.be/n1OWGwYAOiI -youtubeImgUrl: https://i1.ytimg.com/vi/n1OWGwYAOiI/mqdefault.jpg diff --git a/microsite/data/on-demand/20211215-1.yaml b/microsite/data/on-demand/20211215-1.yaml deleted file mode 100644 index ce51fe3a9c..0000000000 --- a/microsite/data/on-demand/20211215-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: December 15, 2021 -category: Meetup -description: At our final adopters session of 2021, the community received a grab bag of end-of-year treats, including eye-catching infographics, a presentation from finance startup Brex about their path to adopting Backstage, and tips on branding your Backstage portal. Plus, get your official Backstage Zoom background. But first up, a quick look back at the year that was. -youtubeUrl: https://youtu.be/0QMQYSTKAx0 -youtubeImgUrl: https://i1.ytimg.com/vi/0QMQYSTKAx0/mqdefault.jpg diff --git a/microsite/data/on-demand/20211216-1.yaml b/microsite/data/on-demand/20211216-1.yaml deleted file mode 100644 index 9600a5f13b..0000000000 --- a/microsite/data/on-demand/20211216-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: December 16, 2021 -category: Meetup -description: At our final contributors session of 2021, see how the new Backstage Upgrade Helper works and enjoy smoother upgrades, hear updates from the maintainers, and meet our contributor of the month. As in the adopters session, first we celebrate the year’s milestones and share a few resources you can use to spread the word about Backstage. -youtubeUrl: https://youtu.be/nYjI2j-lWEM -youtubeImgUrl: https://i1.ytimg.com/vi/nYjI2j-lWEM/mqdefault.jpg diff --git a/microsite/data/on-demand/20220216-1.yaml b/microsite/data/on-demand/20220216-1.yaml deleted file mode 100644 index 1fc7371345..0000000000 --- a/microsite/data/on-demand/20220216-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: February 16, 2022 -category: Meetup -description: This community session marks one year of Backstage community sessions! In this session, we celebrate one year of the Backstage community, hear from Patrik on stabilizing core APIs, learn more about Homepage Templates, find hidden info about your catalog entities, and Q&A. -youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: https://i1.ytimg.com/vi/evf_LV0KzIk/mqdefault.jpg diff --git a/microsite/data/on-demand/20220223-1.yaml b/microsite/data/on-demand/20220223-1.yaml deleted file mode 100644 index 6efc9fe22c..0000000000 --- a/microsite/data/on-demand/20220223-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Community Sessions -date: February 23, 2022 -category: Meetup -description: Community Sessions Anniversary , SWAG opportunity❗, TechDocs add-on framework, URL Reader demo 👨‍💻, Q&A -youtubeUrl: https://youtu.be/Buu_KWdIFwU -youtubeImgUrl: https://i1.ytimg.com/vi/Buu_KWdIFwU/mqdefault.jpg diff --git a/microsite/data/on-demand/20220316-1.yaml b/microsite/data/on-demand/20220316-1.yaml deleted file mode 100644 index b4ecc1f696..0000000000 --- a/microsite/data/on-demand/20220316-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopter Community Sessions -date: March 16, 2022 -category: Meetup -description: In this community session, we celebrate Backstage’s 2nd birthday and a few other milestones that Backstage reached in March! The amazing Suzanne Daniels also put together a panel from some of our community members to discuss all things developer experience! -youtubeUrl: https://youtu.be/2s98-sxJT1c -youtubeImgUrl: https://i1.ytimg.com/vi/2s98-sxJT1c/mqdefault.jpg -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220323-1.yaml b/microsite/data/on-demand/20220323-1.yaml deleted file mode 100644 index 2f198775e8..0000000000 --- a/microsite/data/on-demand/20220323-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: March 23, 2022 -category: Meetup -description: In this Community Session, we review the recent milestones our Backstage community hit, chat with Djamaile Rahamat, our contributor spotlight, and watch three demos ranging from new plugins to test environments. -youtubeUrl: https://youtu.be/BAzxljI765U -youtubeImgUrl: https://i1.ytimg.com/vi/BAzxljI765U/mqdefault.jpg -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220420-1.yaml b/microsite/data/on-demand/20220420-1.yaml deleted file mode 100644 index 96560ec436..0000000000 --- a/microsite/data/on-demand/20220420-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: April 20, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/mFi_X58igzk -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/44 diff --git a/microsite/data/on-demand/20220427-1.yaml b/microsite/data/on-demand/20220427-1.yaml deleted file mode 100644 index 80ec8eae00..0000000000 --- a/microsite/data/on-demand/20220427-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: April 27, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/44 diff --git a/microsite/data/on-demand/20220518-1.yaml b/microsite/data/on-demand/20220518-1.yaml deleted file mode 100644 index e8d70df2d9..0000000000 --- a/microsite/data/on-demand/20220518-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: May 18, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/dEd1fl3wRvo -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/46 diff --git a/microsite/data/on-demand/20220525-1.yaml b/microsite/data/on-demand/20220525-1.yaml deleted file mode 100644 index f9a3f87a8a..0000000000 --- a/microsite/data/on-demand/20220525-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: May 25, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/neNipVE5ffY -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/46 diff --git a/microsite/data/on-demand/20220615-1.yaml b/microsite/data/on-demand/20220615-1.yaml deleted file mode 100644 index fb296dd6ce..0000000000 --- a/microsite/data/on-demand/20220615-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: June 15, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/aKZnjnE5Wy8 -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/49 diff --git a/microsite/data/on-demand/20220622-1.yaml b/microsite/data/on-demand/20220622-1.yaml deleted file mode 100644 index 27634609cb..0000000000 --- a/microsite/data/on-demand/20220622-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: June 22, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/E-jWqWXBxUY -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/49 diff --git a/microsite/data/on-demand/20220720-1.yaml b/microsite/data/on-demand/20220720-1.yaml deleted file mode 100644 index a7c0386a56..0000000000 --- a/microsite/data/on-demand/20220720-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Adopters Community Sessions -date: July 20, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/4VFNlPxWcx8 -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/52 diff --git a/microsite/data/on-demand/20220727-1.yaml b/microsite/data/on-demand/20220727-1.yaml deleted file mode 100644 index b25b2e0789..0000000000 --- a/microsite/data/on-demand/20220727-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Contributor Community Sessions -date: July 27, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/pNLLrNN_hkE -youtubeImgUrl: https://backstage.io/img/b-sessions.png -rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com -eventUrl: https://github.com/backstage/community/issues/52 diff --git a/microsite/data/on-demand/20220817-1.yaml b/microsite/data/on-demand/20220817-1.yaml deleted file mode 100644 index f67c8cf4cd..0000000000 --- a/microsite/data/on-demand/20220817-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Adopters Community Sessions -date: August 17, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/qYnvc8ge1kg -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220824-1.yaml b/microsite/data/on-demand/20220824-1.yaml deleted file mode 100644 index a2387a8aad..0000000000 --- a/microsite/data/on-demand/20220824-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Contributor Community Sessions -date: August 24, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/8ydEFFiuHAc -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220921-1.yaml b/microsite/data/on-demand/20220921-1.yaml deleted file mode 100644 index fe3dda08c0..0000000000 --- a/microsite/data/on-demand/20220921-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Adopters Community Sessions -date: September 21, 2022 -category: Meetup -description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. -youtubeUrl: https://youtu.be/K44RQAVWWnY -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/on-demand/20220928-1.yaml b/microsite/data/on-demand/20220928-1.yaml deleted file mode 100644 index 31ae752e3a..0000000000 --- a/microsite/data/on-demand/20220928-1.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Contributor Community Sessions -date: September 28, 2022 -category: Meetup -description: Join the maintainers and contributors for the Contributor Community Sessions -youtubeUrl: https://youtu.be/jmNT5x3mKaQ -youtubeImgUrl: https://backstage.io/img/b-sessions.png diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml index de2659c1e1..d846235bd6 100644 --- a/microsite/data/plugins/github-codespaces.yaml +++ b/microsite/data/plugins/github-codespaces.yaml @@ -1,6 +1,6 @@ --- title: GitHub Codespaces -author: Aditya Singhal +author: Aditya Singhal - Lab45 authorUrl: https://github.com/adityasinghal26 category: Development description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. diff --git a/microsite/data/plugins/revision.yaml b/microsite/data/plugins/revision.yaml new file mode 100644 index 0000000000..aeb0273602 --- /dev/null +++ b/microsite/data/plugins/revision.yaml @@ -0,0 +1,10 @@ +--- +title: Revision +author: Revision +authorUrl: https://github.com/revision-org +category: Visualization +description: Access Revision architecture diagrams from within Backstage +documentation: https://github.com/revision-org/backstage-plugins/tree/main/plugins/revision +iconUrl: https://raw.githubusercontent.com/revision-org/revision-assets/b4895ae036e99341576caf1c9bbf92ec89fb65dc/logo-black-full.svg +npmPackageName: '@revisionapp/backstage-revision-plugin' +addedDate: '2024-01-26' diff --git a/microsite/data/plugins/statuspage.yaml b/microsite/data/plugins/statuspage.yaml new file mode 100644 index 0000000000..652052defc --- /dev/null +++ b/microsite/data/plugins/statuspage.yaml @@ -0,0 +1,10 @@ +--- +title: Statuspage.io Plugin +author: AxisCommunications +authorUrl: https://github.com/AxisCommunications +category: Monitoring +description: The Statuspage plugin allows you to embedd https://statuspage.io components, component groups and dashboards in Backstage. +documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/statuspage/README.md +iconUrl: https://raw.githubusercontent.com/AxisCommunications/backstage-plugins/main/plugins/statuspage/media/logo.png +npmPackageName: '@axis-backstage/plugin-statuspage' +addedDate: '2024-02-06' diff --git a/microsite/data/plugins/time-saver.yaml b/microsite/data/plugins/time-saver.yaml new file mode 100644 index 0000000000..02f088ffa1 --- /dev/null +++ b/microsite/data/plugins/time-saver.yaml @@ -0,0 +1,10 @@ +--- +title: TimeSaver +author: tduniec +authorUrl: https://github.com/tduniec +category: Discovery +description: Visualise your time saved using Backstage Scaffolder templates +documentation: https://github.com/tduniec/backstage-timesaver-plugin/blob/main/README.md +iconUrl: https://raw.githubusercontent.com/tduniec/backstage-timesaver-plugin/main/img/tsLogo.png +npmPackageName: '@tduniec/backstage-plugin-time-saver' +addedDate: 2024-01-30 diff --git a/microsite/data/plugins/umami.yaml b/microsite/data/plugins/umami.yaml new file mode 100644 index 0000000000..5f1fc208d4 --- /dev/null +++ b/microsite/data/plugins/umami.yaml @@ -0,0 +1,10 @@ +--- +title: Umami Analytics +author: AxisCommunications +authorUrl: https://github.com/AxisCommunications +category: Monitoring +description: Track usage of your Backstage instance using Umami Analytics. +documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/analytics-module-umami/README.md +iconUrl: /img/umami-logo.svg +npmPackageName: '@axis-backstage/plugin-analytics-module-umami' +addedDate: '2024-02-05' diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js index df2833b3e2..a49fca85c7 100644 --- a/microsite/docusaurus.config.js +++ b/microsite/docusaurus.config.js @@ -144,6 +144,14 @@ module.exports = { from: '/docs/features/software-templates/testing-scaffolder-alpha', to: '/docs/features/software-templates/migrating-to-rjsf-v5', }, + { + from: '/docs/auth/glossary', + to: '/docs/references/glossary', + }, + { + from: '/docs/overview/glossary', + to: '/docs/references/glossary', + }, ], }, ], diff --git a/microsite/lighthouserc.js b/microsite/lighthouserc.js new file mode 100644 index 0000000000..f0024ee0b3 --- /dev/null +++ b/microsite/lighthouserc.js @@ -0,0 +1,68 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var sidebars = require('./sidebars.json'); + +module.exports = { + ci: { + collect: { + url: [ + /** Home */ + 'http://localhost:3000', + /** Docs - Getting Started */ + 'http://localhost:3000/docs/getting-started', + /** Docs - Software Catalog */ + 'http://localhost:3000/docs/features/software-catalog', + /** Docs - Create a Plugin */ + 'http://localhost:3000/docs/plugins/create-a-plugin', + /** Docs - Designing for Backstage */ + 'http://localhost:3000/docs/dls/design', + /** Blog */ + 'http://localhost:3000/blog', + /** Plugins */ + 'http://localhost:3000/plugins', + /** Demos */ + 'http://localhost:3000/demos', + /** Community */ + 'http://localhost:3000/community', + /** Releases */ + ...sidebars.releases['Release Notes'].map( + path => `http://localhost:3000/docs/${path}`, + ), + ], + settings: { + onlyCategories: ['accessibility'], + output: ['html', 'json'], + outputPath: './.lighthouseci/reports', + preset: 'desktop', + }, + // refers to root package scripts + startServerCommand: 'yarn run start:microsite', + startServerReadyPattern: 'compiled successfully', + startServerReadyTimeout: 600000, + numberOfRuns: 1, + }, + assert: { + assertions: { + 'categories:performance': 'off', + 'categories:pwa': 'off', + 'categories:best-practices': 'off', + 'categories:seo': 'off', + 'categories:accessibility': ['error', { minScore: 0.95 }], + }, + }, + }, +}; diff --git a/microsite/package.json b/microsite/package.json index 53309fb358..d90c455167 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -25,7 +25,7 @@ "@types/webpack-env": "^1.18.0", "js-yaml": "^4.1.0", "prettier": "^2.6.2", - "typescript": "~5.0.0", + "typescript": "~5.1.0", "yaml-loader": "^0.8.0" }, "prettier": "@spotify/prettier-config", diff --git a/microsite/sidebars.json b/microsite/sidebars.json index e32e027807..d52c00b3da 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -37,7 +37,6 @@ "overview/versioning-policy", "overview/threat-model", "overview/support", - "overview/glossary", "overview/logos" ], "Getting Started": [ @@ -309,7 +308,8 @@ "auth/google/gcp-iap-auth", "auth/okta/provider", "auth/oauth2-proxy/provider", - "auth/onelogin/provider" + "auth/onelogin/provider", + "auth/vmware-cloud/provider" ] }, "auth/identity-resolver", @@ -318,8 +318,7 @@ "auth/add-auth-provider", "auth/service-to-service-auth", "auth/autologout", - "auth/troubleshooting", - "auth/glossary" + "auth/troubleshooting" ], "Permissions": [ "permissions/overview", @@ -417,6 +416,14 @@ "frontend-system/building-plugins/extension-types" ] }, + { + "type": "category", + "label": "Building Apps", + "items": [ + "frontend-system/building-apps/index", + "frontend-system/building-apps/built-in-extensions" + ] + }, { "type": "category", "label": "Utility APIs", @@ -479,6 +486,7 @@ "architecture-decisions/adrs-adr013" ], "FAQ": ["faq/index", "faq/product", "faq/technical"], - "Accessibility": ["accessibility/index"] + "Accessibility": ["accessibility/index"], + "References": ["references/glossary"] } } diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index dbc2c4b5e1..42c42ae0c3 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -42,8 +42,8 @@ const Community = () => { { title: 'Community sessions', content: - 'Maintainers and adopters meet monthly to share updates, demos, and ideas. Yep, all sessions are recorded!', - link: '/on-demand', + 'Maintainers and adopters meet monthly to share updates, demos, and ideas. You can find recorded session on our YouTube channel!', + link: 'https://github.com/backstage/community/tree/main/backstage-community-sessions#backstage-community-sessions', label: 'Join a session', }, { @@ -88,8 +88,8 @@ const Community = () => { }, { name: 'VMWare', - url: 'https://www.vmware.com', - logo: 'img/partner-logo-vmware.png', + url: 'https://tanzu.vmware.com/', + logo: 'img/partner-logo-tanzubybroadcom.png', }, ]; //#endregion diff --git a/microsite/src/pages/home/hubSpotNewAdoptersForm.module.scss b/microsite/src/pages/home/hubSpotNewAdoptersForm.module.scss index 9533890660..20790c58f0 100644 --- a/microsite/src/pages/home/hubSpotNewAdoptersForm.module.scss +++ b/microsite/src/pages/home/hubSpotNewAdoptersForm.module.scss @@ -37,4 +37,10 @@ $page-header-height: 44px; padding-right: 2rem; } + select[class*='hs-input'] { + color: black; + } + input[class*='hs-button'] { + color: black; + } } diff --git a/microsite/src/pages/on-demand/_onDemandCard.tsx b/microsite/src/pages/on-demand/_onDemandCard.tsx deleted file mode 100644 index e203c80f9a..0000000000 --- a/microsite/src/pages/on-demand/_onDemandCard.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import Link from '@docusaurus/Link'; -import { SimpleCard } from '@site/src/components/simpleCard/simpleCard'; -import React from 'react'; - -export interface IOnDemandData { - title: string; - category: string; - description: string; - date: string; - youtubeUrl: string; - youtubeImgUrl: string; - rsvpUrl: string; - eventUrl: string; -} - -export const OnDemandCard = ({ - title, - category, - description, - date, - youtubeUrl, - youtubeImgUrl, - rsvpUrl, - eventUrl, -}: IOnDemandData) => ( - -

{title}

- -

on {date}

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

{description}

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

Community sessions

- -

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

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

Upcoming live events

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

Community on demand

- -
- {onDemandData.onDemandEvents.map(eventData => ( - - ))} -
-
-
-); - -export default Plugins; diff --git a/microsite/src/pages/on-demand/onDemand.module.scss b/microsite/src/pages/on-demand/onDemand.module.scss deleted file mode 100644 index ff5797b687..0000000000 --- a/microsite/src/pages/on-demand/onDemand.module.scss +++ /dev/null @@ -1,44 +0,0 @@ -.onDemandPage { - :global(.communityBanner) { - display: flex; - align-items: center; - } - - :global(.communityContent) { - flex: 1; - } - - :global(.card) { - max-width: 100%; - } - - :global(.card .card__header) { - display: grid; - row-gap: 0.25rem; - column-gap: 1rem; - justify-items: start; - - > * { - margin: 0; - } - - :global(img) { - width: 250px; - max-width: 100%; - justify-self: center; - } - } - - :global(.card .card__footer) { - gap: 1rem; - display: grid; - grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); - } - - :global(.cardsContainer) { - gap: 1rem; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); - justify-items: start; - } -} diff --git a/microsite/src/pages/plugins/plugins.module.scss b/microsite/src/pages/plugins/plugins.module.scss index dbd0c62c75..fb17e90625 100644 --- a/microsite/src/pages/plugins/plugins.module.scss +++ b/microsite/src/pages/plugins/plugins.module.scss @@ -32,6 +32,7 @@ position: absolute; text-align: center; font-weight: bold; + color: black; transform: translateY(var(--translateY)) translateX(var(--translateX)) rotate(var(--rotation)); diff --git a/microsite/src/theme/customTheme.scss b/microsite/src/theme/customTheme.scss index 57e1f8828e..b29f76d3c0 100644 --- a/microsite/src/theme/customTheme.scss +++ b/microsite/src/theme/customTheme.scss @@ -7,7 +7,7 @@ --ifm-color-primary-darker: #2e9e8a; --ifm-color-primary-darkest: #268271; } - +// for docs and releases #__docusaurus { .theme-doc-markdown { a { @@ -15,7 +15,36 @@ } } } - +// for blog +#__docusaurus { + .row { + .col { + &--7 { + a { + text-decoration: underline; + } + } + } + } +} +// for community page +#__docusaurus { + div[class^='communityPage'], + div[class*='communityPage'] { + a:not([class]) { + text-decoration: underline; + } + } +} +// for plugin page +#__docusaurus { + div[class^='pluginsPage'], + div[class*='pluginsPage'] { + a:not([class]) { + text-decoration: underline; + } + } +} .footerLogo { background-image: url(/img/logo.svg); background-repeat: no-repeat; diff --git a/microsite/static/css/on-demand.css b/microsite/static/css/on-demand.css deleted file mode 100644 index 909459796c..0000000000 --- a/microsite/static/css/on-demand.css +++ /dev/null @@ -1,143 +0,0 @@ -.VideoCard { - background-color: #282828; - height: 100%; - padding: 16px; - display: flex; - flex-direction: column; -} - -.VideoGrid { - display: grid; - grid-gap: 1rem; - grid-template-columns: repeat(4, 1fr); - grid-auto-rows: 1fr; -} - -@media (max-width: 1200px) { - .VideoGrid { - grid-template-columns: repeat(3, 1fr); - } -} - -@media only screen and (max-width: 815px) { - .VideoGrid { - grid-template-columns: repeat(2, 1fr); - } -} - -@media only screen and (max-width: 485px) { - .VideoGrid { - grid-template-columns: 1fr; - } -} - -.VideoCard img { - float: left; - margin: 0px 16px 8px 0px; - height: 160px; - width: 300px; -} - -.VideoCardHeader { - display: flex; - flex-direction: row; - align-items: center; - max-height: fit-content; - min-height: fit-content; -} - -.VideoCardImage { - width: 200px; - height: 80px; - margin-right: 16px; -} - -.VideoCardImage img { - width: 100%; - max-width: 100%; -} - -.VideoCardTitle { - color: white; - vertical-align: top; - margin: 8px 0 0; -} - -.VideoCardInfo { - flex: 1; -} - -.VideoAddNewButton { - position: absolute; - bottom: 16px; - right: 0px; -} - -@media only screen and (max-width: 485px) { - .VideoAddNewButton { - bottom: -4px; - } -} - -.VideoButtonFilled { - padding: 4px 8px; - border-radius: 4px; - color: #69ddc7; -} - -.VideoButtonFilled:hover { - border: 1px solid #69ddc7; - background-color: transparent; -} - -.VideoCardChipOutlined { - font-size: small; - border-radius: 16px; - padding: 2px 8px; - border: 1px solid #69ddc7; - color: #69ddc7; -} - -.VideoCardFooter { - display: flex; - justify-content: flex-end; - align-items: flex-end; - margin-top: auto; - min-height: 2em; -} - -.VideoCardFooter a { - padding: 2px 8px; -} - -.VideoPageLayout { - margin: auto; - max-width: 1430px; - padding: 20px; -} - -.VideoPageHeader { - position: relative; -} - -.VideoPageHeader h2 { - display: inline-block; -} - -.VideoCardBody { - padding-top: 8px; -} - -.VideoCardDate, -.VideoCardDate a { - margin-bottom: 0.25em; - color: rgba(255, 255, 255, 0.6); -} - -.VideoCardDate a:hover { - color: white; -} - -#add-video-card { - border: 1px solid #69ddc7; -} diff --git a/microsite/static/img/partner-logo-redhat.png b/microsite/static/img/partner-logo-redhat.png index ad9bc9ceba..0b98532c2c 100644 Binary files a/microsite/static/img/partner-logo-redhat.png and b/microsite/static/img/partner-logo-redhat.png differ diff --git a/microsite/static/img/partner-logo-tanzubybroadcom.png b/microsite/static/img/partner-logo-tanzubybroadcom.png new file mode 100644 index 0000000000..0bd5586203 Binary files /dev/null and b/microsite/static/img/partner-logo-tanzubybroadcom.png differ diff --git a/microsite/static/img/partner-logo-vmware.png b/microsite/static/img/partner-logo-vmware.png deleted file mode 100644 index 049975ca15..0000000000 Binary files a/microsite/static/img/partner-logo-vmware.png and /dev/null differ diff --git a/microsite/static/img/umami-logo.svg b/microsite/static/img/umami-logo.svg new file mode 100644 index 0000000000..b139531324 --- /dev/null +++ b/microsite/static/img/umami-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 50465ec651..b858d2bf13 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2701,90 +2701,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -2813,14 +2813,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard @@ -3907,7 +3907,7 @@ __metadata: react-dom: ^18.0.0 sass: ^1.57.1 swc-loader: ^0.2.3 - typescript: ~5.0.0 + typescript: ~5.1.0 yaml-loader: ^0.8.0 languageName: unknown linkType: soft @@ -11500,12 +11500,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.3 - resolution: "swc-loader@npm:0.2.3" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -11692,23 +11694,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.0.0": - version: 5.0.4 - resolution: "typescript@npm:5.0.4" +"typescript@npm:~5.1.0": + version: 5.1.6 + resolution: "typescript@npm:5.1.6" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 82b94da3f4604a8946da585f7d6c3025fff8410779e5bde2855ab130d05e4fd08938b9e593b6ebed165bda6ad9292b230984f10952cf82f0a0ca07bbeaa08172 + checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350 languageName: node linkType: hard -"typescript@patch:typescript@~5.0.0#~builtin": - version: 5.0.4 - resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=a1c5e5" +"typescript@patch:typescript@~5.1.0#~builtin": + version: 5.1.6 + resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin::version=5.1.6&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 6a1fe9a77bb9c5176ead919cc4a1499ee63e46b4e05bf667079f11bf3a8f7887f135aa72460a4c3b016e6e6bb65a822cb8689a6d86cbfe92d22cc9f501f09213 + checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606 languageName: node linkType: hard diff --git a/mkdocs.yml b/mkdocs.yml index 8c9f84ba81..2a17613672 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,7 +18,6 @@ nav: - Release & Versioning Policy: 'overview/versioning-policy.md' - Backstage Threat Model: 'overview/threat-model.md' - Support and community: 'overview/support.md' - - Glossary: 'overview/glossary.md' - Logo assets: 'overview/logos.md' - Getting Started: - Getting Started: 'getting-started/index.md' @@ -171,7 +170,6 @@ nav: - Contributing New Providers: 'auth/add-auth-provider.md' - Service to Service Auth: 'auth/service-to-service-auth.md' - Troubleshooting Auth: 'auth/troubleshooting.md' - - Glossary: 'auth/glossary.md' - Deployment: - Deploying Backstage: 'deployment/index.md' - Scaling: 'deployment/scaling.md' @@ -218,3 +216,5 @@ nav: - Overview: 'faq/index.md' - Product FAQ: 'faq/product.md' - Technical FAQ: 'faq/technical.md' + - References: + - Glossary: 'references/glossary.md' diff --git a/package.json b/package.json index 2b16580f84..d3188d483a 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,12 @@ "start-backend": "yarn workspace example-backend start", "start:next": "yarn workspace example-app-next start", "start-backend:next": "yarn workspace example-backend-next start", + "start:microsite": "cd microsite/ && yarn start", "build:backend": "yarn workspace example-backend build", "build:all": "backstage-cli repo build --all", "build:api-reports": "yarn build:api-reports:only --tsc", "build:api-reports:only": "backstage-repo-tools api-reports --allow-warnings 'packages/core-components,plugins/+(catalog|catalog-import|git-release-manager|jenkins|kubernetes)' -o ae-wrong-input-file-type --validate-release-tags", + "build:knip-reports": "backstage-repo-tools knip-reports", "build:api-docs": "LANG=en_EN yarn build:api-reports --docs --exclude 'plugins/@(adr|adr-backend|adr-common|airbrake|airbrake-backend|allure|analytics-module-ga|analytics-module-ga4|analytics-module-newrelic-browser|apache-airflow|api-docs|api-docs-module-protoc-gen-doc|apollo-explorer|app-visualizer|azure-devops|azure-devops-backend|azure-devops-common|azure-sites|azure-sites-backend|azure-sites-common|badges|badges-backend|bazaar|bazaar-backend|bitbucket-cloud-common|bitrise|catalog-graph|catalog-graphql|catalog-import|catalog-unprocessed-entities|cicd-statistics|cicd-statistics-module-gitlab|circleci|cloudbuild|code-climate|code-coverage|code-coverage-backend|codescene|config-schema|cost-insights|cost-insights-common|dynatrace|entity-feedback|entity-feedback-backend|entity-feedback-common|entity-validation|example-todo-list|example-todo-list-backend|example-todo-list-common|firehydrant|fossa|gcalendar|gcp-projects|git-release-manager|github-actions|github-deployments|github-issues|github-pull-requests-board|gitops-profiles|gocd|graphiql|graphql-backend|graphql-voyager|ilert|jenkins|jenkins-backend|jenkins-common|kafka|kafka-backend|lighthouse|lighthouse-backend|lighthouse-common|linguist|linguist-backend|linguist-common|microsoft-calendar|newrelic|newrelic-dashboard|nomad|nomad-backend|octopus-deploy|opencost|pagerduty|periskop|periskop-backend|playlist|playlist-backend|playlist-common|proxy-backend|puppetdb|rollbar|rollbar-backend|sentry|shortcuts|splunk-on-call|stack-overflow|stack-overflow-backend|stackstorm|tech-radar|tech-radar-2|todo|todo-backend|xcmetrics)'", "build:plugins-report": "node ./scripts/build-plugins-report", "tsc": "tsc", @@ -40,8 +42,12 @@ "build-storybook": "yarn ./storybook run build-storybook", "techdocs-cli": "node scripts/techdocs-cli.js", "techdocs-cli:dev": "cross-env TECHDOCS_CLI_DEV_MODE=true node scripts/techdocs-cli.js", - "prepare": "husky install", - "postinstall": "husky install || true" + "prepare": "husky", + "postinstall": "husky || true" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage" }, "workspaces": { "packages": [ @@ -56,7 +62,7 @@ "@material-ui/pickers@^3.3.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch", "@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch" }, - "version": "1.23.0-next.0", + "version": "1.23.0-next.2", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3", @@ -85,15 +91,17 @@ "eslint-plugin-react": "^7.28.0", "eslint-plugin-testing-library": "^6.0.0", "fs-extra": "10.1.0", - "husky": "^8.0.0", + "husky": "^9.0.0", + "knip": "^4.3.1", "lint-staged": "^15.0.0", "minimist": "^1.2.5", "node-gyp": "^10.0.0", "prettier": "^2.2.1", "semver": "^7.5.3", "shx": "^0.3.2", + "sloc": "^0.3.1", "ts-node": "^10.4.0", - "typescript": "~5.2.0" + "typescript": "~5.1.0" }, "prettier": "@spotify/prettier-config", "lint-staged": { diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 9ac73e575a..8df429cb29 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/app-defaults +## 1.5.0-next.2 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 214f2da: Fix invalid HTTP status code 501 in Error Page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + +## 1.4.8-next.1 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 1.4.8-next.0 ### Patch Changes diff --git a/packages/app-defaults/README.md b/packages/app-defaults/README.md index cfdaf36acb..ebaaacafe3 100644 --- a/packages/app-defaults/README.md +++ b/packages/app-defaults/README.md @@ -8,7 +8,7 @@ Install the package via Yarn: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/app-defaults +yarn --cwd packages/app add @backstage/app-defaults ``` ## Documentation diff --git a/packages/app-defaults/knip-report.md b/packages/app-defaults/knip-report.md new file mode 100644 index 0000000000..fb60112aa2 --- /dev/null +++ b/packages/app-defaults/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 4b15d5875a..4dfeabcb86 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.4.8-next.0", + "version": "1.5.0-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-defaults/src/defaults/apis.ts b/packages/app-defaults/src/defaults/apis.ts index 848d204670..4e9e1a492c 100644 --- a/packages/app-defaults/src/defaults/apis.ts +++ b/packages/app-defaults/src/defaults/apis.ts @@ -34,6 +34,7 @@ import { AtlassianAuth, createFetchApi, FetchMiddlewares, + VMwareCloudAuth, } from '@backstage/core-app-api'; import { @@ -56,6 +57,7 @@ import { bitbucketAuthApiRef, bitbucketServerAuthApiRef, atlassianAuthApiRef, + vmwareCloudAuthApiRef, } from '@backstage/core-plugin-api'; import { permissionApiRef, @@ -259,6 +261,22 @@ export const apis = [ }); }, }), + createApiFactory({ + api: vmwareCloudAuthApiRef, + deps: { + discoveryApi: discoveryApiRef, + oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, + }, + factory: ({ discoveryApi, oauthRequestApi, configApi }) => { + return VMwareCloudAuth.create({ + configApi, + discoveryApi, + oauthRequestApi, + environment: configApi.getOptionalString('auth.environment'), + }); + }, + }), createApiFactory({ api: permissionApiRef, deps: { diff --git a/packages/app-defaults/src/defaults/components.tsx b/packages/app-defaults/src/defaults/components.tsx index 93a5d9cd50..9b58694f2b 100644 --- a/packages/app-defaults/src/defaults/components.tsx +++ b/packages/app-defaults/src/defaults/components.tsx @@ -49,7 +49,7 @@ const DefaultBootErrorPage = ({ step, error }: BootErrorPageProps) => { // TODO: figure out a nicer way to handle routing on the error page, when it can be done. return ( - + ); }; diff --git a/packages/app-next-example-plugin/CHANGELOG.md b/packages/app-next-example-plugin/CHANGELOG.md index 4e41b9690a..9de890ca79 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,21 @@ # app-next-example-plugin +## 0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## 0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + ## 0.0.6-next.0 ### Patch Changes diff --git a/packages/app-next-example-plugin/knip-report.md b/packages/app-next-example-plugin/knip-report.md new file mode 100644 index 0000000000..9bc5da7334 --- /dev/null +++ b/packages/app-next-example-plugin/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:---------------|:-------------| +| msw | package.json | +| cross-fetch | package.json | +| @backstage/cli | package.json | + diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index 05d7e20823..61e882edce 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -1,7 +1,7 @@ { "name": "app-next-example-plugin", "description": "Backstage internal example plugin", - "version": "0.0.6-next.0", + "version": "0.0.6-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index e641aa8f71..26ebcd6f21 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,157 @@ # example-app-next +## 0.0.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - app-next-example-plugin@0.0.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.2 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - app-next-example-plugin@0.0.6-next.1 + - @backstage/plugin-app-visualizer@0.1.1-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.0.6-next.0 ### Patch Changes diff --git a/packages/app-next/app-config.yaml b/packages/app-next/app-config.yaml index a79bb866db..b07f556742 100644 --- a/packages/app-next/app-config.yaml +++ b/packages/app-next/app-config.yaml @@ -5,6 +5,7 @@ app: bindings: catalog.viewTechDoc: techdocs.docRoot catalog.createComponent: catalog-import.importPage + org.catalogIndex: catalog.catalogIndex extensions: # - apis.plugin.graphiql.browse.gitlab: true @@ -16,8 +17,21 @@ app: config: filter: kind:component has:links - entity-card:linguist/languages + - entity-card:catalog-graph/relations: + config: + height: 300 + - entity-card:azure-devops/readme # Entity page content - entity-content:techdocs + - entity-content:azure-devops/pipelines + - entity-content:azure-devops/pull-requests + - entity-content:azure-devops/git-tags + + # Org Plugin + - entity-card:org/group-profile + - entity-card:org/members-list + - entity-card:org/ownership + - entity-card:org/user-profile # scmAuthExtension: >- # createScmAuthExtension({ diff --git a/packages/app-next/knip-report.md b/packages/app-next/knip-report.md new file mode 100644 index 0000000000..7787f9c8fc --- /dev/null +++ b/packages/app-next/knip-report.md @@ -0,0 +1,83 @@ +# Knip report + +## Unused dependencies (64) + +| Name | Location | +|:-------------------------------------------------|:-------------| +| lodash | package.json | +| history | package.json | +| react-use | package.json | +| @octokit/rest | package.json | +| zen-observable | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @backstage/plugin-org | package.json | +| @backstage/plugin-adr | package.json | +| @backstage/plugin-todo | package.json | +| @backstage/plugin-gocd | package.json | +| app-next-example-plugin | package.json | +| @backstage/plugin-kafka | package.json | +| @backstage/app-defaults | package.json | +| @backstage/plugin-sentry | package.json | +| @backstage/plugin-search | package.json | +| @backstage/plugin-badges | package.json | +| @backstage/catalog-model | package.json | +| @backstage/plugin-rollbar | package.json | +| @backstage/plugin-jenkins | package.json | +| @backstage/plugin-explore | package.json | +| @backstage/plugin-catalog | package.json | +| @circleci/backstage-plugin | package.json | +| @backstage/plugin-puppetdb | package.json | +| @backstage/plugin-playlist | package.json | +| @backstage/plugin-newrelic | package.json | +| @backstage/plugin-linguist | package.json | +| @backstage/plugin-devtools | package.json | +| @backstage/plugin-api-docs | package.json | +| @backstage/plugin-airbrake | package.json | +| @backstage/plugin-shortcuts | package.json | +| @backstage/plugin-dynatrace | package.json | +| @backstage/plugin-stackstorm | package.json | +| @backstage/plugin-scaffolder | package.json | +| @backstage/plugin-lighthouse | package.json | +| @backstage/plugin-kubernetes | package.json | +| @backstage/plugin-cloudbuild | package.json | +| @backstage/plugin-azure-sites | package.json | +| @backstage/plugin-search-react | package.json | +| @backstage/plugin-gcp-projects | package.json | +| @backstage/plugin-azure-devops | package.json | +| @backstage/plugin-tech-insights | package.json | +| @backstage/plugin-search-common | package.json | +| @backstage/plugin-cost-insights | package.json | +| @backstage/plugin-code-coverage | package.json | +| @backstage/plugin-catalog-react | package.json | +| @backstage/plugin-catalog-graph | package.json | +| @backstage/plugin-techdocs-react | package.json | +| @backstage/plugin-octopus-deploy | package.json | +| @backstage/plugin-github-actions | package.json | +| @backstage/plugin-catalog-common | package.json | +| @backstage/plugin-apache-airflow | package.json | +| @backstage/plugin-linguist-common | package.json | +| @backstage/plugin-entity-feedback | package.json | +| @backstage/plugin-scaffolder-react | package.json | +| @backstage/plugin-permission-react | package.json | +| @roadiehq/backstage-plugin-travis-ci | package.json | +| @roadiehq/backstage-plugin-buildkite | package.json | +| @backstage/plugin-newrelic-dashboard | package.json | +| @oriflame/backstage-plugin-score-card | package.json | +| @roadiehq/backstage-plugin-github-insights | package.json | +| @backstage/plugin-catalog-unprocessed-entities | package.json | +| @roadiehq/backstage-plugin-github-pull-requests | package.json | +| @backstage/plugin-techdocs-module-addons-contrib | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @types/jquery | package.json | +| @testing-library/dom | package.json | +| @types/zen-observable | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 09cd302a4e..4d9ee93474 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,7 +1,12 @@ { "name": "example-app-next", - "version": "0.0.6-next.0", + "version": "0.0.6-next.2", "private": true, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/app-next" + }, "backstage": { "role": "frontend" }, diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 370100920f..ca0d9ccc70 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,160 @@ # example-app +## 0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-azure-devops@0.3.12-next.2 + - @backstage/plugin-azure-sites@0.1.19-next.2 + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog-graph@0.4.0-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.2 + - @backstage/plugin-signals@0.0.1-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.2 + - @backstage/plugin-github-actions@0.6.11-next.2 + - @backstage/plugin-octopus-deploy@0.2.12-next.2 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.2 + - @backstage/plugin-cost-insights@0.12.19-next.2 + - @backstage/plugin-tech-insights@0.3.22-next.2 + - @backstage/plugin-lighthouse@0.4.15-next.2 + - @backstage/plugin-scaffolder@1.18.0-next.2 + - @backstage/plugin-tech-radar@0.6.13-next.2 + - @backstage/plugin-dynatrace@9.0.0-next.2 + - @backstage/plugin-shortcuts@0.3.19-next.1 + - @backstage/plugin-airbrake@0.3.30-next.2 + - @backstage/plugin-api-docs@0.10.4-next.2 + - @backstage/plugin-devtools@0.1.9-next.2 + - @backstage/plugin-graphiql@0.3.3-next.2 + - @backstage/plugin-linguist@0.1.15-next.2 + - @backstage/plugin-newrelic@0.3.45-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/plugin-jenkins@0.9.5-next.2 + - @backstage/plugin-rollbar@0.4.30-next.2 + - @backstage/plugin-badges@0.2.54-next.2 + - @backstage/plugin-sentry@0.5.15-next.2 + - @backstage/plugin-nomad@0.1.11-next.2 + - @backstage/plugin-home@0.6.2-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/plugin-adr@0.6.13-next.2 + - @backstage/plugin-apache-airflow@0.2.20-next.1 + - @backstage/plugin-cloudbuild@0.4.0-next.2 + - @backstage/plugin-entity-feedback@0.2.13-next.2 + - @backstage/plugin-explore@0.4.16-next.2 + - @backstage/plugin-gcalendar@0.3.23-next.1 + - @backstage/plugin-kafka@0.3.30-next.2 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.2 + - @backstage/plugin-kubernetes@0.11.5-next.2 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.2 + - @backstage/plugin-org@0.6.20-next.2 + - @backstage/plugin-pagerduty@0.7.2-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-playlist@0.2.4-next.2 + - @backstage/plugin-puppetdb@0.1.13-next.2 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-search@1.4.6-next.2 + - @backstage/plugin-stack-overflow@0.1.25-next.2 + - @backstage/plugin-stackstorm@0.1.11-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/plugin-user-settings@0.8.1-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/plugin-notifications@0.0.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/plugin-gcp-projects@0.3.46-next.1 + - @backstage/plugin-gocd@0.1.36-next.2 + - @backstage/plugin-todo@0.2.34-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/plugin-adr@0.6.13-next.1 + - @backstage/plugin-catalog-graph@0.3.4-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/plugin-scaffolder@1.18.0-next.1 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-explore@0.4.16-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-azure-sites@0.1.19-next.1 + - @backstage/plugin-home@0.6.2-next.1 + - @backstage/plugin-catalog-import@0.10.6-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-devtools@0.1.9-next.1 + - @backstage/plugin-graphiql@0.3.3-next.1 + - @backstage/plugin-linguist@0.1.15-next.1 + - @backstage/plugin-search@1.4.6-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-stack-overflow@0.1.25-next.1 + - @backstage/plugin-tech-radar@0.6.13-next.1 + - @backstage/plugin-user-settings@0.8.1-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-airbrake@0.3.30-next.1 + - @backstage/plugin-apache-airflow@0.2.20-next.0 + - @backstage/plugin-api-docs@0.10.4-next.1 + - @backstage/plugin-azure-devops@0.3.12-next.1 + - @backstage/plugin-badges@0.2.54-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.8-next.0 + - @backstage/plugin-cloudbuild@0.4.0-next.1 + - @backstage/plugin-code-coverage@0.2.23-next.1 + - @backstage/plugin-cost-insights@0.12.19-next.1 + - @backstage/plugin-dynatrace@8.0.4-next.1 + - @backstage/plugin-entity-feedback@0.2.13-next.1 + - @backstage/plugin-gcalendar@0.3.23-next.0 + - @backstage/plugin-gcp-projects@0.3.46-next.0 + - @backstage/plugin-github-actions@0.6.11-next.1 + - @backstage/plugin-gocd@0.1.36-next.1 + - @backstage/plugin-jenkins@0.9.5-next.1 + - @backstage/plugin-kafka@0.3.30-next.1 + - @backstage/plugin-kubernetes@0.11.5-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.6-next.1 + - @backstage/plugin-lighthouse@0.4.15-next.1 + - @backstage/plugin-microsoft-calendar@0.1.12-next.0 + - @backstage/plugin-newrelic@0.3.45-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.5-next.1 + - @backstage/plugin-nomad@0.1.11-next.1 + - @backstage/plugin-octopus-deploy@0.2.12-next.1 + - @backstage/plugin-org@0.6.20-next.1 + - @backstage/plugin-pagerduty@0.7.2-next.1 + - @backstage/plugin-playlist@0.2.4-next.1 + - @backstage/plugin-puppetdb@0.1.13-next.1 + - @backstage/plugin-rollbar@0.4.30-next.1 + - @backstage/plugin-sentry@0.5.15-next.1 + - @backstage/plugin-shortcuts@0.3.19-next.0 + - @backstage/plugin-signals@0.0.1-next.1 + - @backstage/plugin-stackstorm@0.1.11-next.0 + - @backstage/plugin-tech-insights@0.3.22-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.5-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/plugin-todo@0.2.34-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.2.92-next.0 ### Patch Changes diff --git a/packages/app/knip-report.md b/packages/app/knip-report.md new file mode 100644 index 0000000000..f22347da9f --- /dev/null +++ b/packages/app/knip-report.md @@ -0,0 +1,38 @@ +# Knip report + +## Unused dependencies (15) + +| Name | Location | +|:----------------------------------|:-------------| +| vite | package.json | +| history | package.json | +| react-router | package.json | +| @octokit/rest | package.json | +| zen-observable | package.json | +| vite-plugin-html | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @vitejs/plugin-react | package.json | +| vite-plugin-node-polyfills | package.json | +| @backstage/plugin-airbrake | package.json | +| @backstage/frontend-app-api | package.json | +| @backstage/plugin-azure-sites | package.json | +| @backstage/plugin-search-common | package.json | +| @backstage/plugin-linguist-common | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @types/jquery | package.json | +| @testing-library/dom | package.json | +| @types/zen-observable | package.json | +| @testing-library/user-event | package.json | + +## Unlisted dependencies (1) + +| Name | Location | +|:------------|:---------------------------------------------------------| +| @rjsf/utils | src/components/scaffolder/customScaffolderExtensions.tsx | + diff --git a/packages/app/package.json b/packages/app/package.json index 7b81260b8b..ae2fb203da 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.92-next.0", + "version": "0.2.92-next.2", "private": true, "backstage": { "role": "frontend" @@ -59,6 +59,7 @@ "@backstage/plugin-newrelic": "workspace:^", "@backstage/plugin-newrelic-dashboard": "workspace:^", "@backstage/plugin-nomad": "workspace:^", + "@backstage/plugin-notifications": "workspace:^", "@backstage/plugin-octopus-deploy": "workspace:^", "@backstage/plugin-org": "workspace:^", "@backstage/plugin-pagerduty": "workspace:^", diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 90190b50be..3d8bd45e5a 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -67,15 +67,15 @@ import { SearchPage } from '@backstage/plugin-search'; import { TechRadarPage } from '@backstage/plugin-tech-radar'; import { TechDocsIndexPage, - TechDocsReaderPage, techdocsPlugin, + TechDocsReaderPage, } from '@backstage/plugin-techdocs'; import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ExpandableNavigation, + LightBox, ReportIssue, TextSize, - LightBox, } from '@backstage/plugin-techdocs-module-addons-contrib'; import { SettingsLayout, @@ -107,6 +107,7 @@ import { PuppetDbPage } from '@backstage/plugin-puppetdb'; import { DevToolsPage } from '@backstage/plugin-devtools'; import { customDevToolsPage } from './components/devtools/CustomDevToolsPage'; import { CatalogUnprocessedEntitiesPage } from '@backstage/plugin-catalog-unprocessed-entities'; +import { NotificationsPage } from '@backstage/plugin-notifications'; const app = createApp({ apis, @@ -272,6 +273,7 @@ const routes = ( }> {customDevToolsPage} + } /> ); diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx index 5f11218bba..6294aa7856 100644 --- a/packages/app/src/components/Root/Root.tsx +++ b/packages/app/src/components/Root/Root.tsx @@ -34,6 +34,7 @@ import { import { SidebarSearchModal } from '@backstage/plugin-search'; import { Shortcuts } from '@backstage/plugin-shortcuts'; import { + Link, Sidebar, sidebarConfig, SidebarDivider, @@ -42,16 +43,16 @@ import { SidebarPage, SidebarScrollWrapper, SidebarSpace, - Link, - useSidebarOpenState, SidebarSubmenu, SidebarSubmenuItem, + useSidebarOpenState, } from '@backstage/core-components'; import { MyGroupsSidebarItem } from '@backstage/plugin-org'; import { SearchModal } from '../search/SearchModal'; import Score from '@material-ui/icons/Score'; import { useApp } from '@backstage/core-plugin-api'; import BuildIcon from '@material-ui/icons/Build'; +import { NotificationsSidebarItem } from '@backstage/plugin-notifications'; const useSidebarLogoStyles = makeStyles({ root: { @@ -166,6 +167,8 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( + + diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 6096ba5451..e15a57936b 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/backend-app-api +## 0.5.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.5.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.5.11-next.0 ### Patch Changes diff --git a/packages/backend-app-api/README.md b/packages/backend-app-api/README.md index 3fd6170b4f..7ac3767ece 100644 --- a/packages/backend-app-api/README.md +++ b/packages/backend-app-api/README.md @@ -8,7 +8,7 @@ Add the library to your backend app package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/backend-app-api +yarn --cwd packages/backend add @backstage/backend-app-api ``` ## Documentation diff --git a/packages/backend-app-api/knip-report.md b/packages/backend-app-api/knip-report.md new file mode 100644 index 0000000000..6b0b884653 --- /dev/null +++ b/packages/backend-app-api/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| winston-transport | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| http-errors | package.json | +| @backstage/cli | package.json | +| @types/http-errors | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index b3b338031e..1a79f0fd19 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.5.11-next.0", + "version": "0.5.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index ca05772aa5..42b0ba5d02 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,42 @@ # @backstage/backend-common +## 0.21.0-next.2 + +### Patch Changes + +- 3489d05: `FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 7fb7a79: Add a config declaration for `workingDirectory` +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-dev-utils@0.1.4-next.0 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## 0.21.0-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/backend-dev-utils@0.1.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + ## 0.21.0-next.0 ### Minor Changes diff --git a/packages/backend-common/README.md b/packages/backend-common/README.md index 578fbc0830..71a15bfb5a 100644 --- a/packages/backend-common/README.md +++ b/packages/backend-common/README.md @@ -9,7 +9,7 @@ Add the library to your backend package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/backend-common +yarn --cwd packages/backend add @backstage/backend-common ``` then make use of the handlers and logger as necessary: diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index 8bcc5465d5..700d9a6c6c 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -67,6 +67,22 @@ export interface Config { }; }; + /** + * An absolute path to a directory that can be used as a working dir, for + * example as scratch space for large operations. + * + * @remarks + * + * Note that this must be an absolute path. + * + * If not set, the operating system's designated temporary directory is + * commonly used, but that is implementation defined per plugin. + * + * Plugins are encouraged to heed this config setting if present, to allow + * deployment in severely locked-down or limited environments. + */ + workingDirectory?: string; + /** Database connection configuration, select base database type using the `client` field */ database: { /** Default database client to use */ diff --git a/packages/backend-common/knip-report.md b/packages/backend-common/knip-report.md new file mode 100644 index 0000000000..a5bb065337 --- /dev/null +++ b/packages/backend-common/knip-report.md @@ -0,0 +1,33 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| mysql2 | package.json | +| @types/webpack-env | package.json | +| @manypkg/get-packages | package.json | + +## Unused devDependencies (12) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| mysql2 | package.json | +| supertest | package.json | +| http-errors | package.json | +| better-sqlite3 | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @types/webpack-env | package.json | +| @types/http-errors | package.json | +| aws-sdk-client-mock | package.json | +| @aws-sdk/util-stream-node | package.json | +| @backstage/backend-test-utils | package.json | + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| pg-connection-string | package.json | + diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 4df64738ce..3f8bcbb25e 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.21.0-next.0", + "version": "0.21.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/src/reading/FetchUrlReader.test.ts b/packages/backend-common/src/reading/FetchUrlReader.test.ts index ad834c64ef..7b5e4ebc05 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.test.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.test.ts @@ -223,6 +223,27 @@ describe('FetchUrlReader', () => { ).rejects.toThrow(NotModifiedError); }); + it('should send Authorization header if token is provided', async () => { + expect.assertions(1); + + worker.use( + rest.get( + 'https://backstage.io/requires-authentication', + (req, res, ctx) => { + expect(req.headers.get('authorization')).toBe('Bearer mytoken'); + return res(ctx.status(200)); + }, + ), + ); + + await fetchUrlReader.readUrl( + 'https://backstage.io/requires-authentication', + { + token: 'mytoken', + }, + ); + }); + it('should return etag from the response', async () => { const response = await fetchUrlReader.readUrl( 'https://backstage.io/some-resource', diff --git a/packages/backend-common/src/reading/FetchUrlReader.ts b/packages/backend-common/src/reading/FetchUrlReader.ts index 90c1cf6c26..475a98ffdc 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.ts @@ -131,6 +131,7 @@ export class FetchUrlReader implements UrlReader { ...(options?.lastModifiedAfter && { 'If-Modified-Since': options.lastModifiedAfter.toUTCString(), }), + ...(options?.token && { Authorization: `Bearer ${options.token}` }), }, // TODO(freben): The signal cast is there because pre-3.x versions of // node-fetch have a very slightly deviating AbortSignal type signature. diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index 1b50491f54..f0315d58d8 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/backend-defaults +## 0.2.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + +## 0.2.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + ## 0.2.10-next.0 ### Patch Changes diff --git a/packages/backend-defaults/README.md b/packages/backend-defaults/README.md index 01e42d42c4..a1bf881929 100644 --- a/packages/backend-defaults/README.md +++ b/packages/backend-defaults/README.md @@ -8,7 +8,7 @@ Add the library to your backend app package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/backend-defaults +yarn --cwd packages/backend add @backstage/backend-defaults ``` ## Documentation diff --git a/packages/backend-defaults/knip-report.md b/packages/backend-defaults/knip-report.md new file mode 100644 index 0000000000..f667b944dd --- /dev/null +++ b/packages/backend-defaults/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-plugin-api | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 3e8793cd3e..5cb374a872 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.2.10-next.0", + "version": "0.2.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-dev-utils/CHANGELOG.md b/packages/backend-dev-utils/CHANGELOG.md index 1c4deba50a..58372300cc 100644 --- a/packages/backend-dev-utils/CHANGELOG.md +++ b/packages/backend-dev-utils/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/backend-dev-utils +## 0.1.4-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument + ## 0.1.3 ### Patch Changes diff --git a/packages/backend-dev-utils/README.md b/packages/backend-dev-utils/README.md index 744a9d2ca0..f3666ea33e 100644 --- a/packages/backend-dev-utils/README.md +++ b/packages/backend-dev-utils/README.md @@ -8,7 +8,7 @@ Add the library to your backend plugin or module package: ```bash # From your Backstage root directory -yarn add --cwd plugins/-backend @backstage/backend-dev-utils +yarn --cwd plugins/-backend add @backstage/backend-dev-utils ``` ## Documentation diff --git a/packages/backend-dev-utils/knip-report.md b/packages/backend-dev-utils/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/packages/backend-dev-utils/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/backend-dev-utils/package.json b/packages/backend-dev-utils/package.json index 67fd763dcd..4105d16508 100644 --- a/packages/backend-dev-utils/package.json +++ b/packages/backend-dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-dev-utils", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-dynamic-feature-service/CHANGELOG.md b/packages/backend-dynamic-feature-service/CHANGELOG.md index fa60b2d208..4406c671c4 100644 --- a/packages/backend-dynamic-feature-service/CHANGELOG.md +++ b/packages/backend-dynamic-feature-service/CHANGELOG.md @@ -1,5 +1,52 @@ # @backstage/backend-dynamic-feature-service +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.1-next.1 + +### Patch Changes + +- 8723c5a: Fix wrong `alpha` support in dynamic plugins support: the `alpha` sub-package should not be required for the dynamic plugins to be loaded under the new backend system. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.1-next.0 ### Patch Changes diff --git a/packages/backend-dynamic-feature-service/knip-report.md b/packages/backend-dynamic-feature-service/knip-report.md new file mode 100644 index 0000000000..72049f8827 --- /dev/null +++ b/packages/backend-dynamic-feature-service/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:--------------------------------|:-------------| +| @backstage/types | package.json | +| @backstage/errors | package.json | +| @backstage/plugin-search-common | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| wait-for-expect | package.json | +| @backstage/config-loader | package.json | +| @backstage/backend-app-api | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index 51f7184c49..01616e38b8 100644 --- a/packages/backend-dynamic-feature-service/package.json +++ b/packages/backend-dynamic-feature-service/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-dynamic-feature-service", "description": "Backstage dynamic feature service", - "version": "0.1.1-next.0", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/backend-dynamic-feature-service" + }, "backstage": { "role": "node-library" }, diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 25474b6c54..26f3cdf6b1 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,89 @@ # example-backend-next +## 0.0.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/backend-defaults@0.2.10-next.2 + - @backstage/plugin-sonarqube-backend@0.2.12-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-backend@0.0.1-next.0 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## 0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-defaults@0.2.10-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.3-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.1.27-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.7-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-sonarqube-backend@0.2.12-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + ## 0.0.20-next.0 ### Patch Changes diff --git a/packages/backend-next/knip-report.md b/packages/backend-next/knip-report.md new file mode 100644 index 0000000000..07ea59cd66 --- /dev/null +++ b/packages/backend-next/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (7) + +| Name | Location | +|:-------------------------------------------------|:-------------| +| @backstage/backend-tasks | package.json | +| @backstage/plugin-auth-node | package.json | +| @backstage/backend-plugin-api | package.json | +| @backstage/plugin-permission-node | package.json | +| @backstage/plugin-permission-common | package.json | +| @backstage/plugin-search-backend-node | package.json | +| @backstage/plugin-catalog-backend-module-openapi | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index d230227889..551f79c890 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.20-next.0", + "version": "0.0.20-next.2", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", @@ -45,6 +45,7 @@ "@backstage/plugin-lighthouse-backend": "workspace:^", "@backstage/plugin-linguist-backend": "workspace:^", "@backstage/plugin-nomad-backend": "workspace:^", + "@backstage/plugin-notifications-backend": "workspace:^", "@backstage/plugin-permission-backend": "workspace:^", "@backstage/plugin-permission-backend-module-allow-all-policy": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", @@ -57,6 +58,7 @@ "@backstage/plugin-search-backend-module-explore": "workspace:^", "@backstage/plugin-search-backend-module-techdocs": "workspace:^", "@backstage/plugin-search-backend-node": "workspace:^", + "@backstage/plugin-signals-backend": "workspace:^", "@backstage/plugin-sonarqube-backend": "workspace:^", "@backstage/plugin-techdocs-backend": "workspace:^", "@backstage/plugin-todo-backend": "workspace:^" diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index 53a51fcfa7..9c61b98ec4 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -51,5 +51,7 @@ backend.add(import('@backstage/plugin-search-backend/alpha')); backend.add(import('@backstage/plugin-techdocs-backend/alpha')); backend.add(import('@backstage/plugin-todo-backend')); backend.add(import('@backstage/plugin-sonarqube-backend')); +backend.add(import('@backstage/plugin-signals-backend')); +backend.add(import('@backstage/plugin-notifications-backend')); backend.start(); diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 0b21b9aff3..e2f6b8521b 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-openapi-utils +## 0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/errors@1.2.3 + +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + ## 0.1.3-next.0 ### Patch Changes diff --git a/packages/backend-openapi-utils/knip-report.md b/packages/backend-openapi-utils/knip-report.md new file mode 100644 index 0000000000..1f28b4cd29 --- /dev/null +++ b/packages/backend-openapi-utils/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| lodash | package.json | +| @backstage/backend-plugin-api | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | + diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index a9ce8c56e2..f6205460ea 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-openapi-utils", "description": "OpenAPI typescript support.", - "version": "0.1.3-next.0", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index aa8a153f41..139b9ac2b7 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/backend-plugin-api +## 0.6.10-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## 0.6.10-next.1 + +### Patch Changes + +- 1f020fe: Support `token` in `readTree`, `readUrl` and `search` +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + ## 0.6.10-next.0 ### Patch Changes diff --git a/packages/backend-plugin-api/README.md b/packages/backend-plugin-api/README.md index b827ecc50c..1e5e4cf3b1 100644 --- a/packages/backend-plugin-api/README.md +++ b/packages/backend-plugin-api/README.md @@ -8,7 +8,7 @@ Add the library to your backend plugin or module package: ```bash # From your Backstage root directory -yarn add --cwd plugins/-backend @backstage/backend-plugin-api +yarn --cwd plugins/-backend add @backstage/backend-plugin-api ``` ## Documentation diff --git a/packages/backend-plugin-api/knip-report.md b/packages/backend-plugin-api/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/packages/backend-plugin-api/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 2d099e7383..72e9f59831 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.6.10-next.0", + "version": "0.6.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index 654d092591..2c60f0ee93 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/backend-tasks +## 0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.5.15-next.0 ### Patch Changes diff --git a/packages/backend-tasks/README.md b/packages/backend-tasks/README.md index afaca06e55..57cd63b0e0 100644 --- a/packages/backend-tasks/README.md +++ b/packages/backend-tasks/README.md @@ -8,7 +8,7 @@ Add the library to your backend package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/backend-tasks +yarn --cwd packages/backend add @backstage/backend-tasks ``` then make use of its facilities as necessary: diff --git a/packages/backend-tasks/knip-report.md b/packages/backend-tasks/knip-report.md new file mode 100644 index 0000000000..b4595609b6 --- /dev/null +++ b/packages/backend-tasks/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:----------------|:-------------| +| @backstage/cli | package.json | +| wait-for-expect | package.json | + diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 12ed0dc414..5be820dc1c 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.5.15-next.0", + "version": "0.5.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 4b369454a0..c39c5f9ab2 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/backend-test-utils +## 0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-app-api@0.5.11-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.3.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-app-api@0.5.11-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.3.0-next.0 ### Minor Changes diff --git a/packages/backend-test-utils/knip-report.md b/packages/backend-test-utils/knip-report.md new file mode 100644 index 0000000000..c6974ee723 --- /dev/null +++ b/packages/backend-test-utils/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:------------------|:-------------| +| pg | package.json | +| msw | package.json | +| mysql2 | package.json | +| better-sqlite3 | package.json | +| @backstage/errors | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 2e517d542f..8be922d263 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.3.0-next.0", + "version": "0.3.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 4b90e2631e..188a359107 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,125 @@ # example-backend +## 0.2.92-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.2 + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-backend@0.0.1-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/plugin-kubernetes-backend@0.15.0-next.2 + - @backstage/plugin-tech-insights-backend@0.5.24-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 + - @backstage/plugin-code-coverage-backend@0.2.24-next.2 + - @backstage/plugin-azure-devops-backend@0.5.2-next.2 + - @backstage/plugin-lighthouse-backend@0.4.2-next.2 + - @backstage/plugin-devtools-backend@0.2.7-next.2 + - @backstage/plugin-linguist-backend@0.5.7-next.2 + - @backstage/plugin-playlist-backend@0.3.14-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-explore-backend@0.0.20-next.2 + - @backstage/plugin-jenkins-backend@0.3.4-next.2 + - @backstage/plugin-rollbar-backend@0.1.55-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-badges-backend@0.3.7-next.2 + - @backstage/plugin-events-backend@0.2.19-next.2 + - @backstage/plugin-nomad-backend@0.1.12-next.2 + - @backstage/plugin-adr-backend@0.4.7-next.2 + - @backstage/plugin-app-backend@0.3.58-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - example-app@0.2.92-next.2 + - @backstage/plugin-todo-backend@0.3.8-next.2 + - @backstage/plugin-kafka-backend@0.3.8-next.2 + - @backstage/plugin-permission-backend@0.5.33-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-proxy-backend@0.4.8-next.2 + - @backstage/plugin-search-backend@1.5.0-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-backend@1.9.3-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 0.2.92-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.21.0-next.1 + - @backstage/plugin-azure-devops-backend@0.5.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - example-app@0.2.92-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-adr-backend@0.4.7-next.1 + - @backstage/plugin-app-backend@0.3.58-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-badges-backend@0.3.7-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-code-coverage-backend@0.2.24-next.1 + - @backstage/plugin-devtools-backend@0.2.7-next.1 + - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 + - @backstage/plugin-events-backend@0.2.19-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-explore-backend@0.0.20-next.1 + - @backstage/plugin-jenkins-backend@0.3.4-next.1 + - @backstage/plugin-kafka-backend@0.3.8-next.1 + - @backstage/plugin-kubernetes-backend@0.14.2-next.1 + - @backstage/plugin-lighthouse-backend@0.4.2-next.1 + - @backstage/plugin-linguist-backend@0.5.7-next.1 + - @backstage/plugin-nomad-backend@0.1.12-next.1 + - @backstage/plugin-permission-backend@0.5.33-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-backend@0.3.14-next.1 + - @backstage/plugin-proxy-backend@0.4.8-next.1 + - @backstage/plugin-rollbar-backend@0.1.55-next.1 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 + - @backstage/plugin-search-backend@1.5.0-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.19-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + - @backstage/plugin-signals-backend@0.0.1-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + - @backstage/plugin-tech-insights-backend@0.5.24-next.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + - @backstage/plugin-techdocs-backend@1.9.3-next.1 + - @backstage/plugin-todo-backend@0.3.8-next.1 + ## 0.2.92-next.0 ### Patch Changes diff --git a/packages/backend/knip-report.md b/packages/backend/knip-report.md new file mode 100644 index 0000000000..dbd46f1746 --- /dev/null +++ b/packages/backend/knip-report.md @@ -0,0 +1,27 @@ +# Knip report + +## Unused dependencies (12) + +| Name | Location | +|:--------------------------------------------------|:-------------| +| pg | package.json | +| luxon | package.json | +| mysql2 | package.json | +| example-app | package.json | +| @octokit/rest | package.json | +| better-sqlite3 | package.json | +| @gitbeaker/node | package.json | +| pg-connection-string | package.json | +| azure-devops-node-api | package.json | +| @backstage/plugin-tech-insights-node | package.json | +| @backstage/plugin-azure-sites-common | package.json | +| @backstage/plugin-scaffolder-backend-module-rails | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:---------------------------------|:-------------| +| @types/luxon | package.json | +| @backstage/cli | package.json | +| @types/express-serve-static-core | package.json | + diff --git a/packages/backend/package.json b/packages/backend/package.json index a7c80adfdb..0b0a0f1491 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.92-next.0", + "version": "0.2.92-next.2", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend/src/plugins/signals.ts b/packages/backend/src/plugins/signals.ts index 477cea1938..066fae74f8 100644 --- a/packages/backend/src/plugins/signals.ts +++ b/packages/backend/src/plugins/signals.ts @@ -24,5 +24,6 @@ export default async function createPlugin( logger: env.logger, eventBroker: env.eventBroker, identity: env.identity, + discovery: env.discovery, }); } diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index 3dad2f739b..d76e68c1c9 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -27,7 +27,7 @@ import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { EventBroker } from '@backstage/plugin-events-node'; -import { DefaultSignalService } from '@backstage/plugin-signals-node'; +import { SignalService } from '@backstage/plugin-signals-node'; export type PluginEnvironment = { logger: Logger; @@ -41,5 +41,5 @@ export type PluginEnvironment = { scheduler: PluginTaskScheduler; identity: IdentityApi; eventBroker: EventBroker; - signalService: DefaultSignalService; + signalService: SignalService; }; diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md index 0d1e91dc99..c1dbd87a5e 100644 --- a/packages/catalog-client/CHANGELOG.md +++ b/packages/catalog-client/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/catalog-client +## 1.6.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- c04c42b: Internal updates to auto-generated files. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + ## 1.6.0-next.0 ### Minor Changes diff --git a/packages/catalog-client/knip-report.md b/packages/catalog-client/knip-report.md new file mode 100644 index 0000000000..23d85dc9a4 --- /dev/null +++ b/packages/catalog-client/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | + diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index da9611e8d4..56103e83f9 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.6.0-next.0", + "version": "1.6.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md index 6f374cdbc5..e5c97f5220 100644 --- a/packages/catalog-model/CHANGELOG.md +++ b/packages/catalog-model/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/catalog-model +## 1.4.4-next.0 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 1.4.3 ### Patch Changes diff --git a/packages/catalog-model/knip-report.md b/packages/catalog-model/knip-report.md new file mode 100644 index 0000000000..7b964d1d0f --- /dev/null +++ b/packages/catalog-model/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-------------------|:-------------| +| yaml | package.json | +| @backstage/cli | package.json | +| @types/json-schema | package.json | + diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 746ef803ff..cf6a5f3cc3 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.4.3", + "version": "1.4.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli-common/knip-report.md b/packages/cli-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/packages/cli-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/cli-node/api-report.md b/packages/cli-node/api-report.md index 71be6c4bd4..4bd152dca8 100644 --- a/packages/cli-node/api-report.md +++ b/packages/cli-node/api-report.md @@ -55,6 +55,14 @@ export interface BackstagePackageJson { registry?: string; }; // (undocumented) + repository?: + | string + | { + type: string; + url: string; + directory: string; + }; + // (undocumented) scripts?: { [key: string]: string; }; diff --git a/packages/cli-node/knip-report.md b/packages/cli-node/knip-report.md new file mode 100644 index 0000000000..fc3e84abaf --- /dev/null +++ b/packages/cli-node/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| semver | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/cli-node/src/monorepo/PackageGraph.ts b/packages/cli-node/src/monorepo/PackageGraph.ts index fb46dbde26..cd01ec833f 100644 --- a/packages/cli-node/src/monorepo/PackageGraph.ts +++ b/packages/cli-node/src/monorepo/PackageGraph.ts @@ -58,6 +58,14 @@ export interface BackstagePackageJson { registry?: string; }; + repository?: + | string + | { + type: string; + url: string; + directory: string; + }; + dependencies?: { [key: string]: string; }; diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 1d79e73dfb..6928d03916 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,41 @@ # @backstage/cli +## 0.25.2-next.2 + +### Patch Changes + +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. +- 5c05f8a: Harmonize the package naming and allow custom prefix +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/release-manifests@0.0.11 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## 0.25.2-next.1 + +### Patch Changes + +- b58673e: Upgrade jest +- 08804c3: Fixed an issue that would cause an invalid `__backstage-autodetected-plugins__.js` to be written when using experimental module discovery. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.5-next.0 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + ## 0.25.2-next.0 ### Patch Changes diff --git a/packages/cli/knip-report.md b/packages/cli/knip-report.md new file mode 100644 index 0000000000..8caf86f5ec --- /dev/null +++ b/packages/cli/knip-report.md @@ -0,0 +1,75 @@ +# Knip report + +## Unused dependencies (28) + +| Name | Location | +|:---------------------------------|:-------------| +| util | package.json | +| glob | package.json | +| buffer | package.json | +| sucrase | package.json | +| process | package.json | +| postcss | package.json | +| esbuild | package.json | +| @swc/jest | package.json | +| @swc/core | package.json | +| @svgr/core | package.json | +| cross-fetch | package.json | +| jest-runtime | package.json | +| @swc/helpers | package.json | +| replace-in-file | package.json | +| jest-css-modules | package.json | +| @svgr/plugin-jsx | package.json | +| @svgr/plugin-svgo | package.json | +| @types/webpack-env | package.json | +| eslint-plugin-react | package.json | +| terser-webpack-plugin | package.json | +| jest-environment-jsdom | package.json | +| eslint-plugin-jsx-a11y | package.json | +| @sucrase/webpack-loader | package.json | +| eslint-plugin-react-hooks | package.json | +| eslint-plugin-deprecation | package.json | +| eslint-formatter-friendly | package.json | +| @spotify/eslint-config-react | package.json | +| @typescript-eslint/eslint-plugin | package.json | + +## Unused devDependencies (18) + +| Name | Location | +|:----------------------------------------|:-------------| +| msw | package.json | +| del | package.json | +| ts-node | package.json | +| nodemon | package.json | +| @types/ejs | package.json | +| @types/svgo | package.json | +| @backstage/theme | package.json | +| @types/http-proxy | package.json | +| @backstage/dev-utils | package.json | +| @backstage/test-utils | package.json | +| @backstage/core-app-api | package.json | +| @backstage/backend-common | package.json | +| @backstage/core-plugin-api | package.json | +| @backstage/core-components | package.json | +| @types/terser-webpack-plugin | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/backend-plugin-api | package.json | +| @types/rollup-plugin-peer-deps-external | package.json | + +## Referenced optional peerDependencies (4) + +| Name | Location | +|:---------------------------|:-------------| +| vite | package.json | +| vite-plugin-html | package.json | +| @vitejs/plugin-react | package.json | +| vite-plugin-node-polyfills | package.json | + +## Unlisted dependencies (3) + +| Name | Location | +|:-------------------|:-------------------------------------------| +| prettier | src/commands/migrate/packageLintConfigs.ts | +| react-dom/client | src/lib/bundler/hasReactDomClient.ts | +| react/package.json | src/lib/bundler/server.ts | + diff --git a/packages/cli/package.json b/packages/cli/package.json index edf03167ec..d8af2ce910 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.25.2-next.0", + "version": "0.25.2-next.2", "publishConfig": { "access": "public" }, @@ -78,7 +78,7 @@ "css-loader": "^6.5.1", "ctrlc-windows": "^2.1.0", "diff": "^5.0.0", - "esbuild": "^0.19.0", + "esbuild": "^0.20.0", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", "eslint-config-prettier": "^8.3.0", diff --git a/packages/cli/src/commands/repo/fix.ts b/packages/cli/src/commands/repo/fix.ts index bd5b375ed5..b975203a73 100644 --- a/packages/cli/src/commands/repo/fix.ts +++ b/packages/cli/src/commands/repo/fix.ts @@ -22,7 +22,11 @@ import { } from '@backstage/cli-node'; import { OptionValues } from 'commander'; import fs from 'fs-extra'; -import { resolve as resolvePath } from 'path'; +import { + resolve as resolvePath, + join as joinPath, + relative as relativePath, +} from 'path'; import { paths } from '../../lib/paths'; /** @@ -189,12 +193,64 @@ export function fixSideEffects(pkg: FixablePackage) { pkg.changed = true; } +export function createRepositoryFieldFixer() { + const rootPkg = require(paths.resolveTargetRoot('package.json')); + const rootRepoField = rootPkg.repository; + if (!rootRepoField) { + return () => {}; + } + + const rootType = rootRepoField.type || 'git'; + const rootUrl = rootRepoField.url; + const rootDir = rootRepoField.directory || ''; + + return (pkg: FixablePackage) => { + const expectedPath = joinPath( + rootDir, + relativePath(paths.targetRoot, pkg.dir), + ); + const repoField = pkg.packageJson.repository; + + if (!repoField || typeof repoField === 'string') { + const pkgEntries = Object.entries(pkg.packageJson); + pkgEntries.splice( + // Place it just above the backstage field + pkgEntries.findIndex(([name]) => name === 'backstage'), + 0, + [ + 'repository', + { + type: rootType, + url: rootUrl, + directory: expectedPath, + }, + ], + ); + pkg.packageJson = Object.fromEntries(pkgEntries) as BackstagePackageJson; + pkg.changed = true; + return; + } + + // If there's a type or URL mismatch, leave the field as is + if (repoField.type !== rootType || repoField.url !== rootUrl) { + return; + } + + if (repoField.directory !== expectedPath) { + repoField.directory = expectedPath; + pkg.changed = true; + } + }; +} + export async function command(opts: OptionValues): Promise { const packages = await readFixablePackages(); + const fixRepositoryField = createRepositoryFieldFixer(); for (const pkg of packages) { fixPackageExports(pkg); fixSideEffects(pkg); + fixRepositoryField(pkg); } if (opts.check) { diff --git a/packages/cli/src/lib/bundler/bundle.ts b/packages/cli/src/lib/bundler/bundle.ts index d0624c93ff..c5dda4b1cd 100644 --- a/packages/cli/src/lib/bundler/bundle.ts +++ b/packages/cli/src/lib/bundler/bundle.ts @@ -68,7 +68,7 @@ export async function buildBundle(options: BuildOptions) { if (publicPaths) { console.log( chalk.yellow( - `⚠️ WARNING: The app /auth entry point is an experimental feature that may receive immediate breaking changes.`, + `⚠️ WARNING: The app /public entry point is an experimental feature that may receive immediate breaking changes.`, ), ); configs.push( diff --git a/packages/cli/src/lib/new/factories/backendModule.ts b/packages/cli/src/lib/new/factories/backendModule.ts index 221adcb1f3..1450e7b6ce 100644 --- a/packages/cli/src/lib/new/factories/backendModule.ts +++ b/packages/cli/src/lib/new/factories/backendModule.ts @@ -19,7 +19,7 @@ import chalk from 'chalk'; import camelCase from 'lodash/camelCase'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { addPackageDependency, Task } from '../../tasks'; import { moduleIdIdPrompt, @@ -27,6 +27,7 @@ import { pluginIdPrompt, } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -45,9 +46,11 @@ export const backendModule = createFactory({ async create(options: Options, ctx: CreateContext) { const { id: pluginId, moduleId } = options; const dirName = `${pluginId}-backend-module-${moduleId}`; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${dirName}` - : `backstage-plugin-${dirName}`; + const name = resolvePackageName({ + baseName: dirName, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating backend module ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/backendPlugin.ts b/packages/cli/src/lib/new/factories/backendPlugin.ts index c5c9b5bd0e..09ea98fbe7 100644 --- a/packages/cli/src/lib/new/factories/backendPlugin.ts +++ b/packages/cli/src/lib/new/factories/backendPlugin.ts @@ -19,10 +19,11 @@ import chalk from 'chalk'; import camelCase from 'lodash/camelCase'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { addPackageDependency, Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -40,9 +41,11 @@ export const backendPlugin = createFactory({ async create(options: Options, ctx: CreateContext) { const { id } = options; const pluginId = `${id}-backend`; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${pluginId}` - : `backstage-plugin-${pluginId}`; + const name = resolvePackageName({ + baseName: pluginId, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating backend plugin ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/common/util.test.ts b/packages/cli/src/lib/new/factories/common/util.test.ts new file mode 100644 index 0000000000..6f168d8035 --- /dev/null +++ b/packages/cli/src/lib/new/factories/common/util.test.ts @@ -0,0 +1,78 @@ +/* + * Copyright 2024 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 { resolvePackageName } from './util'; + +describe('resolvePackageName', () => { + it('should generate correct name without scope', () => { + expect(resolvePackageName({ baseName: 'test', plugin: true })).toEqual( + 'backstage-plugin-test', + ); + expect(resolvePackageName({ baseName: 'test', plugin: false })).toEqual( + 'test', + ); + }); + + it('should generate correct name for backstage scope', () => { + expect( + resolvePackageName({ + baseName: 'test', + scope: 'backstage', + plugin: true, + }), + ).toEqual('@backstage/plugin-test'); + expect( + resolvePackageName({ + baseName: 'test', + scope: 'backstage', + plugin: false, + }), + ).toEqual('@backstage/test'); + }); + + it('should generate correct name for custom scope', () => { + expect( + resolvePackageName({ + baseName: 'test', + scope: 'custom', + plugin: true, + }), + ).toEqual('@custom/backstage-plugin-test'); + expect( + resolvePackageName({ + baseName: 'test', + scope: 'custom', + plugin: false, + }), + ).toEqual('@custom/test'); + }); + + it('should generate correct name for custom scope and custom prefix', () => { + expect( + resolvePackageName({ + baseName: 'test', + scope: 'custom/myapp.', + plugin: true, + }), + ).toEqual('@custom/myapp.backstage-plugin-test'); + expect( + resolvePackageName({ + baseName: 'test', + scope: 'custom/myapp.', + plugin: false, + }), + ).toEqual('@custom/myapp.test'); + }); +}); diff --git a/packages/cli/src/lib/new/factories/common/util.ts b/packages/cli/src/lib/new/factories/common/util.ts new file mode 100644 index 0000000000..d9c6970afd --- /dev/null +++ b/packages/cli/src/lib/new/factories/common/util.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2024 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 const resolvePackageName = (options: { + baseName: string; + scope?: string; + plugin: boolean; +}) => { + const { baseName, scope, plugin } = options; + if (scope) { + if (plugin) { + const pluginName = scope.startsWith('backstage') + ? 'plugin' + : 'backstage-plugin'; + return scope.includes('/') + ? `@${scope}${pluginName}-${baseName}` + : `@${scope}/${pluginName}-${baseName}`; + } + return scope.includes('/') + ? `@${scope}${baseName}` + : `@${scope}/${baseName}`; + } + + return plugin ? `backstage-plugin-${baseName}` : baseName; +}; diff --git a/packages/cli/src/lib/new/factories/frontendPlugin.test.ts b/packages/cli/src/lib/new/factories/frontendPlugin.test.ts index 94d4a7eb4c..cca79dea2a 100644 --- a/packages/cli/src/lib/new/factories/frontendPlugin.test.ts +++ b/packages/cli/src/lib/new/factories/frontendPlugin.test.ts @@ -180,7 +180,7 @@ const router = ( fs.readJson(mockDir.resolve('packages/app/package.json')), ).resolves.toEqual({ dependencies: { - '@internal/plugin-test': '^1.0.0', + '@internal/backstage-plugin-test': '^1.0.0', }, }); @@ -188,7 +188,7 @@ const router = ( fs.readFile(mockDir.resolve('packages/app/src/App.tsx'), 'utf8'), ).resolves.toBe(` import { createApp } from '@backstage/app-defaults'; -import { TestPage } from '@internal/plugin-test'; +import { TestPage } from '@internal/backstage-plugin-test'; const router = ( diff --git a/packages/cli/src/lib/new/factories/frontendPlugin.ts b/packages/cli/src/lib/new/factories/frontendPlugin.ts index d0e81207ca..1058c879c1 100644 --- a/packages/cli/src/lib/new/factories/frontendPlugin.ts +++ b/packages/cli/src/lib/new/factories/frontendPlugin.ts @@ -20,10 +20,11 @@ import camelCase from 'lodash/camelCase'; import upperFirst from 'lodash/upperFirst'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { addPackageDependency, Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -41,9 +42,11 @@ export const frontendPlugin = createFactory({ async create(options: Options, ctx: CreateContext) { const { id } = options; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${id}` - : `backstage-plugin-${id}`; + const name = resolvePackageName({ + baseName: id, + scope: ctx.scope, + plugin: true, + }); const extensionName = `${upperFirst(camelCase(id))}Page`; Task.log(); diff --git a/packages/cli/src/lib/new/factories/nodeLibraryPackage.ts b/packages/cli/src/lib/new/factories/nodeLibraryPackage.ts index 4b1fda4abc..3fae1242a2 100644 --- a/packages/cli/src/lib/new/factories/nodeLibraryPackage.ts +++ b/packages/cli/src/lib/new/factories/nodeLibraryPackage.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -37,7 +38,11 @@ export const nodeLibraryPackage = createFactory({ optionsPrompts: [pluginIdPrompt(), ownerPrompt()], async create(options: Options, ctx: CreateContext) { const { id } = options; - const name = ctx.scope ? `@${ctx.scope}/${id}` : `${id}`; + const name = resolvePackageName({ + baseName: id, + scope: ctx.scope, + plugin: false, + }); Task.log(); Task.log(`Creating node-library package ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/pluginCommon.ts b/packages/cli/src/lib/new/factories/pluginCommon.ts index 1bcca2fb6a..560386c618 100644 --- a/packages/cli/src/lib/new/factories/pluginCommon.ts +++ b/packages/cli/src/lib/new/factories/pluginCommon.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -38,9 +39,11 @@ export const pluginCommon = createFactory({ async create(options: Options, ctx: CreateContext) { const { id } = options; const suffix = `${id}-common`; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${suffix}` - : `backstage-plugin-${suffix}`; + const name = resolvePackageName({ + baseName: suffix, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating backend plugin ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/pluginNode.ts b/packages/cli/src/lib/new/factories/pluginNode.ts index 44dbea9fce..c7f9ba6f6a 100644 --- a/packages/cli/src/lib/new/factories/pluginNode.ts +++ b/packages/cli/src/lib/new/factories/pluginNode.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -38,9 +39,11 @@ export const pluginNode = createFactory({ async create(options: Options, ctx: CreateContext) { const { id } = options; const suffix = `${id}-node`; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${suffix}` - : `backstage-plugin-${suffix}`; + const name = resolvePackageName({ + baseName: suffix, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating Node.js plugin library ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/pluginWeb.ts b/packages/cli/src/lib/new/factories/pluginWeb.ts index 8189654eb2..dc8cb73dce 100644 --- a/packages/cli/src/lib/new/factories/pluginWeb.ts +++ b/packages/cli/src/lib/new/factories/pluginWeb.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -38,9 +39,11 @@ export const pluginWeb = createFactory({ async create(options: Options, ctx: CreateContext) { const { id } = options; const suffix = `${id}-react`; - const name = ctx.scope - ? `@${ctx.scope}/plugin-${suffix}` - : `backstage-plugin-${suffix}`; + const name = resolvePackageName({ + baseName: suffix, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating web plugin library ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/scaffolderModule.ts b/packages/cli/src/lib/new/factories/scaffolderModule.ts index b89f0fc691..07f67ce78c 100644 --- a/packages/cli/src/lib/new/factories/scaffolderModule.ts +++ b/packages/cli/src/lib/new/factories/scaffolderModule.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -55,14 +56,11 @@ export const scaffolderModule = createFactory({ const { id } = options; const slug = `scaffolder-backend-module-${id}`; - let name = `backstage-plugin-${slug}`; - if (ctx.scope) { - if (ctx.scope === 'backstage') { - name = `@backstage/plugin-${slug}`; - } else { - name = `@${ctx.scope}/backstage-plugin-${slug}`; - } - } + const name = resolvePackageName({ + baseName: slug, + scope: ctx.scope, + plugin: true, + }); Task.log(); Task.log(`Creating module ${chalk.cyan(name)}`); diff --git a/packages/cli/src/lib/new/factories/webLibraryPackage.ts b/packages/cli/src/lib/new/factories/webLibraryPackage.ts index a160220cab..8f4488926d 100644 --- a/packages/cli/src/lib/new/factories/webLibraryPackage.ts +++ b/packages/cli/src/lib/new/factories/webLibraryPackage.ts @@ -17,10 +17,11 @@ import chalk from 'chalk'; import { paths } from '../../paths'; import { addCodeownersEntry, getCodeownersFilePath } from '../../codeowners'; -import { createFactory, CreateContext } from '../types'; +import { CreateContext, createFactory } from '../types'; import { Task } from '../../tasks'; import { ownerPrompt, pluginIdPrompt } from './common/prompts'; import { executePluginPackageTemplate } from './common/tasks'; +import { resolvePackageName } from './common/util'; type Options = { id: string; @@ -37,7 +38,11 @@ export const webLibraryPackage = createFactory({ optionsPrompts: [pluginIdPrompt(), ownerPrompt()], async create(options: Options, ctx: CreateContext) { const { id } = options; - const name = ctx.scope ? `@${ctx.scope}/${id}` : `${id}`; + const name = resolvePackageName({ + baseName: id, + scope: ctx.scope, + plugin: false, + }); Task.log(); Task.log(`Creating web-library package ${chalk.cyan(name)}`); diff --git a/packages/codemods/knip-report.md b/packages/codemods/knip-report.md new file mode 100644 index 0000000000..2d38eafb88 --- /dev/null +++ b/packages/codemods/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:------------------------|:-------------| +| jscodeshift | package.json | +| jscodeshift-add-imports | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-------------------|:-------------| +| ts-node | package.json | +| @backstage/cli | package.json | +| @types/jscodeshift | package.json | + diff --git a/packages/config-loader/knip-report.md b/packages/config-loader/knip-report.md new file mode 100644 index 0000000000..ff197bea3a --- /dev/null +++ b/packages/config-loader/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| zen-observable | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/config/knip-report.md b/packages/config/knip-report.md new file mode 100644 index 0000000000..ce8576bebf --- /dev/null +++ b/packages/config/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | + diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 9e32db5016..c693f18b89 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/core-app-api +## 1.12.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## 1.11.4-next.0 + +### Patch Changes + +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + ## 1.11.3 ### Patch Changes diff --git a/packages/core-app-api/README.md b/packages/core-app-api/README.md index ffdc0ef94a..94dd618625 100644 --- a/packages/core-app-api/README.md +++ b/packages/core-app-api/README.md @@ -7,7 +7,7 @@ This package provides the core API used by Backstage apps. Install the package via Yarn: ```bash -yarn add --cwd packages/app @backstage/core-app-api +yarn --cwd packages/app add @backstage/core-app-api ``` ## Documentation diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md index 05071255ba..8b8cc991c8 100644 --- a/packages/core-app-api/api-report.md +++ b/packages/core-app-api/api-report.md @@ -64,6 +64,7 @@ import { SessionState } from '@backstage/core-plugin-api'; import { StorageApi } from '@backstage/core-plugin-api'; import { StorageValueSnapshot } from '@backstage/core-plugin-api'; import { SubRouteRef } from '@backstage/core-plugin-api'; +import { vmwareCloudAuthApiRef } from '@backstage/core-plugin-api'; // @public export class AlertApiForwarder implements AlertApi { @@ -651,6 +652,12 @@ export class UrlPatternDiscovery implements DiscoveryApi { getBaseUrl(pluginId: string): Promise; } +// @public +export class VMwareCloudAuth { + // (undocumented) + static create(options: OAuthApiCreateOptions): typeof vmwareCloudAuthApiRef.T; +} + // @public export class WebStorage implements StorageApi { constructor(namespace: string, errorApi: ErrorApi); diff --git a/packages/core-app-api/knip-report.md b/packages/core-app-api/knip-report.md new file mode 100644 index 0000000000..905368dd3f --- /dev/null +++ b/packages/core-app-api/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| history | package.json | + +## Unused devDependencies (11) + +| Name | Location | +|:-----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| react-router-beta | package.json | +| react-router-stable | package.json | +| @testing-library/dom | package.json | +| react-router-dom-beta | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| react-router-dom-stable | package.json | +| @testing-library/user-event | package.json | +| @testing-library/react-hooks | package.json | + diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index f0654f7596..8f940ce999 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.11.3", + "version": "1.12.0-next.1", "publishConfig": { "access": "public" }, @@ -47,7 +47,7 @@ "@backstage/types": "workspace:^", "@backstage/version-bridge": "workspace:^", "@types/prop-types": "^15.7.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "history": "^5.0.0", "i18next": "^22.4.15", "lodash": "^4.17.21", diff --git a/packages/core-app-api/src/apis/implementations/auth/index.ts b/packages/core-app-api/src/apis/implementations/auth/index.ts index b54e0424da..e02e07961a 100644 --- a/packages/core-app-api/src/apis/implementations/auth/index.ts +++ b/packages/core-app-api/src/apis/implementations/auth/index.ts @@ -25,4 +25,5 @@ export * from './onelogin'; export * from './bitbucket'; export * from './bitbucketServer'; export * from './atlassian'; +export * from './vmwareCloud'; export type { OAuthApiCreateOptions, AuthApiCreateOptions } from './types'; diff --git a/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.ts b/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.ts new file mode 100644 index 0000000000..83a2be0668 --- /dev/null +++ b/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2024 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 { vmwareCloudAuthApiRef } from '@backstage/core-plugin-api'; +import { OAuth2 } from '../oauth2'; +import { OAuthApiCreateOptions } from '../types'; + +const DEFAULT_PROVIDER = { + id: 'vmwareCloudServices', + title: 'VMware Cloud', + icon: () => null, +}; + +/** + * Implements the OAuth flow for VMware Cloud Services + * + * @public + */ +export default class VMwareCloudAuth { + static create( + options: OAuthApiCreateOptions, + ): typeof vmwareCloudAuthApiRef.T { + const { + configApi, + discoveryApi, + oauthRequestApi, + environment = 'development', + provider = DEFAULT_PROVIDER, + defaultScopes = ['openid'], + } = options; + + return OAuth2.create({ + configApi, + discoveryApi, + oauthRequestApi, + provider, + environment, + defaultScopes, + }); + } +} diff --git a/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/index.ts b/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/index.ts new file mode 100644 index 0000000000..023f700149 --- /dev/null +++ b/packages/core-app-api/src/apis/implementations/auth/vmwareCloud/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 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 { default as VMwareCloudAuth } from './VMwareCloudAuth'; diff --git a/packages/core-compat-api/CHANGELOG.md b/packages/core-compat-api/CHANGELOG.md index a8abcbc8fc..366ac5cb65 100644 --- a/packages/core-compat-api/CHANGELOG.md +++ b/packages/core-compat-api/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/core-compat-api +## 0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/version-bridge@1.0.7 + +## 0.2.0-next.1 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- edfd3a5: Updated dependency `@oriflame/backstage-plugin-score-card` to `^0.8.0`. +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/version-bridge@1.0.7 + ## 0.1.2-next.0 ### Patch Changes diff --git a/packages/core-compat-api/knip-report.md b/packages/core-compat-api/knip-report.md new file mode 100644 index 0000000000..25c65be193 --- /dev/null +++ b/packages/core-compat-api/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/core-app-api | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:--------------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | +| @backstage/plugin-catalog | package.json | +| @backstage/plugin-puppetdb | package.json | +| @backstage/frontend-app-api | package.json | +| @backstage/plugin-stackstorm | package.json | +| @backstage/frontend-test-utils | package.json | +| @oriflame/backstage-plugin-score-card | package.json | + diff --git a/packages/core-compat-api/package.json b/packages/core-compat-api/package.json index 157e95d6b2..060408eab3 100644 --- a/packages/core-compat-api/package.json +++ b/packages/core-compat-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/core-compat-api", - "version": "0.1.2-next.0", + "version": "0.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -12,6 +12,11 @@ "backstage": { "role": "web-library" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/core-compat-api" + }, "sideEffects": false, "scripts": { "start": "backstage-cli package start", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index c6ffec5679..76b8d36ac6 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,52 @@ # @backstage/core-components +## 0.14.0-next.1 + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs +- 214f2da: Fix invalid HTTP status code 501 in Error Page +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/version-bridge@1.0.7 + +## 0.14.0-next.0 + +### Minor Changes + +- 281e8c6: **BREAKING**: Removed the `SidebarIntro` component as it was providing instructions for features that do not exist, along with `IntroCard`. If you were relying on this component and want to keep using it you can refer to the original implementations of [`SidebarIntro`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L149) and [`IntroCard`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L100). + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/version-bridge@1.0.7 + ## 0.13.10 ### Patch Changes diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index b5d54dd606..27b9c62653 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -265,6 +265,7 @@ export interface DependencyGraphProps rankMargin?: number; renderLabel?: DependencyGraphTypes.RenderLabelFunction; renderNode?: DependencyGraphTypes.RenderNodeFunction; + showArrowHeads?: boolean; zoom?: 'enabled' | 'disabled' | 'enable-on-click'; } diff --git a/packages/core-components/knip-report.md b/packages/core-components/knip-report.md new file mode 100644 index 0000000000..f457b7bb78 --- /dev/null +++ b/packages/core-components/knip-report.md @@ -0,0 +1,31 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:------------------|:-------------| +| linkifyjs | package.json | +| @date-io/core | package.json | +| zen-observable | package.json | +| @backstage/config | package.json | + +## Unused devDependencies (9) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| cross-fetch | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @types/zen-observable | package.json | +| @types/google-protobuf | package.json | +| @testing-library/react | package.json | +| @backstage/app-defaults | package.json | +| @testing-library/user-event | package.json | + +## Unlisted dependencies (1) + +| Name | Location | +|:--------|:---------------------------------------| +| csstype | src/components/Lifecycle/Lifecycle.tsx | + diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 9dc3e8cb8f..8355d42417 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.13.10", + "version": "0.14.0-next.1", "publishConfig": { "access": "public" }, @@ -56,8 +56,8 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@react-hookz/web": "^24.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@types/react-sparklines": "^1.7.0", "@types/react-text-truncate": "^0.14.0", "ansi-regex": "^6.0.1", diff --git a/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx b/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx index d4907d2a18..ee6b74f97a 100644 --- a/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx +++ b/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx @@ -160,6 +160,12 @@ export interface DependencyGraphProps * Default: 'curveMonotoneX' */ curve?: 'curveStepBefore' | 'curveMonotoneX'; + /** + * Controls if the arrow heads should be rendered or not. + * + * Default: false + */ + showArrowHeads?: boolean; /** * Controls if the graph should be contained or grow * @@ -201,6 +207,7 @@ export function DependencyGraph( defs, zoom = 'enabled', curve = 'curveMonotoneX', + showArrowHeads = false, fit = 'grow', ...svgProps } = props; @@ -436,6 +443,7 @@ export function DependencyGraph( render={renderLabel} edge={edge} curve={curve} + showArrowHeads={showArrowHeads} /> ); })} diff --git a/packages/core-components/src/components/DependencyGraph/Edge.tsx b/packages/core-components/src/components/DependencyGraph/Edge.tsx index 05e068eca4..6a1f8861bf 100644 --- a/packages/core-components/src/components/DependencyGraph/Edge.tsx +++ b/packages/core-components/src/components/DependencyGraph/Edge.tsx @@ -19,7 +19,7 @@ import * as d3Shape from 'd3-shape'; import isFinite from 'lodash/isFinite'; import makeStyles from '@material-ui/core/styles/makeStyles'; import { DependencyGraphTypes as Types } from './types'; -import { EDGE_TEST_ID, LABEL_TEST_ID } from './constants'; +import { ARROW_MARKER_ID, EDGE_TEST_ID, LABEL_TEST_ID } from './constants'; import { DefaultLabel } from './DefaultLabel'; import dagre from 'dagre'; @@ -43,7 +43,7 @@ export type DependencyGraphEdgeClassKey = 'path' | 'label'; const useStyles = makeStyles( theme => ({ path: { - strokeWidth: 1, + strokeWidth: 1.3, stroke: theme.palette.textSubtle, fill: 'none', transition: `${theme.transitions.duration.shortest}ms`, @@ -67,6 +67,7 @@ export type EdgeComponentProps = { edge: Types.DependencyEdge, ) => dagre.graphlib.Graph<{}>; curve: 'curveStepBefore' | 'curveMonotoneX'; + showArrowHeads?: boolean; }; const renderDefault = (props: Types.RenderLabelProps) => ( @@ -79,6 +80,7 @@ export function Edge({ id, edge, curve, + showArrowHeads, }: EdgeComponentProps) { const { x = 0, y = 0, width, height, points } = edge; const labelProps: Types.DependencyEdge = edge; @@ -126,7 +128,12 @@ export function Edge({ return ( <> {path && ( - + )} {labelProps.label ? ( ', () => { 'https://error-page-test-support-url.com', ); }); + + it('should render show details if stack is provided', async () => { + const { getByText } = await renderInTestApp( + , + ); + expect(getByText(/Show more details/i)).toBeInTheDocument(); + }); }); diff --git a/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx b/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx index 73acf1f650..131df3da3a 100644 --- a/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx +++ b/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx @@ -22,12 +22,14 @@ import { useNavigate } from 'react-router-dom'; import { Link } from '../../components/Link'; import { useSupportConfig } from '../../hooks'; import { MicDrop } from './MicDrop'; +import { StackDetails } from './StackDetails'; interface IErrorPageProps { - status: string; + status?: string; statusMessage: string; additionalInfo?: React.ReactNode; supportUrl?: string; + stack?: string; } /** @public */ @@ -62,13 +64,13 @@ const useStyles = makeStyles( * */ export function ErrorPage(props: IErrorPageProps) { - const { status, statusMessage, additionalInfo, supportUrl } = props; + const { status, statusMessage, additionalInfo, supportUrl, stack } = props; const classes = useStyles(); const navigate = useNavigate(); const support = useSupportConfig(); return ( - + Looks like someone dropped the mic! - + navigate(-1)}> Go back @@ -91,6 +93,7 @@ export function ErrorPage(props: IErrorPageProps) { contact support if you think this is a bug. + {stack && } diff --git a/packages/core-components/src/layout/ErrorPage/StackDetails.tsx b/packages/core-components/src/layout/ErrorPage/StackDetails.tsx new file mode 100644 index 0000000000..b46a937485 --- /dev/null +++ b/packages/core-components/src/layout/ErrorPage/StackDetails.tsx @@ -0,0 +1,77 @@ +/* + * Copyright 2024 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 Typography from '@material-ui/core/Typography'; +import React from 'react'; +import { useState } from 'react'; +import { Link } from '../../components/Link'; +import { CodeSnippet } from '../../components'; +import { makeStyles } from '@material-ui/core/styles'; + +interface IStackDetailsProps { + stack: string; +} + +const useStyles = makeStyles( + theme => ({ + title: { + paddingBottom: theme.spacing(5), + [theme.breakpoints.down('xs')]: { + paddingBottom: theme.spacing(4), + fontSize: theme.typography.h3.fontSize, + }, + }, + }), + { name: 'BackstageErrorPageStackDetails' }, +); + +/** + * Error page details with stack trace + * + * @public + * + */ +export function StackDetails(props: IStackDetailsProps) { + const { stack } = props; + const classes = useStyles(); + + const [detailsOpen, setDetailsOpen] = useState(false); + + if (!detailsOpen) { + return ( + + setDetailsOpen(true)}> + Show more details + + + ); + } + + return ( + <> + + setDetailsOpen(false)}> + Show less details + + + + + ); +} diff --git a/packages/core-components/src/layout/Sidebar/Page.tsx b/packages/core-components/src/layout/Sidebar/Page.tsx index 09d5bd910c..3d618fc5a0 100644 --- a/packages/core-components/src/layout/Sidebar/Page.tsx +++ b/packages/core-components/src/layout/Sidebar/Page.tsx @@ -33,23 +33,23 @@ import { SidebarPinStateProvider } from './SidebarPinStateContext'; export type SidebarPageClassKey = 'root'; -const useStyles = makeStyles< - Theme, - { sidebarConfig: SidebarConfig; isPinned: boolean } ->( +type StyleProps = { sidebarConfig: SidebarConfig; isPinned: boolean }; + +const useStyles = makeStyles( theme => ({ root: { width: '100%', transition: 'padding-left 0.1s ease-out', isolation: 'isolate', [theme.breakpoints.up('sm')]: { - paddingLeft: props => + paddingLeft: (props: StyleProps) => props.isPinned ? props.sidebarConfig.drawerWidthOpen : props.sidebarConfig.drawerWidthClosed, }, [theme.breakpoints.down('xs')]: { - paddingBottom: props => props.sidebarConfig.mobileSidebarHeight, + paddingBottom: (props: StyleProps) => + props.sidebarConfig.mobileSidebarHeight, }, '@media print': { padding: '0px !important', diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 4cb681e4aa..5c98243cb9 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/core-plugin-api +## 1.9.0-next.1 + +### Minor Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## 1.8.3-next.0 + +### Patch Changes + +- e586f79: Throw a more specific exception `NotImplementedError` when an API implementation cannot be found. +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + ## 1.8.2 ### Patch Changes diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 1fa40e2d0c..2a993687b3 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -776,6 +776,15 @@ export function useRouteRefParams( _routeRef: RouteRef | SubRouteRef, ): Params; +// @public +export const vmwareCloudAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; + // @public export function withApis( apis: TypesToApiRefs, diff --git a/packages/core-plugin-api/knip-report.md b/packages/core-plugin-api/knip-report.md new file mode 100644 index 0000000000..b222f9399d --- /dev/null +++ b/packages/core-plugin-api/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| history | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 68d5ad68c3..970062fb19 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.8.2", + "version": "1.9.0-next.1", "publishConfig": { "access": "public" }, @@ -50,7 +50,7 @@ "@backstage/errors": "workspace:^", "@backstage/types": "workspace:^", "@backstage/version-bridge": "workspace:^", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "history": "^5.0.0" }, "peerDependencies": { diff --git a/packages/core-plugin-api/src/apis/definitions/auth.ts b/packages/core-plugin-api/src/apis/definitions/auth.ts index d9aec2ca5a..d89544cf68 100644 --- a/packages/core-plugin-api/src/apis/definitions/auth.ts +++ b/packages/core-plugin-api/src/apis/definitions/auth.ts @@ -450,3 +450,22 @@ export const atlassianAuthApiRef: ApiRef< > = createApiRef({ id: 'core.auth.atlassian', }); + +/** + * Provides authentication towards VMware Cloud APIs and identities. + * + * @public + * @remarks + * + * For more info about VMware Cloud identity and access management: + * - {@link https://docs.vmware.com/en/VMware-Cloud-services/services/Using-VMware-Cloud-Services/GUID-53D39337-D93A-4B84-BD18-DDF43C21479A.html} + */ +export const vmwareCloudAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +> = createApiRef({ + id: 'core.auth.vmware-cloud', +}); diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 14ff49ff5c..136347bd3e 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/create-app +## 0.5.11-next.2 + +### Patch Changes + +- c420081: Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. +- f71352c: Bumped TypeScript to version `5.3`. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## 0.5.11-next.1 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.13 + ## 0.5.11-next.0 ### Patch Changes diff --git a/packages/create-app/knip-report.md b/packages/create-app/knip-report.md new file mode 100644 index 0000000000..3e3ca1b1a7 --- /dev/null +++ b/packages/create-app/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| ts-node | package.json | +| nodemon | package.json | +| @backstage/cli | package.json | +| @types/command-exists | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 6d3fe75f1d..d3d75e1151 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.5.11-next.0", + "version": "0.5.11-next.2", "publishConfig": { "access": "public" }, @@ -29,7 +29,8 @@ "clean": "backstage-cli package clean", "prepack": "node scripts/prepack.js", "postpack": "node scripts/postpack.js", - "start": "yarn nodemon --" + "start": "yarn nodemon --", + "add-lock-seed": "node scripts/add-lock-seed.js" }, "dependencies": { "@backstage/cli-common": "workspace:^", @@ -38,6 +39,7 @@ "fs-extra": "10.1.0", "handlebars": "^4.7.3", "inquirer": "^8.2.0", + "node-fetch": "^2.6.7", "ora": "^5.3.0", "recursive-readdir": "^2.2.2" }, @@ -49,6 +51,7 @@ "@types/inquirer": "^8.1.3", "@types/node": "^18.17.8", "@types/recursive-readdir": "^2.2.0", + "msw": "^1.0.0", "nodemon": "^3.0.1", "ts-node": "^10.0.0" }, diff --git a/packages/create-app/scripts/add-lock-seed.js b/packages/create-app/scripts/add-lock-seed.js new file mode 100644 index 0000000000..faa01fca9b --- /dev/null +++ b/packages/create-app/scripts/add-lock-seed.js @@ -0,0 +1,80 @@ +#!/usr/bin/env node +/* + * 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. + */ + +const fs = require('fs-extra'); +const path = require('path'); + +const YARN_REGISTRY = 'https://registry.yarnpkg.com'; +const NPM_REGISTRY = 'https://registry.npmjs.org'; +const SEED_FILE = 'seed-yarn.lock'; + +function formatLockEntry(package, query, version, distData) { + let header = `${package}@${query}`; + if (package.includes('@')) { + header = `"${header}"`; + } + header += ':'; + + return [ + '', + header, + ` version "${version}"`, + ` resolved "${distData.tarball.replace(NPM_REGISTRY, YARN_REGISTRY)}#${ + distData.shasum + }"`, + ` integrity ${distData.integrity}`, + '', + ].join('\n'); +} + +async function main(package, query, version) { + if (!package || !query || !version) { + console.error( + `Usage: yarn add-lock-seed + +Example: yarn lock-seed @backstage/cli ^1.0.0 1.2.3`, + ); + return false; + } + + const res = await fetch(`${YARN_REGISTRY}/${package}/${version}`); + if (!res.ok) { + console.error( + `Failed to fetch package info for ${package} v${version}: ${await res.text()}`, + ); + return false; + } + + const data = await res.json(); + + const entry = formatLockEntry(package, query, version, data.dist); + + const lockSeedPath = path.resolve(__dirname, `../${SEED_FILE}`); + + await fs.appendFile(lockSeedPath, entry, 'utf8'); + + console.log(`Added the following entry to ${SEED_FILE}:\n${entry}`); + + return true; +} + +main(...process.argv.slice(2)) + .then(ok => process.exit(ok ? 0 : 1)) + .catch(err => { + console.error(err.stack); + process.exit(1); + }); diff --git a/packages/create-app/seed-yarn.lock b/packages/create-app/seed-yarn.lock new file mode 100644 index 0000000000..00a86105cc --- /dev/null +++ b/packages/create-app/seed-yarn.lock @@ -0,0 +1,18 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +// This file is used to seed the yarn.lock file in newly created projects. +// It can be used to work around issues in new dependency versions that would otherwise +// both break new apps and the E2E tests in this repo. +// +// In @backstage/create-app this file is read directly from the repo, rather than from +// the published package. In the E2E tests it's instead loaded directly from the workspace. +// Lines starting with "//" are trimmed, so they can be used to add extra context to the entries. +// +// To add a new entry, run and commit the result: +// +// yarn add-lock-seed +// +// package: the name of the package, e.g. @testing-library/react +// query: the version query to pin the version for, e.g. ^14.0.0 +// version: the version to pin to, must be in range of the query, e.g. 14.11.0 diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts index af6b0c9c70..22b84ba5cd 100644 --- a/packages/create-app/src/createApp.ts +++ b/packages/create-app/src/createApp.ts @@ -30,6 +30,7 @@ import { templatingTask, tryInitGitRepository, readGitConfig, + fetchYarnLockSeedTask, } from './lib/tasks'; const DEFAULT_BRANCH = 'master'; @@ -110,6 +111,8 @@ export default async (opts: OptionValues): Promise => { await moveAppTask(tempDir, appDir, answers.name); } + const fetchedYarnLockSeed = await fetchYarnLockSeedTask(appDir); + if (gitConfig) { if (await tryInitGitRepository(appDir)) { // Since we don't know whether we were able to init git before we @@ -128,6 +131,20 @@ export default async (opts: OptionValues): Promise => { chalk.green(`🥇 Successfully created ${chalk.cyan(answers.name)}`), ); Task.log(); + + if (!fetchedYarnLockSeed) { + Task.log( + chalk.yellow( + [ + 'Warning: Failed to fetch the yarn.lock seed file.', + ' You may end up with incompatible dependencies that break the app.', + ' If you run into any errors, please search the issues at', + ' https://github.com/backstage/backstage/issues for potential solutions', + ].join('\n'), + ), + ); + } + Task.section('All set! Now you might want to'); if (opts.skipInstall) { Task.log( diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index e7c406f51c..b1f5e17ba0 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -27,8 +27,14 @@ import { templatingTask, tryInitGitRepository, readGitConfig, + fetchYarnLockSeedTask, } from './tasks'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; jest.spyOn(Task, 'log').mockReturnValue(undefined); jest.spyOn(Task, 'error').mockReturnValue(undefined); @@ -410,4 +416,75 @@ describe('tasks', () => { ); }); }); + + describe('fetchYarnLockSeedTask', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + + it('should fetch the yarn.lock seed file', async () => { + worker.use( + rest.get( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + (_, res, ctx) => + res( + ctx.status(200), + ctx.text(`# the-lockfile-header + +// some comments +// in the file +// that should +// be removed + +// a comment about the entry +"@backstage/cli@1.0.0": + some info +`), + ), + ), + ); + + mockDir.clear(); + + await expect(fetchYarnLockSeedTask(mockDir.path)).resolves.toBe(true); + + expect(mockDir.content({ shouldReadAsText: true })).toEqual({ + 'yarn.lock': `# the-lockfile-header + + +"@backstage/cli@1.0.0": + some info +`, + }); + }); + + it('should fail gracefully', async () => { + worker.use( + rest.get( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + (_, res, ctx) => res(ctx.status(404)), + ), + ); + + mockDir.clear(); + + await expect(fetchYarnLockSeedTask(mockDir.path)).resolves.toBe(false); + + expect(mockDir.content()).toEqual({}); + }); + + it('should time out if it takes too long to fetch', async () => { + worker.use( + rest.get( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + (_, res, ctx) => res(ctx.delay(5000)), + ), + ); + + mockDir.clear(); + + await expect(fetchYarnLockSeedTask(mockDir.path)).resolves.toBe(false); + + expect(mockDir.content()).toEqual({}); + }); + }); }); diff --git a/packages/create-app/src/lib/tasks.ts b/packages/create-app/src/lib/tasks.ts index 90e6f6ae53..d366bd5cc7 100644 --- a/packages/create-app/src/lib/tasks.ts +++ b/packages/create-app/src/lib/tasks.ts @@ -25,6 +25,7 @@ import { resolve as resolvePath, relative as relativePath, } from 'path'; +import fetch from 'node-fetch'; import { exec as execCb } from 'child_process'; import { packageVersions } from './versions'; import { promisify } from 'util'; @@ -304,3 +305,47 @@ export async function tryInitGitRepository(dir: string) { return false; } } + +/** + * This fetches the yarn.lock seed file at https://github.com/backstage/backstage/blob/master/packages/create-app/seed-yarn.lock + * Its purpose is to lock individual dependencies with broken releases to known working versions. + * This flow is decoupled from the release of the create-app package in order to avoid + * the need to re-publish the create-app package whenever we want to update the seed file. + * + * @returns true if the yarn.lock seed file was fetched successfully + */ +export async function fetchYarnLockSeedTask(dir: string) { + try { + await Task.forItem('fetching', 'yarn.lock seed', async () => { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 3000); + const res = await fetch( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + { + signal: controller.signal, + }, + ); + clearTimeout(timeout); + + if (!res.ok) { + throw new Error( + `Request failed with status ${res.status} ${res.statusText}`, + ); + } + + const initialYarnLockContent = await res.text(); + + await fs.writeFile( + resolvePath(dir, 'yarn.lock'), + initialYarnLockContent + .split('\n') + .filter(l => !l.startsWith('//')) + .join('\n'), + 'utf8', + ); + }); + return true; + } catch { + return false; + } +} diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index 40cc8282d9..f2f35360cc 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -39,7 +39,7 @@ "lerna": "^7.3.0", "node-gyp": "^9.0.0", "prettier": "^2.3.2", - "typescript": "~5.2.0" + "typescript": "~5.3.0" }, "resolutions": { "@types/react": "^18", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 8ebf1aece5..19194614fd 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/dev-utils +## 1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/theme@0.5.0 + ## 1.0.27-next.0 ### Patch Changes diff --git a/packages/dev-utils/knip-report.md b/packages/dev-utils/knip-report.md new file mode 100644 index 0000000000..c4383e6fce --- /dev/null +++ b/packages/dev-utils/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/theme | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| zen-observable | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c74550550c..b846907c32 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.27-next.0", + "version": "1.0.27-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", @@ -43,7 +43,7 @@ "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/packages/e2e-test-utils/knip-report.md b/packages/e2e-test-utils/knip-report.md new file mode 100644 index 0000000000..a41c8d5233 --- /dev/null +++ b/packages/e2e-test-utils/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @playwright/test | package.json | + diff --git a/packages/e2e-test-utils/package.json b/packages/e2e-test-utils/package.json index 3448497395..84e001acff 100644 --- a/packages/e2e-test-utils/package.json +++ b/packages/e2e-test-utils/package.json @@ -22,6 +22,11 @@ ] } }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/e2e-test-utils" + }, "backstage": { "role": "node-library" }, diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index 2adedfd43d..2188ec9ac7 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,23 @@ # e2e-test +## 0.2.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.2 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## 0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.11-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + ## 0.2.12-next.0 ### Patch Changes diff --git a/packages/e2e-test/knip-report.md b/packages/e2e-test/knip-report.md new file mode 100644 index 0000000000..fbc04bfa55 --- /dev/null +++ b/packages/e2e-test/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| ts-node | package.json | +| nodemon | package.json | +| @backstage/cli | package.json | +| @types/puppeteer | package.json | + diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index c1731de8ea..815af0a9da 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,7 +1,7 @@ { "name": "e2e-test", "description": "E2E test for verifying Backstage packages", - "version": "0.2.12-next.0", + "version": "0.2.12-next.2", "private": true, "backstage": { "role": "cli" diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index a9256695ec..cadd7b878d 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -263,6 +263,9 @@ async function createApp( const appDir = resolvePath(rootDir, appName); + print('Overriding yarn.lock with seed file from the create-app package'); + overrideYarnLockSeed(appDir); + print('Rewriting module resolutions of app to use workspace packages'); await overrideModuleResolutions(appDir, workspaceDir); @@ -305,6 +308,22 @@ async function createApp( } } +/** + * Overrides the downloaded yarn.lock file with the seed file packages/create-app/seed-yarn.lock + * This ensures that the E2E tests use the same seed file as users would receive when creating a new app + */ +async function overrideYarnLockSeed(appDir: string) { + const content = await fs.readFile( + paths.resolveOwnRoot('packages/create-app/seed-yarn.lock'), + 'utf8', + ); + const trimmedContent = content + .split('\n') + .filter(l => !l.startsWith('//')) + .join('\n'); + await fs.writeFile(resolvePath(appDir, 'yarn.lock'), trimmedContent, 'utf8'); +} + /** * This points dependency resolutions into the workspace for each package that is present there */ diff --git a/packages/errors/knip-report.md b/packages/errors/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/packages/errors/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/eslint-plugin/knip-report.md b/packages/eslint-plugin/knip-report.md new file mode 100644 index 0000000000..77fca799d7 --- /dev/null +++ b/packages/eslint-plugin/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unlisted dependencies (2) + +| Name | Location | +|:-------|:-------------------------------| +| estree | lib/visitImports.js | +| estree | rules/no-undeclared-imports.js | + diff --git a/packages/frontend-app-api/CHANGELOG.md b/packages/frontend-app-api/CHANGELOG.md index 0ef44ba882..f5ec61fa70 100644 --- a/packages/frontend-app-api/CHANGELOG.md +++ b/packages/frontend-app-api/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/frontend-app-api +## 0.6.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## 0.6.0-next.1 + +### Minor Changes + +- bdf4a8e: **BREAKING**: Removed the experimental `createExtensionTree` API. + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- e586f79: Wrap the root element with the analytics context to ensure it always exists for all extensions. +- fb9b5e7: The default `ComponentsApi` implementation now uses the `ComponentRef` ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of `@backstage/frontend-plugin-api` would break the app. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + ## 0.6.0-next.0 ### Minor Changes diff --git a/packages/frontend-app-api/knip-report.md b/packages/frontend-app-api/knip-report.md new file mode 100644 index 0000000000..fb60112aa2 --- /dev/null +++ b/packages/frontend-app-api/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index a95702aed5..3b9e5433f0 100644 --- a/packages/frontend-app-api/package.json +++ b/packages/frontend-app-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/frontend-app-api", - "version": "0.6.0-next.0", + "version": "0.6.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/frontend-app-api" + }, "backstage": { "role": "web-library" }, @@ -45,7 +50,7 @@ "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21" }, "peerDependencies": { diff --git a/packages/frontend-app-api/src/wiring/createApp.test.tsx b/packages/frontend-app-api/src/wiring/createApp.test.tsx index 43bb4499b1..70f8cfa2ae 100644 --- a/packages/frontend-app-api/src/wiring/createApp.test.tsx +++ b/packages/frontend-app-api/src/wiring/createApp.test.tsx @@ -291,6 +291,7 @@ describe('createApp', () => { + ] " diff --git a/packages/frontend-plugin-api/CHANGELOG.md b/packages/frontend-plugin-api/CHANGELOG.md index 07f74e3ff4..e81f3746d5 100644 --- a/packages/frontend-plugin-api/CHANGELOG.md +++ b/packages/frontend-plugin-api/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/frontend-plugin-api +## 0.6.0-next.2 + +### Patch Changes + +- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the + `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the + implementation is in `@backstage/core-app-api` and a factory has been added to + `@backstage/app-defaults`. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + +## 0.6.0-next.1 + +### Minor Changes + +- e586f79: **BREAKING**: Replace default plugin extension and plugin ids to be `app` instead of `root`. + +### Patch Changes + +- bc621aa: Added `RouteResolutionsApi` as a replacement for the routing context. +- 1e61ad3: App component extensions are no longer wrapped in an `ExtensionBoundary`, allowing them to inherit the outer context instead. +- 46b63de: Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + ## 0.5.1-next.0 ### Patch Changes diff --git a/packages/frontend-plugin-api/api-report.md b/packages/frontend-plugin-api/api-report.md index 28c8ea321c..d849fecf50 100644 --- a/packages/frontend-plugin-api/api-report.md +++ b/packages/frontend-plugin-api/api-report.md @@ -86,6 +86,7 @@ import { TypesToApiRefs } from '@backstage/core-plugin-api'; import { useApi } from '@backstage/core-plugin-api'; import { useApiHolder } from '@backstage/core-plugin-api'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { vmwareCloudAuthApiRef } from '@backstage/core-plugin-api'; import { withApis } from '@backstage/core-plugin-api'; import { z } from 'zod'; import { ZodSchema } from 'zod'; @@ -1168,5 +1169,7 @@ export function useRouteRefParams( export { useTranslationRef }; +export { vmwareCloudAuthApiRef }; + export { withApis }; ``` diff --git a/packages/frontend-plugin-api/knip-report.md b/packages/frontend-plugin-api/knip-report.md new file mode 100644 index 0000000000..a6c1e939c7 --- /dev/null +++ b/packages/frontend-plugin-api/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:---------------------------|:-------------| +| lodash | package.json | +| @material-ui/core | package.json | +| @backstage/core-components | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:-------------------------------|:-------------| +| history | package.json | +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/frontend-app-api | package.json | +| @backstage/frontend-test-utils | package.json | + diff --git a/packages/frontend-plugin-api/package.json b/packages/frontend-plugin-api/package.json index 1d97626cc8..7b4b1c3fd2 100644 --- a/packages/frontend-plugin-api/package.json +++ b/packages/frontend-plugin-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/frontend-plugin-api", - "version": "0.5.1-next.0", + "version": "0.6.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -12,6 +12,11 @@ "backstage": { "role": "web-library" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/frontend-plugin-api" + }, "sideEffects": false, "scripts": { "start": "backstage-cli package start", @@ -28,7 +33,7 @@ "@backstage/types": "workspace:^", "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.4", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "zod": "^3.22.4", "zod-to-json-schema": "^3.21.4" diff --git a/packages/frontend-plugin-api/src/apis/definitions/auth.ts b/packages/frontend-plugin-api/src/apis/definitions/auth.ts index d27aebbf47..89509082f0 100644 --- a/packages/frontend-plugin-api/src/apis/definitions/auth.ts +++ b/packages/frontend-plugin-api/src/apis/definitions/auth.ts @@ -36,4 +36,5 @@ export { oktaAuthApiRef, microsoftAuthApiRef, oneloginAuthApiRef, + vmwareCloudAuthApiRef, } from '@backstage/core-plugin-api'; diff --git a/packages/frontend-test-utils/CHANGELOG.md b/packages/frontend-test-utils/CHANGELOG.md index 31799581f6..c42e22e159 100644 --- a/packages/frontend-test-utils/CHANGELOG.md +++ b/packages/frontend-test-utils/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/frontend-test-utils +## 0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/frontend-app-api@0.6.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/types@1.1.1 + +## 0.1.2-next.1 + +### Patch Changes + +- bc621aa: Updates to use the new `RouteResolutionsApi`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/frontend-app-api@0.6.0-next.1 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/types@1.1.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/packages/frontend-test-utils/knip-report.md b/packages/frontend-test-utils/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/packages/frontend-test-utils/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/packages/frontend-test-utils/package.json b/packages/frontend-test-utils/package.json index 8b9b4382e8..80e15e11e2 100644 --- a/packages/frontend-test-utils/package.json +++ b/packages/frontend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/frontend-test-utils", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/frontend-test-utils" + }, "backstage": { "role": "web-library" }, diff --git a/packages/integration-aws-node/knip-report.md b/packages/integration-aws-node/knip-report.md new file mode 100644 index 0000000000..a8a1f8c820 --- /dev/null +++ b/packages/integration-aws-node/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------------------|:-------------| +| @backstage/errors | package.json | +| @aws-sdk/credential-provider-node | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:-------------------------|:-------------| +| @backstage/cli | package.json | +| aws-sdk-client-mock | package.json | +| @backstage/test-utils | package.json | +| aws-sdk-client-mock-jest | package.json | +| @backstage/config-loader | package.json | + diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index fd6a47e4e7..b057308802 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/integration-react +## 1.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + +## 1.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + ## 1.1.23 ### Patch Changes diff --git a/packages/integration-react/knip-report.md b/packages/integration-react/knip-report.md new file mode 100644 index 0000000000..1ffbed64e8 --- /dev/null +++ b/packages/integration-react/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | + diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index f1592628ab..1d560bae94 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.23", + "version": "1.1.24-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 8dd9ec3915..8ddda692c4 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/integration +## 1.9.0-next.0 + +### Minor Changes + +- e27b7f3: Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 1.8.0 ### Minor Changes diff --git a/packages/integration/knip-report.md b/packages/integration/knip-report.md new file mode 100644 index 0000000000..995a52d5a7 --- /dev/null +++ b/packages/integration/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/config-loader | package.json | + diff --git a/packages/integration/package.json b/packages/integration/package.json index 29a4273698..4191e0da34 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.8.0", + "version": "1.9.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/release-manifests/knip-report.md b/packages/release-manifests/knip-report.md new file mode 100644 index 0000000000..bac0bb3f80 --- /dev/null +++ b/packages/release-manifests/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | + diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index 3d54277485..7454cd8473 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,47 @@ # @backstage/repo-tools +## 0.6.0-next.2 + +### Minor Changes + +- 4c62935: **BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. + + The following commands now live under the `package` namespace, + + - `schema openapi generate` is now `package schema openapi generate --server` + - `schema openapi generate-client` is now `package schema openapi generate --client-package` + - `schema openapi init` is now `package schema openapi init` + + And these commands live under the new `repo` namespace, + + - `schema openapi lint` is now `repo schema openapi lint` + - `schema openapi test` is now `repo schema openapi test` + - `schema openapi verify` is now `repo schema openapi verify` + + The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. + +### Patch Changes + +- aa91cd6: Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + +## 0.6.0-next.1 + +### Patch Changes + +- c04c42b: Fixes an issue where comments would be duplicated in the template. Also, removes a header with the title and version of the OpenAPI spec from generated code. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/cli-node@0.2.2 + - @backstage/errors@1.2.3 + ## 0.6.0-next.0 ### Minor Changes diff --git a/packages/repo-tools/cli-report.md b/packages/repo-tools/cli-report.md index be1e7ffceb..13e588e3e2 100644 --- a/packages/repo-tools/cli-report.md +++ b/packages/repo-tools/cli-report.md @@ -15,7 +15,9 @@ Commands: api-reports [options] [paths...] type-deps generate-catalog-info [options] - schema [command] + knip-reports [options] [paths...] + package [command] + repo [command] help [command] ``` @@ -48,10 +50,33 @@ Options: -h, --help ``` -### `backstage-repo-tools schema` +### `backstage-repo-tools knip-reports` ``` -Usage: backstage-repo-tools schema [options] [command] [command] +Usage: backstage-repo-tools knip-reports [options] [paths...] + +Options: + --ci + -h, --help +``` + +### `backstage-repo-tools package` + +``` +Usage: backstage-repo-tools package [options] [command] [command] + +Options: + -h, --help + +Commands: + schema [command] + help [command] +``` + +### `backstage-repo-tools package schema` + +``` +Usage: backstage-repo-tools package schema [options] [command] [command] Options: -h, --help @@ -61,65 +86,104 @@ Commands: help [command] ``` -### `backstage-repo-tools schema openapi` +### `backstage-repo-tools package schema openapi` ``` -Usage: backstage-repo-tools schema openapi [options] [command] [command] +Usage: backstage-repo-tools package schema openapi [options] [command] [command] + +Options: + -h, --help + +Commands: + init + generate [options] + help [command] +``` + +### `backstage-repo-tools package schema openapi generate` + +``` +Usage: backstage-repo-tools package schema openapi generate [options] + +Options: + --client-package [package] + -h, --help +``` + +### `backstage-repo-tools package schema openapi init` + +``` +Usage: backstage-repo-tools package schema openapi init [options] + +Options: + -h, --help +``` + +### `backstage-repo-tools repo` + +``` +Usage: backstage-repo-tools repo [options] [command] [command] + +Options: + -h, --help + +Commands: + schema [command] + help [command] +``` + +### `backstage-repo-tools repo schema` + +``` +Usage: backstage-repo-tools repo schema [options] [command] [command] + +Options: + -h, --help + +Commands: + openapi [command] + help [command] +``` + +### `backstage-repo-tools repo schema openapi` + +``` +Usage: backstage-repo-tools repo schema openapi [options] [command] [command] Options: -h, --help Commands: verify [paths...] - generate [paths...] lint [options] [paths...] test [options] [paths...] - init help [command] ``` -### `backstage-repo-tools schema openapi generate` +### `backstage-repo-tools repo schema openapi lint` ``` -Usage: backstage-repo-tools schema openapi generate [options] [paths...] - -Options: - -h, --help -``` - -### `backstage-repo-tools schema openapi init` - -``` -Usage: backstage-repo-tools schema openapi init [options] - -Options: - -h, --help -``` - -### `backstage-repo-tools schema openapi lint` - -``` -Usage: backstage-repo-tools schema openapi lint [options] [paths...] +Usage: backstage-repo-tools repo schema openapi lint [options] [paths...] Options: --strict -h, --help ``` -### `backstage-repo-tools schema openapi test` +### `backstage-repo-tools repo schema openapi test` ``` -Usage: backstage-repo-tools schema openapi test [options] [paths...] +Usage: backstage-repo-tools repo schema openapi test [options] [paths...] Options: --update -h, --help ``` -### `backstage-repo-tools schema openapi verify` +### `backstage-repo-tools repo schema openapi verify` ``` -Usage: backstage-repo-tools schema openapi verify [options] [paths...] +Usage: backstage-repo-tools repo schema openapi verify [options] [paths...] Options: -h, --help diff --git a/packages/repo-tools/knip-report.md b/packages/repo-tools/knip-report.md new file mode 100644 index 0000000000..5c60462783 --- /dev/null +++ b/packages/repo-tools/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (6) + +| Name | Location | +|:------------------------------------|:-------------| +| glob | package.json | +| ts-node | package.json | +| is-glob | package.json | +| @stoplight/spectral-runtime | package.json | +| @stoplight/spectral-functions | package.json | +| @openapitools/openapi-generator-cli | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @types/is-glob | package.json | +| @backstage/backend-test-utils | package.json | + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:---------|:-------------| +| prettier | package.json | + diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 98af4149c3..6177d0f126 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/repo-tools", "description": "CLI for Backstage repo tooling ", - "version": "0.6.0-next.0", + "version": "0.6.0-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/repo-tools/src/commands/api-reports/api-extractor.ts b/packages/repo-tools/src/commands/api-reports/api-extractor.ts index b8c241bb0b..250e8c5c03 100644 --- a/packages/repo-tools/src/commands/api-reports/api-extractor.ts +++ b/packages/repo-tools/src/commands/api-reports/api-extractor.ts @@ -16,37 +16,36 @@ import { groupBy } from 'lodash'; import { - resolve as resolvePath, - relative as relativePath, basename, join, + relative as relativePath, + resolve as resolvePath, } from 'path'; -import { execFile } from 'child_process'; import fs from 'fs-extra'; import { + CompilerState, Extractor, ExtractorConfig, - CompilerState, ExtractorLogLevel, ExtractorMessage, } from '@microsoft/api-extractor'; import { Program } from 'typescript'; import { - DocNode, - IDocNodeContainerParameters, - TSDocTagSyntaxKind, - TSDocConfiguration, - Standardization, DocBlockTag, - DocPlainText, DocLinkTag, + DocNode, + DocPlainText, + IDocNodeContainerParameters, + Standardization, + TSDocConfiguration, + TSDocTagSyntaxKind, } from '@microsoft/tsdoc'; import { TSDocConfigFile } from '@microsoft/tsdoc-config'; import { - ApiPackage, - ApiModel, ApiItem, ApiItemKind, + ApiModel, + ApiPackage, } from '@microsoft/api-extractor-model'; import { IMarkdownDocumenterOptions, @@ -64,6 +63,7 @@ import { AstDeclaration } from '@microsoft/api-extractor/lib/analyzer/AstDeclara import { paths as cliPaths } from '../../lib/paths'; import minimatch from 'minimatch'; import { getPackageExportNames } from '../../lib/entryPoints'; +import { createBinRunner } from '../util'; const tmpDir = cliPaths.resolveTargetRoot( './node_modules/.cache/api-extractor', @@ -290,10 +290,10 @@ function logApiReportInstructions() { '*************************************************************************************', ); console.log( - '* You have uncommitted changes to the public API of a package. *', + '* You have uncommitted changes to the public API or reports of a package. *', ); console.log( - '* To solve this, run `yarn build:api-reports` and commit all api-report.md changes. *', + '* To solve this, run `yarn build:api-reports` and commit all md file changes. *', ); console.log( '*************************************************************************************', @@ -1227,31 +1227,6 @@ export async function categorizePackageDirs(packageDirs: string[]) { return { tsPackageDirs, cliPackageDirs }; } -function createBinRunner(cwd: string, path: string) { - return async (...command: string[]) => - new Promise((resolve, reject) => { - execFile( - 'node', - [path, ...command], - { - cwd, - shell: true, - timeout: 60000, - maxBuffer: 1024 * 1024, - }, - (err, stdout, stderr) => { - if (err) { - reject(new Error(`${err.message}\n${stderr}`)); - } else if (stderr) { - reject(new Error(`Command printed error output: ${stderr}`)); - } else { - resolve(stdout); - } - }, - ); - }); -} - function parseHelpPage(helpPageContent: string) { const [, usage] = helpPageContent.match(/^\s*Usage: (.*)$/im) ?? []; const lines = helpPageContent.split(/\r?\n/); @@ -1443,3 +1418,66 @@ export async function runCliExtraction({ } } } + +interface KnipExtractionOptions { + packageDirs: string[]; + isLocalBuild: boolean; +} + +export async function runKnipReports({ + packageDirs, + isLocalBuild, +}: KnipExtractionOptions) { + const knipDir = cliPaths.resolveTargetRoot('./node_modules/knip/bin/'); + + for (const packageDir of packageDirs) { + console.log(`## Processing ${packageDir}`); + const fullDir = cliPaths.resolveTargetRoot(packageDir); + const reportPath = resolvePath(fullDir, 'knip-report.md'); + const run = createBinRunner(fullDir, ''); + + const report = await run( + `${knipDir}/knip.js`, + `--directory ${fullDir}`, // Run in the package directory + '--no-exit-code', // Removing this will end the process in case there are findings by knip + '--no-progress', // Remove unnecessary debugging from output + // TODO: Add more checks when dependencies start to look ok, see https://knip.dev/reference/cli#--include + '--include dependencies,unlisted', + '--reporter markdown', + ); + + const existingReport = await fs + .readFile(reportPath, 'utf8') + .catch(error => { + if (error.code === 'ENOENT') { + return undefined; + } + throw error; + }); + + if (existingReport !== report) { + if (isLocalBuild) { + console.warn(`Knip report changed for ${packageDir}`); + await fs.writeFile(reportPath, report); + } else { + logApiReportInstructions(); + + if (existingReport) { + console.log(''); + console.log( + `The conflicting file is ${relativePath( + cliPaths.targetRoot, + reportPath, + )}, expecting the following content:`, + ); + console.log(''); + + console.log(report); + + logApiReportInstructions(); + } + throw new Error(`Knip report changed for ${packageDir}, `); + } + } + } +} diff --git a/packages/repo-tools/src/commands/api-reports/api-reports.test.ts b/packages/repo-tools/src/commands/api-reports/api-reports.test.ts index d1f7a3836c..955720c52e 100644 --- a/packages/repo-tools/src/commands/api-reports/api-reports.test.ts +++ b/packages/repo-tools/src/commands/api-reports/api-reports.test.ts @@ -20,9 +20,9 @@ import * as pathsLib from '../../lib/paths'; import { buildDocs, - runCliExtraction, - runApiExtraction, categorizePackageDirs, + runApiExtraction, + runCliExtraction, } from './api-extractor'; import { buildApiReports } from './api-reports'; @@ -43,6 +43,7 @@ jest.mock('./api-extractor', () => ({ runApiExtraction: jest.fn(), runCliExtraction: jest.fn(), buildDocs: jest.fn(), + runKnipReports: jest.fn(), })); const projectPaths = pathsLib.paths; diff --git a/packages/repo-tools/src/commands/api-reports/api-reports.ts b/packages/repo-tools/src/commands/api-reports/api-reports.ts index d9164578b0..637cd86671 100644 --- a/packages/repo-tools/src/commands/api-reports/api-reports.ts +++ b/packages/repo-tools/src/commands/api-reports/api-reports.ts @@ -16,11 +16,11 @@ import { OptionValues } from 'commander'; import { - createTemporaryTsConfig, + buildDocs, categorizePackageDirs, + createTemporaryTsConfig, runApiExtraction, runCliExtraction, - buildDocs, } from './api-extractor'; import { paths as cliPaths, resolvePackagePaths } from '../../lib/paths'; import { generateTypeDeclarations } from './generateTypeDeclarations'; @@ -94,6 +94,7 @@ export const buildApiReports = async (paths: string[] = [], opts: Options) => { validateReleaseTags: opts.validateReleaseTags, }); } + if (cliPackageDirs.length > 0) { console.log('# Generating package CLI reports'); await runCliExtraction({ diff --git a/packages/repo-tools/src/commands/generate-catalog-info/generate-catalog-info.ts b/packages/repo-tools/src/commands/generate-catalog-info/generate-catalog-info.ts index b8a473c67b..1893bd25c8 100644 --- a/packages/repo-tools/src/commands/generate-catalog-info/generate-catalog-info.ts +++ b/packages/repo-tools/src/commands/generate-catalog-info/generate-catalog-info.ts @@ -33,6 +33,7 @@ import { isFulfilled, readFile, writeFile, + safeEntityName, } from './utils'; import { CodeOwnersEntry } from 'codeowners-utils'; @@ -164,9 +165,7 @@ async function fixCatalogInfoYaml(options: FixOptions) { codeowners, relativePath('.', yamlPath), ); - const safeName = packageJson.name - .replace(/[^a-z0-9_\-\.]+/g, '-') - .replace(/^[^a-z0-9]|[^a-z0-9]$/g, ''); + const safeName = safeEntityName(packageJson.name); let yamlJson: BackstagePackageEntity; try { @@ -240,9 +239,7 @@ function createOrMergeEntity( owner: string, existingEntity: BackstagePackageEntity | Record = {}, ): BackstagePackageEntity { - const safeEntityName = packageJson.name - .replace(/[^a-z0-9_\-\.]+/g, '-') - .replace(/^[^a-z0-9]|[^a-z0-9]$/g, ''); + const entityName = safeEntityName(packageJson.name); return { ...existingEntity, @@ -251,7 +248,7 @@ function createOrMergeEntity( metadata: { ...existingEntity.metadata, // Provide default name/title/description values. - name: safeEntityName, + name: entityName, title: packageJson.name, ...(packageJson.description && !existingEntity.metadata?.description ? { description: packageJson.description } diff --git a/packages/repo-tools/src/commands/generate-catalog-info/utils.test.ts b/packages/repo-tools/src/commands/generate-catalog-info/utils.test.ts new file mode 100644 index 0000000000..40c1bb1e19 --- /dev/null +++ b/packages/repo-tools/src/commands/generate-catalog-info/utils.test.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2024 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 { safeEntityName } from './utils'; + +describe('utils', () => { + describe('safeEntityName', () => { + it('should remove non-alphanumeric characters at the start and end', () => { + const result = safeEntityName('%entityname$'); + expect(result).toBe('entityname'); + }); + + it('should replace non-alphanumeric characters, except - and _, with -', () => { + const result = safeEntityName('entity@#name$'); + expect(result).toBe('entity-name'); + }); + + it('should replace capital letters with - followed by the same letter in lowercase', () => { + const result = safeEntityName('EntityName'); + expect(result).toBe('entity-name'); + }); + }); +}); diff --git a/packages/repo-tools/src/commands/generate-catalog-info/utils.ts b/packages/repo-tools/src/commands/generate-catalog-info/utils.ts index b00fbd57a8..3f23b35112 100644 --- a/packages/repo-tools/src/commands/generate-catalog-info/utils.ts +++ b/packages/repo-tools/src/commands/generate-catalog-info/utils.ts @@ -48,3 +48,20 @@ export const isRejected = ( export const isFulfilled = ( input: PromiseSettledResult, ): input is PromiseFulfilledResult => input.status === 'fulfilled'; + +/** + * Generates a suitable entity name from a package name by slugifying the given package name. + * + * @param packageName - The package name to generate an entity name from. + * @returns The generated entity name, a slugified version of the package name. + */ +export const safeEntityName = (packageName: string): string => { + return packageName + .replace(/^[^\w\s]|[^a-z0-9]$/g, '') + .replace(/[^A-Za-z0-9_\-.]+/g, '-') + .replace( + /([a-z])([A-Z])/g, + (_, a, b) => `${a}-${b.toLocaleLowerCase('en-US')}`, + ) + .replace(/^(.)/, (_, a) => a.toLocaleLowerCase('en-US')); +}; diff --git a/packages/repo-tools/src/commands/index.ts b/packages/repo-tools/src/commands/index.ts index d9c6d892f5..e0463da4f9 100644 --- a/packages/repo-tools/src/commands/index.ts +++ b/packages/repo-tools/src/commands/index.ts @@ -18,12 +18,59 @@ import { assertError } from '@backstage/errors'; import { Command } from 'commander'; import { exitWithError } from '../lib/errors'; -function registerSchemaCommand(program: Command) { +function registerPackageCommand(program: Command) { const command = program + .command('package [command]') + .description('Various tools for working with specific packages.'); + + const schemaCommand = command + .command('schema [command]') + .description( + "Various tools for working with specific packages' API schema", + ); + + const openApiCommand = schemaCommand + .command('openapi [command]') + .description('Tooling for OpenAPI schema'); + + openApiCommand + .command('init') + .description( + 'Initialize any required files to use the OpenAPI tooling for this package.', + ) + .action( + lazy(() => + import('./package/schema/openapi/init').then(m => m.singleCommand), + ), + ); + + openApiCommand + .command('generate') + .option( + '--client-package [package]', + 'Top-level path to where the client should be generated, ie packages/catalog-client.', + ) + .option('--server') + .description( + 'Command to generate a client and/or a server stub from an OpenAPI spec.', + ) + .action( + lazy(() => + import('./package/schema/openapi/generate').then(m => m.command), + ), + ); +} + +function registerRepoCommand(program: Command) { + const command = program + .command('repo [command]') + .description('Tools for working across your entire repository.'); + + const schemaCommand = command .command('schema [command]') .description('Various tools for working with API schema'); - const openApiCommand = command + const openApiCommand = schemaCommand .command('openapi [command]') .description('Tooling for OpenApi schema'); @@ -33,16 +80,9 @@ function registerSchemaCommand(program: Command) { 'Verify that all OpenAPI schemas are valid and have a matching `schemas/openapi.generated.ts` file.', ) .action( - lazy(() => import('./openapi/schema/verify').then(m => m.bulkCommand)), - ); - - openApiCommand - .command('generate [paths...]') - .description( - 'Generates a Typescript file from an OpenAPI yaml spec. For use with the `@backstage/backend-openapi-utils` ApiRouter type.', - ) - .action( - lazy(() => import('./openapi/schema/generate').then(m => m.bulkCommand)), + lazy(() => + import('./repo/schema/openapi/verify').then(m => m.bulkCommand), + ), ); openApiCommand @@ -52,27 +92,16 @@ function registerSchemaCommand(program: Command) { '--strict', 'Fail on any linting severity messages, not just errors.', ) - .action(lazy(() => import('./openapi/lint').then(m => m.bulkCommand))); + .action( + lazy(() => import('./repo/schema/openapi/lint').then(m => m.bulkCommand)), + ); openApiCommand .command('test [paths...]') .description('Test OpenAPI schemas against written tests') .option('--update', 'Update the spec on failure.') - .action(lazy(() => import('./openapi/test').then(m => m.bulkCommand))); - - openApiCommand - .command('init ') - .description('Creates any config needed for the test command.') - .action(lazy(() => import('./openapi/test/init').then(m => m.default))); - - openApiCommand - .command('generate-client') - .requiredOption('--input-spec ') - .requiredOption('--output-directory ') .action( - lazy(() => - import('./openapi/client/generate').then(m => m.singleCommand), - ), + lazy(() => import('./repo/schema/openapi/test').then(m => m.bulkCommand)), ); } @@ -140,7 +169,18 @@ export function registerCommands(program: Command) { ), ); - registerSchemaCommand(program); + program + .command('knip-reports [paths...]') + .option('--ci', 'CI run checks that there is no changes on knip reports') + .description('Generate a knip report for selected packages') + .action( + lazy(() => + import('./knip-reports/knip-reports').then(m => m.buildKnipReports), + ), + ); + + registerPackageCommand(program); + registerRepoCommand(program); } // Wraps an action function so that it always exits and handles errors diff --git a/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts b/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts new file mode 100644 index 0000000000..8273ab2533 --- /dev/null +++ b/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts @@ -0,0 +1,175 @@ +/* + * Copyright 2024 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 { paths as cliPaths } from '../../lib/paths'; +import pLimit from 'p-limit'; +import os from 'os'; +import { relative as relativePath, resolve as resolvePath } from 'path'; +import fs from 'fs-extra'; +import { createBinRunner } from '../util'; + +// Ignore this due to Knip error: Error: ENAMETOOLONG: name too long, scandir +const ignoredPackages = ['packages/techdocs-cli-embedded-app']; + +interface KnipExtractionOptions { + packageDirs: string[]; + isLocalBuild: boolean; +} + +interface KnipConfigOptions { + packageDir: string; +} + +interface KnipPackageOptions { + packageDir: string; + knipDir: string; + isLocalBuild: boolean; +} + +function logKnipReportInstructions() { + console.log(''); + console.log( + '*************************************************************************************', + ); + console.log( + '* You have uncommitted changes to the knip reports of a package. *', + ); + console.log( + '* To solve this, run `yarn build:knip-reports` and commit all md file changes. *', + ); + console.log( + '*************************************************************************************', + ); + console.log(''); +} + +async function generateKnipConfig({ packageDir }: KnipConfigOptions) { + const knipConfig = { + entry: [ + 'dev/index.{ts,tsx}', + 'src/index.{ts,tsx}', + 'src/routes.ts', + 'src/run.ts', + ], + jest: { entry: 'src/setupTests.ts' }, + storybook: { entry: 'src/components/**/*.stories.tsx' }, + ignore: [ + '.eslintrc.js', + 'config.d.ts', + 'knexfile.js', + 'node_modules/**', + 'dist/**', + '{fixtures,migrations,templates}/**', + ], + }; + await fs.writeFile( + `${packageDir}/knip.json`, + JSON.stringify(knipConfig, null, 2), + ); +} + +function cleanKnipConfig({ packageDir }: KnipConfigOptions) { + if (fs.existsSync(`${packageDir}/knip.json`)) { + fs.rmSync(`${packageDir}/knip.json`); + } +} + +async function handlePackage({ + packageDir, + knipDir, + isLocalBuild, +}: KnipPackageOptions) { + console.log(`## Processing ${packageDir}`); + if (ignoredPackages.includes(packageDir)) { + console.log(`Skipping ${packageDir}`); + return; + } + const fullDir = cliPaths.resolveTargetRoot(packageDir); + const reportPath = resolvePath(fullDir, 'knip-report.md'); + const run = createBinRunner(fullDir, ''); + + await generateKnipConfig({ packageDir: fullDir }); + + const report = await run( + `${knipDir}/knip.js`, + `--directory ${fullDir}`, // Run in the package directory + '--config knip.json', + '--no-exit-code', // Removing this will end the process in case there are findings by knip + '--no-progress', // Remove unnecessary debugging from output + // TODO: Add more checks when dependencies start to look ok, see https://knip.dev/reference/cli#--include + '--include dependencies,unlisted', + '--reporter markdown', + ); + + cleanKnipConfig({ packageDir: fullDir }); + + const existingReport = await fs.readFile(reportPath, 'utf8').catch(error => { + if (error.code === 'ENOENT') { + return undefined; + } + throw error; + }); + + if (existingReport !== report) { + if (isLocalBuild) { + console.warn(`Knip report changed for ${packageDir}`); + await fs.writeFile(reportPath, report); + } else { + logKnipReportInstructions(); + + if (existingReport) { + console.log(''); + console.log( + `The conflicting file is ${relativePath( + cliPaths.targetRoot, + reportPath, + )}, expecting the following content:`, + ); + console.log(''); + + console.log(report); + + logKnipReportInstructions(); + } + throw new Error(`Knip report changed for ${packageDir}, `); + } + } +} + +export async function runKnipReports({ + packageDirs, + isLocalBuild, +}: KnipExtractionOptions) { + const knipDir = cliPaths.resolveTargetRoot('./node_modules/knip/bin/'); + const limiter = pLimit(os.cpus().length); + + try { + await Promise.all( + packageDirs.map(packageDir => + limiter(async () => + handlePackage({ packageDir, knipDir, isLocalBuild }), + ), + ), + ); + } catch (e) { + console.log( + `Error occurred during knip reporting: ${e}, cleaning knip configs`, + ); + packageDirs.map(packageDir => { + const fullDir = cliPaths.resolveTargetRoot(packageDir); + cleanKnipConfig({ packageDir: fullDir }); + }); + } +} diff --git a/packages/repo-tools/src/commands/knip-reports/knip-reports.ts b/packages/repo-tools/src/commands/knip-reports/knip-reports.ts new file mode 100644 index 0000000000..48ffa6cbdb --- /dev/null +++ b/packages/repo-tools/src/commands/knip-reports/knip-reports.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 { OptionValues } from 'commander'; +import { runKnipReports } from './knip-extractor'; +import { resolvePackagePaths } from '../../lib/paths'; + +type Options = { + ci?: boolean; +} & OptionValues; + +export const buildKnipReports = async (paths: string[] = [], opts: Options) => { + const isCiBuild = opts.ci; + + const isAllPackages = !paths?.length; + const selectedPackageDirs = await resolvePackagePaths({ + paths, + include: opts.include, + exclude: opts.exclude, + }); + + if (isAllPackages && !isCiBuild) { + console.log(''); + console.log( + 'TIP: You can generate knip-reports for select packages by passing package paths:', + ); + console.log(''); + console.log( + ' yarn build:knip-reports packages/config packages/core-plugin-api plugins/*', + ); + console.log(''); + } + + if (selectedPackageDirs.length > 0) { + console.log('# Generating package knip reports'); + await runKnipReports({ + packageDirs: selectedPackageDirs, + isLocalBuild: !isCiBuild, + }); + } +}; diff --git a/packages/repo-tools/src/commands/openapi/client/generate.ts b/packages/repo-tools/src/commands/package/schema/openapi/generate/client.ts similarity index 73% rename from packages/repo-tools/src/commands/openapi/client/generate.ts rename to packages/repo-tools/src/commands/package/schema/openapi/generate/client.ts index f827f1005f..5dfed05f93 100644 --- a/packages/repo-tools/src/commands/openapi/client/generate.ts +++ b/packages/repo-tools/src/commands/package/schema/openapi/generate/client.ts @@ -16,16 +16,23 @@ import chalk from 'chalk'; import { resolve } from 'path'; -import { OPENAPI_IGNORE_FILES, OUTPUT_PATH } from '../constants'; -import { paths as cliPaths } from '../../../lib/paths'; +import { + OPENAPI_IGNORE_FILES, + OUTPUT_PATH, +} from '../../../../../lib/openapi/constants'; +import { paths as cliPaths } from '../../../../../lib/paths'; import { mkdirpSync } from 'fs-extra'; import fs from 'fs-extra'; -import { exec } from '../../../lib/exec'; +import { exec } from '../../../../../lib/exec'; import { resolvePackagePath } from '@backstage/backend-common'; +import { getPathToCurrentOpenApiSpec } from '../../../../../lib/openapi/helpers'; -async function generate(spec: string, outputDirectory: string) { - const resolvedOpenapiPath = resolve(spec); - const resolvedOutputDirectory = resolve(outputDirectory, OUTPUT_PATH); +async function generate(outputDirectory: string) { + const resolvedOpenapiPath = await getPathToCurrentOpenApiSpec(); + const resolvedOutputDirectory = cliPaths.resolveTargetRoot( + outputDirectory, + OUTPUT_PATH, + ); mkdirpSync(resolvedOutputDirectory); await fs.mkdirp(resolvedOutputDirectory); @@ -80,19 +87,15 @@ async function generate(spec: string, outputDirectory: string) { }); } -export async function singleCommand({ - inputSpec, - outputDirectory, -}: { - inputSpec: string; - outputDirectory: string; -}): Promise { +export async function command(outputPackage: string): Promise { try { - await generate(inputSpec, outputDirectory); - console.log(chalk.green(`Generated client for ${inputSpec}`)); + await generate(outputPackage); + console.log( + chalk.green(`Generated client in ${outputPackage}/${OUTPUT_PATH}`), + ); } catch (err) { console.log(); - console.log(chalk.red(`Client generation failed in ${outputDirectory}:`)); + console.log(chalk.red(`Client generation failed:`)); console.log(err); process.exit(1); diff --git a/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts b/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts new file mode 100644 index 0000000000..1e48fe3825 --- /dev/null +++ b/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 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 chalk from 'chalk'; +import { OptionValues } from 'commander'; +import { command as generateClient } from './client'; +import { command as generateServer } from './server'; + +export async function command(opts: OptionValues) { + if (!opts.clientPackage && !opts.server) { + console.log( + chalk.red('Either --client-package or --server must be defined.'), + ); + process.exit(1); + } + if (opts.clientPackage) { + await generateClient(opts.clientPackage); + } + if (opts.server) { + await generateServer(); + } +} diff --git a/packages/repo-tools/src/commands/openapi/schema/generate.ts b/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts similarity index 60% rename from packages/repo-tools/src/commands/openapi/schema/generate.ts rename to packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts index cd9f572f2d..e6c56c3122 100644 --- a/packages/repo-tools/src/commands/openapi/schema/generate.ts +++ b/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts @@ -17,30 +17,19 @@ import fs from 'fs-extra'; import YAML from 'js-yaml'; import chalk from 'chalk'; -import { resolve } from 'path'; -import { paths as cliPaths } from '../../../lib/paths'; -import { runner } from '../runner'; -import { TS_SCHEMA_PATH, YAML_SCHEMA_PATH } from '../constants'; +import { paths as cliPaths } from '../../../../../lib/paths'; +import { TS_SCHEMA_PATH } from '../../../../../lib/openapi/constants'; import { promisify } from 'util'; import { exec as execCb } from 'child_process'; +import { getPathToCurrentOpenApiSpec } from '../../../../../lib/openapi/helpers'; const exec = promisify(execCb); -async function generate( - directoryPath: string, - config?: { skipMissingYamlFile: boolean }, -) { - const { skipMissingYamlFile } = config ?? {}; - const openapiPath = resolve(directoryPath, YAML_SCHEMA_PATH); - if (!(await fs.pathExists(openapiPath))) { - if (skipMissingYamlFile) { - return; - } - throw new Error(`Could not find ${YAML_SCHEMA_PATH} in root of directory.`); - } +async function generate() { + const openapiPath = await getPathToCurrentOpenApiSpec(); const yaml = YAML.load(await fs.readFile(openapiPath, 'utf8')); - const tsPath = resolve(directoryPath, TS_SCHEMA_PATH); + const tsPath = cliPaths.resolveTarget(TS_SCHEMA_PATH); // The first set of comment slashes allow for the eslint notice plugin to run // with onNonMatchingHeader: 'replace', as is the case in the open source @@ -63,33 +52,19 @@ export const createOpenApiRouter = async ( await exec(`yarn backstage-cli package lint --fix ${tsPath}`); if (await cliPaths.resolveTargetRoot('node_modules/.bin/prettier')) { - await exec(`yarn prettier --write ${tsPath}`); + await exec(`yarn prettier --write ${tsPath}`, { + cwd: cliPaths.targetRoot, + }); } } -export async function bulkCommand(paths: string[] = []): Promise { - const resultsList = await runner(paths, (dir: string) => - generate(dir, { skipMissingYamlFile: true }), - ); - - let failed = false; - for (const { relativeDir, resultText } of resultsList) { - if (resultText) { - console.log(); - console.log( - chalk.red( - `OpenAPI yaml to Typescript generation failed in ${relativeDir}:`, - ), - ); - console.log(resultText.trimStart()); - - failed = true; - } - } - - if (failed) { - process.exit(1); - } else { +export async function command(): Promise { + try { + await generate(); console.log(chalk.green('Generated all files.')); + } catch (err) { + console.log(chalk.red(`OpenAPI server stub generation failed.`)); + console.log(err.message); + process.exit(1); } } diff --git a/packages/repo-tools/src/commands/openapi/test/init.ts b/packages/repo-tools/src/commands/package/schema/openapi/init.ts similarity index 61% rename from packages/repo-tools/src/commands/openapi/test/init.ts rename to packages/repo-tools/src/commands/package/schema/openapi/init.ts index a38416aabb..00e82f65df 100644 --- a/packages/repo-tools/src/commands/openapi/test/init.ts +++ b/packages/repo-tools/src/commands/package/schema/openapi/init.ts @@ -14,27 +14,30 @@ * limitations under the License. */ import fs from 'fs-extra'; -import { join } from 'path'; -import { YAML_SCHEMA_PATH } from './../constants'; - -import { paths as cliPaths } from '../../../lib/paths'; -import { runner } from '../runner'; +import { YAML_SCHEMA_PATH } from '../../../../lib/openapi/constants'; +import { paths as cliPaths } from '../../../../lib/paths'; import chalk from 'chalk'; -import { exec } from '../../../lib/exec'; +import { exec } from '../../../../lib/exec'; +import { + getPathToCurrentOpenApiSpec, + getRelativePathToFile, +} from '../../../../lib/openapi/helpers'; const ROUTER_TEST_PATHS = [ 'src/service/router.test.ts', 'src/service/createRouter.test.ts', ]; -async function init(directoryPath: string) { - const openapiPath = join(directoryPath, YAML_SCHEMA_PATH); - if (!(await fs.pathExists(openapiPath))) { +async function init() { + try { + await getPathToCurrentOpenApiSpec(); + } catch (err) { throw new Error( - `You do not have an OpenAPI YAML file at ${openapiPath}. Please create one and retry this command. If you already have existing test cases for your router, see 'backstage-repo-tools schema openapi test --update'`, + `OpenAPI.yaml not found in ${YAML_SCHEMA_PATH}. Please create one and retry this command.`, ); } - const opticConfigFilePath = join(directoryPath, 'optic.yml'); + + const opticConfigFilePath = await getRelativePathToFile('optic.yml'); if (await fs.pathExists(opticConfigFilePath)) { throw new Error(`This directory already has an optic.yml file. Exiting.`); } @@ -45,7 +48,9 @@ async function init(directoryPath: string) { capture: ${YAML_SCHEMA_PATH}: # 🔧 Runnable example with simple get requests. - # Run with "PORT=3000 optic capture ${YAML_SCHEMA_PATH} --update interactive" in '${directoryPath}' + # Run with "PORT=3000 optic capture ${YAML_SCHEMA_PATH} --update interactive" in '${ + cliPaths.targetDir + }' # You can change the server and the 'requests' section to experiment server: # This will not be used by 'backstage-repo-tools schema openapi test', but may be useful for interactive updates. @@ -64,27 +69,13 @@ capture: } } -export default async function initCommand(paths: string[] = []) { - const resultsList = await runner(paths, dir => init(dir), { - concurrencyLimit: 5, - }); - - let failed = false; - for (const { relativeDir, resultText } of resultsList) { - if (resultText) { - console.log(); - console.log( - chalk.red(`Failed to initialize ${relativeDir} for OpenAPI commands.`), - ); - console.log(resultText.trimStart()); - - failed = true; - } - } - - if (failed) { +export async function singleCommand() { + try { + await init(); + console.log(chalk.green(`Successfully configured.`)); + } catch (err) { + console.log(chalk.red(`OpenAPI tooling initialization failed.`)); + console.log(err.message); process.exit(1); - } else { - console.log(chalk.green(`All directories have already been configured.`)); } } diff --git a/packages/repo-tools/src/commands/openapi/lint.ts b/packages/repo-tools/src/commands/repo/schema/openapi/lint.ts similarity index 83% rename from packages/repo-tools/src/commands/openapi/lint.ts rename to packages/repo-tools/src/commands/repo/schema/openapi/lint.ts index 8aac0189b1..eacb3ac50d 100644 --- a/packages/repo-tools/src/commands/openapi/lint.ts +++ b/packages/repo-tools/src/commands/repo/schema/openapi/lint.ts @@ -24,24 +24,19 @@ import { Yaml } from '@stoplight/spectral-parsers'; import ruleset from '@apisyouwonthate/style-guide'; import fs from 'fs-extra'; import chalk from 'chalk'; -import { resolve } from 'path'; -import { runner } from './runner'; -import { YAML_SCHEMA_PATH } from './constants'; +import { runner } from '../../../../lib/runner'; import { oas } from '@stoplight/spectral-rulesets'; import { DiagnosticSeverity } from '@stoplight/types'; import { pretty } from '@stoplight/spectral-formatters'; +import { getPathToOpenApiSpec } from '../../../../lib/openapi/helpers'; -async function lint( - directoryPath: string, - config?: { skipMissingYamlFile: boolean; strict: boolean }, -) { - const { skipMissingYamlFile, strict } = config ?? {}; - const openapiPath = resolve(directoryPath, YAML_SCHEMA_PATH); - if (!(await fs.pathExists(openapiPath))) { - if (skipMissingYamlFile) { - return; - } - throw new Error(`Could not find a file at ${openapiPath}.`); +async function lint(directoryPath: string, config?: { strict: boolean }) { + const { strict } = config ?? {}; + let openapiPath = ''; + try { + openapiPath = await getPathToOpenApiSpec(directoryPath); + } catch { + return; } const openapiFileContent = await fs.readFile(openapiPath, 'utf8'); @@ -90,7 +85,7 @@ export async function bulkCommand( options: { strict?: boolean }, ): Promise { const resultsList = await runner(paths, (dir: string) => - lint(dir, { skipMissingYamlFile: true, strict: !!options.strict }), + lint(dir, { strict: !!options.strict }), ); let failed = false; diff --git a/packages/repo-tools/src/commands/openapi/test/index.ts b/packages/repo-tools/src/commands/repo/schema/openapi/test.ts similarity index 86% rename from packages/repo-tools/src/commands/openapi/test/index.ts rename to packages/repo-tools/src/commands/repo/schema/openapi/test.ts index 47b553aaef..833de181e3 100644 --- a/packages/repo-tools/src/commands/openapi/test/index.ts +++ b/packages/repo-tools/src/commands/repo/schema/openapi/test.ts @@ -17,18 +17,22 @@ import fs from 'fs-extra'; import { join } from 'path'; import chalk from 'chalk'; -import { runner } from '../runner'; -import { YAML_SCHEMA_PATH } from '../constants'; -import { paths as cliPaths } from '../../../lib/paths'; -import { exec } from '../../../lib/exec'; +import { runner } from '../../../../lib/runner'; +import { YAML_SCHEMA_PATH } from '../../../../lib/openapi/constants'; +import { paths as cliPaths } from '../../../../lib/paths'; +import { exec } from '../../../../lib/exec'; +import { getPathToOpenApiSpec } from '../../../../lib/openapi/helpers'; async function test( directoryPath: string, { port }: { port: number }, options?: { update?: boolean }, ) { - const openapiPath = join(directoryPath, YAML_SCHEMA_PATH); - if (!(await fs.pathExists(openapiPath))) { + let openapiPath = join(directoryPath, YAML_SCHEMA_PATH); + try { + openapiPath = await getPathToOpenApiSpec(directoryPath); + } catch { + // OpenAPI schema doesn't exist. return; } const opticConfigFilePath = join(directoryPath, 'optic.yml'); diff --git a/packages/repo-tools/src/commands/openapi/schema/verify.ts b/packages/repo-tools/src/commands/repo/schema/openapi/verify.ts similarity index 79% rename from packages/repo-tools/src/commands/openapi/schema/verify.ts rename to packages/repo-tools/src/commands/repo/schema/openapi/verify.ts index 7120dd67ad..442494610c 100644 --- a/packages/repo-tools/src/commands/openapi/schema/verify.ts +++ b/packages/repo-tools/src/commands/repo/schema/openapi/verify.ts @@ -21,13 +21,21 @@ import { join } from 'path'; import chalk from 'chalk'; import { relative as relativePath, resolve as resolvePath } from 'path'; import Parser from '@apidevtools/swagger-parser'; -import { runner } from '../runner'; -import { paths as cliPaths } from '../../../lib/paths'; -import { TS_MODULE, TS_SCHEMA_PATH, YAML_SCHEMA_PATH } from '../constants'; +import { runner } from '../../../../lib/runner'; +import { paths as cliPaths } from '../../../../lib/paths'; +import { + TS_MODULE, + TS_SCHEMA_PATH, + YAML_SCHEMA_PATH, +} from '../../../../lib/openapi/constants'; +import { getPathToOpenApiSpec } from '../../../../lib/openapi/helpers'; async function verify(directoryPath: string) { - const openapiPath = join(directoryPath, YAML_SCHEMA_PATH); - if (!(await fs.pathExists(openapiPath))) { + let openapiPath = ''; + try { + openapiPath = await getPathToOpenApiSpec(directoryPath); + } catch { + // Unable to find spec at path. return; } @@ -47,7 +55,7 @@ async function verify(directoryPath: string) { if (!isEqual(schema.spec, yaml)) { const path = relativePath(cliPaths.targetRoot, directoryPath); throw new Error( - `\`${YAML_SCHEMA_PATH}\` and \`${TS_SCHEMA_PATH}\` do not match. Please run \`yarn backstage-repo-tools schema openapi generate ${path}\` to regenerate \`${TS_SCHEMA_PATH}\`.`, + `\`${YAML_SCHEMA_PATH}\` and \`${TS_SCHEMA_PATH}\` do not match. Please run \`yarn backstage-repo-tools package schema openapi generate\` from '${path}' to regenerate \`${TS_SCHEMA_PATH}\`.`, ); } } diff --git a/packages/repo-tools/src/commands/util.ts b/packages/repo-tools/src/commands/util.ts new file mode 100644 index 0000000000..933945bc5c --- /dev/null +++ b/packages/repo-tools/src/commands/util.ts @@ -0,0 +1,41 @@ +/* + * Copyright 2024 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 { execFile } from 'child_process'; + +export function createBinRunner(cwd: string, path: string) { + return async (...command: string[]) => + new Promise((resolve, reject) => { + execFile( + 'node', + [path, ...command], + { + cwd, + shell: true, + timeout: 60000, + maxBuffer: 1024 * 1024, + }, + (err, stdout, stderr) => { + if (err) { + reject(new Error(`${err.message}\n${stderr}`)); + } else if (stderr) { + reject(new Error(`Command printed error output: ${stderr}`)); + } else { + resolve(stdout); + } + }, + ); + }); +} diff --git a/packages/repo-tools/src/commands/openapi/constants.ts b/packages/repo-tools/src/lib/openapi/constants.ts similarity index 100% rename from packages/repo-tools/src/commands/openapi/constants.ts rename to packages/repo-tools/src/lib/openapi/constants.ts diff --git a/packages/repo-tools/src/lib/openapi/helpers.ts b/packages/repo-tools/src/lib/openapi/helpers.ts new file mode 100644 index 0000000000..f7e684a407 --- /dev/null +++ b/packages/repo-tools/src/lib/openapi/helpers.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2024 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 { pathExists } from 'fs-extra'; +import { paths } from '../paths'; +import { YAML_SCHEMA_PATH } from './constants'; +import { resolve } from 'path'; + +export const getPathToFile = async (directory: string, filename: string) => { + return resolve(directory, filename); +}; + +export const getRelativePathToFile = async (filename: string) => { + return await getPathToFile(paths.targetDir, filename); +}; + +export const assertExists = async (path: string) => { + if (!(await pathExists(path))) { + throw new Error(`Could not find ${path}.`); + } + return path; +}; + +export const getPathToOpenApiSpec = async (directory: string) => { + return await assertExists(await getPathToFile(directory, YAML_SCHEMA_PATH)); +}; + +export const getPathToCurrentOpenApiSpec = async () => { + return await assertExists(await getRelativePathToFile(YAML_SCHEMA_PATH)); +}; diff --git a/packages/repo-tools/src/commands/openapi/runner.ts b/packages/repo-tools/src/lib/runner.ts similarity index 94% rename from packages/repo-tools/src/commands/openapi/runner.ts rename to packages/repo-tools/src/lib/runner.ts index cc354daaaa..b9700cd09b 100644 --- a/packages/repo-tools/src/commands/openapi/runner.ts +++ b/packages/repo-tools/src/lib/runner.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import { resolvePackagePaths } from '../../lib/paths'; +import { resolvePackagePaths } from './paths'; import pLimit from 'p-limit'; import { relative as relativePath } from 'path'; -import { paths as cliPaths } from '../../lib/paths'; +import { paths as cliPaths } from './paths'; import portFinder from 'portfinder'; export async function runner( diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index c55d4a3e6e..5aa1c0b002 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,43 @@ # techdocs-cli-embedded-app +## 0.2.91-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/app-defaults@1.5.0-next.2 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/cli@0.25.2-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.2.91-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/cli@0.25.2-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/app-defaults@1.4.8-next.1 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + ## 0.2.91-next.0 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/knip-report.md b/packages/techdocs-cli-embedded-app/knip-report.md new file mode 100644 index 0000000000..87e4093961 --- /dev/null +++ b/packages/techdocs-cli-embedded-app/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:----------------------|:-------------| +| history | package.json | +| react-use | package.json | +| @backstage/theme | package.json | +| @backstage/test-utils | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @testing-library/jest-dom | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 1641562040..ca9b28a9e2 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.91-next.0", + "version": "0.2.91-next.2", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 9639950663..da5312e5de 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,28 @@ # @techdocs/cli +## 1.8.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/cli-common@0.1.13 + +## 1.8.2-next.1 + +### Patch Changes + +- d8d243c: fix: mkdocs parameter casing +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + ## 1.8.2-next.0 ### Patch Changes diff --git a/packages/techdocs-cli/knip-report.md b/packages/techdocs-cli/knip-report.md new file mode 100644 index 0000000000..818eb3953a --- /dev/null +++ b/packages/techdocs-cli/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------|:-------------| +| global-agent | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:-------------------|:-------------| +| ts-node | package.json | +| nodemon | package.json | +| find-process | package.json | +| @backstage/cli | package.json | +| @types/webpack-env | package.json | + diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index f4cf7e9dc6..8a1cf2c17c 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.8.2-next.0", + "version": "1.8.2-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 101720cb30..69dd9616c6 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/test-utils +## 1.5.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## 1.5.0-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 1.5.0-next.0 ### Minor Changes diff --git a/packages/test-utils/knip-report.md b/packages/test-utils/knip-report.md new file mode 100644 index 0000000000..4c8222eecd --- /dev/null +++ b/packages/test-utils/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @material-ui/core | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | + diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 3e1d751677..8333c22c83 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.5.0-next.0", + "version": "1.5.0-next.2", "publishConfig": { "access": "public" }, @@ -55,7 +55,7 @@ "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cross-fetch": "^4.0.0", "i18next": "^22.4.15", "zen-observable": "^0.10.0" diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index 323fc8062d..e0509d3b62 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/theme +## 0.5.1-next.0 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + ## 0.5.0 ### Minor Changes diff --git a/packages/theme/knip-report.md b/packages/theme/knip-report.md new file mode 100644 index 0000000000..71141a3bba --- /dev/null +++ b/packages/theme/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------|:-------------| +| @emotion/react | package.json | +| @emotion/styled | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @mui/styles | package.json | +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/packages/theme/package.json b/packages/theme/package.json index 56179fae19..318b513209 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.5.0", + "version": "0.5.1-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", @@ -39,7 +39,7 @@ }, "peerDependencies": { "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" }, diff --git a/packages/types/knip-report.md b/packages/types/knip-report.md new file mode 100644 index 0000000000..9a1bf2ebe7 --- /dev/null +++ b/packages/types/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:----------------------|:-------------| +| luxon | package.json | +| zen-observable | package.json | +| @backstage/cli | package.json | +| @types/zen-observable | package.json | + diff --git a/packages/version-bridge/knip-report.md b/packages/version-bridge/knip-report.md new file mode 100644 index 0000000000..9f54e7f06d --- /dev/null +++ b/packages/version-bridge/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index e4986f0ca2..077ba4feaa 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-adr-backend +## 0.4.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.4.7-next.0 ### Patch Changes diff --git a/plugins/adr-backend/README.md b/plugins/adr-backend/README.md index 6ce2f13ebf..ebf99b4ee1 100644 --- a/plugins/adr-backend/README.md +++ b/plugins/adr-backend/README.md @@ -20,7 +20,7 @@ Here's how to get the backend up and running: ```sh # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-adr-backend +yarn --cwd packages/backend add @backstage/plugin-adr-backend ``` 2. Then we will create a new file named `packages/backend/src/plugins/adr.ts`, and add the diff --git a/plugins/adr-backend/knip-report.md b/plugins/adr-backend/knip-report.md new file mode 100644 index 0000000000..46434ad5e6 --- /dev/null +++ b/plugins/adr-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------|:-------------| +| yn | package.json | +| node-fetch | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 9f30c95581..f7143249df 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.4.7-next.0", + "version": "0.4.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md index 84c285a1a8..6ce94e4d8f 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-adr-common +## 0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.2.19 ### Patch Changes diff --git a/plugins/adr-common/knip-report.md b/plugins/adr-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/adr-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index d05b585c7d..2ca69b288a 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.2.19", + "version": "0.2.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 4586b14522..37af99141c 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-adr +## 0.6.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 0.6.13-next.1 + +### Patch Changes + +- 987f565: Fix alignment of text in `AdrSearchResultListItem`. Update size and font to match other `SearchResultListItem`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-adr-common@0.2.20-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.6.13-next.0 ### Patch Changes diff --git a/plugins/adr/knip-report.md b/plugins/adr/knip-report.md new file mode 100644 index 0000000000..881216583e --- /dev/null +++ b/plugins/adr/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------------|:-------------| +| remark-gfm | package.json | +| react-markdown | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/adr/package.json b/plugins/adr/package.json index d2157dcae7..c09bf7cb71 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.6.13-next.0", + "version": "0.6.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -53,7 +53,7 @@ "@backstage/plugin-search-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "react-markdown": "^8.0.0", "react-use": "^17.2.4", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 85f5e412ed..098b5a988d 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-airbrake-backend +## 0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## 0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + ## 0.3.7-next.0 ### Patch Changes diff --git a/plugins/airbrake-backend/knip-report.md b/plugins/airbrake-backend/knip-report.md new file mode 100644 index 0000000000..e31e20b852 --- /dev/null +++ b/plugins/airbrake-backend/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index d3424d130d..d2210362b1 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.3.7-next.0", + "version": "0.3.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index bf89516a38..086664d1dc 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-airbrake +## 0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/dev-utils@1.0.27-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/test-utils@1.5.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/dev-utils@1.0.27-next.1 + ## 0.3.30-next.0 ### Patch Changes diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index 573910a1cf..603311f92c 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -8,14 +8,14 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-airbrake + yarn --cwd packages/app add @backstage/plugin-airbrake ``` 2. Install the Backend plugin: ```bash # From your Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-airbrake-backend + yarn --cwd packages/backend add @backstage/plugin-airbrake-backend ``` 3. Add the `EntityAirbrakeContent` and `isAirbrakeAvailable` to `packages/app/src/components/catalog/EntityPage.tsx` for all the entity pages you want Airbrake to be in: diff --git a/plugins/airbrake/knip-report.md b/plugins/airbrake/knip-report.md new file mode 100644 index 0000000000..9364473c4f --- /dev/null +++ b/plugins/airbrake/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/app-defaults | package.json | + diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 904dbcef76..bca5013433 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.30-next.0", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@backstage/test-utils": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 4b99d120fb..454f4b9aea 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-allure +## 0.1.46-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.46-next.0 ### Patch Changes diff --git a/plugins/allure/README.md b/plugins/allure/README.md index 3a1137fc39..22348385a3 100644 --- a/plugins/allure/README.md +++ b/plugins/allure/README.md @@ -6,7 +6,7 @@ Welcome to the Backstage Allure plugin. This plugin add an entity service page t ```shell # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-allure +yarn --cwd packages/app add @backstage/plugin-allure ``` ## Configure diff --git a/plugins/allure/knip-report.md b/plugins/allure/knip-report.md new file mode 100644 index 0000000000..a7fde3968b --- /dev/null +++ b/plugins/allure/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 9254b6c0c8..634201af7c 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.46-next.0", + "version": "0.1.46-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index 5135b15ac1..b773e8dcbb 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-analytics-module-ga +## 0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## 0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + ## 0.1.37 ### Patch Changes diff --git a/plugins/analytics-module-ga/README.md b/plugins/analytics-module-ga/README.md index 6fdfc91306..dfea532403 100644 --- a/plugins/analytics-module-ga/README.md +++ b/plugins/analytics-module-ga/README.md @@ -12,7 +12,7 @@ This plugin contains no other functionality. ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-analytics-module-ga +yarn --cwd packages/app add @backstage/plugin-analytics-module-ga ``` 2. Wire up the API implementation to your App: diff --git a/plugins/analytics-module-ga/knip-report.md b/plugins/analytics-module-ga/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/analytics-module-ga/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index cabff881ad..aaec240c12 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.37", + "version": "0.2.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md index 6529fc3711..7176b5f96a 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-analytics-module-ga4 +## 0.2.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## 0.2.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + ## 0.1.8 ### Patch Changes diff --git a/plugins/analytics-module-ga4/README.md b/plugins/analytics-module-ga4/README.md index 2d8c930e30..dad9b88a27 100644 --- a/plugins/analytics-module-ga4/README.md +++ b/plugins/analytics-module-ga4/README.md @@ -12,7 +12,7 @@ This plugin contains no other functionality. ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-analytics-module-ga4 +yarn --cwd packages/app add @backstage/plugin-analytics-module-ga4 ``` 2. Wire up the API implementation to your App: diff --git a/plugins/analytics-module-ga4/knip-report.md b/plugins/analytics-module-ga4/knip-report.md new file mode 100644 index 0000000000..544b473dd0 --- /dev/null +++ b/plugins/analytics-module-ga4/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @types/jest | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index 89113efe6d..83f43a0d6a 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga4", - "version": "0.1.8", + "version": "0.2.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -16,7 +16,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/analytics-module-ga4" + "directory": "plugins/analytics-module-ga4" }, "sideEffects": false, "scripts": { diff --git a/plugins/analytics-module-newrelic-browser/CHANGELOG.md b/plugins/analytics-module-newrelic-browser/CHANGELOG.md index 0f9b210d9a..67bd3d94cc 100644 --- a/plugins/analytics-module-newrelic-browser/CHANGELOG.md +++ b/plugins/analytics-module-newrelic-browser/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-analytics-module-newrelic-browser +## 0.1.0-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/config@1.1.1 + +## 0.1.0-next.0 + +### Minor Changes + +- e586f79: Add support to the new analytics api. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + ## 0.0.6 ### Patch Changes diff --git a/plugins/analytics-module-newrelic-browser/README.md b/plugins/analytics-module-newrelic-browser/README.md index 2fe3956d2d..d607a4f446 100644 --- a/plugins/analytics-module-newrelic-browser/README.md +++ b/plugins/analytics-module-newrelic-browser/README.md @@ -10,7 +10,7 @@ This plugin contains no other functionality. ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-analytics-module-newrelic-browser +yarn --cwd packages/app add @backstage/plugin-analytics-module-newrelic-browser ``` 2. Wire up the API implementation to your App: diff --git a/plugins/analytics-module-newrelic-browser/knip-report.md b/plugins/analytics-module-newrelic-browser/knip-report.md new file mode 100644 index 0000000000..9f54e7f06d --- /dev/null +++ b/plugins/analytics-module-newrelic-browser/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-newrelic-browser/package.json b/plugins/analytics-module-newrelic-browser/package.json index 44610dd026..61f15092f5 100644 --- a/plugins/analytics-module-newrelic-browser/package.json +++ b/plugins/analytics-module-newrelic-browser/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-newrelic-browser", - "version": "0.0.6", + "version": "0.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/analytics-module-newrelic-browser" + }, "backstage": { "role": "frontend-plugin-module" }, diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 9c2a434030..c733a68823 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-apache-airflow +## 0.2.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.2.19 ### Patch Changes diff --git a/plugins/apache-airflow/knip-report.md b/plugins/apache-airflow/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/apache-airflow/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 489fcde5e8..891a983744 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.19", + "version": "0.2.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cross-fetch": "^4.0.0", "qs": "^6.10.1", "react-use": "^17.2.4" diff --git a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md index 2c96409cab..812def886c 100644 --- a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md +++ b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-api-docs-module-protoc-gen-doc +## 0.1.6-next.0 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. + ## 0.1.5 ### Patch Changes diff --git a/plugins/api-docs-module-protoc-gen-doc/README.md b/plugins/api-docs-module-protoc-gen-doc/README.md index a921fafc0b..5bf75766e0 100644 --- a/plugins/api-docs-module-protoc-gen-doc/README.md +++ b/plugins/api-docs-module-protoc-gen-doc/README.md @@ -8,7 +8,7 @@ This package contains ApiDefinitionWidgets for the following projects: ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-api-docs-module-protoc-gen-doc +yarn --cwd packages/app add @backstage/plugin-api-docs-module-protoc-gen-doc ``` ## Add the GrpcDocsApiWidget to your apis diff --git a/plugins/api-docs-module-protoc-gen-doc/knip-report.md b/plugins/api-docs-module-protoc-gen-doc/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/api-docs-module-protoc-gen-doc/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 3adf16d6ff..76b0f37be9 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.5", + "version": "0.1.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "grpc-docs": "^1.1.2" }, "peerDependencies": { diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 4a293884f1..07f9155a68 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-api-docs +## 0.10.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.10.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 0.10.4-next.0 ### Patch Changes diff --git a/plugins/api-docs/README.md b/plugins/api-docs/README.md index 4d7cc46c24..9bca772802 100644 --- a/plugins/api-docs/README.md +++ b/plugins/api-docs/README.md @@ -29,7 +29,7 @@ To link that a component provides or consumes an API, see the [`providesApis`](h ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-api-docs +yarn --cwd packages/app add @backstage/plugin-api-docs ``` 2. Add the `ApiExplorerPage` extension to the app: diff --git a/plugins/api-docs/knip-report.md b/plugins/api-docs/knip-report.md new file mode 100644 index 0000000000..7ecee7de26 --- /dev/null +++ b/plugins/api-docs/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:---------------------|:-------------| +| graphql-ws | package.json | +| graphql-config | package.json | +| isomorphic-form-data | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 3147c080a8..0cdf564de9 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.10.4-next.0", + "version": "0.10.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -45,7 +45,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "graphiql": "3.1.0", "graphql": "^16.0.0", "graphql-config": "^5.0.2", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index 1523721718..9d3104cef5 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-apollo-explorer +## 0.1.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/apollo-explorer/knip-report.md b/plugins/apollo-explorer/knip-report.md new file mode 100644 index 0000000000..25d92625f5 --- /dev/null +++ b/plugins/apollo-explorer/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------|:-------------| +| use-deep-compare-effect | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 37895e3343..5b8d694d5c 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.19", + "version": "0.1.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "use-deep-compare-effect": "^1.8.1" }, "peerDependencies": { diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 4a5361361d..562d4f9be2 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-app-backend +## 0.3.58-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 998ccf6: Support injecting config multiple times in a single bundle +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-app-node@0.1.10-next.2 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + +## 0.3.58-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.10-next.1 + ## 0.3.58-next.0 ### Patch Changes diff --git a/plugins/app-backend/README.md b/plugins/app-backend/README.md index 590c6e8eb7..0f0c235ab5 100644 --- a/plugins/app-backend/README.md +++ b/plugins/app-backend/README.md @@ -8,7 +8,7 @@ Add both this package and your local frontend app package as dependencies to you ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-app-backend app +yarn --cwd packages/backend add @backstage/plugin-app-backend app ``` By adding the app package as a dependency we ensure that it is built as part of the backend, and that it can be resolved at runtime. diff --git a/plugins/app-backend/knip-report.md b/plugins/app-backend/knip-report.md new file mode 100644 index 0000000000..d9b5d085f3 --- /dev/null +++ b/plugins/app-backend/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| yn | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| node-fetch | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-app-api | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 3722512874..6b91780582 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.58-next.0", + "version": "0.3.58-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/src/lib/config.test.ts b/plugins/app-backend/src/lib/config.test.ts index f36052116a..ed2b8b8777 100644 --- a/plugins/app-backend/src/lib/config.test.ts +++ b/plugins/app-backend/src/lib/config.test.ts @@ -62,6 +62,28 @@ describe('injectConfig', () => { expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]))).toEqual([]); }); + it('should inject config repeatedly if marker appears multiple times', async () => { + fsMock.readdir.mockResolvedValue(['main.js'] as any); + readFileMock.mockImplementation( + async () => + '({a:"__APP_INJECTED_RUNTIME_CONFIG__",b:"__APP_INJECTED_RUNTIME_CONFIG__"})', + ); + await injectConfig(baseOptions); + expect(fsMock.readdir).toHaveBeenCalledTimes(1); + expect(fsMock.readFile).toHaveBeenCalledTimes(1); + expect(fsMock.writeFile).toHaveBeenCalledTimes(1); + expect(fsMock.writeFile).toHaveBeenCalledWith( + resolvePath(MOCK_DIR, 'main.js'), + '({a:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/,b:/*__APP_INJECTED_CONFIG_MARKER__*/"[]"/*__INJECTED_END__*/})', + 'utf8', + ); + + // eslint-disable-next-line no-eval + expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]).a)).toEqual([]); + // eslint-disable-next-line no-eval + expect(JSON.parse(eval(fsMock.writeFile.mock.calls[0][1]).b)).toEqual([]); + }); + it('should find the correct file to inject', async () => { fsMock.readdir.mockResolvedValue([ 'before.js', @@ -152,4 +174,55 @@ describe('injectConfig', () => { { data: { x: 1, y: 2 }, context: 'test' }, ]); }); + + it('should re-inject config repeatedly if needed', async () => { + fsMock.readdir.mockResolvedValue(['main.js'] as any); + readFileMock.mockResolvedValue( + '({ a: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__"), b: JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__") })', + ); + + await injectConfig({ + ...baseOptions, + appConfigs: [{ data: { x: 0 }, context: 'test' }], + }); + + expect(fsMock.writeFile).toHaveBeenCalledTimes(1); + expect(fsMock.writeFile).toHaveBeenCalledWith( + resolvePath(MOCK_DIR, 'main.js'), + '({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":0},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })', + 'utf8', + ); + + // eslint-disable-next-line no-eval + expect(eval(fsMock.writeFile.mock.calls[0][1]).a).toEqual([ + { data: { x: 0 }, context: 'test' }, + ]); + // eslint-disable-next-line no-eval + expect(eval(fsMock.writeFile.mock.calls[0][1]).b).toEqual([ + { data: { x: 0 }, context: 'test' }, + ]); + + readFileMock.mockResolvedValue(fsMock.writeFile.mock.calls[0][1]); + + await injectConfig({ + ...baseOptions, + appConfigs: [{ data: { x: 1, y: 2 }, context: 'test' }], + }); + + expect(fsMock.writeFile).toHaveBeenCalledTimes(2); + expect(fsMock.writeFile).toHaveBeenLastCalledWith( + resolvePath(MOCK_DIR, 'main.js'), + '({ a: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/), b: JSON.parse(/*__APP_INJECTED_CONFIG_MARKER__*/"[{\\"data\\":{\\"x\\":1,\\"y\\":2},\\"context\\":\\"test\\"}]"/*__INJECTED_END__*/) })', + 'utf8', + ); + + // eslint-disable-next-line no-eval + expect(eval(fsMock.writeFile.mock.calls[1][1]).a).toEqual([ + { data: { x: 1, y: 2 }, context: 'test' }, + ]); + // eslint-disable-next-line no-eval + expect(eval(fsMock.writeFile.mock.calls[1][1]).b).toEqual([ + { data: { x: 1, y: 2 }, context: 'test' }, + ]); + }); }); diff --git a/plugins/app-backend/src/lib/config.ts b/plugins/app-backend/src/lib/config.ts index 05b304075e..63912df5c4 100644 --- a/plugins/app-backend/src/lib/config.ts +++ b/plugins/app-backend/src/lib/config.ts @@ -49,7 +49,7 @@ export async function injectConfig( if (content.includes('__APP_INJECTED_RUNTIME_CONFIG__')) { logger.info(`Injecting env config into ${jsFile}`); - const newContent = content.replace( + const newContent = content.replaceAll( '"__APP_INJECTED_RUNTIME_CONFIG__"', injected, ); @@ -58,8 +58,8 @@ export async function injectConfig( } else if (content.includes('__APP_INJECTED_CONFIG_MARKER__')) { logger.info(`Replacing injected env config in ${jsFile}`); - const newContent = content.replace( - /\/\*__APP_INJECTED_CONFIG_MARKER__\*\/.*\/\*__INJECTED_END__\*\//, + const newContent = content.replaceAll( + /\/\*__APP_INJECTED_CONFIG_MARKER__\*\/.*?\/\*__INJECTED_END__\*\//g, injected, ); await fs.writeFile(path, newContent, 'utf8'); diff --git a/plugins/app-node/CHANGELOG.md b/plugins/app-node/CHANGELOG.md index cef24b16ff..8cfbbdc394 100644 --- a/plugins/app-node/CHANGELOG.md +++ b/plugins/app-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-app-node +## 0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## 0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + ## 0.1.10-next.0 ### Patch Changes diff --git a/plugins/app-node/knip-report.md b/plugins/app-node/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/app-node/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json index 345b3fbdc0..7ea9fa1d3c 100644 --- a/plugins/app-node/package.json +++ b/plugins/app-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-node", "description": "Node.js library for the app plugin", - "version": "0.1.10-next.0", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/app-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/app-visualizer/CHANGELOG.md b/plugins/app-visualizer/CHANGELOG.md index ee679a979b..e8965cc349 100644 --- a/plugins/app-visualizer/CHANGELOG.md +++ b/plugins/app-visualizer/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-app-visualizer +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + +## 0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.1.1-next.0 ### Patch Changes diff --git a/plugins/app-visualizer/knip-report.md b/plugins/app-visualizer/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/app-visualizer/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/app-visualizer/package.json b/plugins/app-visualizer/package.json index 49ebffd3f0..e87faf9f5b 100644 --- a/plugins/app-visualizer/package.json +++ b/plugins/app-visualizer/package.json @@ -1,10 +1,15 @@ { "name": "@backstage/plugin-app-visualizer", "description": "Visualizes the Backstage app structure", - "version": "0.1.1-next.0", + "version": "0.1.1-next.2", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/app-visualizer" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md index 580d58ae43..68bc6e18c6 100644 --- a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-atlassian-provider +## 0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-atlassian-provider/knip-report.md b/plugins/auth-backend-module-atlassian-provider/knip-report.md new file mode 100644 index 0000000000..fe0782ee45 --- /dev/null +++ b/plugins/auth-backend-module-atlassian-provider/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-atlassian-provider/package.json b/plugins/auth-backend-module-atlassian-provider/package.json index 311122fe54..288aeb1d05 100644 --- a/plugins/auth-backend-module-atlassian-provider/package.json +++ b/plugins/auth-backend-module-atlassian-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-atlassian-provider", "description": "The atlassian-provider backend module for the auth plugin.", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-atlassian-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md new file mode 100644 index 0000000000..feb86da63a --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md @@ -0,0 +1,28 @@ +# @backstage/plugin-auth-backend-module-aws-alb-provider + +## 0.1.0-next.1 + +### Patch Changes + +- d309cad: Refactored to use the `jose` library for JWT handling. +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## 0.1.0-next.0 + +### Minor Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 diff --git a/plugins/auth-backend-module-aws-alb-provider/knip-report.md b/plugins/auth-backend-module-aws-alb-provider/knip-report.md new file mode 100644 index 0000000000..3f2a3a7c13 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------------------------------|:-------------| +| @backstage/backend-common | package.json | +| @backstage/plugin-auth-backend | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| express | package.json | +| @backstage/cli | package.json | +| @backstage/config | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-aws-alb-provider/package.json b/plugins/auth-backend-module-aws-alb-provider/package.json index 6d4a5835bf..274cf2560e 100644 --- a/plugins/auth-backend-module-aws-alb-provider/package.json +++ b/plugins/auth-backend-module-aws-alb-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-aws-alb-provider", "description": "The aws-alb provider module for the Backstage auth backend.", - "version": "0.0.0", + "version": "0.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,14 +38,15 @@ "@backstage/plugin-auth-backend": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "jose": "^4.6.0", - "jwt-decode": "^3.1.0", - "node-cache": "^5.1.2" + "node-cache": "^5.1.2", + "node-fetch": "^2.6.7" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@backstage/config": "workspace:^", - "express": "^4.18.2" + "express": "^4.18.2", + "msw": "^2.0.8" }, "files": [ "dist" diff --git a/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts index bfcbfce622..5f19d800a0 100644 --- a/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts +++ b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts @@ -14,36 +14,30 @@ * limitations under the License. */ +import express from 'express'; +import { SignJWT } from 'jose'; import { ALB_ACCESS_TOKEN_HEADER, ALB_JWT_HEADER, awsAlbAuthenticator, } from './authenticator'; -import { jwtVerify } from 'jose'; -import express from 'express'; -import { AuthenticationError } from '@backstage/errors'; import { Config } from '@backstage/config'; +import { AuthenticationError } from '@backstage/errors'; -const jwtMock = jwtVerify as jest.Mocked; -const mockJwt = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktFWV9JRCIsImlzcyI6IklTU1VFUl9VUkwifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlVzZXIgTmFtZSIsImlhdCI6MTUxNjIzOTAyMn0.uMCSBGhij1xn5pnot8XgD-huQuTIBOFGs6kkW_p_X94'; -const mockAccessToken = 'ACCESS_TOKEN'; -const mockClaims = { - sub: '1234567890', - name: 'User Name', - family_name: 'Name', - given_name: 'User', - picture: 'PICTURE_URL', - email: 'user.name@email.test', - exp: 1632833763, - iss: 'ISSUER_URL', -}; -jest.mock('jose'); - -beforeEach(() => { - jest.clearAllMocks(); -}); describe('AwsAlbProvider', () => { + const mockAccessToken = 'ACCESS_TOKEN'; + const mockClaims = { + sub: '1234567890', + name: 'User Name', + family_name: 'Name', + given_name: 'User', + picture: 'PICTURE_URL', + email: 'user.name@email.test', + exp: Date.now() + 10000, + iss: 'ISSUER_URL', + }; + const signingKey = new TextEncoder().encode('signingKey'); + let mockJwt: string; const mockRequest = { header: jest.fn(name => { if (name === ALB_JWT_HEADER) { @@ -54,6 +48,16 @@ describe('AwsAlbProvider', () => { return undefined; }), } as unknown as express.Request; + const mockRequestWithInvalidJwt = { + header: jest.fn(name => { + if (name === ALB_JWT_HEADER) { + return 'invalid.jwt'; + } else if (name === ALB_ACCESS_TOKEN_HEADER) { + return mockAccessToken; + } + return undefined; + }), + } as unknown as express.Request; const mockRequestWithoutJwt = { header: jest.fn(name => { if (name === ALB_ACCESS_TOKEN_HEADER) { @@ -71,13 +75,20 @@ describe('AwsAlbProvider', () => { }), } as unknown as express.Request; + beforeEach(async () => { + mockJwt = await new SignJWT(mockClaims) + .setProtectedHeader({ alg: 'HS256' }) + .sign(signingKey); + }); + describe('should transform to type AwsAlbResponse', () => { it('when JWT is valid and identity is resolved successfully', async () => { - jwtMock.mockReturnValueOnce(Promise.resolve({ payload: mockClaims })); - const response = await awsAlbAuthenticator.authenticate( { req: mockRequest }, - { issuer: 'ISSUER_URL', getKey: jest.fn() }, + { + issuer: 'ISSUER_URL', + getKey: jest.fn().mockResolvedValue(signingKey), + }, ); expect(response).toEqual({ result: { @@ -119,27 +130,38 @@ describe('AwsAlbProvider', () => { }); it('JWT is invalid', async () => { - jwtMock.mockImplementationOnce(() => { - throw new Error('bad JWT'); - }); - await expect( awsAlbAuthenticator.authenticate( - { req: mockRequest }, + { req: mockRequestWithInvalidJwt }, { issuer: 'ISSUER_URL', getKey: jest.fn() }, ), ).rejects.toThrow( - 'Exception occurred during JWT processing: Error: bad JWT', + 'Exception occurred during JWT processing: JWSInvalid: Invalid Compact JWS', ); }); it('issuer is missing', async () => { - jwtMock.mockReturnValueOnce({}); + const jwt = await new SignJWT({}) + .setProtectedHeader({ alg: 'HS256' }) + .sign(signingKey); + const req = { + header: jest.fn(name => { + if (name === ALB_JWT_HEADER) { + return jwt; + } else if (name === ALB_ACCESS_TOKEN_HEADER) { + return mockAccessToken; + } + return undefined; + }), + } as unknown as express.Request; await expect( awsAlbAuthenticator.authenticate( - { req: mockRequest }, - { issuer: 'ISSUER_URL', getKey: jest.fn() }, + { req }, + { + issuer: 'ISSUER_URL', + getKey: jest.fn().mockResolvedValue(signingKey), + }, ), ).rejects.toThrow( 'Exception occurred during JWT processing: AuthenticationError: Issuer mismatch on JWT token', @@ -147,14 +169,27 @@ describe('AwsAlbProvider', () => { }); it('issuer is invalid', async () => { - jwtMock.mockReturnValueOnce({ - iss: 'INVALID_ISSUE_URL', - }); + const jwt = await new SignJWT({ iss: 'INVALID_ISSUER_URL' }) + .setProtectedHeader({ alg: 'HS256' }) + .sign(signingKey); + const req = { + header: jest.fn(name => { + if (name === ALB_JWT_HEADER) { + return jwt; + } else if (name === ALB_ACCESS_TOKEN_HEADER) { + return mockAccessToken; + } + return undefined; + }), + } as unknown as express.Request; await expect( awsAlbAuthenticator.authenticate( - { req: mockRequest }, - { issuer: 'ISSUER_URL', getKey: jest.fn() }, + { req }, + { + issuer: 'ISSUER_URL', + getKey: jest.fn().mockResolvedValue(signingKey), + }, ), ).rejects.toThrow( 'Exception occurred during JWT processing: AuthenticationError: Issuer mismatch on JWT token', diff --git a/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts b/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts index 07ad118cea..cb103debb0 100644 --- a/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts +++ b/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts @@ -1,10 +1,3 @@ -import NodeCache from 'node-cache'; -import { makeProfileInfo, provisionKeyCache } from './helpers'; -import * as crypto from 'crypto'; -import { JWTHeaderParameters } from 'jose'; -import { PassportProfile } from '@backstage/plugin-auth-node'; -import jwtDecoder from 'jwt-decode'; - /* * Copyright 2020 The Backstage Authors * @@ -21,40 +14,47 @@ import jwtDecoder from 'jwt-decode'; * limitations under the License. */ -const mockKey = async () => { - return `-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnuN4LlaJhaUpx+qZFTzYCrSBLk0I -yOlxJ2VW88mLAQGJ7HPAvOdylxZsItMnzCuqNzZvie8m/NJsOjhDncVkrw== ------END PUBLIC KEY----- -`; -}; +import * as crypto from 'crypto'; +import { JWTHeaderParameters, UnsecuredJWT } from 'jose'; +import NodeCache from 'node-cache'; +import { http, HttpResponse } from 'msw'; +import { setupServer } from 'msw/node'; +import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { PassportProfile } from '@backstage/plugin-auth-node'; +import { makeProfileInfo, provisionKeyCache } from './helpers'; + jest.mock('crypto'); const cryptoMock = crypto as jest.Mocked; -jest.mock('node-fetch', () => ({ - __esModule: true, - default: async () => { - return { - text: async () => { - return mockKey(); - }, - }; - }, -})); - -const jwtMock = jwtDecoder as jest.Mocked; -jest.mock('jwt-decode'); describe('helpers', () => { + const server = setupServer(); + setupRequestMockHandlers(server); + const nodeCache = jest.fn() as unknown as NodeCache; nodeCache.set = jest.fn(); beforeEach(() => { jest.clearAllMocks(); + server.use( + http.get( + 'https://public-keys.auth.elb.eu-west-1.amazonaws.com/kid', + () => + new HttpResponse( + `-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnuN4LlaJhaUpx+qZFTzYCrSBLk0I +yOlxJ2VW88mLAQGJ7HPAvOdylxZsItMnzCuqNzZvie8m/NJsOjhDncVkrw== +-----END PUBLIC KEY----- +`, + ), + ), + ); }); + it('should create a key', () => { const getKey = provisionKeyCache('eu-west-1', nodeCache); expect(getKey).toBeDefined(); }); + it('should return a key from cache', async () => { const getKey = provisionKeyCache('eu-west-1', nodeCache); @@ -65,6 +65,7 @@ describe('helpers', () => { expect(key).toBe('key'); }); + it('should update cache if key is not found', async () => { const getKey = provisionKeyCache('eu-west-1', nodeCache); @@ -77,6 +78,7 @@ describe('helpers', () => { await getKey({ kid: 'kid' } as unknown as JWTHeaderParameters); expect(nodeCache.set).toHaveBeenCalledWith('kid', 'key'); }); + it('should throw error if key is not found', async () => { const getKey = provisionKeyCache('eu-west-1', nodeCache); @@ -87,6 +89,7 @@ describe('helpers', () => { getKey({ kid: 'kid' } as unknown as JWTHeaderParameters), ).rejects.toThrow(); }); + it('should throw if key is not present in request header', async () => { const getKey = provisionKeyCache('eu-west-1', nodeCache); @@ -119,19 +122,19 @@ describe('makeProfileInfo', () => { }; expect(makeProfileInfo(profile, accessToken)).toEqual(result); }); + it('should return profile info from id token', () => { - jwtMock.mockReturnValueOnce({ - email: 'email', - picture: 'picture', - name: 'displayName', - }); const profile = { name: { familyName: 'familyName', givenName: 'givenName', }, } as PassportProfile; - const idToken = 'idToken'; + const idToken = new UnsecuredJWT({ + email: 'email', + picture: 'picture', + name: 'displayName', + }).encode(); const result = { email: 'email', picture: 'picture', diff --git a/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts b/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts index d97146bb93..e846b2484e 100644 --- a/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts +++ b/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { PassportProfile } from '@backstage/plugin-auth-node/'; -import { ProfileInfo } from '@backstage/plugin-auth-node'; import { KeyObject } from 'crypto'; -import jwtDecoder from 'jwt-decode'; -import NodeCache from 'node-cache'; import * as crypto from 'crypto'; -import { JWTHeaderParameters } from 'jose'; +import { JWTHeaderParameters, decodeJwt } from 'jose'; +import NodeCache from 'node-cache'; +import fetch from 'node-fetch'; +import { PassportProfile, ProfileInfo } from '@backstage/plugin-auth-node'; import { AuthenticationError } from '@backstage/errors'; export const makeProfileInfo = ( @@ -45,7 +44,11 @@ export const makeProfileInfo = ( if ((!email || !picture || !displayName) && idToken) { try { - const decoded: Record = jwtDecoder(idToken); + const decoded: Record = decodeJwt(idToken) as { + email?: string; + picture?: string; + name?: string; + }; if (!email && decoded.email) { email = decoded.email; } diff --git a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md index 87ccf9ad8e..c34daa8aba 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-auth-backend-module-gcp-iap-provider +## 0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-gcp-iap-provider/knip-report.md b/plugins/auth-backend-module-gcp-iap-provider/knip-report.md new file mode 100644 index 0000000000..b0c3c1d32f --- /dev/null +++ b/plugins/auth-backend-module-gcp-iap-provider/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| express | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-gcp-iap-provider/package.json b/plugins/auth-backend-module-gcp-iap-provider/package.json index 95fea863f3..9a2d92f4d6 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/package.json +++ b/plugins/auth-backend-module-gcp-iap-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-gcp-iap-provider", "description": "A GCP IAP auth provider module for the Backstage auth backend", - "version": "0.2.4-next.0", + "version": "0.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-github-provider/CHANGELOG.md b/plugins/auth-backend-module-github-provider/CHANGELOG.md index 11053b8487..6ea4fa4bed 100644 --- a/plugins/auth-backend-module-github-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-github-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-github-provider +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-github-provider/knip-report.md b/plugins/auth-backend-module-github-provider/knip-report.md new file mode 100644 index 0000000000..8d7bd5cd41 --- /dev/null +++ b/plugins/auth-backend-module-github-provider/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index 8113a9e03f..7085e95003 100644 --- a/plugins/auth-backend-module-github-provider/package.json +++ b/plugins/auth-backend-module-github-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-github-provider", "description": "The github-provider backend module for the auth plugin.", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-github-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md index 15688da6ee..dbf92af499 100644 --- a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-gitlab-provider +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-gitlab-provider/knip-report.md b/plugins/auth-backend-module-gitlab-provider/knip-report.md new file mode 100644 index 0000000000..fe0782ee45 --- /dev/null +++ b/plugins/auth-backend-module-gitlab-provider/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-gitlab-provider/package.json b/plugins/auth-backend-module-gitlab-provider/package.json index e25ccfd547..f89c94b7e9 100644 --- a/plugins/auth-backend-module-gitlab-provider/package.json +++ b/plugins/auth-backend-module-gitlab-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-gitlab-provider", "description": "The gitlab-provider backend module for the auth plugin.", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-gitlab-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-google-provider/CHANGELOG.md b/plugins/auth-backend-module-google-provider/CHANGELOG.md index 78a6e68eb4..cc0de75a00 100644 --- a/plugins/auth-backend-module-google-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-google-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-google-provider +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-google-provider/knip-report.md b/plugins/auth-backend-module-google-provider/knip-report.md new file mode 100644 index 0000000000..6e4b0f2a59 --- /dev/null +++ b/plugins/auth-backend-module-google-provider/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-auth-backend | package.json | + diff --git a/plugins/auth-backend-module-google-provider/package.json b/plugins/auth-backend-module-google-provider/package.json index c985192df6..80386efed1 100644 --- a/plugins/auth-backend-module-google-provider/package.json +++ b/plugins/auth-backend-module-google-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-google-provider", "description": "A Google auth provider module for the Backstage auth backend", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md index e61ab20c6b..e418b0dddb 100644 --- a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-microsoft-provider +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.5-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-microsoft-provider/knip-report.md b/plugins/auth-backend-module-microsoft-provider/knip-report.md new file mode 100644 index 0000000000..d51b79899b --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/config | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json index e20f2d8a4c..32325c5574 100644 --- a/plugins/auth-backend-module-microsoft-provider/package.json +++ b/plugins/auth-backend-module-microsoft-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-microsoft-provider", "description": "The microsoft-provider backend module for the auth plugin.", - "version": "0.1.5-next.0", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-microsoft-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md index 0b70811413..b3c248e7e5 100644 --- a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-oauth2-provider +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-oauth2-provider/knip-report.md b/plugins/auth-backend-module-oauth2-provider/knip-report.md new file mode 100644 index 0000000000..3db18e15f0 --- /dev/null +++ b/plugins/auth-backend-module-oauth2-provider/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| passport | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-oauth2-provider/package.json b/plugins/auth-backend-module-oauth2-provider/package.json index 83c14c7821..525fa5ab34 100644 --- a/plugins/auth-backend-module-oauth2-provider/package.json +++ b/plugins/auth-backend-module-oauth2-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-oauth2-provider", "description": "The oauth2-provider backend module for the auth plugin.", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oauth2-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md index 809e58fd6c..5ace751d2f 100644 --- a/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-auth-backend-module-oauth2-proxy-provider +## 0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md b/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/package.json b/plugins/auth-backend-module-oauth2-proxy-provider/package.json index d0dabe9321..3903108d2b 100644 --- a/plugins/auth-backend-module-oauth2-proxy-provider/package.json +++ b/plugins/auth-backend-module-oauth2-proxy-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-oauth2-proxy-provider", "description": "The oauth2-proxy-provider backend module for the auth plugin.", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oauth2-proxy-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md index 4581738ffb..d1e09e9d74 100644 --- a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-auth-backend-module-oidc-provider +## 0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-backend@0.21.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend@0.20.4-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/auth-backend-module-oidc-provider/knip-report.md b/plugins/auth-backend-module-oidc-provider/knip-report.md new file mode 100644 index 0000000000..8cb9f67afb --- /dev/null +++ b/plugins/auth-backend-module-oidc-provider/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:--------------------------|:-------------| +| express | package.json | +| passport | package.json | +| @backstage/backend-common | package.json | + +## Unused devDependencies (9) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| jose | package.json | +| supertest | package.json | +| cookie-parser | package.json | +| @backstage/cli | package.json | +| express-session | package.json | +| @backstage/config | package.json | +| express-promise-router | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-oidc-provider/package.json b/plugins/auth-backend-module-oidc-provider/package.json index 2b133f2f21..d144fddc59 100644 --- a/plugins/auth-backend-module-oidc-provider/package.json +++ b/plugins/auth-backend-module-oidc-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-oidc-provider", "description": "The oidc-provider backend module for the auth plugin.", - "version": "0.1.0-next.0", + "version": "0.1.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oidc-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-okta-provider/CHANGELOG.md b/plugins/auth-backend-module-okta-provider/CHANGELOG.md index 313259dd3d..483ba8b046 100644 --- a/plugins/auth-backend-module-okta-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-okta-provider/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend-module-okta-provider +## 0.0.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + +## 0.0.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.0.3-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-okta-provider/knip-report.md b/plugins/auth-backend-module-okta-provider/knip-report.md new file mode 100644 index 0000000000..fe0782ee45 --- /dev/null +++ b/plugins/auth-backend-module-okta-provider/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-okta-provider/package.json b/plugins/auth-backend-module-okta-provider/package.json index 2d2d3f857c..ab3e1a90a7 100644 --- a/plugins/auth-backend-module-okta-provider/package.json +++ b/plugins/auth-backend-module-okta-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-okta-provider", "description": "The okta-provider backend module for the auth plugin.", - "version": "0.0.3-next.0", + "version": "0.0.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-okta-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md index 8b7c0a8214..fbca8e4f78 100644 --- a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-auth-backend-module-pinniped-provider +## 0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-pinniped-provider/knip-report.md b/plugins/auth-backend-module-pinniped-provider/knip-report.md new file mode 100644 index 0000000000..c3dbae1569 --- /dev/null +++ b/plugins/auth-backend-module-pinniped-provider/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused devDependencies (9) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| jose | package.json | +| express | package.json | +| passport | package.json | +| supertest | package.json | +| cookie-parser | package.json | +| @backstage/cli | package.json | +| express-session | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-pinniped-provider/package.json b/plugins/auth-backend-module-pinniped-provider/package.json index a414483000..6b3eee0675 100644 --- a/plugins/auth-backend-module-pinniped-provider/package.json +++ b/plugins/auth-backend-module-pinniped-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-pinniped-provider", "description": "The pinniped-provider backend module for the auth plugin.", - "version": "0.1.4-next.0", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-pinniped-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md b/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md index 9613bb1499..f4c6dbe57e 100644 --- a/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-auth-backend-module-vmware-cloud-provider +## 0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md b/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md new file mode 100644 index 0000000000..c5d1ec2ac8 --- /dev/null +++ b/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/errors | package.json | +| @backstage/config | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-vmware-cloud-provider/package.json b/plugins/auth-backend-module-vmware-cloud-provider/package.json index 3a1cbe4aa5..db3f76dc66 100644 --- a/plugins/auth-backend-module-vmware-cloud-provider/package.json +++ b/plugins/auth-backend-module-vmware-cloud-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-vmware-cloud-provider", "description": "The vmware-cloud-provider backend module for the auth plugin.", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-vmware-cloud-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 27b912aca1..dfe13532d0 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,72 @@ # @backstage/plugin-auth-backend +## 0.21.0-next.2 + +### Minor Changes + +- 7dd8463: **BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. + + This comes with breaking changes to config options: + + - `audience` is now mandatory + - `wantAuthnResponseSigned` is now exposed and defaults to `true` + - `wantAssertionsSigned` is now exposed and defaults to `true` + +### Patch Changes + +- 97f8724: Support additional algorithms in the `/.well-known/openid-configuration` endpoint. +- a9e0107: The auth backend will now refuse to issue user tokens are excessively large. +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- 8e8a25d: Ability for user to configure backstage token expiration +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.1 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.2 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.2 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.2 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.2 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.2 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.20.4-next.1 + +### Patch Changes + +- 23a98f8: Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.1.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-github-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-google-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.1.5-next.1 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.7-next.1 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.1.2-next.1 + - @backstage/plugin-auth-backend-module-oidc-provider@0.1.0-next.1 + - @backstage/plugin-auth-backend-module-okta-provider@0.0.3-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.20.4-next.0 ### Patch Changes diff --git a/plugins/auth-backend/README.md b/plugins/auth-backend/README.md index ce7525fb6b..290745454e 100644 --- a/plugins/auth-backend/README.md +++ b/plugins/auth-backend/README.md @@ -165,3 +165,14 @@ To try out SAML, you can use the mock identity provider: ## Links - [The Backstage homepage](https://backstage.io) + +## Configuring Token Expiration in App Config + +If you need to change Backstage token expiration from the default value of one hour you can do so through configuration. Note that this is **not** the session duration, but rather the duration that the short-term cryptographic tokens are valid for. The expiration can not be set lower than 10 minutes or above 24 hours. + +This is what the configuration looks like: + +``` +auth: + backstageTokenExpiration: { minutes: } +``` diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index 9dbb89fada..25cd8d88ec 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -14,6 +14,8 @@ * limitations under the License. */ +import { HumanDuration } from '@backstage/types'; + export interface Config { /** Configuration options for the auth plugin */ auth?: { @@ -184,6 +186,10 @@ export interface Config { cfaccess?: { teamName: string; }; + /** + * The backstage token expiration. + */ + backstageTokenExpiration?: HumanDuration; }; }; } diff --git a/plugins/auth-backend/knip-report.md b/plugins/auth-backend/knip-report.md new file mode 100644 index 0000000000..846531dab7 --- /dev/null +++ b/plugins/auth-backend/knip-report.md @@ -0,0 +1,34 @@ +# Knip report + +## Unused dependencies (12) + +| Name | Location | +|:------------------------|:-------------| +| yn | package.json | +| cors | package.json | +| morgan | package.json | +| winston | package.json | +| fs-extra | package.json | +| node-cache | package.json | +| compression | package.json | +| openid-client | package.json | +| passport-github2 | package.json | +| passport-microsoft | package.json | +| google-auth-library | package.json | +| passport-google-oauth20 | package.json | + +## Unused devDependencies (10) + +| Name | Location | +|:-------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @types/xml2js | package.json | +| @backstage/cli | package.json | +| @types/body-parser | package.json | +| @types/passport-saml | package.json | +| @types/passport-github2 | package.json | +| @types/passport-strategy | package.json | +| @types/passport-microsoft | package.json | +| @types/passport-google-oauth20 | package.json | + diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 29c34b84e1..e3e651a9a2 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.20.4-next.0", + "version": "0.21.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -51,7 +51,9 @@ "@backstage/plugin-auth-backend-module-okta-provider": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/types": "workspace:^", "@google-cloud/firestore": "^7.0.0", + "@node-saml/passport-saml": "^4.0.4", "@types/express": "^4.17.6", "@types/passport": "^1.0.3", "compression": "^1.7.4", @@ -64,7 +66,6 @@ "fs-extra": "10.1.0", "google-auth-library": "^8.0.0", "jose": "^4.6.0", - "jwt-decode": "^3.1.0", "knex": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", @@ -81,7 +82,6 @@ "passport-microsoft": "^1.0.0", "passport-oauth2": "^1.6.1", "passport-onelogin-oauth": "^0.0.1", - "passport-saml": "^3.1.2", "uuid": "^8.0.0", "winston": "^3.2.1", "yn": "^4.0.0" @@ -93,7 +93,6 @@ "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", - "@types/jwt-decode": "^3.1.0", "@types/passport-auth0": "^1.0.5", "@types/passport-github2": "^1.2.4", "@types/passport-google-oauth20": "^2.0.3", diff --git a/plugins/auth-backend/src/identity/TokenFactory.test.ts b/plugins/auth-backend/src/identity/TokenFactory.test.ts index 4f6df89210..e1dd12333d 100644 --- a/plugins/auth-backend/src/identity/TokenFactory.test.ts +++ b/plugins/auth-backend/src/identity/TokenFactory.test.ts @@ -154,6 +154,23 @@ describe('TokenFactory', () => { }).rejects.toThrow(); }); + it('should refuse to issue excessively large tokens', async () => { + const factory = new TokenFactory({ + issuer: 'my-issuer', + keyStore: new MemoryKeyStore(), + keyDurationSeconds: 5, + logger, + }); + + await expect(() => { + return factory.issueToken({ + claims: { sub: 'user:ns/n', ent: Array(10000).fill('group:ns/n') }, + }); + }).rejects.toThrow( + /^Failed to issue a new user token. The resulting token is excessively large, with either too many ownership claims or too large custom claims./, + ); + }); + it('should defaults to ES256 when no algorithm string is supplied', async () => { const keyDurationSeconds = 5; const factory = new TokenFactory({ diff --git a/plugins/auth-backend/src/identity/TokenFactory.ts b/plugins/auth-backend/src/identity/TokenFactory.ts index ca16f8821f..f778077267 100644 --- a/plugins/auth-backend/src/identity/TokenFactory.ts +++ b/plugins/auth-backend/src/identity/TokenFactory.ts @@ -23,6 +23,7 @@ import { LoggerService } from '@backstage/backend-plugin-api'; import { AnyJWK, KeyStore, TokenIssuer, TokenParams } from './types'; const MS_IN_S = 1000; +const MAX_TOKEN_LENGTH = 32768; // At 64 bytes per entity ref this still leaves room for about 500 entities type Options = { logger: LoggerService; @@ -97,7 +98,8 @@ export class TokenFactory implements TokenIssuer { throw new AuthenticationError('No algorithm was provided in the key'); } - return new SignJWT({ ...additionalClaims, iss, sub, ent, aud, iat, exp }) + const claims = { ...additionalClaims, iss, sub, ent, aud, iat, exp }; + const token = await new SignJWT(claims) .setProtectedHeader({ alg: key.alg, kid: key.kid }) .setIssuer(iss) .setAudience(aud) @@ -105,6 +107,16 @@ export class TokenFactory implements TokenIssuer { .setIssuedAt(iat) .setExpirationTime(exp) .sign(await importJWK(key)); + + if (token.length > MAX_TOKEN_LENGTH) { + throw new Error( + `Failed to issue a new user token. The resulting token is excessively large, with either too many ownership claims or too large custom claims. You likely have a bug either in the sign-in resolver or catalog data. The following claims were requested: '${JSON.stringify( + claims, + )}'`, + ); + } + + return token; } // This will be called by other services that want to verify ID tokens. diff --git a/plugins/auth-backend/src/identity/router.ts b/plugins/auth-backend/src/identity/router.ts index d994f44d37..c9ae9e685a 100644 --- a/plugins/auth-backend/src/identity/router.ts +++ b/plugins/auth-backend/src/identity/router.ts @@ -34,7 +34,18 @@ export function createOidcRouter(options: Options) { jwks_uri: `${baseUrl}/.well-known/jwks.json`, response_types_supported: ['id_token'], subject_types_supported: ['public'], - id_token_signing_alg_values_supported: ['RS256'], + id_token_signing_alg_values_supported: [ + 'RS256', + 'RS384', + 'RS512', + 'ES256', + 'ES384', + 'ES512', + 'PS256', + 'PS384', + 'PS512', + 'EdDSA', + ], scopes_supported: ['openid'], token_endpoint_auth_methods_supported: [], claims_supported: ['sub'], diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts index dd0c1579a9..4d94634473 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts @@ -15,17 +15,118 @@ */ import express from 'express'; +import { UnsecuredJWT } from 'jose'; import passport from 'passport'; import { InternalOAuthError } from 'passport-oauth2'; import { executeRedirectStrategy, executeFrameHandlerStrategy, executeRefreshTokenStrategy, + makeProfileInfo, } from './PassportStrategyHelper'; +import { PassportProfile } from './types'; const mockRequest = {} as unknown as express.Request; describe('PassportStrategyHelper', () => { + describe('makeProfileInfo', () => { + it('retrieves email from passport profile', () => { + const profile: PassportProfile = { + emails: [{ value: 'email' }], + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo(profile); + + expect(profileInfo.email).toEqual('email'); + }); + + it('retrieves picture from passport profile avatarUrl', () => { + const profile: PassportProfile = { + avatarUrl: 'avatarUrl', + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo(profile); + + expect(profileInfo.picture).toEqual('avatarUrl'); + }); + + it('falls back to picture from passport profile photos field', () => { + const profile: PassportProfile = { + photos: [{ value: 'picture' }], + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo(profile); + + expect(profileInfo.picture).toEqual('picture'); + }); + + it('falls back to email from ID token', async () => { + const profile: PassportProfile = { + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo( + profile, + await new UnsecuredJWT({ email: 'email' }).encode(), + ); + + expect(profileInfo.email).toEqual('email'); + }); + + it('falls back to picture from ID token', async () => { + const profile: PassportProfile = { + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo( + profile, + await new UnsecuredJWT({ picture: 'picture' }).encode(), + ); + + expect(profileInfo.picture).toEqual('picture'); + }); + + it('falls back to name from ID token', async () => { + const profile: PassportProfile = { + provider: '', + id: '', + displayName: '', + }; + + const profileInfo = makeProfileInfo( + profile, + await new UnsecuredJWT({ name: 'name' }).encode(), + ); + + expect(profileInfo.displayName).toEqual('name'); + }); + + it('fails when attempting to fall back to invalid JWT', () => { + const profile: PassportProfile = { + provider: '', + id: '', + displayName: '', + }; + + expect(() => makeProfileInfo(profile, 'invalid JWT')).toThrow( + 'Failed to parse id token and get profile info', + ); + }); + }); + class MyCustomRedirectStrategy extends passport.Strategy { authenticate() { this.redirect('a', 302); diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts index 7589254862..44feb916c5 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts @@ -16,7 +16,7 @@ import express from 'express'; import passport from 'passport'; -import jwtDecoder from 'jwt-decode'; +import { decodeJwt } from 'jose'; import { InternalOAuthError } from 'passport-oauth2'; import { PassportProfile } from './types'; @@ -51,7 +51,11 @@ export const makeProfileInfo = ( if ((!email || !picture || !displayName) && idToken) { try { - const decoded: Record = jwtDecoder(idToken); + const decoded = decodeJwt(idToken) as { + email?: string; + name?: string; + picture?: string; + }; if (!email && decoded.email) { email = decoded.email; } diff --git a/plugins/auth-backend/src/providers/saml/provider.ts b/plugins/auth-backend/src/providers/saml/provider.ts index 3d35f46628..0da55ed3e4 100644 --- a/plugins/auth-backend/src/providers/saml/provider.ts +++ b/plugins/auth-backend/src/providers/saml/provider.ts @@ -15,16 +15,15 @@ */ import express from 'express'; -import { SamlConfig } from 'passport-saml/lib/passport-saml/types'; +import { SamlConfig, VerifiedCallback } from '@node-saml/passport-saml'; import { Strategy as SamlStrategy, Profile as SamlProfile, VerifyWithoutRequest, -} from 'passport-saml'; +} from '@node-saml/passport-saml'; import { executeFrameHandlerStrategy, executeRedirectStrategy, - PassportDoneCallback, } from '../../lib/passport'; import { AuthProviderRouteHandlers, @@ -62,17 +61,19 @@ export class SamlAuthProvider implements AuthProviderRouteHandlers { this.signInResolver = options.signInResolver; this.authHandler = options.authHandler; this.resolverContext = options.resolverContext; - this.strategy = new SamlStrategy({ ...options }, (( - fullProfile: SamlProfile, - done: PassportDoneCallback, + + const verifier: VerifyWithoutRequest = ( + profile: SamlProfile | null, + done: VerifiedCallback, ) => { // TODO: There's plenty more validation and profile handling to do here, // this provider is currently only intended to validate the provider pattern // for non-oauth auth flows. // TODO: This flow doesn't issue an identity token that can be used to validate // the identity of the user in other backends, which we need in some form. - done(undefined, { fullProfile }); - }) as VerifyWithoutRequest); + done(null, { fullProfile: profile }); + }; + this.strategy = new SamlStrategy(options, verifier, verifier); } async start(req: express.Request, res: express.Response): Promise { @@ -169,7 +170,7 @@ export const saml = createAuthProviderIntegration({ callbackUrl: `${globalConfig.baseUrl}/${providerId}/handler/frame`, entryPoint: config.getString('entryPoint'), logoutUrl: config.getOptionalString('logoutUrl'), - audience: config.getOptionalString('audience'), + audience: config.getString('audience'), issuer: config.getString('issuer'), cert: config.getString('cert'), privateKey: config.getOptionalString('privateKey'), @@ -181,7 +182,10 @@ export const saml = createAuthProviderIntegration({ | undefined, digestAlgorithm: config.getOptionalString('digestAlgorithm'), acceptedClockSkewMs: config.getOptionalNumber('acceptedClockSkewMs'), - + wantAuthnResponseSigned: config.getOptionalBoolean( + 'wantAuthnResponseSigned', + ), + wantAssertionsSigned: config.getOptionalBoolean('wantAssertionsSigned'), appUrl: globalConfig.appUrl, authHandler, signInResolver: options?.signIn?.resolver, diff --git a/plugins/auth-backend/src/service/readBackstageTokenExpiration.test.ts b/plugins/auth-backend/src/service/readBackstageTokenExpiration.test.ts new file mode 100644 index 0000000000..e1f863678a --- /dev/null +++ b/plugins/auth-backend/src/service/readBackstageTokenExpiration.test.ts @@ -0,0 +1,77 @@ +/* + * Copyright 2024 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 { ConfigReader } from '@backstage/config'; +import { readBackstageTokenExpiration } from './readBackstageTokenExpiration'; + +describe('Test for default backstage token expiry time', () => { + it('Will return default backstage session expiration', () => { + const config = new ConfigReader({ + app: { + baseUrl: 'http://example.com/extra-path', + }, + }); + expect(readBackstageTokenExpiration(config)).toBe(3600); + }); + + it('Will return user defined 120 minutes as backstage session expiration', () => { + const config = new ConfigReader({ + app: { + baseUrl: 'http://example.com/extra-path', + }, + auth: { + backstageTokenExpiration: { minutes: 120 }, + }, + }); + expect(readBackstageTokenExpiration(config)).toBe(7200); + }); + + it('Will return minimum duration of 10 minutes as backstage session expiration', () => { + const config = new ConfigReader({ + app: { + baseUrl: 'http://example.com/extra-path', + }, + auth: { + backstageTokenExpiration: { minutes: 2 }, + }, + }); + expect(readBackstageTokenExpiration(config)).toBe(600); + }); + + it('Will return user configured value as backstage session expiration', () => { + const config = new ConfigReader({ + app: { + baseUrl: 'http://example.com/extra-path', + }, + auth: { + backstageTokenExpiration: { minutes: 20 }, + }, + }); + expect(readBackstageTokenExpiration(config)).toBe(1200); + }); + + it('Will return maximum of 24 hour as backstage session expiration if user configured value is more than a day', () => { + const config = new ConfigReader({ + app: { + baseUrl: 'http://example.com/extra-path', + }, + auth: { + backstageTokenExpiration: { minutes: 1500 }, + }, + }); + expect(readBackstageTokenExpiration(config)).toBe(86400); + }); +}); diff --git a/plugins/auth-backend/src/service/readBackstageTokenExpiration.ts b/plugins/auth-backend/src/service/readBackstageTokenExpiration.ts new file mode 100644 index 0000000000..c687ecdfc5 --- /dev/null +++ b/plugins/auth-backend/src/service/readBackstageTokenExpiration.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2024 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 { RootConfigService } from '@backstage/backend-plugin-api'; +import { readDurationFromConfig } from '@backstage/config'; +import { durationToMilliseconds } from '@backstage/types'; + +const TOKEN_EXP_DEFAULT_S = 3600; +const TOKEN_EXP_MIN_S = 600; +const TOKEN_EXP_MAX_S = 86400; + +export function readBackstageTokenExpiration(config: RootConfigService) { + const processingIntervalKey = 'auth.backstageTokenExpiration'; + + if (!config.has(processingIntervalKey)) { + return TOKEN_EXP_DEFAULT_S; + } + + const duration = readDurationFromConfig(config, { + key: processingIntervalKey, + }); + + const durationS = Math.round(durationToMilliseconds(duration) / 1000); + + if (durationS < TOKEN_EXP_MIN_S) { + return TOKEN_EXP_MIN_S; + } else if (durationS > TOKEN_EXP_MAX_S) { + return TOKEN_EXP_MAX_S; + } + return durationS; +} diff --git a/plugins/auth-backend/src/service/router.ts b/plugins/auth-backend/src/service/router.ts index 320870b3ee..44861207ed 100644 --- a/plugins/auth-backend/src/service/router.ts +++ b/plugins/auth-backend/src/service/router.ts @@ -29,7 +29,6 @@ import { } from '@backstage/backend-common'; import { assertError, NotFoundError } from '@backstage/errors'; import { CatalogApi, CatalogClient } from '@backstage/catalog-client'; -import { Config } from '@backstage/config'; import { createOidcRouter, TokenFactory, KeyStores } from '../identity'; import session from 'express-session'; import connectSessionKnex from 'connect-session-knex'; @@ -37,10 +36,11 @@ import passport from 'passport'; import { Minimatch } from 'minimatch'; import { CatalogAuthResolverContext } from '../lib/resolvers'; import { AuthDatabase } from '../database/AuthDatabase'; -import { BACKSTAGE_SESSION_EXPIRATION } from '../lib/session'; +import { readBackstageTokenExpiration } from './readBackstageTokenExpiration'; import { TokenIssuer } from '../identity/types'; import { StaticTokenIssuer } from '../identity/StaticTokenIssuer'; import { StaticKeyStore } from '../identity/StaticKeyStore'; +import { Config } from '@backstage/config'; /** @public */ export type ProviderFactories = { [s: string]: AuthProviderFactory }; @@ -76,9 +76,8 @@ export async function createRouter( const appUrl = config.getString('app.baseUrl'); const authUrl = await discovery.getExternalBaseUrl('auth'); - + const backstageTokenExpiration = readBackstageTokenExpiration(config); const authDb = AuthDatabase.create(database); - const sessionExpirationSeconds = BACKSTAGE_SESSION_EXPIRATION; const keyStore = await KeyStores.fromConfig(config, { logger, @@ -91,7 +90,7 @@ export async function createRouter( { logger: logger.child({ component: 'token-factory' }), issuer: authUrl, - sessionExpirationSeconds: sessionExpirationSeconds, + sessionExpirationSeconds: backstageTokenExpiration, }, keyStore as StaticKeyStore, ); @@ -99,7 +98,7 @@ export async function createRouter( tokenIssuer = new TokenFactory({ issuer: authUrl, keyStore, - keyDurationSeconds: sessionExpirationSeconds, + keyDurationSeconds: backstageTokenExpiration, logger: logger.child({ component: 'token-factory' }), algorithm: tokenFactoryAlgorithm ?? diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 97b69b0618..edaf466c36 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-auth-node +## 0.4.4-next.2 + +### Patch Changes + +- d4cc552: The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` + were refactored to use the `jose` library. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.4.4-next.0 ### Patch Changes diff --git a/plugins/auth-node/knip-report.md b/plugins/auth-node/knip-report.md new file mode 100644 index 0000000000..3d3a7684bb --- /dev/null +++ b/plugins/auth-node/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------|:-------------| +| winston | package.json | +| node-fetch | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| uuid | package.json | +| supertest | package.json | +| cookie-parser | package.json | +| @backstage/cli | package.json | +| express-promise-router | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 0af59ecc53..fa778e40c3 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.4.4-next.0", + "version": "0.4.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-node/src/passport/PassportHelpers.ts b/plugins/auth-node/src/passport/PassportHelpers.ts index 6c13523811..d7b554d56a 100644 --- a/plugins/auth-node/src/passport/PassportHelpers.ts +++ b/plugins/auth-node/src/passport/PassportHelpers.ts @@ -15,6 +15,7 @@ */ import { Request } from 'express'; +import { decodeJwt } from 'jose'; import { Strategy } from 'passport'; import { PassportProfile } from './types'; import { ProfileInfo } from '../types'; @@ -27,30 +28,6 @@ interface InternalOAuthError extends Error { }; } -/** @internal */ -function decodeJwtPayload(token: string): Record { - const payloadStr = token.split('.')[1]; - if (!payloadStr) { - throw new Error('Invalid JWT token'); - } - - let payload: unknown; - try { - payload = JSON.parse( - Buffer.from( - payloadStr.replace(/-/g, '+').replace(/_/g, '/'), - 'base64', - ).toString('utf8'), - ); - } catch (e) { - throw new Error('Invalid JWT token'); - } - if (!payload || typeof payload !== 'object' || Array.isArray(payload)) { - throw new Error('Invalid JWT token'); - } - return payload as Record; -} - /** @public */ export class PassportHelpers { private constructor() {} @@ -78,7 +55,11 @@ export class PassportHelpers { if ((!email || !picture || !displayName) && idToken) { try { - const decoded: Record = decodeJwtPayload(idToken); + const decoded = decodeJwt(idToken) as { + email?: string; + name?: string; + picture?: string; + }; if (!email && decoded.email) { email = decoded.email; } diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 736fa6276b..e6b38e5b6d 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/plugin-azure-devops-backend +## 0.5.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.5.2-next.1 + +### Patch Changes + +- 25bda45: Fixed bug with `extractPartsFromAsset` that resulted in a leading `.` being removed from the path in an otherwise valid path (ex. `.assets/image.png`). The leading `.` will now only be moved for paths beginning with `./`. +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.2 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.5.2-next.0 ### Patch Changes diff --git a/plugins/azure-devops-backend/README.md b/plugins/azure-devops-backend/README.md index 0066e43856..f69951f70d 100644 --- a/plugins/azure-devops-backend/README.md +++ b/plugins/azure-devops-backend/README.md @@ -37,7 +37,7 @@ Here's how to get the backend up and running: ```sh # From your Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-azure-devops-backend + yarn --cwd packages/backend add @backstage/plugin-azure-devops-backend ``` 2. Then we will create a new file named `packages/backend/src/plugins/azure-devops.ts`, and add the diff --git a/plugins/azure-devops-backend/knip-report.md b/plugins/azure-devops-backend/knip-report.md new file mode 100644 index 0000000000..e31e20b852 --- /dev/null +++ b/plugins/azure-devops-backend/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 7b210e5759..41b1839ce4 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.5.2-next.0", + "version": "0.5.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-common/knip-report.md b/plugins/azure-devops-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/azure-devops-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index a2c1f6f118..5cae1f7768 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-azure-devops +## 0.3.12-next.2 + +### Patch Changes + +- e2083df: Added alpha support for the New Frontend System (Declarative Integration) +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + +## 0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.2 + ## 0.3.12-next.0 ### Patch Changes diff --git a/plugins/azure-devops/README.md b/plugins/azure-devops/README.md index 7119cb0980..f897588987 100644 --- a/plugins/azure-devops/README.md +++ b/plugins/azure-devops/README.md @@ -146,7 +146,7 @@ To get the Azure Pipelines component working you'll need to do the following two ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-azure-devops + yarn --cwd packages/app add @backstage/plugin-azure-devops ``` 2. Second we need to add the `EntityAzurePipelinesContent` extension to the entity page in your app. How to do this will depend on which annotation you are using in your entities: @@ -204,7 +204,7 @@ To get the Azure Repos component working you'll need to do the following two ste ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-azure-devops + yarn --cwd packages/app add @backstage/plugin-azure-devops ``` 2. Second we need to add the `EntityAzurePullRequestsContent` extension to the entity page in your app: @@ -241,7 +241,7 @@ To get the Git Tags component working you'll need to do the following two steps: ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-azure-devops + yarn --cwd packages/app add @backstage/plugin-azure-devops ``` 2. Second we need to add the `EntityAzureGitTagsContent` extension to the entity page in your app: @@ -277,7 +277,7 @@ To get the README component working you'll need to do the following two steps: ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-azure-devops + yarn --cwd packages/app add @backstage/plugin-azure-devops ``` 2. Second we need to add the `EntityAzureReadmeCard` extension to the entity page in your app: diff --git a/plugins/azure-devops/api-report-alpha.md b/plugins/azure-devops/api-report-alpha.md new file mode 100644 index 0000000000..8040c0235f --- /dev/null +++ b/plugins/azure-devops/api-report-alpha.md @@ -0,0 +1,13 @@ +## API Report File for "@backstage/plugin-azure-devops" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackstagePlugin } from '@backstage/frontend-plugin-api'; + +// @alpha (undocumented) +const _default: BackstagePlugin<{}, {}>; +export default _default; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/azure-devops/knip-report.md b/plugins/azure-devops/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/azure-devops/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index d0b5932b31..79109b2444 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,13 +1,26 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.3.12-next.0", + "version": "0.3.12-next.2", "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" + "access": "public" + }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.ts" + ], + "package.json": [ + "package.json" + ] + } }, "backstage": { "role": "frontend-plugin" @@ -30,14 +43,16 @@ }, "dependencies": { "@backstage/catalog-model": "workspace:^", + "@backstage/core-compat-api": "workspace:^", "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", + "@backstage/frontend-plugin-api": "workspace:^", "@backstage/plugin-azure-devops-common": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "humanize-duration": "^3.27.0", "luxon": "^3.0.0", "react-use": "^17.2.4" diff --git a/plugins/auth-backend/src/lib/session/constants.ts b/plugins/azure-devops/src/alpha.ts similarity index 73% rename from plugins/auth-backend/src/lib/session/constants.ts rename to plugins/azure-devops/src/alpha.ts index 0d14987ab2..e80f131817 100644 --- a/plugins/auth-backend/src/lib/session/constants.ts +++ b/plugins/azure-devops/src/alpha.ts @@ -14,6 +14,5 @@ * limitations under the License. */ -// BACKSTAGE_SESSION_EXPIRATION the default session expiration time -// TODO: find a less hard-coded way to access this, perhaps by reading it from the configuration. -export const BACKSTAGE_SESSION_EXPIRATION = 3600; +export * from './alpha/index'; +export { default } from './alpha/index'; diff --git a/plugins/auth-backend/src/lib/session/index.ts b/plugins/azure-devops/src/alpha/index.ts similarity index 90% rename from plugins/auth-backend/src/lib/session/index.ts rename to plugins/azure-devops/src/alpha/index.ts index 306d483ae0..2f137f09ee 100644 --- a/plugins/auth-backend/src/lib/session/index.ts +++ b/plugins/azure-devops/src/alpha/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { BACKSTAGE_SESSION_EXPIRATION } from './constants'; +export { default } from './plugin'; diff --git a/plugins/azure-devops/src/alpha/plugin.tsx b/plugins/azure-devops/src/alpha/plugin.tsx new file mode 100644 index 0000000000..40305c1714 --- /dev/null +++ b/plugins/azure-devops/src/alpha/plugin.tsx @@ -0,0 +1,111 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { + createApiExtension, + createApiFactory, + createPageExtension, + createPlugin, + discoveryApiRef, + identityApiRef, +} from '@backstage/frontend-plugin-api'; +import { azureDevOpsApiRef, AzureDevOpsClient } from '../api'; +import { + compatWrapper, + convertLegacyRouteRef, +} from '@backstage/core-compat-api'; +import { + createEntityCardExtension, + createEntityContentExtension, +} from '@backstage/plugin-catalog-react/alpha'; +import { azurePullRequestDashboardRouteRef } from '../routes'; + +/** @alpha */ +export const azureDevOpsApi = createApiExtension({ + factory: createApiFactory({ + api: azureDevOpsApiRef, + deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef }, + factory: ({ discoveryApi, identityApi }) => + new AzureDevOpsClient({ discoveryApi, identityApi }), + }), +}); + +/** @alpha */ +export const azureDevOpsPullRequestPage = createPageExtension({ + defaultPath: '/azure-pull-requests', + routeRef: convertLegacyRouteRef(azurePullRequestDashboardRouteRef), + loader: () => + import('../components/PullRequestsPage').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +export const azureDevOpsPipelinesEntityContent = createEntityContentExtension({ + name: 'pipelines', + defaultPath: '/pipelines', + defaultTitle: 'Pipelines', + loader: () => + import('../components/EntityPageAzurePipelines').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +export const azureDevOpsGitTagsEntityContent = createEntityContentExtension({ + name: 'git-tags', + defaultPath: '/git-tags', + defaultTitle: 'Git Tags', + loader: () => + import('../components/EntityPageAzureGitTags').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +export const azureDevOpsPullRequestsEntityContent = + createEntityContentExtension({ + name: 'pull-requests', + defaultPath: '/pull-requests', + defaultTitle: 'Pull Requests', + loader: () => + import('../components/EntityPageAzurePullRequests').then(m => + compatWrapper(), + ), + }); + +/** @alpha */ +export const azureDevOpsReadmeEntityCard = createEntityCardExtension({ + name: 'readme', + loader: async () => + import('../components/ReadmeCard').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +export default createPlugin({ + id: 'azure-devops', + extensions: [ + azureDevOpsApi, + azureDevOpsReadmeEntityCard, + azureDevOpsPipelinesEntityContent, + azureDevOpsGitTagsEntityContent, + azureDevOpsPullRequestsEntityContent, + azureDevOpsPullRequestPage, + ], +}); diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md index 1e9cd2162e..335303ef2f 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,94 @@ # @backstage/plugin-azure-sites-backend +## 0.2.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 4376655: Added `permissionIntegrationRouter` for azure-sites-backend routes +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 0.2.0-next.1 + +### Minor Changes + +- 28610f4: **BREAKING**: `catalogApi` and `permissionsApi` are now a requirement to be passed through to the `createRouter` function. + + You can fix the typescript issues by passing through the required dependencies like the below `diff` shows: + + ```diff + import { + createRouter, + AzureSitesApi, + } from '@backstage/plugin-azure-sites-backend'; + import { Router } from 'express'; + import { PluginEnvironment } from '../types'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + + const catalogClient = new CatalogClient({ + + discoveryApi: env.discovery, + + }); + + return await createRouter({ + logger: env.logger, + azureSitesApi: AzureSitesApi.fromConfig(env.config), + + catalogApi: catalogClient, + + permissionsApi: env.permissions, + }); + } + ``` + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/azure-sites-backend/README.md b/plugins/azure-sites-backend/README.md index 5017be8a8f..892cbe4024 100644 --- a/plugins/azure-sites-backend/README.md +++ b/plugins/azure-sites-backend/README.md @@ -37,7 +37,7 @@ Here's how to get the backend plugin up and running: ```sh # From the Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-azure-sites-backend + yarn --cwd packages/backend add @backstage/plugin-azure-sites-backend ``` 2. Then we will create a new file named `packages/backend/src/plugins/azure-sites.ts`, and add the following to it: diff --git a/plugins/azure-sites-backend/knip-report.md b/plugins/azure-sites-backend/knip-report.md new file mode 100644 index 0000000000..b1d05b28ee --- /dev/null +++ b/plugins/azure-sites-backend/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------------------------|:-------------| +| node-fetch | package.json | +| @backstage/catalog-model | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index 2599bfc360..485a6a30e3 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites-backend", - "version": "0.1.20-next.0", + "version": "0.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites-backend/src/service/router.ts b/plugins/azure-sites-backend/src/service/router.ts index 9ed198cc20..bd5d20c05e 100644 --- a/plugins/azure-sites-backend/src/service/router.ts +++ b/plugins/azure-sites-backend/src/service/router.ts @@ -27,8 +27,10 @@ import { } from '@backstage/plugin-permission-common'; import { azureSitesActionPermission, + azureSitesPermissions, AZURE_WEB_SITE_NAME_ANNOTATION, } from '@backstage/plugin-azure-sites-common'; +import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; import { CatalogApi } from '@backstage/catalog-client'; import { AzureSitesApi } from '../api'; @@ -47,8 +49,13 @@ export async function createRouter( ): Promise { const { logger, azureSitesApi, permissions, catalogApi } = options; + const permissionIntegrationRouter = createPermissionIntegrationRouter({ + permissions: azureSitesPermissions, + }); + const router = Router(); router.use(express.json()); + router.use(permissionIntegrationRouter); router.get('/health', (_, response) => { logger.info('PONG!'); diff --git a/plugins/azure-sites-common/CHANGELOG.md b/plugins/azure-sites-common/CHANGELOG.md index 99dfef3e5b..a2d5876e62 100644 --- a/plugins/azure-sites-common/CHANGELOG.md +++ b/plugins/azure-sites-common/CHANGELOG.md @@ -1,5 +1,41 @@ # @backstage/plugin-azure-sites-common +## 0.1.2-next.0 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + ## 0.1.1 ### Patch Changes diff --git a/plugins/azure-sites-common/knip-report.md b/plugins/azure-sites-common/knip-report.md new file mode 100644 index 0000000000..c61d844657 --- /dev/null +++ b/plugins/azure-sites-common/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------------------|:-------------| +| @backstage/catalog-model | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/azure-sites-common/package.json b/plugins/azure-sites-common/package.json index 0365daa844..909e0e42bc 100644 --- a/plugins/azure-sites-common/package.json +++ b/plugins/azure-sites-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-azure-sites-common", "description": "Common functionalities for the azure plugin", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 66a6d4ecaa..63979beec2 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,63 @@ # @backstage/plugin-azure-sites +## 0.1.19-next.2 + +### Patch Changes + +- 09a9c95: Updated README +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 0.1.19-next.1 + +### Patch Changes + +- 5a409bb: Azure Sites `start` and `stop` action is now protected with the Permissions framework. + + The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. + + ```typescript + // packages/backend/src/plugins/permission.ts + import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; + ... + class TestPermissionPolicy implements PermissionPolicy { + async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { + if (isPermission(request.permission, azureSitesActionPermission)) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner({ + claims: user?.identity.ownershipEntityRefs ?? [], + }), + ); + } + ... + return { + result: AuthorizeResult.ALLOW, + }; + } + ... + } + ``` + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-azure-sites-common@0.1.2-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 0.1.19-next.0 ### Patch Changes diff --git a/plugins/azure-sites/README.md b/plugins/azure-sites/README.md index a19b314b77..80f923a897 100644 --- a/plugins/azure-sites/README.md +++ b/plugins/azure-sites/README.md @@ -1,5 +1,7 @@ # Azure Sites Plugin +Azure Sites (Apps & Functions) plugin support for a given entity. View the current status of the site, quickly jump to site's Overview page, or Log Stream page. + ![preview of Azure table](docs/functions-table.png) _Inspired by [roadie.io AWS Lamda plugin](https://roadie.io/backstage/plugins/aws-lambda/)_ @@ -48,7 +50,7 @@ azure.com/microsoft-web-sites: func-testapp ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-azure-sites +yarn --cwd packages/app add @backstage/plugin-azure-sites ``` 2. Add widget component to your Backstage instance: diff --git a/plugins/azure-sites/knip-report.md b/plugins/azure-sites/knip-report.md new file mode 100644 index 0000000000..c60bbdc1a8 --- /dev/null +++ b/plugins/azure-sites/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:------------------------------------|:-------------| +| @backstage/theme | package.json | +| @backstage/plugin-permission-react | package.json | +| @backstage/plugin-permission-common | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index c9777e73da..095c4c8446 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.19-next.0", + "version": "0.1.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -44,7 +44,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index 61fd11ec9e..8aa962cb71 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-badges-backend +## 0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.3.7-next.0 ### Patch Changes diff --git a/plugins/badges-backend/README.md b/plugins/badges-backend/README.md index 22c3311ff1..1737482080 100644 --- a/plugins/badges-backend/README.md +++ b/plugins/badges-backend/README.md @@ -15,7 +15,7 @@ Install the `@backstage/plugin-badges-backend` package in your backend package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-badges-backend +yarn --cwd packages/backend add @backstage/plugin-badges-backend ``` Add the plugin using the following default setup for diff --git a/plugins/badges-backend/knip-report.md b/plugins/badges-backend/knip-report.md new file mode 100644 index 0000000000..db5d6f9746 --- /dev/null +++ b/plugins/badges-backend/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------|:-------------| +| cors | package.json | +| supertest | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index cf9051198e..077e754f80 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.3.7-next.0", + "version": "0.3.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 4a85075f2f..a9a6bdc0c6 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-badges +## 0.2.54-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.54-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.54-next.0 ### Patch Changes diff --git a/plugins/badges/README.md b/plugins/badges/README.md index 4b8ff38d47..06c0e3e413 100644 --- a/plugins/badges/README.md +++ b/plugins/badges/README.md @@ -80,7 +80,7 @@ Install the `@backstage/plugin-badges` package in your frontend app package: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-badges +yarn --cwd packages/app add @backstage/plugin-badges ``` ### Register plugin diff --git a/plugins/badges/knip-report.md b/plugins/badges/knip-report.md new file mode 100644 index 0000000000..ce8576bebf --- /dev/null +++ b/plugins/badges/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | + diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 3d8e7d101d..0cf1cb06a2 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.54-next.0", + "version": "0.2.54-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 9cf47046c5..895f81791e 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-bazaar-backend +## 0.3.8-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + +## 0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.3.8-next.0 ### Patch Changes diff --git a/plugins/bazaar-backend/README.md b/plugins/bazaar-backend/README.md index 266841b26b..eec1574b7a 100644 --- a/plugins/bazaar-backend/README.md +++ b/plugins/bazaar-backend/README.md @@ -8,7 +8,7 @@ Welcome to the Bazaar backend plugin! ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-bazaar-backend +yarn --cwd packages/backend add @backstage/plugin-bazaar-backend ``` ## Adding the plugin to your `packages/backend` diff --git a/plugins/bazaar-backend/knip-report.md b/plugins/bazaar-backend/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/bazaar-backend/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 1dfa398e26..553e7a6bdf 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.3.8-next.0", + "version": "0.3.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index 0f7122a74d..ffccf59822 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-bazaar +## 0.2.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.22-next.0 ### Patch Changes diff --git a/plugins/bazaar/README.md b/plugins/bazaar/README.md index 941979d4d3..c340baec3e 100644 --- a/plugins/bazaar/README.md +++ b/plugins/bazaar/README.md @@ -22,7 +22,7 @@ First install the plugin into your app: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-bazaar +yarn --cwd packages/app add @backstage/plugin-bazaar ``` Modify your app routes in `packages/app/src/App.tsx` to include the `Bazaar` component exported from the plugin, for example: diff --git a/plugins/bazaar/knip-report.md b/plugins/bazaar/knip-report.md new file mode 100644 index 0000000000..a203b667b3 --- /dev/null +++ b/plugins/bazaar/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/catalog-client | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index dd7629a14f..eb2b717ce9 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.22-next.0", + "version": "0.2.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@material-ui/lab": "4.0.0-alpha.61", "@material-ui/pickers": "^3.3.10", "@testing-library/jest-dom": "^6.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "material-ui-search-bar": "^1.0.0", "react-hook-form": "^7.13.0", diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index f175f210ed..932417b389 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.0-next.0 + ## 0.2.16-next.0 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/knip-report.md b/plugins/bitbucket-cloud-common/knip-report.md new file mode 100644 index 0000000000..63682826ff --- /dev/null +++ b/plugins/bitbucket-cloud-common/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------------|:-------------| +| msw | package.json | +| ts-morph | package.json | +| @backstage/cli | package.json | +| @openapitools/openapi-generator-cli | package.json | + diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index 3c94cb30c3..8c702a9253 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.2.16-next.0", + "version": "0.2.16-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index 68defbcc7f..19e140bea9 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-bitrise +## 0.1.57-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.57-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.57-next.0 ### Patch Changes diff --git a/plugins/bitrise/README.md b/plugins/bitrise/README.md index e5d5c2122c..80c3dadac9 100644 --- a/plugins/bitrise/README.md +++ b/plugins/bitrise/README.md @@ -9,7 +9,7 @@ Welcome to the Bitrise plugin! ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-bitrise +yarn --cwd packages/app add @backstage/plugin-bitrise ``` Bitrise Plugin exposes an entity tab component named `EntityBitriseContent`. You can include it in the diff --git a/plugins/bitrise/knip-report.md b/plugins/bitrise/knip-report.md new file mode 100644 index 0000000000..5ab0e57e57 --- /dev/null +++ b/plugins/bitrise/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| recharts | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @types/recharts | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 7c1677919e..4a765942fa 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.57-next.0", + "version": "0.1.57-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "qs": "^6.9.6", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index afb57360f9..e2975c6f47 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.3.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.3.4-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/knip-report.md b/plugins/catalog-backend-module-aws/knip-report.md new file mode 100644 index 0000000000..cb210f6032 --- /dev/null +++ b/plugins/catalog-backend-module-aws/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @aws-sdk/credential-providers | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:------------------------------|:-------------| +| yaml | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| aws-sdk-client-mock | package.json | +| aws-sdk-client-mock-jest | package.json | +| @aws-sdk/util-stream-node | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 613dea2f2f..011ca1090e 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.3.4-next.0", + "version": "0.3.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index bb760f1136..4c480eabb8 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.29-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.29-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/knip-report.md b/plugins/catalog-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..195f060dc1 --- /dev/null +++ b/plugins/catalog-backend-module-azure/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index c3c9ac8a81..9d9686b6cd 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.29-next.0", + "version": "0.1.29-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md index ee80978b65..3507a16b9d 100644 --- a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-backend-module-backstage-openapi +## 0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.3-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-backstage-openapi/knip-report.md b/plugins/catalog-backend-module-backstage-openapi/knip-report.md new file mode 100644 index 0000000000..1a11be1d96 --- /dev/null +++ b/plugins/catalog-backend-module-backstage-openapi/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------|:-------------| +| yn | package.json | +| lodash | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| @types/express | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index 4f2b1a5b11..19deaa42de 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-backstage-openapi", - "version": "0.1.3-next.0", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-backstage-openapi" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index a9c1aa2945..5b327a6686 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.25-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md b/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..195f060dc1 --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 7dd551e15a..e96cb03dae 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.25-next.0", + "version": "0.1.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index c6eeebe0e6..8caf208ac0 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.23-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.23-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/knip-report.md b/plugins/catalog-backend-module-bitbucket-server/knip-report.md new file mode 100644 index 0000000000..195f060dc1 --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket-server/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index ab8febdc20..97d427ff55 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.23-next.0", + "version": "0.1.23-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md deleted file mode 100644 index 27fb897ae2..0000000000 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ /dev/null @@ -1,1162 +0,0 @@ -# @backstage/plugin-catalog-backend-module-bitbucket - -## 0.2.25-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.0 - - @backstage/plugin-catalog-node@1.6.2-next.0 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - -## 0.2.24 - -### Patch Changes - -- 4016f21: Remove some unused dependencies -- Updated dependencies - - @backstage/backend-common@0.20.1 - - @backstage/plugin-catalog-node@1.6.1 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - -## 0.2.24-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.1-next.2 - - @backstage/plugin-catalog-node@1.6.1-next.2 - -## 0.2.24-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.1-next.1 - - @backstage/integration@1.8.0 - - @backstage/config@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - - @backstage/plugin-catalog-node@1.6.1-next.1 - -## 0.2.24-next.0 - -### Patch Changes - -- 4016f21: Remove some unused dependencies -- Updated dependencies - - @backstage/backend-common@0.20.1-next.0 - - @backstage/plugin-catalog-node@1.6.1-next.0 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - -## 0.2.23 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0 - - @backstage/plugin-catalog-node@1.6.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - - @backstage/integration@1.8.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.23-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0-next.3 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/integration@1.8.0-next.1 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - - @backstage/plugin-catalog-node@1.6.0-next.3 - -## 0.2.23-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.6.0-next.2 - - @backstage/backend-common@0.20.0-next.2 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/integration@1.8.0-next.1 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - -## 0.2.23-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.8.0-next.1 - - @backstage/backend-common@0.20.0-next.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - - @backstage/plugin-catalog-node@1.5.1-next.1 - -## 0.2.23-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.0 - - @backstage/integration@1.8.0-next.0 - - @backstage/plugin-catalog-node@1.5.1-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.5.0 - - @backstage/integration@1.7.2 - - @backstage/backend-common@0.19.9 - - @backstage/plugin-bitbucket-cloud-common@0.2.14 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.9-next.2 - - @backstage/plugin-catalog-node@1.5.0-next.2 - -## 0.2.22-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.5.0-next.1 - - @backstage/integration@1.7.2-next.0 - - @backstage/backend-common@0.19.9-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.14-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.9-next.0 - - @backstage/integration@1.7.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13 - - @backstage/plugin-catalog-node@1.4.8-next.0 - -## 0.2.21 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.8 - - @backstage/integration@1.7.1 - - @backstage/plugin-catalog-node@1.4.7 - - @backstage/catalog-model@1.4.3 - - @backstage/errors@1.2.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.13 - - @backstage/config@1.1.1 - - @backstage/types@1.1.1 - -## 0.2.21-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.8-next.2 - - @backstage/catalog-model@1.4.3-next.0 - - @backstage/integration@1.7.1-next.1 - - @backstage/errors@1.2.3-next.0 - - @backstage/plugin-catalog-node@1.4.7-next.2 - - @backstage/config@1.1.1-next.0 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.1 - -## 0.2.20-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.4.6-next.1 - - @backstage/backend-common@0.19.7-next.1 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/integration@1.7.1-next.0 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.0 - -## 0.2.20-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.7.1-next.0 - - @backstage/backend-common@0.19.7-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.0 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/types@1.1.1 - - @backstage/plugin-catalog-node@1.4.6-next.0 - -## 0.2.18 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.5 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/integration@1.7.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12 - - @backstage/types@1.1.1 - - @backstage/plugin-catalog-node@1.4.4 - -## 0.2.18-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.4.2-next.2 - - @backstage/config@1.1.0-next.2 - - @backstage/errors@1.2.2-next.0 - - @backstage/integration@1.7.0-next.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.3 - - @backstage/types@1.1.1-next.0 - - @backstage/backend-common@0.19.5-next.3 - - @backstage/plugin-catalog-node@1.4.4-next.3 - -## 0.2.18-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/config@1.1.0-next.1 - - @backstage/backend-common@0.19.5-next.2 - - @backstage/plugin-catalog-node@1.4.4-next.2 - - @backstage/integration@1.7.0-next.2 - - @backstage/catalog-model@1.4.2-next.1 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.2 - -## 0.2.18-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/config@1.1.0-next.0 - - @backstage/integration@1.7.0-next.1 - - @backstage/backend-common@0.19.5-next.1 - - @backstage/catalog-model@1.4.2-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.1 - - @backstage/plugin-catalog-node@1.4.4-next.1 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.17-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.4-next.0 - - @backstage/integration@1.7.0-next.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.11-next.0 - - @backstage/plugin-catalog-node@1.4.3-next.0 - -## 0.2.15 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.9 - - @backstage/plugin-catalog-node@1.4.1 - - @backstage/integration@1.6.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.15-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.2 - - @backstage/plugin-catalog-node@1.4.1-next.2 - -## 0.2.15-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0 - - @backstage/plugin-catalog-node@1.4.1-next.1 - - @backstage/integration@1.5.1 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.15-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/integration@1.5.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8 - - @backstage/plugin-catalog-node@1.4.1-next.0 - -## 0.2.14 - -### Patch Changes - -- Updated dependencies - - @backstage/errors@1.2.1 - - @backstage/backend-common@0.19.1 - - @backstage/plugin-catalog-node@1.4.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8 - -## 0.2.14-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/errors@1.2.1-next.0 - - @backstage/backend-common@0.19.1-next.0 - - @backstage/plugin-catalog-node@1.4.0-next.0 - - @backstage/catalog-model@1.4.1-next.0 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1-next.0 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 - -## 0.2.13 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0 - - @backstage/types@1.1.0 - - @backstage/integration@1.5.0 - - @backstage/catalog-model@1.4.0 - - @backstage/errors@1.2.0 - - @backstage/plugin-catalog-node@1.3.7 - - @backstage/config@1.0.8 - - @backstage/plugin-bitbucket-cloud-common@0.2.7 - -## 0.2.13-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0-next.2 - - @backstage/catalog-model@1.4.0-next.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.2.0-next.0 - - @backstage/integration@1.5.0-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.7-next.0 - - @backstage/plugin-catalog-node@1.3.7-next.2 - -## 0.2.13-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0-next.1 - - @backstage/integration@1.5.0-next.0 - - @backstage/errors@1.2.0-next.0 - - @backstage/catalog-model@1.4.0-next.0 - - @backstage/plugin-catalog-node@1.3.7-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.7-next.0 - - @backstage/config@1.0.7 - - @backstage/types@1.0.2 - -## 0.2.13-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.3.7-next.0 - - @backstage/backend-common@0.18.6-next.0 - - @backstage/integration@1.4.5 - - @backstage/config@1.0.7 - - @backstage/catalog-model@1.3.0 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.6 - -## 0.2.12 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5 - - @backstage/integration@1.4.5 - - @backstage/plugin-catalog-node@1.3.6 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.6 - -## 0.2.12-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.1 - - @backstage/plugin-catalog-node@1.3.6-next.1 - - @backstage/config@1.0.7 - -## 0.2.12-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.0 - - @backstage/integration@1.4.5-next.0 - - @backstage/plugin-catalog-node@1.3.6-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.6-next.0 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - -## 0.2.11 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4 - - @backstage/catalog-model@1.3.0 - - @backstage/integration@1.4.4 - - @backstage/plugin-catalog-node@1.3.5 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5 - -## 0.2.11-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.3.0-next.0 - - @backstage/backend-common@0.18.4-next.2 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/integration@1.4.4-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.3 - -## 0.2.11-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4-next.2 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/integration@1.4.4-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.2 - -## 0.2.11-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.4.4-next.0 - - @backstage/backend-common@0.18.4-next.1 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.1 - -## 0.2.11-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4-next.0 - - @backstage/config@1.0.7 - - @backstage/integration@1.4.3 - - @backstage/catalog-model@1.2.1 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.4 - - @backstage/plugin-catalog-node@1.3.5-next.0 - -## 0.2.10 - -### Patch Changes - -- e675f902980: Make sure to not use deprecated exports from `@backstage/plugin-catalog-backend` -- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. -- Updated dependencies - - @backstage/backend-common@0.18.3 - - @backstage/errors@1.1.5 - - @backstage/plugin-catalog-node@1.3.4 - - @backstage/catalog-model@1.2.1 - - @backstage/integration@1.4.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.4 - - @backstage/config@1.0.7 - - @backstage/types@1.0.2 - -## 0.2.10-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.3-next.2 - - @backstage/plugin-catalog-backend@1.8.0-next.2 - - @backstage/config@1.0.7-next.0 - - @backstage/integration@1.4.3-next.0 - -## 0.2.10-next.1 - -### Patch Changes - -- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. -- Updated dependencies - - @backstage/errors@1.1.5-next.0 - - @backstage/backend-common@0.18.3-next.1 - - @backstage/integration@1.4.3-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0 - - @backstage/plugin-catalog-backend@1.8.0-next.1 - - @backstage/config@1.0.7-next.0 - - @backstage/catalog-model@1.2.1-next.1 - - @backstage/types@1.0.2 - -## 0.2.10-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.8.0-next.0 - - @backstage/backend-common@0.18.3-next.0 - - @backstage/catalog-model@1.2.1-next.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9 - -### Patch Changes - -- 85b04f659a: Internal refactor to not use deprecated `substr` -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2 - - @backstage/backend-common@0.18.2 - - @backstage/catalog-model@1.2.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.2-next.2 - - @backstage/plugin-catalog-backend@1.7.2-next.2 - - @backstage/catalog-model@1.2.0-next.1 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.1 - -### Patch Changes - -- 85b04f659a: Internal refactor to not use deprecated `substr` -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2-next.1 - - @backstage/backend-common@0.18.2-next.1 - - @backstage/catalog-model@1.1.6-next.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.6-next.0 - - @backstage/backend-common@0.18.2-next.0 - - @backstage/plugin-catalog-backend@1.7.2-next.0 - -## 0.2.7 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0 - - @backstage/catalog-model@1.1.5 - - @backstage/plugin-catalog-backend@1.7.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - -## 0.2.7-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0-next.1 - - @backstage/plugin-catalog-backend@1.7.0-next.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3-next.1 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/config@1.0.6-next.0 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2-next.0 - - @backstage/types@1.0.2 - -## 0.2.7-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0-next.0 - - @backstage/config@1.0.6-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.1 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3-next.0 - -## 0.2.7-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.5-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.0 - - @backstage/backend-common@0.17.0 - - @backstage/config@1.0.5 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.1 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.2 - -## 0.2.6 - -### Patch Changes - -- 3280711113: Updated dependency `msw` to `^0.49.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0 - - @backstage/backend-common@0.17.0 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2 - - @backstage/types@1.0.2 - - @backstage/catalog-model@1.1.4 - - @backstage/config@1.0.5 - -## 0.2.6-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.3 - - @backstage/backend-common@0.17.0-next.3 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.2 - - @backstage/backend-common@0.17.0-next.2 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.17.0-next.1 - - @backstage/plugin-catalog-backend@1.6.0-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.0 - -### Patch Changes - -- 3280711113: Updated dependency `msw` to `^0.49.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.0 - - @backstage/backend-common@0.16.1-next.0 - - @backstage/integration@1.4.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.0 - - @backstage/types@1.0.2-next.0 - - @backstage/catalog-model@1.1.4-next.0 - - @backstage/config@1.0.5-next.0 - - @backstage/errors@1.1.4-next.0 - -## 0.2.5 - -### Patch Changes - -- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. -- Updated dependencies - - @backstage/backend-common@0.16.0 - - @backstage/plugin-catalog-backend@1.5.1 - - @backstage/integration@1.4.0 - - @backstage/catalog-model@1.1.3 - - @backstage/types@1.0.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.1 - - @backstage/config@1.0.4 - - @backstage/errors@1.1.3 - -## 0.2.5-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0-next.1 - - @backstage/plugin-catalog-backend@1.5.1-next.1 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/errors@1.1.3-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/types@1.0.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 - -## 0.2.5-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0-next.0 - - @backstage/plugin-catalog-backend@1.5.1-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/types@1.0.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/errors@1.1.3-next.0 - -## 0.2.4 - -### Patch Changes - -- 23f9199a0f: Deprecate `@backstage/plugin-catalog-backend-module-bitbucket`. - - Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` - or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - -- Updated dependencies - - @backstage/catalog-model@1.1.2 - - @backstage/backend-common@0.15.2 - - @backstage/plugin-catalog-backend@1.5.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0 - - @backstage/config@1.0.3 - - @backstage/errors@1.1.2 - - @backstage/integration@1.3.2 - - @backstage/types@1.0.0 - -## 0.2.4-next.2 - -### Patch Changes - -- 23f9199a0f: Deprecate `@backstage/plugin-catalog-backend-module-bitbucket`. - - Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` - or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.5.0-next.2 - - @backstage/backend-common@0.15.2-next.2 - - @backstage/catalog-model@1.1.2-next.2 - - @backstage/config@1.0.3-next.2 - - @backstage/errors@1.1.2-next.2 - - @backstage/integration@1.3.2-next.2 - - @backstage/types@1.0.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.2 - -## 0.2.4-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.2-next.1 - - @backstage/catalog-model@1.1.2-next.1 - - @backstage/config@1.0.3-next.1 - - @backstage/errors@1.1.2-next.1 - - @backstage/integration@1.3.2-next.1 - - @backstage/types@1.0.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.1 - - @backstage/plugin-catalog-backend@1.4.1-next.1 - -## 0.2.4-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.2-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.0 - - @backstage/plugin-catalog-backend@1.4.1-next.0 - - @backstage/backend-common@0.15.2-next.0 - - @backstage/config@1.0.3-next.0 - - @backstage/errors@1.1.2-next.0 - - @backstage/integration@1.3.2-next.0 - - @backstage/types@1.0.0 - -## 0.2.3 - -### Patch Changes - -- 667d917488: Updated dependency `msw` to `^0.47.0`. -- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. -- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1 - - @backstage/integration@1.3.1 - - @backstage/plugin-catalog-backend@1.4.0 - - @backstage/catalog-model@1.1.1 - - @backstage/config@1.0.2 - - @backstage/errors@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.3 - -## 0.2.3-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.1-next.0 - - @backstage/config@1.0.2-next.0 - - @backstage/errors@1.1.1-next.0 - - @backstage/integration@1.3.1-next.2 - - @backstage/plugin-catalog-backend@1.4.0-next.3 - - @backstage/backend-common@0.15.1-next.3 - -## 0.2.3-next.2 - -### Patch Changes - -- 667d917488: Updated dependency `msw` to `^0.47.0`. -- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1-next.2 - - @backstage/integration@1.3.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.2 - - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.1 - -## 0.2.3-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.1 - -## 0.2.3-next.0 - -### Patch Changes - -- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1-next.0 - - @backstage/plugin-catalog-backend@1.3.2-next.0 - - @backstage/integration@1.3.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 - -## 0.2.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.0 - - @backstage/integration@1.3.0 - - @backstage/plugin-catalog-backend@1.3.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.2 - -## 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 - -- a70869e775: Updated dependency `msw` to `^0.43.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.3.0-next.3 - - @backstage/backend-common@0.14.1-next.3 - - @backstage/integration@1.2.2-next.3 - - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.1 - - @backstage/catalog-model@1.1.0-next.3 - -## 0.2.1-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.0-next.1 - - @backstage/backend-common@0.14.1-next.1 - - @backstage/errors@1.1.0-next.0 - - @backstage/plugin-catalog-backend@1.2.1-next.1 - - @backstage/integration@1.2.2-next.1 - -## 0.2.1-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.14.1-next.0 - - @backstage/catalog-model@1.1.0-next.0 - - @backstage/integration@1.2.2-next.0 - - @backstage/plugin-catalog-backend@1.2.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.0 - -## 0.2.0 - -### Minor Changes - -- 1c01c0fd14: Integrate `@backstage/plugin-bitbucket-cloud-common` as replacement for the `BitbucketCloudClient`. - -### Patch Changes - -- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.2.0 - - @backstage/backend-common@0.14.0 - - @backstage/integration@1.2.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.0 - - @backstage/catalog-model@1.0.3 - -## 0.2.0-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.14.0-next.2 - - @backstage/integration@1.2.1-next.2 - - @backstage/plugin-catalog-backend@1.2.0-next.2 - -## 0.2.0-next.1 - -### Minor Changes - -- 1c01c0fd14: Integrate `@backstage/plugin-bitbucket-cloud-common` as replacement for the `BitbucketCloudClient`. - -### Patch Changes - -- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. -- Updated dependencies - - @backstage/backend-common@0.13.6-next.1 - - @backstage/integration@1.2.1-next.1 - - @backstage/plugin-catalog-backend@1.2.0-next.1 - - @backstage/catalog-model@1.0.3-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.0-next.0 - -## 0.1.4-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.6-next.0 - - @backstage/integration@1.2.1-next.0 - - @backstage/plugin-catalog-backend@1.2.0-next.0 - -## 0.1.3 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3 - - @backstage/plugin-catalog-backend@1.1.2 - - @backstage/integration@1.2.0 - - @backstage/config@1.0.1 - - @backstage/catalog-model@1.0.2 - -## 0.1.3-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.2 - - @backstage/plugin-catalog-backend@1.1.2-next.2 - - @backstage/config@1.0.1-next.0 - - @backstage/catalog-model@1.0.2-next.0 - - @backstage/integration@1.2.0-next.1 - -## 0.1.3-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.0 - - @backstage/integration@1.2.0-next.0 - - @backstage/plugin-catalog-backend@1.1.2-next.0 - -## 0.1.2 - -### Patch Changes - -- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values. -- 9fed130139: split BitbucketClient into BitbucketCloudClient, BitbucketServerClient -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0 - - @backstage/integration@1.1.0 - - @backstage/catalog-model@1.0.1 - - @backstage/backend-common@0.13.2 - -## 0.1.2-next.2 - -### Patch Changes - -- 9fed130139: split BitbucketClient into BitbucketCloudClient, BitbucketServerClient -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0-next.2 - - @backstage/catalog-model@1.0.1-next.1 - -## 0.1.2-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0-next.1 - - @backstage/integration@1.1.0-next.1 - - @backstage/backend-common@0.13.2-next.1 - -## 0.1.2-next.0 - -### Patch Changes - -- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values. -- Updated dependencies - - @backstage/catalog-model@1.0.1-next.0 - - @backstage/plugin-catalog-backend@1.0.1-next.0 - - @backstage/backend-common@0.13.2-next.0 - - @backstage/integration@1.0.1-next.0 - -## 0.1.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.0.0 - - @backstage/backend-common@0.13.1 - - @backstage/catalog-model@1.0.0 - - @backstage/integration@1.0.0 - - @backstage/config@1.0.0 - - @backstage/errors@1.0.0 - - @backstage/types@1.0.0 - -## 0.1.0 - -### Minor Changes - -- 47a5ae5dd2: Added package, moving out Bitbucket specific functionality from the catalog-backend - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.0 - - @backstage/plugin-catalog-backend@0.24.0 - - @backstage/catalog-model@0.13.0 diff --git a/plugins/catalog-backend-module-bitbucket/README.md b/plugins/catalog-backend-module-bitbucket/README.md deleted file mode 100644 index ae22c7a427..0000000000 --- a/plugins/catalog-backend-module-bitbucket/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Catalog Backend Module for Bitbucket - -This is an extension module to the plugin-catalog-backend plugin, providing extensions targeted at Bitbucket offerings. - -## Getting started - -See [Backstage documentation](https://backstage.io/docs/integrations/bitbucket/discovery) for details on how to install -and configure the plugin. diff --git a/plugins/catalog-backend-module-bitbucket/api-report.md b/plugins/catalog-backend-module-bitbucket/api-report.md deleted file mode 100644 index 30b2a89826..0000000000 --- a/plugins/catalog-backend-module-bitbucket/api-report.md +++ /dev/null @@ -1,47 +0,0 @@ -## API Report File for "@backstage/plugin-catalog-backend-module-bitbucket" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { BitbucketIntegration } from '@backstage/integration'; -import { CatalogProcessor } from '@backstage/plugin-catalog-node'; -import { CatalogProcessorEmit } from '@backstage/plugin-catalog-node'; -import { CatalogProcessorResult } from '@backstage/plugin-catalog-node'; -import { Config } from '@backstage/config'; -import { LocationSpec } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; -import { ScmIntegrationRegistry } from '@backstage/integration'; - -// @public @deprecated (undocumented) -export class BitbucketDiscoveryProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrationRegistry; - parser?: BitbucketRepositoryParser; - logger: Logger; - }); - // (undocumented) - static fromConfig( - config: Config, - options: { - parser?: BitbucketRepositoryParser; - logger: Logger; - }, - ): BitbucketDiscoveryProcessor; - // (undocumented) - getProcessorName(): string; - // (undocumented) - readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ): Promise; -} - -// @public @deprecated -export type BitbucketRepositoryParser = (options: { - integration: BitbucketIntegration; - target: string; - presence?: 'optional' | 'required'; - logger: Logger; -}) => AsyncIterable; -``` diff --git a/plugins/catalog-backend-module-bitbucket/catalog-info.yaml b/plugins/catalog-backend-module-bitbucket/catalog-info.yaml deleted file mode 100644 index a384181766..0000000000 --- a/plugins/catalog-backend-module-bitbucket/catalog-info.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage-plugin-catalog-backend-module-bitbucket - title: '@backstage/plugin-catalog-backend-module-bitbucket' - description: A Backstage catalog backend module that helps integrate towards Bitbucket -spec: - lifecycle: experimental - type: backstage-backend-plugin-module - owner: catalog-maintainers diff --git a/plugins/catalog-backend-module-bitbucket/knip-report.md b/plugins/catalog-backend-module-bitbucket/knip-report.md new file mode 100644 index 0000000000..7f1069ffcc --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts deleted file mode 100644 index 262fb4e6c4..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts +++ /dev/null @@ -1,1176 +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 { getVoidLogger } from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; -import { ConfigReader } from '@backstage/config'; -import { Models } from '@backstage/plugin-bitbucket-cloud-common'; -import { LocationSpec, processingResult } from '@backstage/plugin-catalog-node'; -import { RequestHandler, rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; -import { PagedResponse } from './lib'; - -const server = setupServer(); - -function setupStubs( - projects: any[], - bitbucketBaseUrl = `https://bitbucket.mycompany.com`, -) { - function pagedResponse(values: any): PagedResponse { - return { - values: values, - isLastPage: true, - } as PagedResponse; - } - - function stubbedProject( - project: string, - repos: string[], - ): RequestHandler { - return rest.get( - `${bitbucketBaseUrl}/api/rest/1.0/projects/${project}/repos`, - (_, res, ctx) => { - const response = []; - for (const repo of repos) { - response.push({ - slug: repo, - links: { - self: [ - { - href: `${bitbucketBaseUrl}/projects/${project}/repos/${repo}/browse`, - }, - ], - }, - }); - } - return res(ctx.json(pagedResponse(response))); - }, - ); - } - - server.use( - rest.get(`${bitbucketBaseUrl}/api/rest/1.0/projects`, (_, res, ctx) => { - return res( - ctx.json( - pagedResponse( - projects.map(p => { - return { key: p.key }; - }), - ), - ), - ); - }), - ); - - for (const project of projects) { - server.use(stubbedProject(project.key, project.repos)); - } -} - -function setupBitbucketCloudStubs( - workspace: string, - repositories: Pick[], -) { - const stubCallerFn = jest.fn(); - function pagedResponse(values: any): Models.PaginatedRepositories { - return { - values: values, - page: 1, - } as Models.PaginatedRepositories; - } - - server.use( - rest.get( - `https://api.bitbucket.org/2.0/repositories/${workspace}`, - (req, res, ctx) => { - stubCallerFn(req); - return res( - ctx.json( - pagedResponse( - repositories.map(r => ({ - ...r, - links: { - html: { - href: `https://bitbucket.org/${workspace}/${r.slug}`, - }, - }, - })), - ), - ), - ); - }, - ), - ); - return stubCallerFn; -} - -function setupBitbucketCloudSearchStubs( - workspace: string, - repositories: Pick[], - catalogPath: string, -) { - const stubCallerFn = jest.fn(); - function pagedResponse(values: any): Models.PaginatedRepositories { - return { - values: values, - page: 1, - } as Models.PaginatedRepositories; - } - - server.use( - rest.get( - `https://api.bitbucket.org/2.0/workspaces/${workspace}/search/code`, - (req, res, ctx) => { - stubCallerFn(req); - return res( - ctx.json( - pagedResponse( - repositories.map(r => ({ - type: 'code_search_result', - content_match_count: 0, - content_matches: [], - path_matches: [ - catalogPath - .split('/') - .flatMap(seg => [{ text: '/' }, { text: seg, match: true }]) - .slice(1), - ], - file: { - commit: { - repository: { - ...r, - links: { - html: { - href: `https://bitbucket.org/${workspace}/${r.slug}`, - }, - }, - }, - }, - path: catalogPath, - }, - })), - ), - ), - ); - }, - ), - ); - return stubCallerFn; -} - -describe('BitbucketDiscoveryProcessor', () => { - setupRequestMockHandlers(server); - - afterEach(() => jest.resetAllMocks()); - - describe('reject unrelated entries', () => { - it('rejects unknown types', async () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [{ host: 'bitbucket.mycompany.com', token: 'blob' }], - }, - }), - { logger: getVoidLogger() }, - ); - const location: LocationSpec = { - type: 'not-bitbucket-discovery', - target: 'https://bitbucket.mycompany.com', - }; - await expect( - processor.readLocation(location, false, () => {}), - ).resolves.toBeFalsy(); - }); - - it('rejects unknown targets', async () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { host: 'bitbucket.org', token: 'blob' }, - { host: 'bitbucket.mycompany.com', token: 'blob' }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://not.bitbucket.mycompany.com/foobar', - }; - await expect( - processor.readLocation(location, false, () => {}), - ).rejects.toThrow( - /There is no Bitbucket integration that matches https:\/\/not.bitbucket.mycompany.com\/foobar/, - ); - }); - }); - - describe('handles organisation repositories', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: 'https://bitbucket.mycompany.com/api/rest/1.0', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories', async () => { - setupStubs([ - { key: 'backstage', repos: ['backstage'] }, - { key: 'demo', repos: ['demo'] }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/*/repos/*/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/backstage/browse/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupStubs([ - { key: 'backstage', repos: ['backstage', 'techdocs-cli'] }, - { key: 'demo', repos: ['demo'] }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-*/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories by target search ref', async () => { - setupStubs([{ key: 'demo', repos: ['demo'] }]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/catalog.yaml?ref=branch-name', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupStubs([{ key: 'backstage', repos: ['test', 'abctest', 'testxyz'] }]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.mycompany.com/projects/backstage/repos/*'} - ${'https://bitbucket.mycompany.com/projects/backstage/repos/*/'} - ${'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupStubs([{ key: 'backstage', repos: ['techdocs-cli'] }]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - }); - - describe('handles organisation repositories with a custom baseURL', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: - 'https://bitbucket.mycompany.com/custom-path/api/rest/1.0', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories', async () => { - setupStubs( - [ - { key: 'backstage', repos: ['backstage'] }, - { key: 'demo', repos: ['demo'] }, - ], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/*/repos/*/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/backstage/browse/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupStubs( - [ - { key: 'backstage', repos: ['backstage', 'techdocs-cli'] }, - { key: 'demo', repos: ['demo'] }, - ], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-*/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories by target search ref', async () => { - setupStubs( - [{ key: 'demo', repos: ['demo'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/catalog.yaml?ref=branch-name', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupStubs( - [{ key: 'backstage', repos: ['test', 'abctest', 'testxyz'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/test/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/*'} - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/*/'} - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupStubs( - [{ key: 'backstage', repos: ['techdocs-cli'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - }); - - describe('handles cloud repositories', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.org', - username: 'myuser', - appPassword: 'blob', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories by default', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://bitbucket.org/workspaces/myworkspace', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - - it('uses provided catalog path', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?catalogPath=my/nested/path/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/my/nested/path/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/my/nested/path/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output all repositories', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/*/repos/*?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-two', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-three', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-three?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-three/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('submits query', async () => { - const mockCall = setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?q=project.key ~ "prj-one"', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - expect(mockCall).toHaveBeenCalledTimes(1); - // it should be possible to do this via an `expect.objectContaining` check but seems to fail with some encoding issue. - expect(mockCall.mock.calls[0][0].url).toMatchInlineSnapshot( - `"https://api.bitbucket.org/2.0/repositories/myworkspace?page=1&pagelen=100&q=project.key+%7E+%22prj-one%22"`, - ); - }); - - it.each` - target - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*/'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/test'} - `("target '$target' is rejected", async ({ target }) => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await expect( - processor.readLocation(location, false, emitter), - ).rejects.toThrow(/Failed to parse /); - }); - }); - - describe('handles cloud repositories using code search', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.org', - username: 'myuser', - appPassword: 'blob', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories by default', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog-info.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://bitbucket.org/workspaces/myworkspace?search=true', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - }); - - it('uses provided catalog path', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'my/nested/path/catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?search=true&catalogPath=my/nested/path/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/my/nested/path/catalog.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/my/nested/path/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('output all repositories', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/*/repos/*?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-two', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-three', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-three?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-three/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?search=true'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*/?search=true'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-*/?search=true'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ], - 'catalog-info.yaml', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/test?search=true'} - `("target '$target' is rejected", async ({ target }) => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ], - 'catalog-info.yaml', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await expect( - processor.readLocation(location, false, emitter), - ).rejects.toThrow(/Failed to parse /); - }); - }); - - describe('Custom repository parser', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: 'https://bitbucket.mycompany.com/api/rest/1.0', - }, - ], - }, - }), - { - parser: async function* customRepositoryParser({}) { - yield processingResult.location({ - type: 'custom-location-type', - target: 'custom-target', - presence: 'optional', - }); - }, - logger: getVoidLogger(), - }, - ); - - it('use custom repository parser', async () => { - setupStubs([{ key: 'backstage', repos: ['test'] }]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'custom-location-type', - target: 'custom-target', - presence: 'optional', - }, - }); - }); - }); -}); diff --git a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts deleted file mode 100644 index 3f25d6ed7b..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts +++ /dev/null @@ -1,415 +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 { Config } from '@backstage/config'; -import { - BitbucketIntegration, - ScmIntegrationRegistry, - ScmIntegrations, -} from '@backstage/integration'; -import { - BitbucketCloudClient, - Models, -} from '@backstage/plugin-bitbucket-cloud-common'; -import { - CatalogProcessor, - CatalogProcessorEmit, - LocationSpec, -} from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; -import { - BitbucketRepository, - BitbucketRepositoryParser, - BitbucketServerClient, - defaultRepositoryParser, - paginated, -} from './lib'; - -const DEFAULT_BRANCH = 'master'; -const DEFAULT_CATALOG_LOCATION = '/catalog-info.yaml'; - -/** - * @public - * @deprecated Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - */ -export class BitbucketDiscoveryProcessor implements CatalogProcessor { - private readonly integrations: ScmIntegrationRegistry; - private readonly parser: BitbucketRepositoryParser; - private readonly logger: Logger; - - static fromConfig( - config: Config, - options: { - parser?: BitbucketRepositoryParser; - logger: Logger; - }, - ) { - const integrations = ScmIntegrations.fromConfig(config); - - return new BitbucketDiscoveryProcessor({ - ...options, - integrations, - }); - } - - constructor(options: { - integrations: ScmIntegrationRegistry; - parser?: BitbucketRepositoryParser; - logger: Logger; - }) { - this.integrations = options.integrations; - this.parser = options.parser || defaultRepositoryParser; - this.logger = options.logger; - this.logger.warn( - 'Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead.', - ); - } - - getProcessorName(): string { - return 'BitbucketDiscoveryProcessor'; - } - - async readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ): Promise { - if (location.type !== 'bitbucket-discovery') { - return false; - } - - const integration = this.integrations.bitbucket.byUrl(location.target); - if (!integration) { - throw new Error( - `There is no Bitbucket integration that matches ${location.target}. Please add a configuration entry for it under integrations.bitbucket`, - ); - } - - const startTimestamp = Date.now(); - this.logger.info( - `Reading ${integration.config.host} repositories from ${location.target}`, - ); - - const processOptions: ProcessOptions = { - emit, - integration, - location, - }; - - const isBitbucketCloud = integration.config.host === 'bitbucket.org'; - const { scanned, matches } = isBitbucketCloud - ? await this.processCloudRepositories(processOptions) - : await this.processOrganizationRepositories(processOptions); - - const duration = ((Date.now() - startTimestamp) / 1000).toFixed(1); - this.logger.debug( - `Read ${scanned} ${integration.config.host} repositories (${matches} matching the pattern) in ${duration} seconds`, - ); - - return true; - } - - private async processCloudRepositories( - options: ProcessOptions, - ): Promise { - const { location, integration, emit } = options; - const client = BitbucketCloudClient.fromConfig(integration.config); - - const { searchEnabled } = parseBitbucketCloudUrl(location.target); - - const result = searchEnabled - ? await searchBitbucketCloudLocations(client, location.target) - : await readBitbucketCloudLocations(client, location.target); - - for (const locationTarget of result.matches) { - for await (const entity of this.parser({ - integration, - target: locationTarget, - presence: searchEnabled ? 'required' : 'optional', - logger: this.logger, - })) { - emit(entity); - } - } - return { - matches: result.matches.length, - scanned: result.scanned, - }; - } - - private async processOrganizationRepositories( - options: ProcessOptions, - ): Promise { - const { location, integration, emit } = options; - const { catalogPath: requestedCatalogPath } = parseUrl(location.target); - const catalogPath = requestedCatalogPath - ? `/${requestedCatalogPath}` - : DEFAULT_CATALOG_LOCATION; - - const client = new BitbucketServerClient({ - config: integration.config, - }); - - const result = await readBitbucketOrg(client, location.target); - for (const repository of result.matches) { - for await (const entity of this.parser({ - integration, - target: `${repository.links.self[0].href}${catalogPath}`, - logger: this.logger, - })) { - emit(entity); - } - } - return { - matches: result.matches.length, - scanned: result.scanned, - }; - } -} - -export async function readBitbucketOrg( - client: BitbucketServerClient, - target: string, -): Promise> { - const { projectSearchPath, repoSearchPath } = parseUrl(target); - const projects = paginated(options => client.listProjects(options)); - const result: Result = { - scanned: 0, - matches: [], - }; - - for await (const project of projects) { - if (!projectSearchPath.test(project.key)) { - continue; - } - const repositories = paginated(options => - client.listRepositories(project.key, options), - ); - for await (const repository of repositories) { - result.scanned++; - if (repoSearchPath.test(repository.slug)) { - result.matches.push(repository); - } - } - } - return result; -} - -export async function searchBitbucketCloudLocations( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { - workspacePath, - catalogPath: requestedCatalogPath, - projectSearchPath, - repoSearchPath, - } = parseBitbucketCloudUrl(target); - - const result: Result = { - scanned: 0, - matches: [], - }; - - const catalogPath = requestedCatalogPath - ? requestedCatalogPath - : DEFAULT_CATALOG_LOCATION; - const catalogFilename = catalogPath.substring( - catalogPath.lastIndexOf('/') + 1, - ); - - // load all fields relevant for creating refs later, but not more - const fields = [ - // exclude code/content match details - '-values.content_matches', - // include/add relevant repository details - '+values.file.commit.repository.mainbranch.name', - '+values.file.commit.repository.project.key', - '+values.file.commit.repository.slug', - // remove irrelevant links - '-values.*.links', - '-values.*.*.links', - '-values.*.*.*.links', - // ...except the one we need - '+values.file.commit.repository.links.html.href', - ].join(','); - const query = `"${catalogFilename}" path:${catalogPath}`; - const searchResults = client - .searchCode(workspacePath, query, { fields }) - .iterateResults(); - - for await (const searchResult of searchResults) { - // not a file match, but a code match - if (searchResult.path_matches!.length === 0) { - continue; - } - - const repository = searchResult.file!.commit!.repository!; - if (!matchesPostFilters(repository, projectSearchPath, repoSearchPath)) { - continue; - } - - const repoUrl = repository.links!.html!.href; - const branch = repository.mainbranch?.name ?? DEFAULT_BRANCH; - const filePath = searchResult.file!.path; - const location = `${repoUrl}/src/${branch}/${filePath}`; - - result.matches.push(location); - } - - return result; -} - -export async function readBitbucketCloudLocations( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { catalogPath: requestedCatalogPath } = parseBitbucketCloudUrl(target); - const catalogPath = requestedCatalogPath - ? `/${requestedCatalogPath}` - : DEFAULT_CATALOG_LOCATION; - - return readBitbucketCloud(client, target).then(result => { - const matches = result.matches.map(repository => { - const branch = repository.mainbranch?.name ?? DEFAULT_BRANCH; - return `${repository.links!.html!.href}/src/${branch}${catalogPath}`; - }); - - return { - scanned: result.scanned, - matches, - }; - }); -} - -export async function readBitbucketCloud( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { - workspacePath, - queryParam: q, - projectSearchPath, - repoSearchPath, - } = parseBitbucketCloudUrl(target); - - const repositories = client - .listRepositoriesByWorkspace(workspacePath, { q }) - .iterateResults(); - const result: Result = { - scanned: 0, - matches: [], - }; - - for await (const repository of repositories) { - result.scanned++; - if (matchesPostFilters(repository, projectSearchPath, repoSearchPath)) { - result.matches.push(repository); - } - } - return result; -} - -function matchesPostFilters( - repository: Models.Repository, - projectSearchPath: RegExp | undefined, - repoSearchPath: RegExp | undefined, -): boolean { - return ( - (!projectSearchPath || projectSearchPath.test(repository.project!.key!)) && - (!repoSearchPath || repoSearchPath.test(repository.slug!)) - ); -} - -function parseUrl(urlString: string): { - projectSearchPath: RegExp; - repoSearchPath: RegExp; - catalogPath: string; -} { - const url = new URL(urlString); - const indexOfProjectSegment = - url.pathname.toLowerCase().indexOf('/projects/') + 1; - const path = url.pathname.slice(indexOfProjectSegment).split('/'); - - // /projects/backstage/repos/techdocs-*/catalog-info.yaml - if (path.length > 3 && path[1].length && path[3].length) { - return { - projectSearchPath: escapeRegExp(decodeURIComponent(path[1])), - repoSearchPath: escapeRegExp(decodeURIComponent(path[3])), - catalogPath: decodeURIComponent(path.slice(4).join('/') + url.search), - }; - } - - throw new Error(`Failed to parse ${urlString}`); -} - -function readPathParameters(pathParts: string[]): Map { - const vals: Record = {}; - for (let i = 0; i + 1 < pathParts.length; i += 2) { - vals[pathParts[i]] = decodeURIComponent(pathParts[i + 1]); - } - return new Map(Object.entries(vals)); -} - -function parseBitbucketCloudUrl(urlString: string): { - workspacePath: string; - catalogPath?: string; - projectSearchPath?: RegExp; - repoSearchPath?: RegExp; - queryParam?: string; - searchEnabled: boolean; -} { - const url = new URL(urlString); - const pathMap = readPathParameters(url.pathname.slice(1).split('/')); - const query = url.searchParams; - - if (!pathMap.has('workspaces')) { - throw new Error(`Failed to parse workspace from ${urlString}`); - } - - return { - workspacePath: pathMap.get('workspaces')!, - projectSearchPath: pathMap.has('projects') - ? escapeRegExp(pathMap.get('projects')!) - : undefined, - repoSearchPath: pathMap.has('repos') - ? escapeRegExp(pathMap.get('repos')!) - : undefined, - catalogPath: query.get('catalogPath') || undefined, - queryParam: query.get('q') || undefined, - searchEnabled: query.get('search')?.toLowerCase() === 'true', - }; -} - -function escapeRegExp(str: string): RegExp { - return new RegExp(`^${str.replace(/\*/g, '.*')}$`); -} - -type ProcessOptions = { - integration: BitbucketIntegration; - location: LocationSpec; - emit: CatalogProcessorEmit; -}; - -type Result = { - scanned: number; - matches: T[]; -}; - -type ResultSummary = { - scanned: number; - matches: number; -}; diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts deleted file mode 100644 index 478ccd7c52..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts +++ /dev/null @@ -1,44 +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 { processingResult } from '@backstage/plugin-catalog-node'; -import { defaultRepositoryParser } from './BitbucketRepositoryParser'; - -describe('BitbucketRepositoryParser', () => { - describe('defaultRepositoryParser', () => { - it('emits location', async () => { - const browseUrl = - 'https://bitbucket.mycompany.com/projects/project-key/repos/repo-slug/browse'; - const path = '/catalog-info.yaml'; - const expected = [ - processingResult.location({ - type: 'url', - target: `${browseUrl}${path}`, - presence: 'optional', - }), - ]; - const actual = defaultRepositoryParser({ - target: `${browseUrl}${path}`, - }); - - let i = 0; - for await (const entity of actual) { - expect(entity).toStrictEqual(expected[i]); - i++; - } - }); - }); -}); diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts deleted file mode 100644 index aa973f87c2..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts +++ /dev/null @@ -1,51 +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 { BitbucketIntegration } from '@backstage/integration'; -import { - CatalogProcessorResult, - processingResult, -} from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; - -/** - * A custom callback that reacts to finding a repository by yielding processing - * results. - * - * @public - * @deprecated Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - */ -export type BitbucketRepositoryParser = (options: { - integration: BitbucketIntegration; - target: string; - presence?: 'optional' | 'required'; - logger: Logger; -}) => AsyncIterable; - -export const defaultRepositoryParser = - async function* defaultRepositoryParser(options: { - target: string; - presence?: 'optional' | 'required'; - }) { - yield processingResult.location({ - type: 'url', - target: options.target, - // Not all locations may actually exist, since the user defined them as a wildcard pattern. - // Thus, we emit them as optional and let the downstream processor find them while not outputting - // an error if it couldn't. - presence: options.presence ?? 'optional', - }); - }; diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts deleted file mode 100644 index bcebb1713b..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts +++ /dev/null @@ -1,100 +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 { - BitbucketIntegrationConfig, - getBitbucketRequestOptions, -} from '@backstage/integration'; -import fetch from 'node-fetch'; - -export class BitbucketServerClient { - private readonly config: BitbucketIntegrationConfig; - - constructor(options: { config: BitbucketIntegrationConfig }) { - this.config = options.config; - } - - async listProjects(options?: ListOptions): Promise> { - return this.pagedRequest(`${this.config.apiBaseUrl}/projects`, options); - } - - async listRepositories( - projectKey: string, - options?: ListOptions, - ): Promise> { - return this.pagedRequest( - `${this.config.apiBaseUrl}/projects/${encodeURIComponent( - projectKey, - )}/repos`, - options, - ); - } - - private async pagedRequest( - endpoint: string, - options?: ListOptions, - ): Promise> { - const request = new URL(endpoint); - for (const key in options) { - if (options[key]) { - request.searchParams.append(key, options[key]!.toString()); - } - } - - const response = await fetch( - request.toString(), - getBitbucketRequestOptions(this.config), - ); - if (!response.ok) { - throw new Error( - `Unexpected response when fetching ${request.toString()}. Expected 200 but got ${ - response.status - } - ${response.statusText}`, - ); - } - return response.json() as Promise>; - } -} - -export type ListOptions = { - [key: string]: number | undefined; - limit?: number | undefined; - start?: number | undefined; -}; - -export type PagedResponse = { - size: number; - limit: number; - start: number; - isLastPage: boolean; - values: T[]; - nextPageStart: number; -}; - -export async function* paginated( - request: (options: ListOptions) => Promise>, - options?: ListOptions, -) { - const opts = options || { start: 0 }; - let res; - do { - res = await request(opts); - opts.start = res.nextPageStart; - for (const item of res.values) { - yield item; - } - } while (!res.isLastPage); -} diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/index.ts b/plugins/catalog-backend-module-bitbucket/src/lib/index.ts deleted file mode 100644 index c93bd7afd9..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/index.ts +++ /dev/null @@ -1,21 +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 { defaultRepositoryParser } from './BitbucketRepositoryParser'; -export type { BitbucketRepositoryParser } from './BitbucketRepositoryParser'; -export { BitbucketServerClient, paginated } from './BitbucketServerClient'; -export type { PagedResponse } from './BitbucketServerClient'; -export type { BitbucketRepository } from './types'; diff --git a/plugins/catalog-backend-module-gcp/CHANGELOG.md b/plugins/catalog-backend-module-gcp/CHANGELOG.md index bdf72f7171..a259732710 100644 --- a/plugins/catalog-backend-module-gcp/CHANGELOG.md +++ b/plugins/catalog-backend-module-gcp/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-gcp +## 0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.1.10-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-gcp/knip-report.md b/plugins/catalog-backend-module-gcp/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/catalog-backend-module-gcp/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json index ad5bdfa3f5..281b37b5ea 100644 --- a/plugins/catalog-backend-module-gcp/package.json +++ b/plugins/catalog-backend-module-gcp/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gcp", "description": "A Backstage catalog backend module that helps integrate towards GCP", - "version": "0.1.10-next.0", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 2b965a3267..295a1cc9b9 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.26-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/knip-report.md b/plugins/catalog-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..9a01b39c31 --- /dev/null +++ b/plugins/catalog-backend-module-gerrit/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| fs-extra | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @types/fs-extra | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 91097235d4..0f5b19ef3b 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.26-next.0", + "version": "0.1.26-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github-org/CHANGELOG.md b/plugins/catalog-backend-module-github-org/CHANGELOG.md index a8448fe5af..0cfb5e4f1c 100644 --- a/plugins/catalog-backend-module-github-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-github-org/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-backend-module-github-org +## 0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.5.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-github-org/knip-report.md b/plugins/catalog-backend-module-github-org/knip-report.md new file mode 100644 index 0000000000..7165b5aa7f --- /dev/null +++ b/plugins/catalog-backend-module-github-org/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index 585f032f05..fc460647ad 100644 --- a/plugins/catalog-backend-module-github-org/package.json +++ b/plugins/catalog-backend-module-github-org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github-org", "description": "The github-org backend module for the catalog plugin.", - "version": "0.1.4-next.0", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-github-org" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index b00dfda365..f1d44fe4e2 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/plugin-catalog-backend-module-github +## 0.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.5.0-next.1 + +### Minor Changes + +- a950ed0: Prevent Entity Providers from eliminating Users and Groups from the DB when the synchronisation fails + +### Patch Changes + +- 9477133: Decreased number of teams fetched by GraphQL Query responsible for fetching Teams and Members in organization, due to timeouts when running against big organizations +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.4.8-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/knip-report.md b/plugins/catalog-backend-module-github/knip-report.md new file mode 100644 index 0000000000..6654a9469f --- /dev/null +++ b/plugins/catalog-backend-module-github/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------------------|:-------------| +| node-fetch | package.json | +| @backstage/plugin-catalog-backend | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + +## Unlisted dependencies (3) + +| Name | Location | +|:------------------------|:----------------------------------------------| +| @octokit/webhooks-types | src/providers/GithubEntityProvider.ts | +| @octokit/webhooks-types | src/providers/GithubMultiOrgEntityProvider.ts | +| @octokit/webhooks-types | src/providers/GithubOrgEntityProvider.ts | + diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 10c95c6c44..c985026960 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.4.8-next.0", + "version": "0.5.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index b78079c4e8..dcf98ca5e6 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## 0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.3.7-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/knip-report.md b/plugins/catalog-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..195f060dc1 --- /dev/null +++ b/plugins/catalog-backend-module-gitlab/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index a364ddb584..9c1c61fcd4 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.3.7-next.0", + "version": "0.3.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index 042dfc6bb1..80e085e26a 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.4.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## 0.4.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + ## 0.4.14-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/README.md b/plugins/catalog-backend-module-incremental-ingestion/README.md index c5ed3e6367..0894d32031 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/README.md +++ b/plugins/catalog-backend-module-incremental-ingestion/README.md @@ -41,7 +41,7 @@ The Incremental Entity Provider backend is designed for data sources that provid ## Installation -1. Install `@backstage/plugin-catalog-backend-module-incremental-ingestion` with `yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-incremental-ingestion` from the Backstage root directory. +1. Install `@backstage/plugin-catalog-backend-module-incremental-ingestion` with `yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-incremental-ingestion` from the Backstage root directory. 2. In your catalog.ts, import `IncrementalCatalogBuilder` from `@backstage/plugin-catalog-backend-module-incremental-ingestion` and instantiate it with `await IncrementalCatalogBuilder.create(env, builder)`. You have to pass `builder` into `IncrementalCatalogBuilder.create` function because `IncrementalCatalogBuilder` will convert an `IncrementalEntityProvider` into an `EntityProvider` and call `builder.addEntityProvider`. ```ts diff --git a/plugins/catalog-backend-module-incremental-ingestion/knip-report.md b/plugins/catalog-backend-module-incremental-ingestion/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/catalog-backend-module-incremental-ingestion/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index 96ccb49130..1e7be3ce76 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.4.14-next.0", + "version": "0.4.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index b6f74f007c..1c89427e82 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.5.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.5.25-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/knip-report.md b/plugins/catalog-backend-module-ldap/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/catalog-backend-module-ldap/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index c2ad4a8aa3..eede004343 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.25-next.0", + "version": "0.5.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 99e9e39a76..de85e49f8b 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.5.17-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.5.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.5.17-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md index b70134cba3..e3ed302fa9 100644 --- a/plugins/catalog-backend-module-msgraph/README.md +++ b/plugins/catalog-backend-module-msgraph/README.md @@ -104,7 +104,7 @@ By default, all users are loaded. If you want to filter users based on their att ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-msgraph +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-msgraph ``` 4. The `MicrosoftGraphOrgEntityProvider` is not registered by default, so you diff --git a/plugins/catalog-backend-module-msgraph/knip-report.md b/plugins/catalog-backend-module-msgraph/knip-report.md new file mode 100644 index 0000000000..195f060dc1 --- /dev/null +++ b/plugins/catalog-backend-module-msgraph/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| luxon | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 56cf638689..c1f4f02ac9 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.5.17-next.0", + "version": "0.5.17-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 498291b002..6fb88caa5e 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-backend@1.17.0-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-backend@1.17.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.27-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/README.md b/plugins/catalog-backend-module-openapi/README.md index 6a8028895d..a79416e901 100644 --- a/plugins/catalog-backend-module-openapi/README.md +++ b/plugins/catalog-backend-module-openapi/README.md @@ -12,7 +12,7 @@ This is useful for OpenAPI and AsyncAPI specifications. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-openapi +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-openapi ``` ### Adding the plugin to your `packages/backend` diff --git a/plugins/catalog-backend-module-openapi/knip-report.md b/plugins/catalog-backend-module-openapi/knip-report.md new file mode 100644 index 0000000000..76c554b1db --- /dev/null +++ b/plugins/catalog-backend-module-openapi/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| openapi-types | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 92e7bdf618..b662744cf5 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.27-next.0", + "version": "0.1.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md index b2dd64e934..ffdc22dae2 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/plugin-catalog-backend-module-puppetdb +## 0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- bc644fb: Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index 9319299a06..a3291693e8 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -12,7 +12,7 @@ to your backend package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-puppetdb +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-puppetdb ``` Update the catalog plugin initialization in your backend to add the provider and schedule it: diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md index a4954ce6bd..16c4ab7fb2 100644 --- a/plugins/catalog-backend-module-puppetdb/api-report.md +++ b/plugins/catalog-backend-module-puppetdb/api-report.md @@ -64,6 +64,7 @@ export type PuppetFactSet = { export type PuppetNode = { timestamp: string; certname: string; + latest_report_status: string; hash: string; producer_timestamp: string; producer: string; diff --git a/plugins/catalog-backend-module-puppetdb/knip-report.md b/plugins/catalog-backend-module-puppetdb/knip-report.md new file mode 100644 index 0000000000..eaad6fecaa --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------|:-------------| +| luxon | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 4aaf20ba8b..9a8cb295c9 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", - "version": "0.1.15-next.0", + "version": "0.1.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index 42091fd6d6..660ddc2bdd 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -108,7 +108,7 @@ describe('PuppetEntityProvider', () => { annotations: { [ANNOTATION_PUPPET_CERTNAME]: 'node1', }, - tags: ['windows'], + tags: ['windows', 'unchanged'], description: 'Description 1', }, spec: { @@ -127,7 +127,7 @@ describe('PuppetEntityProvider', () => { annotations: { [ANNOTATION_PUPPET_CERTNAME]: 'node2', }, - tags: ['linux'], + tags: ['linux', 'unchanged'], description: 'Description 2', }, spec: { @@ -173,7 +173,7 @@ describe('PuppetEntityProvider', () => { 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node1`, }, - tags: ['windows'], + tags: ['windows', 'unchanged'], description: 'Description 1', }, spec: { @@ -201,7 +201,7 @@ describe('PuppetEntityProvider', () => { 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node2`, }, - tags: ['linux'], + tags: ['linux', 'unchanged'], description: 'Description 2', }, spec: { diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index c3b750a417..ac28f04503 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -53,6 +53,7 @@ describe('readPuppetNodes', () => { producer_timestamp: 'producer_time1', producer: 'producer1', environment: 'environment1', + latest_report_status: 'unchanged', facts: { data: [ { @@ -84,6 +85,7 @@ describe('readPuppetNodes', () => { hash: 'hash2', producer_timestamp: 'producer_time2', producer: 'producer2', + latest_report_status: 'unchanged', environment: 'environment2', facts: { data: [ diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts index a56f7b549b..ca0e8ae61b 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -33,6 +33,7 @@ describe('defaultResourceTransformer', () => { producer_timestamp: 'producer_time1', producer: 'producer1', environment: 'environment1', + latest_report_status: 'unchanged', facts: { href: 'facts1', data: [ @@ -71,7 +72,7 @@ describe('defaultResourceTransformer', () => { [ANNOTATION_PUPPET_CERTNAME]: 'node1', }, description: 'ipaddress1', - tags: ['linux'], + tags: ['linux', 'unchanged'], }, spec: { type: 'virtual-machine', diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts index 9ec607b83e..5394041724 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -37,6 +37,7 @@ export const defaultResourceTransformer: ResourceTransformer = async ( ? 'virtual-machine' : 'physical-server'; const kernel = node.facts?.data?.find(e => e.name === 'kernel')?.value; + const latest_report_status = node.latest_report_status; return { apiVersion: 'backstage.io/v1beta1', @@ -50,7 +51,12 @@ export const defaultResourceTransformer: ResourceTransformer = async ( description: node.facts?.data ?.find(e => e.name === 'ipaddress') ?.value?.toString(), - tags: kernel ? [kernel.toString().toLocaleLowerCase('en-US')] : [], + tags: kernel + ? [ + kernel.toString().toLocaleLowerCase('en-US'), + latest_report_status.toString().toLocaleLowerCase('en-US'), + ] + : [], }, spec: { type: type, diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts index 5bfac5c998..dd5ab3b781 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts @@ -50,6 +50,10 @@ export type PuppetNode = { /** * A hash of the factset's certname, environment, timestamp, facts, and producer_timestamp. */ + latest_report_status: string; + /** + * The status of the latest report. Possible values come from Puppet's report status failed, changed, or unchanged. + */ hash: string; /** * The most recent time of fact submission for the relevant certname from the Puppet Server. diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md index de3ff6553a..f6c2371481 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md +++ b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-backend-module-scaffolder-entity-model +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md b/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index 66d3c3d26f..e1e6d0a966 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/package.json +++ b/plugins/catalog-backend-module-scaffolder-entity-model/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-scaffolder-entity-model", "description": "Adds support for the scaffolder specific entity model (e.g. the Template kind) to the catalog backend plugin.", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -19,6 +19,11 @@ ] } }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-scaffolder-entity-model" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md index 3c34f951b5..eb02dc42e8 100644 --- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md +++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-catalog-backend-module-unprocessed +## 0.3.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.3.7-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-unprocessed/README.md b/plugins/catalog-backend-module-unprocessed/README.md index f2ea7b7741..0d9f9f8cb9 100644 --- a/plugins/catalog-backend-module-unprocessed/README.md +++ b/plugins/catalog-backend-module-unprocessed/README.md @@ -11,7 +11,7 @@ A `pending` entity has not been processed yet. ## Installation ```shell -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-unprocessed +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-unprocessed ``` ### backend diff --git a/plugins/catalog-backend-module-unprocessed/knip-report.md b/plugins/catalog-backend-module-unprocessed/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/catalog-backend-module-unprocessed/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json index 22786152c9..09cdc71231 100644 --- a/plugins/catalog-backend-module-unprocessed/package.json +++ b/plugins/catalog-backend-module-unprocessed/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-unprocessed", "description": "Backstage Catalog module to view unprocessed entities", - "version": "0.3.7-next.0", + "version": "0.3.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index fcbad7031b..ac8c84aac8 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,59 @@ # @backstage/plugin-catalog-backend +## 1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 1.17.0-next.1 + +### Minor Changes + +- 43dad25: Add API to get location by entity + +### Patch Changes + +- 89b674c: Minor performance improvement for `queryEntities` when the limit is 0. +- efa8160: Rollback the change for wildcard discovery, this fixes a bug with the `AzureUrlReader` not working with wildcard paths +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 + ## 1.17.0-next.0 ### Minor Changes diff --git a/plugins/catalog-backend/README.md b/plugins/catalog-backend/README.md index cd921499d3..7f886de155 100644 --- a/plugins/catalog-backend/README.md +++ b/plugins/catalog-backend/README.md @@ -27,7 +27,7 @@ restoring the plugin, if you previously removed it. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend +yarn --cwd packages/backend add @backstage/plugin-catalog-backend ``` ### Adding the plugin to your `packages/backend` diff --git a/plugins/catalog-backend/knip-report.md b/plugins/catalog-backend/knip-report.md new file mode 100644 index 0000000000..4e798fba61 --- /dev/null +++ b/plugins/catalog-backend/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| node-fetch | package.json | +| @backstage/repo-tools | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:-----------------|:-------------| +| msw | package.json | +| supertest | package.json | +| better-sqlite3 | package.json | +| @backstage/cli | package.json | +| wait-for-expect | package.json | +| @types/supertest | package.json | + diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index d9ba73fe9e..3cb5ebdc00 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.17.0-next.0", + "version": "1.17.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,8 @@ "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean" + "clean": "backstage-cli package clean", + "generate": "backstage-repo-tools package schema openapi generate --server --client-package packages/catalog-client" }, "dependencies": { "@backstage/backend-common": "workspace:^", @@ -61,6 +62,7 @@ "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-node": "workspace:^", "@backstage/plugin-search-backend-module-catalog": "workspace:^", + "@backstage/repo-tools": "workspace:^", "@backstage/types": "workspace:^", "@opentelemetry/api": "^1.3.0", "@types/express": "^4.17.6", diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index 0800d41340..538fe4a69e 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -17,6 +17,7 @@ import { createBackendPlugin, coreServices, } from '@backstage/backend-plugin-api'; +import { Entity } from '@backstage/catalog-model'; import { CatalogBuilder, CatalogPermissionRuleInput } from './CatalogBuilder'; import { CatalogAnalysisExtensionPoint, @@ -40,6 +41,10 @@ class CatalogProcessingExtensionPointImpl #processors = new Array(); #entityProviders = new Array(); #placeholderResolvers: Record = {}; + #onProcessingErrorHandler?: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void; addProcessor( ...processors: Array> @@ -61,6 +66,15 @@ class CatalogProcessingExtensionPointImpl this.#placeholderResolvers[key] = resolver; } + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ) { + this.#onProcessingErrorHandler = handler; + } + get processors() { return this.#processors; } @@ -72,6 +86,10 @@ class CatalogProcessingExtensionPointImpl get placeholderResolvers() { return this.#placeholderResolvers; } + + get onProcessingErrorHandler() { + return this.#onProcessingErrorHandler; + } } class CatalogAnalysisExtensionPointImpl @@ -162,6 +180,11 @@ export const catalogPlugin = createBackendPlugin({ scheduler, logger: winstonLogger, }); + if (processingExtensions.onProcessingErrorHandler) { + builder.subscribe({ + onProcessingError: processingExtensions.onProcessingErrorHandler, + }); + } builder.addProcessor(...processingExtensions.processors); builder.addEntityProvider(...processingExtensions.entityProviders); Object.entries(processingExtensions.placeholderResolvers).forEach( diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md index 9f2b511676..4a56bd8a66 100644 --- a/plugins/catalog-common/CHANGELOG.md +++ b/plugins/catalog-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-common +## 1.0.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + ## 1.0.20 ### Patch Changes diff --git a/plugins/catalog-common/knip-report.md b/plugins/catalog-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/catalog-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 9642746fd7..de79fd4a73 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.20", + "version": "1.0.21-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index a377f5ca68..196ed5dbb0 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,56 @@ # @backstage/plugin-catalog-graph +## 0.4.0-next.2 + +### Minor Changes + +- 3dc64e9: Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. + +### Patch Changes + +- 3e1c6e2: Added possibility to show arrow heads for graph edges for better understandability. + + In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component + (typically in `packages/app/src/App.tsx`): + + ```diff + - + + + ``` + + In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components + (typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): + + ```diff + - + + + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + +## 0.3.4-next.1 + +### Patch Changes + +- f937aae: use `CatalogClient.getEntitiesByRefs()` to reduce the number of backend requests from plugin `catalog-graph` +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/types@1.1.1 + ## 0.3.4-next.0 ### Patch Changes diff --git a/plugins/catalog-graph/README-alpha.md b/plugins/catalog-graph/README-alpha.md new file mode 100644 index 0000000000..52c09c4b50 --- /dev/null +++ b/plugins/catalog-graph/README-alpha.md @@ -0,0 +1,317 @@ +# Catalog Graph + +> [!WARNING] +> This documentation is made for those using the experimental new Frontend system. +> If you are not using the new frontend system, please go [here](./README.md). + +The Catalog graph plugin helps you to visualize the relations between entities, like ownership, grouping or API relationships. +It comes with these features: + +- A card that displays the directly related entities to the current entity on the Catalog entity page. It can be customized, for example filtering for specific relations. + + + +- A standalone page that can be added to your application providing a viewer for your entity relations. + This viewer can be used to navigate through the entities and filter for specific relations, you can access it from the card "View Graph" action. + + + +## Table of Content + +- [Installation](#installation) +- [Customization](#customization) + - [Packages](#packages) + - [Routes](#routes) + - [Extensions](#extensions) + - [Catalog entity relations graph card](#catalog-entity-relations-graph-card) + - [Catalog entity relations graph page](#catalog-entity-relations-graph-page) + +## Installation + +This plugin installation requires the following steps: + +> [!IMPORTANT] +> In addition to installing this plugin, be sure to install the [Catalog](https://backstage.io/docs/features/software-catalog/) plugin, as the Catalog graph extends its capabilities. + +1. Add the `@backstage/catalog-graph` dependency to your app `package.json` file and install it; +2. In your application's configuration file, enable the catalog entity relations graphic card extension so that the card begins to be presented on the catalog entity page: + +```yaml +# app-config.yaml +app: + experimental: + # Auto discovering all plugins extensions + packages: all + extensions: + # This is required because the card is not enable by default once you install the plugin + - entity-card:catalog-graph/relations +``` + +3. Then start the app, navigate to an entity's page and see the Relations graph there; +4. By clicking on the "View Graph" card action, you will be redirected to the catalog entity relations page. + +## Customization + +This plugin can be customized in two ways: via the `app-config.yaml` file or through code. The following sections will explain to you what kind of configurations are available for use, as well as how you can customize the plugin implementation. + +### Packages + +The features of this plug-in can be discovered automatically as soon as you install it, but you can also configure the plug-in not to be enabled for certain [environments](https://backstage.io/docs/conf/writing/#configuration-files). See the examples below: + +_Enabling auto discovering the plugin extensions in production_ + +```yaml +# app-config.production.yaml +# Overriding configurations for the local production environment +app: + experimental: + packages: + # Only the following packages will be included + include: + - '@backstage/plugin-catalog-graph' +``` + +_Disabling auto discovering the plugin extensions in development_ + +```yaml +# app-config.local.yaml +# Overriding configurations for the local development environment +app: + experimental: + packages: + # All but the following package will be included + exclude: + - '@backstage/plugin-catalog-graph' +``` + +For more options of package configurations, see [this](https://backstage.io/docs/frontend-system/architecture/app/#feature-discovery) documentation. + +### Routes + +The Catalog graph plugin exposes regular and external routes that can be used to configure route bindings. + +| Key | Type | Description | +| --------------- | -------------- | --------------------------------------- | +| `catalogGraph` | Regular route | A route ref to the Catalog graph page. | +| `catalogEntity` | External route | A route ref to the Catalog entity page. | + +As an example, here is an association between the external entity page and a different route other than the Catalog plugin's default entity page: + +```yaml +# app-config.yaml +app: + routes: + bindings: + # example binding the external catalog graph to a regular route + # defaults to catalog.catalogEntity + catalog-graph.catalogEntity: . +``` + +Additionally, it is possible to point a route from another plugin to the Catalog graph page: + +```yaml +# app-config.yaml +app: + routes: + bindings: + # example binding a external route to the catalog graph page + .: catalog-graph.catalogGraph +``` + +Route binding is also possible through code. For more information, see [this](https://backstage.io/docs/frontend-system/architecture/routes#binding-external-route-references) documentation. + +### Extensions + +The Catalog graphics plugin provides extensions for each of its features, see below how to customize these extensions: + +#### Catalog Entity Relations Graph Card + +An [entity card](https://backstage.io/docs/frontend-system/building-plugins/extension-types#entitycard---reference) extension that renders the relation graph for an entity on the Catalog entity page and has an action that redirects users to the more advanced [relations graph page](#catalog-entity-relations-graph-page). + +| kind | namespace | name | id | Default enabled | +| ----------- | ------------- | ---------------- | ------------------------------------- | --------------- | +| entity-card | catalog-graph | entity-relations | `entity-card:catalog-graph/relations` | No | + +##### Output + +A React component defined by the [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata/) type. + +##### Inputs + +There are no inputs available for this extension. + +##### Config + +The card configurations should be defined under the `app.extensions.entity-card:catalog-graph/relations.config` key: + +```yaml +# app-config.yaml +app: + extensions: + # this is the extension id and it follows the naming pattern bellow: + # /: + - entity-card:catalog-graph/relations: + config: + # example configuring the card title + # defaults to "Relations" + title: 'Entities Relations Graph' +``` + +See below the complete list of available configs: + +| Key | Description | Type | Optional | Default value | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | +| `filter` | A [text-based query](<(https://github.com/backstage/backstage/pull/21480)>) used to filter whether the extension should be rendered or not. | `string` | yes | - | +| `title` | The card title text. | `string` | yes | `'Relations'` | +| `height` | The card height fixed size. | `number` | yes | - | +| `kinds` | Restricted list of entity [kinds](https://backstage.io/docs/features/software-catalog/descriptor-format/#contents) to display in the graph. | `string[]` | yes | - | +| `relations` | Restricted list of entity [relations](https://backstage.io/docs/features/software-catalog/descriptor-format/#common-to-all-kinds-relations) to display in the graph. | `string[]` | yes | - | +| `maxDepth` | A maximum number of levels of relations to display in the graph. | `number` | yes | `1` | +| `unidirectional` | Shows only relations that are from the source to the target entity. | `boolean` | yes | `true` | +| `mergeRelations` | Merge the relations line into a single one. | `boolean` | yes | `true` | +| `direction` | Render direction of the graph. | `TB` \| `BT` \| `LR` \| `RL` | yes | `'LR'` | +| `relationPairs` | A list of [pairs of entity relations](https://backstage.io/docs/features/software-catalog/well-known-relations#relations), used to define which relations are merged together and which the primary relation is. | `[string[], string[]]` | yes | Show all entity [relations](https://backstage.io/docs/features/software-catalog/well-known-relations#relations). | +| `zoom` | Controls zoom behavior of graph. | `enabled` \| `disabled` \| `enable-on-click` | yes | `'enabled'` | +| `curve` | A factory name for curve generators addressing both lines and areas. | `curveStepBefore` \| `curveMonotoneX` | yes | `'enable-on-click' ` | + +##### Disable + +The card is disabled by default when you install the plugin, but you can prevent future versions from enabling it by adding this configuration: + +```yaml +# app-config.yaml +app: + extensions: + # this is the extension id and it follows the naming pattern bellow: + # /: + # example disbaling the graph card extension + - entity-card:catalog-graph/relations: false +``` + +##### Override + +Overriding the card extension allows you to modify how it is implemented. + +> [!CAUTION] +> To maintain the same level of configuration, you should define the same or an extended configuration schema. + +Here is an example overriding the card extension with a custom component: + +```tsx +import { createExtensionOverrides, createSchemaFromZod } from '@backstage/backstage-plugin-api'; +import { createEntityCardExtension } from '@backstage/plugin-catalog-react/alpha'; + +export default createExtensionOverrides( + extensions: [ + createEntityCardExtension({ + // These namespace and name are necessary so the system knows that this extension will replace the default 'entity-relations' card extension provided by the 'catalog-graph' plugin + namespace: 'catalog-graph', + name: 'entity-relations', + configSchema: createSchemaFromZod(z => z.object({ + filter: z.string().optional(), + // Ommitting the rest of default configs for simplicity in this example + })), + loader: () => import('./components').then(m => ) + }) + ] +); +``` + +For more information about where to place extension overrides, see the official [documentation](https://backstage.io/docs/frontend-system/architecture/extension-overrides). + +#### Catalog Entity Relations Graph Page + +A [page](https://backstage.io/docs/reference/frontend-plugin-api.createapiextension) extension that lets you customize the relations displayed for a Catalog entity in the graph viewer using a series of filters. + +| Kind | Namespace | Name | Id | Default enabled | +| ---- | ------------- | :--: | -------------------- | :-------------: | +| page | catalog-graph | - | `page:catalog-graph` | Yes | + +##### Output + +A React component defined by the [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata/) type. + +##### Inputs + +There are no inputs available for this extension. + +##### Config + +The page configurations should be defined under the `app.extensions.page:catalog-graph.config` key: + +```yaml +# app-config.yaml +app: + extensions: + # this is the extension id and it follows the naming pattern bellow: + # /: + - page:catalog-graph: + config: + # example configuring the page path + # defaults to "/catalog-graph" + path: '/entity-graph' +``` + +See below the complete list of available configs: + +| Key | Description | Type | Optional | Default value | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | +| `path` | The page route path. | `string` | true | `'/catalog-graph' ` | +| `initialState` | These are the initial filter values, as opposed to configuration of the available filter values. | `{ selectedRelations?: string[],selectedKinds?: string[],rootEntityRefs?: string[],maxDepth?: number,unidirectional?: boolean,mergeRelations?: boolean,direction?: Direction,showFilters?: boolean,curve?: 'curveStepBefore' \| 'curveMonotoneX' }` | true | `{}` | +| `kinds` | Restricted list of entity [kinds](https://backstage.io/docs/features/software-catalog/descriptor-format/#contents) to display in the graph. | `string[]` | yes | - | +| `relations` | Restricted list of entity [relations](https://backstage.io/docs/features/software-catalog/descriptor-format/#common-to-all-kinds-relations) to display in the graph. | `string[]` | yes | - | +| `maxDepth` | A maximum number of levels of relations to display in the graph. | `number` | yes | `1` | +| `unidirectional` | Shows only relations that are from the source to the target entity. | `boolean` | yes | `true` | +| `mergeRelations` | Merge the relations line into a single one. | `boolean` | yes | `true` | +| `direction` | Render direction of the graph. | `TB` \| `BT` \| `LR` \| `RL` | yes | `'LR'` | +| `relationPairs` | A list of [pairs of entity relations](https://backstage.io/docs/features/software-catalog/well-known-relations#relations), used to define which relations are merged together and which the primary relation is. | `[string[], string[]]` | yes | Show all entity [relations](https://backstage.io/docs/features/software-catalog/well-known-relations#relations). | +| `zoom` | Controls zoom behavior of graph. | `enabled` \| `disabled` \| `enable-on-click` | yes | `'enabled'` | +| `curve` | A factory name for curve generators addressing both lines and areas. | `curveStepBefore` \| `curveMonotoneX` | yes | `'enable-on-click' ` | + +##### Disable + +When you install the plugin, the page is automatically enabled, but you can disable it with the following setting: + +```yaml +# app-config.yaml +app: + extensions: + # this is the extension id and it follows the naming pattern bellow: + # /: + # example disbaling the graph page extension + - page:catalog-graph: false +``` + +##### Override + +Overriding the page extension allows you to modify how it is implemented. + +> [!CAUTION] +> To maintain the same level of configuration, you need to define the same or an extended configuration schema. In order to avoid side effects on external plugins that expect this page to be associated with the default path and route reference, remember to use the same default path so that applications that use the default path still point to the same page and the same route reference. + +Here is example overriding the page extension with a custom component: + +```tsx +import { createExtensionOverrides, createPageExtension, createSchemaFromZod } from '@backstage/backstage-plugin-api'; +import { convertLegacyRouteRef } from '@backstage/core-compat-api'; +import { catalogGraphRouteRef } from '@backstage/plugin-catalog-graph'; + +export default createExtensionOverrides( + extensions: [ + createPageExtension({ + // Ommiting name since it is an index page + // This namespace is necessary so the system knows that this extension will replace the default 'catalog-graph' page extension + namespace: 'catalog-graph', + defaultPath: '/catalog-graph', + routeRef: convertLegacyRouteRef(catalogGraphRouteRef), + createSchemaFromZod(z => z.object({ + path: z.string().default('/catalog-graph') + // Ommitting the rest of default configs for simplicity in this example + })), + loader: () => import('./components').then(m => ) + }) + ] +); +``` + +For more information about where to place extension overrides, see the official [documentation](https://backstage.io/docs/frontend-system/architecture/extension-overrides). diff --git a/plugins/catalog-graph/README.md b/plugins/catalog-graph/README.md index f00d11810f..0862abbc96 100644 --- a/plugins/catalog-graph/README.md +++ b/plugins/catalog-graph/README.md @@ -1,5 +1,8 @@ # catalog-graph +> Disclaimer: +> If you are looking for documentation on the experimental new frontend system support, please go [here](./README-alpha.md). + Welcome to the catalog graph plugin! The catalog graph visualizes the relations between entities, like ownership, grouping or API relationships. @@ -27,7 +30,7 @@ To use the catalog graph plugin, you have to add some things to your Backstage a 1. Add a dependency to your `packages/app/package.json`: ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-catalog-graph + yarn --cwd packages/app add @backstage/plugin-catalog-graph ``` 2. Add the `CatalogGraphPage` to your `packages/app/src/App.tsx`: diff --git a/plugins/catalog-graph/api-report-alpha.md b/plugins/catalog-graph/api-report-alpha.md new file mode 100644 index 0000000000..3895f12fcf --- /dev/null +++ b/plugins/catalog-graph/api-report-alpha.md @@ -0,0 +1,29 @@ +## API Report File for "@backstage/plugin-catalog-graph" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackstagePlugin } from '@backstage/frontend-plugin-api'; +import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; +import { RouteRef } from '@backstage/frontend-plugin-api'; + +// @public (undocumented) +const _default: BackstagePlugin< + { + catalogGraph: RouteRef; + }, + { + catalogEntity: ExternalRouteRef< + { + name: string; + kind: string; + namespace: string; + }, + true + >; + } +>; +export default _default; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/catalog-graph/api-report.md b/plugins/catalog-graph/api-report.md index ba75943843..8f75e52289 100644 --- a/plugins/catalog-graph/api-report.md +++ b/plugins/catalog-graph/api-report.md @@ -123,6 +123,7 @@ export type EntityRelationsGraphProps = { renderNode?: DependencyGraphTypes.RenderNodeFunction; renderLabel?: DependencyGraphTypes.RenderLabelFunction; curve?: 'curveStepBefore' | 'curveMonotoneX'; + showArrowHeads?: boolean; }; // @public diff --git a/plugins/catalog-graph/catalog-graph-entity-relations-card.png b/plugins/catalog-graph/catalog-graph-entity-relations-card.png new file mode 100644 index 0000000000..c23675c024 Binary files /dev/null and b/plugins/catalog-graph/catalog-graph-entity-relations-card.png differ diff --git a/plugins/catalog-graph/catalog-graph-entity-relations-page.png b/plugins/catalog-graph/catalog-graph-entity-relations-page.png new file mode 100644 index 0000000000..21f964b674 Binary files /dev/null and b/plugins/catalog-graph/catalog-graph-entity-relations-page.png differ diff --git a/plugins/catalog-graph/knip-report.md b/plugins/catalog-graph/knip-report.md new file mode 100644 index 0000000000..95a44323ae --- /dev/null +++ b/plugins/catalog-graph/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| p-limit | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 709e764531..ca74cd7c41 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,13 +1,26 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.3.4-next.0", + "version": "0.4.0-next.2", "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" + "access": "public" + }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } }, "backstage": { "role": "frontend-plugin" @@ -31,14 +44,16 @@ "dependencies": { "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", + "@backstage/core-compat-api": "workspace:^", "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", + "@backstage/frontend-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.3.1", "lodash": "^4.17.15", "p-limit": "^3.1.0", diff --git a/plugins/catalog-graph/src/alpha.tsx b/plugins/catalog-graph/src/alpha.tsx new file mode 100644 index 0000000000..6d8429332e --- /dev/null +++ b/plugins/catalog-graph/src/alpha.tsx @@ -0,0 +1,108 @@ +/* + * Copyright 2024 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 { + createPageExtension, + createPlugin, + createSchemaFromZod, +} from '@backstage/frontend-plugin-api'; +import { + compatWrapper, + convertLegacyRouteRef, +} from '@backstage/core-compat-api'; +import { createEntityCardExtension } from '@backstage/plugin-catalog-react/alpha'; +import { catalogGraphRouteRef, catalogEntityRouteRef } from './routes'; +import { Direction } from './components'; + +function getEntityGraphRelationsConfigSchema( + z: Parameters[0]>[0], +) { + // Mapping EntityRelationsGraphProps to config + // The classname and render functions are configurable only via extension overrides + return z.object({ + kinds: z.array(z.string()).optional(), + relations: z.array(z.string()).optional(), + maxDepth: z.number().optional(), + unidirectional: z.boolean().optional(), + mergeRelations: z.boolean().optional(), + direction: z.nativeEnum(Direction).optional(), + relationPairs: z.array(z.tuple([z.string(), z.string()])).optional(), + zoom: z.enum(['enabled', 'disabled', 'enable-on-click']).optional(), + curve: z.enum(['curveStepBefore', 'curveMonotoneX']).optional(), + }); +} + +const CatalogGraphEntityCard = createEntityCardExtension({ + name: 'relations', + configSchema: createSchemaFromZod(z => + z + .object({ + // Filter is a config required to all entity cards + filter: z.string().optional(), + title: z.string().optional(), + height: z.number().optional(), + // Skipping a "variant" config for now, defaulting to "gridItem" in the component + // For more details, see this comment: https://github.com/backstage/backstage/pull/22619#discussion_r1477333252 + }) + .merge(getEntityGraphRelationsConfigSchema(z)), + ), + loader: async ({ config: { filter, ...props } }) => + import('./components/CatalogGraphCard').then(m => + compatWrapper(), + ), +}); + +const CatalogGraphPage = createPageExtension({ + defaultPath: '/catalog-graph', + routeRef: convertLegacyRouteRef(catalogGraphRouteRef), + configSchema: createSchemaFromZod(z => + z.object({ + // Path is a default config required to all pages + path: z.string().default('/catalog-graph'), + // Mapping intialState prop to config, these are the initial filter values, as opposed to configuration of the available filter values + initialState: z + .object({ + selectedKinds: z.array(z.string()).optional(), + selectedRelations: z.array(z.string()).optional(), + rootEntityRefs: z.array(z.string()).optional(), + maxDepth: z.number().optional(), + unidirectional: z.boolean().optional(), + mergeRelations: z.boolean().optional(), + direction: z.nativeEnum(Direction).optional(), + showFilters: z.boolean().optional(), + curve: z.enum(['curveStepBefore', 'curveMonotoneX']).optional(), + }) + .merge(getEntityGraphRelationsConfigSchema(z)) + .optional(), + }), + ), + loader: ({ config: { path, ...props } }) => + import('./components/CatalogGraphPage').then(m => + compatWrapper(), + ), +}); + +export default createPlugin({ + id: 'catalog-graph', + routes: { + catalogGraph: convertLegacyRouteRef(catalogGraphRouteRef), + }, + externalRoutes: { + catalogEntity: convertLegacyRouteRef(catalogEntityRouteRef), + }, + extensions: [CatalogGraphPage, CatalogGraphEntityCard], +}); diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx index 654aaff969..35f76a7de0 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx @@ -84,6 +84,7 @@ export type EntityRelationsGraphProps = { renderNode?: DependencyGraphTypes.RenderNodeFunction; renderLabel?: DependencyGraphTypes.RenderLabelFunction; curve?: 'curveStepBefore' | 'curveMonotoneX'; + showArrowHeads?: boolean; }; /** @@ -107,6 +108,7 @@ export const EntityRelationsGraph = (props: EntityRelationsGraphProps) => { renderNode, renderLabel, curve, + showArrowHeads, } = props; const theme = useTheme(); @@ -154,6 +156,7 @@ export const EntityRelationsGraph = (props: EntityRelationsGraphProps) => { labelOffset={theme.spacing(1)} zoom={zoom} curve={curve} + showArrowHeads={showArrowHeads} /> )} diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index b77f3faf2b..1a3627bb2f 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,43 @@ # @backstage/plugin-catalog-import +## 0.10.6-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.10.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + ## 0.10.6-next.0 ### Patch Changes diff --git a/plugins/catalog-import/README.md b/plugins/catalog-import/README.md index 602e67503d..d4ede8af7b 100644 --- a/plugins/catalog-import/README.md +++ b/plugins/catalog-import/README.md @@ -19,7 +19,7 @@ Some features are not yet available for all supported Git providers. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-catalog-import +yarn --cwd packages/app add @backstage/plugin-catalog-import ``` 2. Add the `CatalogImportPage` extension to the app: diff --git a/plugins/catalog-import/knip-report.md b/plugins/catalog-import/knip-report.md new file mode 100644 index 0000000000..dbaf2b64d3 --- /dev/null +++ b/plugins/catalog-import/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused devDependencies (7) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 066a073c48..2fd7881743 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.10.6-next.0", + "version": "0.10.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -62,7 +62,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "git-url-parse": "^13.0.0", "js-base64": "^3.6.0", "lodash": "^4.17.21", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index 7327411bf2..76bcdbf30a 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-node +## 1.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 1.6.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 1.6.2-next.0 ### Patch Changes diff --git a/plugins/catalog-node/api-report-alpha.md b/plugins/catalog-node/api-report-alpha.md index 74339b1bc9..5be4b114c0 100644 --- a/plugins/catalog-node/api-report-alpha.md +++ b/plugins/catalog-node/api-report-alpha.md @@ -54,6 +54,13 @@ export interface CatalogProcessingExtensionPoint { addProcessor( ...processors: Array> ): void; + // (undocumented) + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ): void; } // @alpha (undocumented) diff --git a/plugins/catalog-node/knip-report.md b/plugins/catalog-node/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/catalog-node/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 944474bb9b..ecf5e56f39 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.6.2-next.0", + "version": "1.6.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/src/extensions.ts b/plugins/catalog-node/src/extensions.ts index 7aa9264030..e2ee1b4f4b 100644 --- a/plugins/catalog-node/src/extensions.ts +++ b/plugins/catalog-node/src/extensions.ts @@ -37,6 +37,12 @@ export interface CatalogProcessingExtensionPoint { ...providers: Array> ): void; addPlaceholderResolver(key: string, resolver: PlaceholderResolver): void; + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ): void; } /** diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 4bd71d05fe..3d5bc36b5f 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,46 @@ # @backstage/plugin-catalog-react +## 1.10.0-next.2 + +### Minor Changes + +- 3dc64e9: Add support to `configSchema` option on the `createEntityCardExtension` factory function. + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 1.9.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 1.9.4-next.0 ### Patch Changes diff --git a/plugins/catalog-react/api-report-alpha.md b/plugins/catalog-react/api-report-alpha.md index cf9fdc6c3a..fb807d947d 100644 --- a/plugins/catalog-react/api-report-alpha.md +++ b/plugins/catalog-react/api-report-alpha.md @@ -9,6 +9,7 @@ import { AnyExtensionInputMap } from '@backstage/frontend-plugin-api'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; +import { PortableSchema } from '@backstage/frontend-plugin-api'; import { ResolvedExtensionInputs } from '@backstage/frontend-plugin-api'; import { ResourcePermission } from '@backstage/plugin-permission-common'; import { RouteRef } from '@backstage/frontend-plugin-api'; @@ -25,6 +26,9 @@ export const catalogExtensionData: { // @alpha (undocumented) export function createEntityCardExtension< + TConfig extends { + filter?: string; + }, TInputs extends AnyExtensionInputMap, >(options: { namespace?: string; @@ -35,15 +39,15 @@ export function createEntityCardExtension< }; disabled?: boolean; inputs?: TInputs; + configSchema?: PortableSchema; filter?: | typeof catalogExtensionData.entityFilterFunction.T | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { + config: TConfig; inputs: Expand>; }) => Promise; -}): ExtensionDefinition<{ - filter?: string | undefined; -}>; +}): ExtensionDefinition; // @alpha (undocumented) export function createEntityContentExtension< diff --git a/plugins/catalog-react/knip-report.md b/plugins/catalog-react/knip-report.md new file mode 100644 index 0000000000..03d1ee0396 --- /dev/null +++ b/plugins/catalog-react/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------------------------------|:-------------| +| @backstage/plugin-catalog-common | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:------------------------------------|:-------------| +| @backstage/cli | package.json | +| react-test-renderer | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | +| @backstage/plugin-catalog-common | package.json | +| @backstage/plugin-scaffolder-common | package.json | + diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index d4114efc59..97dfc7f289 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.9.4-next.0", + "version": "1.10.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -61,8 +61,8 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@react-hookz/web": "^24.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.2.6", "lodash": "^4.17.21", "material-ui-popup-state": "^1.9.3", diff --git a/plugins/catalog-react/src/alpha.tsx b/plugins/catalog-react/src/alpha.tsx index 330cd573cd..f5f4dfdb74 100644 --- a/plugins/catalog-react/src/alpha.tsx +++ b/plugins/catalog-react/src/alpha.tsx @@ -17,6 +17,7 @@ import { AnyExtensionInputMap, ExtensionBoundary, + PortableSchema, ResolvedExtensionInputs, RouteRef, coreExtensionData, @@ -48,6 +49,7 @@ export const catalogExtensionData = { // TODO: Figure out how to merge with provided config schema /** @alpha */ export function createEntityCardExtension< + TConfig extends { filter?: string }, TInputs extends AnyExtensionInputMap, >(options: { namespace?: string; @@ -55,13 +57,23 @@ export function createEntityCardExtension< attachTo?: { id: string; input: string }; disabled?: boolean; inputs?: TInputs; + configSchema?: PortableSchema; filter?: | typeof catalogExtensionData.entityFilterFunction.T | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { + config: TConfig; inputs: Expand>; }) => Promise; }) { + const configSchema = + 'configSchema' in options + ? options.configSchema + : (createSchemaFromZod(z => + z.object({ + filter: z.string().optional(), + }), + ) as PortableSchema); return createExtension({ kind: 'entity-card', namespace: options.namespace, @@ -77,15 +89,11 @@ export function createEntityCardExtension< filterExpression: catalogExtensionData.entityFilterExpression.optional(), }, inputs: options.inputs, - configSchema: createSchemaFromZod(z => - z.object({ - filter: z.string().optional(), - }), - ), + configSchema, factory({ config, inputs, node }) { const ExtensionComponent = lazy(() => options - .loader({ inputs }) + .loader({ inputs, config }) .then(element => ({ default: () => element })), ); diff --git a/plugins/catalog-unprocessed-entities/CHANGELOG.md b/plugins/catalog-unprocessed-entities/CHANGELOG.md index 9a2be34228..84593ba2e1 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-unprocessed-entities +## 0.1.8-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + ## 0.1.7 ### Patch Changes diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index 3c9f649e37..c2e5109d5c 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -29,7 +29,7 @@ Requires the `@backstage/plugin-catalog-backend-module-unprocessed` module to be ## Installation ```shell -yarn add --cwd packages/app @backstage/plugin-catalog-unprocessed-entities +yarn --cwd packages/app add @backstage/plugin-catalog-unprocessed-entities ``` Import into your `App.tsx` and include into the `` component: diff --git a/plugins/catalog-unprocessed-entities/knip-report.md b/plugins/catalog-unprocessed-entities/knip-report.md new file mode 100644 index 0000000000..9f54e7f06d --- /dev/null +++ b/plugins/catalog-unprocessed-entities/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index d3b037788a..8c86d1e275 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-unprocessed-entities", - "version": "0.1.7", + "version": "0.1.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.60", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 4283ae0a74..57c0698116 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,50 @@ # @backstage/plugin-catalog +## 1.17.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + +## 1.17.0-next.1 + +### Patch Changes + +- 987f565: Add line clamping to `CatalogSearchResultListItem` +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 1.17.0-next.0 ### Minor Changes diff --git a/plugins/catalog/README.md b/plugins/catalog/README.md index b35110053e..1ce7b2bf69 100644 --- a/plugins/catalog/README.md +++ b/plugins/catalog/README.md @@ -20,7 +20,7 @@ plugin, if you previously removed it. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-catalog +yarn --cwd packages/app add @backstage/plugin-catalog ``` ### Add the plugin to your `packages/app` diff --git a/plugins/catalog/knip-report.md b/plugins/catalog/knip-report.md new file mode 100644 index 0000000000..cdf24bac48 --- /dev/null +++ b/plugins/catalog/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| history | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:------------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | +| @backstage/plugin-permission-common | package.json | + diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index c30cddc08f..cebf95ab94 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.17.0-next.0", + "version": "1.17.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -65,7 +65,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@mui/utils": "^5.14.15", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "dataloader": "^2.0.0", "expiry-map": "^2.0.0", "history": "^5.0.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 1d134138ba..8625e93e93 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.26-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-cicd-statistics@0.1.32-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-cicd-statistics@0.1.32-next.1 + ## 0.1.26-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/knip-report.md b/plugins/cicd-statistics-module-gitlab/knip-report.md new file mode 100644 index 0000000000..3826e577d2 --- /dev/null +++ b/plugins/cicd-statistics-module-gitlab/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------|:-------------| +| luxon | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| @types/react | package.json | +| @backstage/cli | package.json | + diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 9ab05f6aac..4738395e17 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.26-next.0", + "version": "0.1.26-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index d1099764d9..74830062f8 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-cicd-statistics +## 0.1.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.32-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics/knip-report.md b/plugins/cicd-statistics/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/cicd-statistics/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index a989af1820..54e220c7c3 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.32-next.0", + "version": "0.1.32-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index 413ae8b12f..aa44580b19 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-circleci +## 0.3.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.3.30-next.0 ### Patch Changes diff --git a/plugins/circleci/README.md b/plugins/circleci/README.md index 86af7081c7..67e342e8c8 100644 --- a/plugins/circleci/README.md +++ b/plugins/circleci/README.md @@ -15,7 +15,7 @@ ```bash # From your Backstage root directory -yarn add --cwd packages/app @circleci/backstage-plugin +yarn --cwd packages/app add @circleci/backstage-plugin ``` 2. Add the `EntityCircleCIContent` extension to the entity page in your app: diff --git a/plugins/circleci/knip-report.md b/plugins/circleci/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/circleci/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 9eb43648af..929b511538 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.30-next.0", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "circleci-api": "^4.0.0", "humanize-duration": "^3.27.0", "lodash": "^4.17.21", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index ff87a63e08..e869f48d9c 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-cloudbuild +## 0.4.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.4.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.4.0-next.0 ### Minor Changes diff --git a/plugins/cloudbuild/knip-report.md b/plugins/cloudbuild/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/cloudbuild/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 00f0a7ea11..84bdda39b4 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.4.0-next.0", + "version": "0.4.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "qs": "^6.9.4", "react-use": "^17.2.4" diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index 9e653f5879..b4be2026dc 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-code-climate +## 0.1.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.30-next.0 ### Patch Changes diff --git a/plugins/code-climate/README.md b/plugins/code-climate/README.md index 4140f8f1aa..8aff5cd9af 100644 --- a/plugins/code-climate/README.md +++ b/plugins/code-climate/README.md @@ -10,7 +10,7 @@ The Code Climate Plugin displays a few stats from the quality section from [Code ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-code-climate +yarn --cwd packages/app add @backstage/plugin-code-climate ``` 2. Add the `EntityCodeClimateCard` to the EntityPage: diff --git a/plugins/code-climate/knip-report.md b/plugins/code-climate/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/code-climate/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index b142f7bb40..8add9b39eb 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.30-next.0", + "version": "0.1.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "humanize-duration": "^3.27.1", "luxon": "^3.0.0", "react-use": "^17.2.4" diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index ed75e028d1..4b25f421e3 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-code-coverage-backend +## 0.2.24-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.2.24-next.0 ### Patch Changes diff --git a/plugins/code-coverage-backend/README.md b/plugins/code-coverage-backend/README.md index 2b22b0ad1d..f47e966466 100644 --- a/plugins/code-coverage-backend/README.md +++ b/plugins/code-coverage-backend/README.md @@ -6,7 +6,7 @@ This is the backend part of the `code-coverage` plugin. It takes care of process ```sh # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-code-coverage-backend +yarn --cwd packages/backend add @backstage/plugin-code-coverage-backend ``` First create a `codecoverage.ts` file here: `packages/backend/src/plugins`. Now add the following as its content: diff --git a/plugins/code-coverage-backend/knip-report.md b/plugins/code-coverage-backend/knip-report.md new file mode 100644 index 0000000000..86e3079791 --- /dev/null +++ b/plugins/code-coverage-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| xml2js | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index d929fd4006..27540e5321 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.24-next.0", + "version": "0.2.24-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 534fbc0d52..3416ec8aef 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-code-coverage +## 0.2.23-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.23-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.23-next.0 ### Patch Changes diff --git a/plugins/code-coverage/README.md b/plugins/code-coverage/README.md index d4daa6ec00..4298c69b11 100644 --- a/plugins/code-coverage/README.md +++ b/plugins/code-coverage/README.md @@ -6,7 +6,7 @@ This is the frontend part of the code-coverage plugin. It displays code coverage ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-code-coverage +yarn --cwd packages/app add @backstage/plugin-code-coverage ``` Finally you need to import and render the code coverage entity, in `packages/app/src/components/catalog/EntityPage.tsx` add the following: diff --git a/plugins/code-coverage/knip-report.md b/plugins/code-coverage/knip-report.md new file mode 100644 index 0000000000..2f33ca2948 --- /dev/null +++ b/plugins/code-coverage/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @types/highlightjs | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 52dd2a18ec..c5d8b83893 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.23-next.0", + "version": "0.2.23-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -56,7 +56,7 @@ "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@types/highlightjs": "^10.1.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@types/recharts": "^1.8.15" }, "files": [ diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index df9ed3199f..b65c008d92 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-codescene +## 0.1.22-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.21 ### Patch Changes diff --git a/plugins/codescene/README.md b/plugins/codescene/README.md index 8c84c9015c..1a713c1589 100644 --- a/plugins/codescene/README.md +++ b/plugins/codescene/README.md @@ -12,7 +12,7 @@ The CodeScene Backstage Plugin provides a page component that displays a list of ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-codescene +yarn --cwd packages/app add @backstage/plugin-codescene ``` 2. Add the routes and pages to your `App.tsx`: diff --git a/plugins/codescene/knip-report.md b/plugins/codescene/knip-report.md new file mode 100644 index 0000000000..efbc44e5d5 --- /dev/null +++ b/plugins/codescene/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @backstage/config | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index f0dfd20394..877ff7e537 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.21", + "version": "0.1.22-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,7 +35,7 @@ "@backstage/errors": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "rc-progress": "3.5.1", "react-use": "^17.2.4" }, diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 0ed7d3afd5..4b880dcf75 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-config-schema +## 0.1.50-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.1.50-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.1.49 ### Patch Changes diff --git a/plugins/config-schema/knip-report.md b/plugins/config-schema/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/config-schema/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 15860d4e89..00cedd3e03 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.49", + "version": "0.1.50-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "jsonschema": "^1.2.6", "react-use": "^17.2.4", "zen-observable": "^0.10.0" diff --git a/plugins/cost-insights-common/knip-report.md b/plugins/cost-insights-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/cost-insights-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 7f0a7dfd21..763a02c730 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-cost-insights +## 0.12.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-cost-insights-common@0.1.2 + +## 0.12.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + - @backstage/plugin-cost-insights-common@0.1.2 + ## 0.12.19-next.0 ### Patch Changes diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index a7bcb0cb0a..b7bfa053cf 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -17,7 +17,7 @@ Learn more with the Backstage blog post [New Cost Insights plugin: The engineer' ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-cost-insights +yarn --cwd packages/app add @backstage/plugin-cost-insights ``` ## Setup @@ -224,8 +224,8 @@ costInsights: ### Engineer Threshold (Optional; default 0.5) -This threshold determines whether to show 'Negligible', or a percentage with a fraction of 'engineers' for cost savings or cost excess on top of the charts. -A threshold of 0.5 means that `Negligible` is shown when the difference in costs is lower than that fraction of engineers in that time frame, +This threshold determines whether to show 'Negligible', or a percentage with a fraction of 'engineers' for cost savings or cost excess on top of the charts. +A threshold of 0.5 means that `Negligible` is shown when the difference in costs is lower than that fraction of engineers in that time frame, and show `XX% or ~N engineers` when it's above the threshold. ```yaml diff --git a/plugins/cost-insights/contrib/aws-cost-explorer-api.md b/plugins/cost-insights/contrib/aws-cost-explorer-api.md index 4fbf8a0cbe..abe6d10120 100644 --- a/plugins/cost-insights/contrib/aws-cost-explorer-api.md +++ b/plugins/cost-insights/contrib/aws-cost-explorer-api.md @@ -34,7 +34,7 @@ Install the AWS Cost Explorer SDK. The AWS docs recommend using the SDK over mak ```bash # From your Backstage root directory -yarn add --cwd packages/app @aws-sdk/client-cost-explorer +yarn --cwd packages/app add @aws-sdk/client-cost-explorer ``` ## Usage of the SDK diff --git a/plugins/cost-insights/knip-report.md b/plugins/cost-insights/knip-report.md new file mode 100644 index 0000000000..942ccee1be --- /dev/null +++ b/plugins/cost-insights/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------|:-------------| +| history | package.json | +| @material-ui/styles | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:----------------------------|:-------------| +| canvas | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 798853d219..d4ac30d2e0 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.12.19-next.0", + "version": "0.12.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -44,7 +44,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@material-ui/styles": "^4.9.6", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@types/recharts": "^1.8.14", "classnames": "^2.2.6", "history": "^5.0.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index ca367deadd..10d7b23896 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-devtools-backend +## 0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/cli-common@0.1.13 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + +## 0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/config-loader@1.6.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.2.7-next.0 ### Patch Changes diff --git a/plugins/devtools-backend/README.md b/plugins/devtools-backend/README.md index 528e864783..c9226a92ab 100644 --- a/plugins/devtools-backend/README.md +++ b/plugins/devtools-backend/README.md @@ -10,7 +10,7 @@ Here's how to get the DevTools Backend up and running: ```sh # From the Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-devtools-backend + yarn --cwd packages/backend add @backstage/plugin-devtools-backend ``` 2. Then we will create a new file named `packages/backend/src/plugins/devtools.ts`, and add the diff --git a/plugins/devtools-backend/knip-report.md b/plugins/devtools-backend/knip-report.md new file mode 100644 index 0000000000..0c78f2475f --- /dev/null +++ b/plugins/devtools-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/minimist | package.json | +| @types/supertest | package.json | + diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index e35d8c4112..006de5bce9 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.2.7-next.0", + "version": "0.2.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-common/knip-report.md b/plugins/devtools-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/devtools-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index be753cb664..d088f41df5 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-devtools +## 0.1.9-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-devtools-common@0.1.8 + - @backstage/plugin-permission-react@0.4.20-next.0 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/devtools/README.md b/plugins/devtools/README.md index cb6fbb95fd..f6db8d1417 100644 --- a/plugins/devtools/README.md +++ b/plugins/devtools/README.md @@ -14,7 +14,7 @@ Lists helpful information about your current running Backstage instance such as: #### Backstage Version Reporting -The Backstage Version that is reported requires `backstage.json` to be present at the root of the running backstage instance. +The Backstage Version that is reported requires `backstage.json` to be present at the root of the running backstage instance. You may need to modify your Dockerfile to ensure `backstage.json` is copied into the `WORKDIR` of your image. ```sh @@ -66,7 +66,7 @@ To setup the DevTools frontend you'll need to do the following steps: ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-devtools + yarn --cwd packages/app add @backstage/plugin-devtools ``` 2. Now open the `packages/app/src/App.tsx` file @@ -206,7 +206,7 @@ To use the permission framework to secure the DevTools sidebar option you'll wan ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-devtools-common + yarn --cwd packages/app add @backstage/plugin-devtools-common ``` 2. Then open the `packages/app/src/components/Root/Root.tsx` file @@ -236,7 +236,7 @@ To use the permission framework to secure the DevTools route you'll want to do t ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-devtools-common + yarn --cwd packages/app add @backstage/plugin-devtools-common ``` 2. Then open the `packages/app/src/App.tsx` file @@ -341,7 +341,7 @@ To use this policy you'll need to make sure to add the `@backstage/plugin-devtoo ```sh # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-devtools-common +yarn --cwd packages/backend add @backstage/plugin-devtools-common ``` You'll also need to add these imports: diff --git a/plugins/devtools/knip-report.md b/plugins/devtools/knip-report.md new file mode 100644 index 0000000000..9f54e7f06d --- /dev/null +++ b/plugins/devtools/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 7639df94b8..ceb1f9628d 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.9-next.0", + "version": "0.1.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -56,7 +56,7 @@ "react-use": "^17.2.4" }, "peerDependencies": { - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index 6d363c3bc3..671b9c9cc8 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-dynatrace +## 9.0.0-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 8.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 8.0.4-next.0 ### Patch Changes diff --git a/plugins/dynatrace/README.md b/plugins/dynatrace/README.md index 9143b0ff9c..5e2394cee3 100644 --- a/plugins/dynatrace/README.md +++ b/plugins/dynatrace/README.md @@ -28,7 +28,7 @@ The Dynatrace plugin will require the following information, to be used in the c ``` # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-dynatrace +yarn --cwd packages/app add @backstage/plugin-dynatrace ``` 2. We created in our catalog the interface for using the integration with Dynatrace. diff --git a/plugins/dynatrace/knip-report.md b/plugins/dynatrace/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/dynatrace/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 23ff57d6c0..2eefbb002c 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "8.0.4-next.0", + "version": "9.0.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md index 9248c16404..c383d7327c 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-entity-feedback-backend +## 0.2.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## 0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-entity-feedback-common@0.1.3 + ## 0.2.7-next.0 ### Patch Changes diff --git a/plugins/entity-feedback-backend/README.md b/plugins/entity-feedback-backend/README.md index 49a8ce20e0..a3aae695e2 100644 --- a/plugins/entity-feedback-backend/README.md +++ b/plugins/entity-feedback-backend/README.md @@ -12,7 +12,7 @@ out of the box, this plugin will not work when you test it. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-entity-feedback-backend +yarn --cwd packages/backend add @backstage/plugin-entity-feedback-backend ``` ### Adding the plugin to your `packages/backend` diff --git a/plugins/entity-feedback-backend/knip-report.md b/plugins/entity-feedback-backend/knip-report.md new file mode 100644 index 0000000000..3e8751a225 --- /dev/null +++ b/plugins/entity-feedback-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index 013aff7146..de7d569867 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback-backend", - "version": "0.2.7-next.0", + "version": "0.2.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback-common/knip-report.md b/plugins/entity-feedback-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/entity-feedback-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index 69f503b584..929acd6eed 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-entity-feedback +## 0.2.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/entity-feedback/knip-report.md b/plugins/entity-feedback/knip-report.md new file mode 100644 index 0000000000..c767d8f623 --- /dev/null +++ b/plugins/entity-feedback/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index d16702c230..449fcb6215 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.2.13-next.0", + "version": "0.2.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@backstage/plugin-entity-feedback-common": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index 3c7c1579cf..43123c3c35 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-entity-validation +## 0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/entity-validation/README.md b/plugins/entity-validation/README.md index 7816262836..f831007a45 100644 --- a/plugins/entity-validation/README.md +++ b/plugins/entity-validation/README.md @@ -10,7 +10,7 @@ First of all, install the package in the `app` package by running the following ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-entity-validation +yarn --cwd packages/app add @backstage/plugin-entity-validation ``` Add the new route to the app by adding the following line: diff --git a/plugins/entity-validation/knip-report.md b/plugins/entity-validation/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/entity-validation/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index cdf3dc88da..105bc19b45 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-validation", - "version": "0.1.15-next.0", + "version": "0.1.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,8 +42,8 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@react-hookz/web": "^24.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@uiw/react-codemirror": "^4.9.3", "lodash": "^4.17.21", "react-use": "^17.2.4", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index 32f5f8f1d7..cae8875a0b 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/README.md b/plugins/events-backend-module-aws-sqs/README.md index 397de35c10..7ca4bb280d 100644 --- a/plugins/events-backend-module-aws-sqs/README.md +++ b/plugins/events-backend-module-aws-sqs/README.md @@ -38,7 +38,7 @@ events: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-aws-sqs +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-aws-sqs ``` ```ts title="packages/backend/src/index.ts" diff --git a/plugins/events-backend-module-aws-sqs/knip-report.md b/plugins/events-backend-module-aws-sqs/knip-report.md new file mode 100644 index 0000000000..f8ed497e3c --- /dev/null +++ b/plugins/events-backend-module-aws-sqs/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @aws-sdk/types | package.json | +| aws-sdk-client-mock | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index 2d27225196..d3fd818bf6 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.2.13-next.0", + "version": "0.2.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index ff61ec0c12..0d5bd9553f 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-events-backend-module-azure +## 0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-azure/README.md b/plugins/events-backend-module-azure/README.md index 457fd81fbc..61b3b63175 100644 --- a/plugins/events-backend-module-azure/README.md +++ b/plugins/events-backend-module-azure/README.md @@ -28,7 +28,7 @@ Install this module: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-azure +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-azure ``` ### Add to backend diff --git a/plugins/events-backend-module-azure/knip-report.md b/plugins/events-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..c0ed269e78 --- /dev/null +++ b/plugins/events-backend-module-azure/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index 94b71afc70..7ef276e3ce 100644 --- a/plugins/events-backend-module-azure/package.json +++ b/plugins/events-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-azure", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index 5fb99e39d2..ba6730d810 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-events-backend-module-bitbucket-cloud +## 0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/README.md b/plugins/events-backend-module-bitbucket-cloud/README.md index d70a70c87e..0a40ab2eea 100644 --- a/plugins/events-backend-module-bitbucket-cloud/README.md +++ b/plugins/events-backend-module-bitbucket-cloud/README.md @@ -28,7 +28,7 @@ Install this module: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-bitbucket-cloud +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-bitbucket-cloud ``` ### Add to backend diff --git a/plugins/events-backend-module-bitbucket-cloud/knip-report.md b/plugins/events-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..c0ed269e78 --- /dev/null +++ b/plugins/events-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 2ae9b32ac9..c3d8fee842 100644 --- a/plugins/events-backend-module-bitbucket-cloud/package.json +++ b/plugins/events-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-bitbucket-cloud", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index b641a9a8f9..3cbd67c0fb 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-events-backend-module-gerrit +## 0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/README.md b/plugins/events-backend-module-gerrit/README.md index 34b2d154be..b658fba366 100644 --- a/plugins/events-backend-module-gerrit/README.md +++ b/plugins/events-backend-module-gerrit/README.md @@ -27,7 +27,7 @@ Install this module: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-gerrit +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-gerrit ``` ### Add to backend diff --git a/plugins/events-backend-module-gerrit/knip-report.md b/plugins/events-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..c0ed269e78 --- /dev/null +++ b/plugins/events-backend-module-gerrit/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 941570b43b..3411ff59b7 100644 --- a/plugins/events-backend-module-gerrit/package.json +++ b/plugins/events-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gerrit", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index 7fd8bd9bc9..101e29d5e9 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-events-backend-module-github +## 0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-github/README.md b/plugins/events-backend-module-github/README.md index 7731d10d24..072877ee86 100644 --- a/plugins/events-backend-module-github/README.md +++ b/plugins/events-backend-module-github/README.md @@ -28,7 +28,7 @@ Install this module: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-github ``` Add the event router to the `EventsBackend` instance in `packages/backend/src/plugins/events.ts`: diff --git a/plugins/events-backend-module-github/knip-report.md b/plugins/events-backend-module-github/knip-report.md new file mode 100644 index 0000000000..c0ed269e78 --- /dev/null +++ b/plugins/events-backend-module-github/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 4c56579e6f..55c76a2f40 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index 1b6f9f2cef..eee1232877 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-events-backend-module-gitlab +## 0.1.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/README.md b/plugins/events-backend-module-gitlab/README.md index 13e30659a6..3d4919302f 100644 --- a/plugins/events-backend-module-gitlab/README.md +++ b/plugins/events-backend-module-gitlab/README.md @@ -27,7 +27,7 @@ Install this module: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-events-backend-module-gitlab ``` Add the event router to the `EventsBackend` instance in `packages/backend/src/plugins/events.ts`: diff --git a/plugins/events-backend-module-gitlab/knip-report.md b/plugins/events-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..c0ed269e78 --- /dev/null +++ b/plugins/events-backend-module-gitlab/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:--------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index ca5fd57c59..782cd6dcc2 100644 --- a/plugins/events-backend-module-gitlab/package.json +++ b/plugins/events-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gitlab", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index 26fe7dc08b..2e457eb3f6 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-events-backend-test-utils +## 0.1.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.2 + +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/events-backend-test-utils/knip-report.md b/plugins/events-backend-test-utils/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/events-backend-test-utils/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index 9a570e7863..5ad48e66ec 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-backend-test-utils", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", - "version": "0.1.20-next.0", + "version": "0.1.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index db5c82102d..6c50327ffd 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-events-backend +## 0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + +## 0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.2.19-next.0 ### Patch Changes diff --git a/plugins/events-backend/README.md b/plugins/events-backend/README.md index 2fd980f003..b8470101aa 100644 --- a/plugins/events-backend/README.md +++ b/plugins/events-backend/README.md @@ -21,7 +21,7 @@ to the used event broker. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-events-backend @backstage/plugin-events-node +yarn --cwd packages/backend add @backstage/plugin-events-backend @backstage/plugin-events-node ``` ### Add to backend diff --git a/plugins/events-backend/knip-report.md b/plugins/events-backend/knip-report.md new file mode 100644 index 0000000000..f97871a27b --- /dev/null +++ b/plugins/events-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:--------------------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-events-backend-test-utils | package.json | + diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 6980590c2f..3bf112a3e9 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.2.19-next.0", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index febba33d77..dbe5d6b09f 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-events-node +## 0.2.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## 0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + ## 0.2.19-next.0 ### Patch Changes diff --git a/plugins/events-node/knip-report.md b/plugins/events-node/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/events-node/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 0c4b63f5e2..328a91cfb2 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-node", "description": "The plugin-events-node module for @backstage/plugin-events-backend", - "version": "0.2.19-next.0", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index 09e9b21b55..2717878149 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @internal/plugin-todo-list-backend +## 1.0.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/errors@1.2.3 + +## 1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 1.0.22-next.0 ### Patch Changes diff --git a/plugins/example-todo-list-backend/knip-report.md b/plugins/example-todo-list-backend/knip-report.md new file mode 100644 index 0000000000..e31e20b852 --- /dev/null +++ b/plugins/example-todo-list-backend/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index d3b38bbaf2..1a564ab689 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.22-next.0", + "version": "1.0.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -12,7 +12,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/example-todo-list-backend" + "directory": "plugins/example-todo-list-backend" }, "publishConfig": { "access": "public", diff --git a/plugins/example-todo-list-common/knip-report.md b/plugins/example-todo-list-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/example-todo-list-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 1d984812f9..df2cd403c4 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/example-todo-list-common" + "directory": "plugins/example-todo-list-common" }, "sideEffects": false, "scripts": { diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 8dfacdd105..f09e5acecd 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,21 @@ # @internal/plugin-todo-list +## 1.0.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 1.0.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 1.0.21 ### Patch Changes diff --git a/plugins/example-todo-list/knip-report.md b/plugins/example-todo-list/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/example-todo-list/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 63634879df..88388ea563 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.21", + "version": "1.0.22-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md index 7d78e292e3..368f8cf2b4 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-explore-backend +## 0.0.20-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + +## 0.0.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 + ## 0.0.20-next.0 ### Patch Changes diff --git a/plugins/explore-backend/README.md b/plugins/explore-backend/README.md index aae3ff94b8..6767749eab 100644 --- a/plugins/explore-backend/README.md +++ b/plugins/explore-backend/README.md @@ -13,7 +13,7 @@ Install dependencies ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-explore-backend +yarn --cwd packages/backend add @backstage/plugin-explore-backend ``` Add feature @@ -45,7 +45,7 @@ Install dependencies ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-explore-backend +yarn --cwd packages/backend add @backstage/plugin-explore-backend ``` You'll need to add the plugin to the router in your `backend` package. You can @@ -90,7 +90,7 @@ Install dependencies ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-explore-backend @backstage/plugin-explore-common +yarn --cwd packages/backend add @backstage/plugin-explore-backend @backstage/plugin-explore-common ``` You'll need to add the plugin to the router in your `backend` package. You can diff --git a/plugins/explore-backend/knip-report.md b/plugins/explore-backend/knip-report.md new file mode 100644 index 0000000000..899e3d7956 --- /dev/null +++ b/plugins/explore-backend/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| node-fetch | package.json | +| @backstage/types | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 6589a40e29..450eccbcf5 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-explore-backend", - "version": "0.0.20-next.0", + "version": "0.0.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-common/knip-report.md b/plugins/explore-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/explore-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index d9668070c2..f319daec4a 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-explore-react +## 0.0.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-explore-common@0.0.2 + +## 0.0.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-explore-common@0.0.2 + ## 0.0.35 ### Patch Changes diff --git a/plugins/explore-react/knip-report.md b/plugins/explore-react/knip-report.md new file mode 100644 index 0000000000..0b4e23a04e --- /dev/null +++ b/plugins/explore-react/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @types/react | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index a3128511ac..59ee5f1a5c 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.35", + "version": "0.0.36-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 643d1674d0..5a078cd842 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-explore +## 0.4.16-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 796d427: Use the EntityDisplayName component for rendering Group nodes +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-explore-react@0.0.36-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.4.16-next.1 + +### Patch Changes + +- 07e7d12: Fix wording in API reference +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-explore-react@0.0.36-next.0 + - @backstage/plugin-search-common@1.2.10 + ## 0.4.16-next.0 ### Patch Changes diff --git a/plugins/explore/knip-report.md b/plugins/explore/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/explore/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 9293c39b10..07b770c06f 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.4.16-next.0", + "version": "0.4.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -58,7 +58,7 @@ "@backstage/plugin-search-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.2.6", "pluralize": "^8.0.0", "react-use": "^17.2.4" diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.test.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.test.tsx index 7c57de84bc..3f55c1fb4f 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.test.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.test.tsx @@ -21,6 +21,7 @@ import { } from '@backstage/plugin-catalog-react'; import { Entity } from '@backstage/catalog-model'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; +import { screen } from '@testing-library/react'; import React from 'react'; import { GroupsDiagram } from './GroupsDiagram'; @@ -55,7 +56,7 @@ describe('', () => { }), }; - const { getByText } = await renderInTestApp( + await renderInTestApp( , @@ -65,6 +66,9 @@ describe('', () => { }, }, ); - expect(getByText('Group A', { selector: 'div' })).toBeInTheDocument(); + + expect( + screen.getByRole('link', { name: 'my-namespace/group-a' }), + ).toBeInTheDocument(); }); }); diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx index f7f0eab0bd..dd0705908a 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx @@ -15,7 +15,6 @@ */ import { - GroupEntity, parseEntityRef, RELATION_CHILD_OF, stringifyEntityRef, @@ -31,8 +30,8 @@ import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; import { catalogApiRef, entityRouteRef, - humanizeEntityRef, getEntityRelations, + EntityDisplayName, } from '@backstage/plugin-catalog-react'; import { makeStyles, Typography, useTheme } from '@material-ui/core'; import ZoomOutMap from '@material-ui/icons/ZoomOutMap'; @@ -140,7 +139,9 @@ function RenderNode(props: DependencyGraphTypes.RenderNodeProps) { rx={theme.shape.borderRadius} className={classes.groupNode} /> - {props.node.name} + + <EntityDisplayName entityRef={props.node.id} hideIcon disableTooltip /> + ) {
- {props.node.name} +
@@ -210,9 +211,7 @@ export function GroupsDiagram(props: { nodes.push({ id: stringifyEntityRef(catalogItem), kind: catalogItem.kind, - name: - (catalogItem as GroupEntity).spec?.profile?.displayName || - humanizeEntityRef(catalogItem, { defaultKind: 'Group' }), + name: '', }); // Edge to parent diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx index 9b461fba7d..996cad63d6 100644 --- a/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx +++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsExplorerContent.test.tsx @@ -17,7 +17,7 @@ import { Entity } from '@backstage/catalog-model'; import { catalogApiRef, entityRouteRef } from '@backstage/plugin-catalog-react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; -import { waitFor } from '@testing-library/react'; +import { waitFor, screen } from '@testing-library/react'; import React from 'react'; import { GroupsExplorerContent } from '../GroupsExplorerContent'; @@ -73,24 +73,24 @@ describe('', () => { ]; catalogApi.getEntities.mockResolvedValue({ items: entities }); - const { getByText } = await renderInTestApp( + await renderInTestApp( , mountedRoutes, ); - await waitFor(() => { + await waitFor(() => expect( - getByText('my-namespace/group-a', { selector: 'div' }), - ).toBeInTheDocument(); - }); + screen.getByRole('link', { name: 'my-namespace/group-a' }), + ).toBeInTheDocument(), + ); }); it('renders a custom title', async () => { catalogApi.getEntities.mockResolvedValue({ items: [] }); - const { getByText } = await renderInTestApp( + await renderInTestApp( , @@ -98,7 +98,9 @@ describe('', () => { ); await waitFor(() => - expect(getByText('Our Teams', { selector: 'h2' })).toBeInTheDocument(), + expect( + screen.getByText('Our Teams', { selector: 'h2' }), + ).toBeInTheDocument(), ); }); @@ -106,7 +108,7 @@ describe('', () => { const catalogError = new Error('Network timeout'); catalogApi.getEntities.mockRejectedValueOnce(catalogError); - const { getAllByText } = await renderInTestApp( + await renderInTestApp( , @@ -114,7 +116,7 @@ describe('', () => { ); await waitFor(() => - expect(getAllByText(/Error: Network timeout/).length).not.toBe(0), + expect(screen.getAllByText(/Error: Network timeout/).length).not.toBe(0), ); }); }); diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 9d3abff382..355666d174 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-firehydrant +## 0.2.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.2.14-next.0 ### Patch Changes diff --git a/plugins/firehydrant/README.md b/plugins/firehydrant/README.md index 4472536245..aa56bd066a 100644 --- a/plugins/firehydrant/README.md +++ b/plugins/firehydrant/README.md @@ -18,7 +18,7 @@ The [FireHydrant](https://firehydrant.io) plugin brings incident management to B ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-firehydrant +yarn --cwd packages/app add @backstage/plugin-firehydrant ``` 2. Add the plugin to `EntityPage.tsx`, inside the `const overviewContent`'s parent `` component: diff --git a/plugins/firehydrant/knip-report.md b/plugins/firehydrant/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/firehydrant/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 0171f83c7d..a496795ffc 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.2.14-next.0", + "version": "0.2.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index eb6388bee3..f7eabd5eca 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-fossa +## 0.2.62-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.62-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.62-next.0 ### Patch Changes diff --git a/plugins/fossa/README.md b/plugins/fossa/README.md index 10ccba5ba7..2c69a9b309 100644 --- a/plugins/fossa/README.md +++ b/plugins/fossa/README.md @@ -10,7 +10,7 @@ The FOSSA Plugin displays code statistics from [FOSSA](https://fossa.com/). ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-fossa +yarn --cwd packages/app add @backstage/plugin-fossa ``` 2. Add the `EntityFossaCard` to the EntityPage: diff --git a/plugins/fossa/knip-report.md b/plugins/fossa/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/fossa/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 7eee0592f5..b6790763c7 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.62-next.0", + "version": "0.2.62-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cross-fetch": "^4.0.0", "luxon": "^3.0.0", "p-limit": "^3.0.2", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index cb9865d96c..945b6f1e32 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-gcalendar +## 0.3.23-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## 0.3.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + ## 0.3.22 ### Patch Changes diff --git a/plugins/gcalendar/knip-report.md b/plugins/gcalendar/knip-report.md new file mode 100644 index 0000000000..58fbe96097 --- /dev/null +++ b/plugins/gcalendar/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------------|:-------------| +| @maxim_mazurok/gapi.client.calendar | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @types/sanitize-html | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index c8a5b0bd0a..1720a35c77 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.22", + "version": "0.3.23-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,9 +36,9 @@ "@material-ui/icons": "^4.9.1", "@maxim_mazurok/gapi.client.calendar": "^3.0.20220408", "@tanstack/react-query": "^4.1.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.3.1", - "dompurify": "^2.3.6", + "dompurify": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "material-ui-popup-state": "^1.9.3", @@ -56,7 +56,7 @@ "@testing-library/dom": "^9.0.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", - "@types/dompurify": "^2.3.3", + "@types/dompurify": "^3.0.0", "@types/sanitize-html": "^2.6.2" }, "files": [ diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index bcdc653349..d2b4fce314 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-gcp-projects +## 0.3.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.3.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.3.45 ### Patch Changes diff --git a/plugins/gcp-projects/knip-report.md b/plugins/gcp-projects/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/gcp-projects/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 571267216c..d7d674477f 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.45", + "version": "0.3.46-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "@types/react": "^16.13.1 || ^17.0.0" }, "peerDependencies": { diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 2ce671930b..d9e3f199a3 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-git-release-manager +## 0.3.42-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration@1.9.0-next.0 + +## 0.3.42-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + ## 0.3.41 ### Patch Changes diff --git a/plugins/git-release-manager/api-report.md b/plugins/git-release-manager/api-report.md index d2dd7e909f..3e4c0847a7 100644 --- a/plugins/git-release-manager/api-report.md +++ b/plugins/git-release-manager/api-report.md @@ -317,42 +317,42 @@ function LinearProgressWithLabel(props: { // Warning: (ae-missing-release-tag) "MOCK_RELEASE_BRANCH_NAME_CALVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_BRANCH_NAME_CALVER = 'rc/2020.01.01_1'; +const MOCK_RELEASE_BRANCH_NAME_CALVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_BRANCH_NAME_SEMVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_BRANCH_NAME_SEMVER = 'rc/1.2.3'; +const MOCK_RELEASE_BRANCH_NAME_SEMVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER = 'rc-2020.01.01_1'; +const MOCK_RELEASE_CANDIDATE_TAG_NAME_CALVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER = 'rc-1.2.3'; +const MOCK_RELEASE_CANDIDATE_TAG_NAME_SEMVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_NAME_CALVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_NAME_CALVER = 'Version 2020.01.01_1'; +const MOCK_RELEASE_NAME_CALVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_NAME_SEMVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_NAME_SEMVER = 'Version 1.2.3'; +const MOCK_RELEASE_NAME_SEMVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_VERSION_TAG_NAME_CALVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_VERSION_TAG_NAME_CALVER = 'version-2020.01.01_1'; +const MOCK_RELEASE_VERSION_TAG_NAME_CALVER: string; // Warning: (ae-missing-release-tag) "MOCK_RELEASE_VERSION_TAG_NAME_SEMVER" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -const MOCK_RELEASE_VERSION_TAG_NAME_SEMVER = 'version-1.2.3'; +const MOCK_RELEASE_VERSION_TAG_NAME_SEMVER: string; // Warning: (ae-missing-release-tag) "mockBumpedTag" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/plugins/git-release-manager/knip-report.md b/plugins/git-release-manager/knip-report.md new file mode 100644 index 0000000000..7d4e715dc1 --- /dev/null +++ b/plugins/git-release-manager/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 7fc2a142ab..983c9197c6 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.41", + "version": "0.3.42-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "qs": "^6.10.1", "react-use": "^17.2.4", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 8212bb5350..f7556c1d30 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-github-actions +## 0.6.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## 0.6.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + ## 0.6.11-next.0 ### Patch Changes diff --git a/plugins/github-actions/README.md b/plugins/github-actions/README.md index d0b5ceb54d..4be62346a5 100644 --- a/plugins/github-actions/README.md +++ b/plugins/github-actions/README.md @@ -39,7 +39,7 @@ TBD ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-github-actions +yarn --cwd packages/app add @backstage/plugin-github-actions ``` 2. Add to the app `EntityPage` component: diff --git a/plugins/github-actions/knip-report.md b/plugins/github-actions/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/github-actions/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 5d0e243c9a..8371d674d2 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.6.11-next.0", + "version": "0.6.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -45,7 +45,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "git-url-parse": "^13.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 0378efa14f..337aaaa6ad 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-github-deployments +## 0.1.61-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.61-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + ## 0.1.61-next.0 ### Patch Changes diff --git a/plugins/github-deployments/README.md b/plugins/github-deployments/README.md index 5cc6ccdeaa..111e028eed 100644 --- a/plugins/github-deployments/README.md +++ b/plugins/github-deployments/README.md @@ -14,7 +14,7 @@ The GitHub Deployments Plugin displays recent deployments from GitHub. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-github-deployments +yarn --cwd packages/app add @backstage/plugin-github-deployments ``` 2. Add the `EntityGithubDeploymentsCard` to the EntityPage: diff --git a/plugins/github-deployments/knip-report.md b/plugins/github-deployments/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/github-deployments/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 713b8d16f6..e917a0bd44 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.61-next.0", + "version": "0.1.61-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@octokit/graphql": "^5.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index 5920fad0d3..a1c4743805 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-github-issues +## 0.2.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.19-next.0 ### Patch Changes diff --git a/plugins/github-issues/knip-report.md b/plugins/github-issues/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/github-issues/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index d2d47af426..2d754d60fa 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.19-next.0", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "octokit": "^3.0.0", "react-use": "^17.4.0" diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 886bdc7652..2c38900bae 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.24-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## 0.1.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.24-next.0 ### Patch Changes diff --git a/plugins/github-pull-requests-board/knip-report.md b/plugins/github-pull-requests-board/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/github-pull-requests-board/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 87737e4294..0c9433e5e4 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.24-next.0", + "version": "0.1.24-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -44,7 +44,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@octokit/rest": "^19.0.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "p-limit": "^4.0.0" }, diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index cd312c04bf..41dd407fd5 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-gitops-profiles +## 0.3.45-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.3.44 ### Patch Changes diff --git a/plugins/gitops-profiles/knip-report.md b/plugins/gitops-profiles/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/gitops-profiles/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index d9e509a49b..9c6aefc73c 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.44", + "version": "0.3.45-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -39,7 +39,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index eb4276a060..5065699d7c 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-gocd +## 0.1.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.1.36-next.0 ### Patch Changes diff --git a/plugins/gocd/knip-report.md b/plugins/gocd/knip-report.md new file mode 100644 index 0000000000..2f750523b0 --- /dev/null +++ b/plugins/gocd/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| qs | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 86b5f1eb54..d11b1ce795 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.36-next.0", + "version": "0.1.36-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index 62965f5a24..af6e1c246e 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-graphiql +## 0.3.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## 0.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.3.3-next.0 ### Patch Changes diff --git a/plugins/graphiql/README.md b/plugins/graphiql/README.md index 452dfa807d..ed47b96967 100644 --- a/plugins/graphiql/README.md +++ b/plugins/graphiql/README.md @@ -13,7 +13,7 @@ Start out by installing the plugin in your Backstage app: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-graphiql +yarn --cwd packages/app add @backstage/plugin-graphiql ``` ```diff diff --git a/plugins/graphiql/knip-report.md b/plugins/graphiql/knip-report.md new file mode 100644 index 0000000000..0fb6911e83 --- /dev/null +++ b/plugins/graphiql/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| graphql-ws | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @types/codemirror | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index ed4b6ee72b..3bbb276a38 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.3.3-next.0", + "version": "0.3.3-next.2", "publishConfig": { "access": "public" }, @@ -51,7 +51,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/frontend-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "graphiql": "^3.0.6", "graphql": "^16.0.0", "graphql-ws": "^5.4.1", diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index f65e23b8bb..75b5163061 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-graphql-voyager +## 0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.1.11 ### Patch Changes diff --git a/plugins/graphql-voyager/README.md b/plugins/graphql-voyager/README.md index 66ea63191b..d37ffdecca 100644 --- a/plugins/graphql-voyager/README.md +++ b/plugins/graphql-voyager/README.md @@ -13,7 +13,7 @@ To get started, first install the plugin with the following command: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-graphql-voyager +yarn --cwd packages/app add @backstage/plugin-graphql-voyager ``` ### Adding the page diff --git a/plugins/graphql-voyager/knip-report.md b/plugins/graphql-voyager/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/graphql-voyager/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index 2a2941b033..c6126daed2 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-voyager", "description": "Backstage plugin for GraphQL Voyager", - "version": "0.1.11", + "version": "0.1.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,7 +33,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "graphql-voyager": "^1.0.0-rc.31", "react-use": "^17.2.4" }, diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index 4470b9218e..83fab03632 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-home-react +## 0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.1.8-next.0 ### Patch Changes diff --git a/plugins/home-react/knip-report.md b/plugins/home-react/knip-report.md new file mode 100644 index 0000000000..a2badb7a17 --- /dev/null +++ b/plugins/home-react/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-------------------------|:-------------| +| @backstage/cli | package.json | +| @types/react-grid-layout | package.json | + diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 9d2e6b9dad..edf7379dfc 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home-react", "description": "A Backstage plugin that contains react components helps you build a home page", - "version": "0.1.8-next.0", + "version": "0.1.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@rjsf/utils": "5.16.1", + "@rjsf/utils": "5.17.0", "@types/react": "^16.13.1 || ^17.0.0" }, "peerDependencies": { diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 32a9c81161..8310c70b4b 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,43 @@ # @backstage/plugin-home +## 0.6.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- dc7ae8b: Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.6.2-next.1 + +### Patch Changes + +- 384c132: Added filter support for HomePageVisitedByType in order to enable filtering entities from the list +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/theme@0.5.0 + ## 0.6.2-next.0 ### Patch Changes diff --git a/plugins/home/README.md b/plugins/home/README.md index 066e637725..35f9cb0738 100644 --- a/plugins/home/README.md +++ b/plugins/home/README.md @@ -10,7 +10,7 @@ If you have a standalone app (you didn't clone this repo), then do ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-home +yarn --cwd packages/app add @backstage/plugin-home ``` ### Setting up the Home Page diff --git a/plugins/home/knip-report.md b/plugins/home/knip-report.md new file mode 100644 index 0000000000..e9ae64e960 --- /dev/null +++ b/plugins/home/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/home/package.json b/plugins/home/package.json index e8fa2b666c..a91e8ba1f5 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.6.2-next.0", + "version": "0.6.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -62,11 +62,11 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "luxon": "^3.4.3", "react-grid-layout": "1.3.4", diff --git a/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.test.tsx b/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.test.tsx index 427a1484d5..c49b41eb18 100644 --- a/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.test.tsx +++ b/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.test.tsx @@ -66,8 +66,7 @@ describe('', () => { }, ); const docsCardContent = getByTestId('docs-card-content'); - const docsEntity = getByText('Getting Started Docs'); - + const docsEntity = getByText('getting-started-with-idp'); expect(docsCardContent).toContainElement(docsEntity); }); }); diff --git a/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.tsx b/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.tsx index eb8d78b0cc..a7ba4d5e9b 100644 --- a/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.tsx +++ b/plugins/home/src/homePageComponents/FeaturedDocsCard/Content.tsx @@ -23,11 +23,16 @@ import { Progress, ErrorPanel, } from '@backstage/core-components'; -import { catalogApiRef, CatalogApi } from '@backstage/plugin-catalog-react'; +import { + catalogApiRef, + CatalogApi, + EntityDisplayName, +} from '@backstage/plugin-catalog-react'; import { useApi } from '@backstage/core-plugin-api'; import { EntityFilterQuery } from '@backstage/catalog-client'; import { makeStyles, Typography } from '@material-ui/core'; +import { stringifyEntityRef } from '@backstage/catalog-model'; /** * Props customizing the component. @@ -116,7 +121,7 @@ export const Content = (props: FeaturedDocsCardProps): JSX.Element => { }/` } > - {d.metadata.title} + {d.metadata.description && ( diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index f7b769c3e5..2db92262d5 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-ilert +## 0.2.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.19-next.0 ### Patch Changes diff --git a/plugins/ilert/README.md b/plugins/ilert/README.md index 814baea507..434cf8c0f0 100644 --- a/plugins/ilert/README.md +++ b/plugins/ilert/README.md @@ -27,7 +27,7 @@ Install the plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-ilert +yarn --cwd packages/app add @backstage/plugin-ilert ``` Add it to the `EntityPage.tsx`: diff --git a/plugins/ilert/knip-report.md b/plugins/ilert/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/ilert/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index de1dd4797a..2ec06785e2 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.2.19-next.0", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@material-ui/pickers": "^3.3.10", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "humanize-duration": "^3.26.0", "luxon": "^3.0.0", "react-use": "^17.2.4" diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 01502bc0a2..3c6eebd2f4 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-jenkins-backend +## 0.3.4-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.3.4-next.0 ### Patch Changes diff --git a/plugins/jenkins-backend/README.md b/plugins/jenkins-backend/README.md index d6f8fa5472..4cca86f86d 100644 --- a/plugins/jenkins-backend/README.md +++ b/plugins/jenkins-backend/README.md @@ -28,7 +28,7 @@ This plugin needs to be added to an existing backstage instance. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-jenkins-backend +yarn --cwd packages/backend add @backstage/plugin-jenkins-backend ``` Typically, this means creating a `src/plugins/jenkins.ts` file and adding a reference to it to `src/index.ts` diff --git a/plugins/jenkins-backend/knip-report.md b/plugins/jenkins-backend/knip-report.md new file mode 100644 index 0000000000..4e473a9f2e --- /dev/null +++ b/plugins/jenkins-backend/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index c7a97f56ef..f79c5bd1c6 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.3.4-next.0", + "version": "0.3.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md index 6d364dc40b..0b2ecf6b46 100644 --- a/plugins/jenkins-common/CHANGELOG.md +++ b/plugins/jenkins-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-jenkins-common +## 0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + ## 0.1.23 ### Patch Changes diff --git a/plugins/jenkins-common/knip-report.md b/plugins/jenkins-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/jenkins-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index d61bd6cede..77a2073f72 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.23", + "version": "0.1.24-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index d781ac91f4..8d0a465de8 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-jenkins +## 0.9.5-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + +## 0.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.24-next.0 + ## 0.9.5-next.0 ### Patch Changes diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index b62eaab514..bdbe0ac0d9 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -14,7 +14,7 @@ Website: [https://jenkins.io/](https://jenkins.io/) ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-jenkins +yarn --cwd packages/app add @backstage/plugin-jenkins ``` 2. Add and configure the [jenkins-backend](../jenkins-backend) plugin according to it's instructions diff --git a/plugins/jenkins/knip-report.md b/plugins/jenkins/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/jenkins/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 5a94f1f3ec..c8ca167784 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.9.5-next.0", + "version": "0.9.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,7 @@ "@backstage/plugin-jenkins-common": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 187033c6de..4d21265228 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-kafka-backend +## 0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.3.8-next.0 ### Patch Changes diff --git a/plugins/kafka-backend/knip-report.md b/plugins/kafka-backend/knip-report.md new file mode 100644 index 0000000000..c8923ea814 --- /dev/null +++ b/plugins/kafka-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| jest-when | package.json | +| @backstage/cli | package.json | +| @types/jest-when | package.json | + diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 283f24f001..4656f213ec 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.3.8-next.0", + "version": "0.3.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index 29c761cddc..87f0907776 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-kafka +## 0.3.30-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.3.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.3.30-next.0 ### Patch Changes diff --git a/plugins/kafka/knip-report.md b/plugins/kafka/knip-report.md new file mode 100644 index 0000000000..67f9dbc286 --- /dev/null +++ b/plugins/kafka/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| jest-when | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 16b2d5124b..3828a2e29a 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.30-next.0", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index f3ab4fcab6..ee736375ab 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,53 @@ # @backstage/plugin-kubernetes-backend +## 0.15.0-next.2 + +### Minor Changes + +- 666eff5: **BREAKING** The backend will fail to start if two clusters in the app-config + have the same name. The requirement for unique names has been declared in the + docs for some time, but is now enforced. + +### Patch Changes + +- 1c3cb3b: Backstage will log a warning whenever duplicate cluster names are detected -- + even if clusters sharing the same name come from separate locators. +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-kubernetes-node@0.1.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + +## 0.14.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-kubernetes-node@0.1.4-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.14.2-next.0 ### Patch Changes diff --git a/plugins/kubernetes-backend/knip-report.md b/plugins/kubernetes-backend/knip-report.md new file mode 100644 index 0000000000..29043eb8d9 --- /dev/null +++ b/plugins/kubernetes-backend/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:-------------------|:-------------| +| morgan | package.json | +| stream-buffers | package.json | +| @jest-mock/express | package.json | + +## Unused devDependencies (9) + +| Name | Location | +|:-------------------------------------------------------------|:-------------| +| ws | package.json | +| msw | package.json | +| supertest | package.json | +| @types/aws4 | package.json | +| @backstage/cli | package.json | +| @backstage/backend-app-api | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-permission-backend | package.json | +| @backstage/plugin-permission-backend-module-allow-all-policy | package.json | + diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 307bb1c42c..ead7708435 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.14.2-next.0", + "version": "0.15.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts index ad3203a16d..d36f10bb13 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts @@ -405,4 +405,25 @@ describe('ConfigClusterLocator', () => { `Invalid cluster 'cluster1': mock error`, ); }); + + it('fails on duplicate cluster names', () => { + const config: Config = new ConfigReader({ + clusters: [ + { + name: 'cluster', + url: 'url', + authProvider: 'authProvider', + }, + { + name: 'cluster', + url: 'url', + authProvider: 'authProvider', + }, + ], + }); + + expect(() => ConfigClusterLocator.fromConfig(config, authStrategy)).toThrow( + `Duplicate cluster name 'cluster'`, + ); + }); }); diff --git a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts index 19ba8634ad..6fd5f3b1cb 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts @@ -35,12 +35,17 @@ export class ConfigClusterLocator implements KubernetesClustersSupplier { config: Config, authStrategy: AuthenticationStrategy, ): ConfigClusterLocator { + const clusterNames = new Set(); return new ConfigClusterLocator( config.getConfigArray('clusters').map(c => { const authMetadataBlock = c.getOptional<{ [ANNOTATION_KUBERNETES_AUTH_PROVIDER]?: string; }>('authMetadata'); const name = c.getString('name'); + if (clusterNames.has(name)) { + throw new Error(`Duplicate cluster name '${name}'`); + } + clusterNames.add(name); const authProvider = authMetadataBlock?.[ANNOTATION_KUBERNETES_AUTH_PROVIDER] ?? c.getOptionalString('authProvider'); diff --git a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts index 849a7839e2..e6e19a6aaa 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts @@ -18,8 +18,18 @@ import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernete import '@backstage/backend-common'; import { ConfigReader, Config } from '@backstage/config'; import { GkeClusterLocator } from './GkeClusterLocator'; +import * as container from '@google-cloud/container'; const mockedListClusters = jest.fn(); +jest.mock('@google-cloud/container', () => { + return { + v1: { + ClusterManagerClient: jest.fn().mockImplementation(() => { + mockedListClusters(); + }), + }, + }; +}); describe('GkeClusterLocator', () => { beforeEach(() => { @@ -485,5 +495,18 @@ describe('GkeClusterLocator', () => { }, ]); }); + it('constructs ClusterManagerClient with identifying metadata', async () => { + const configs: Config = new ConfigReader({ + type: 'gke', + projectId: 'some-project', + }); + + GkeClusterLocator.fromConfig(configs); + + expect(container.v1.ClusterManagerClient).toHaveBeenCalledWith({ + libName: 'backstage/kubernetes-backend.GkeClusterLocator', + libVersion: expect.any(String), + }); + }); }); }); diff --git a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts index 03f5bda103..3b3d74e17f 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts @@ -21,6 +21,7 @@ import * as container from '@google-cloud/container'; import { Duration } from 'luxon'; import { runPeriodically } from '../service/runPeriodically'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; +import packageinfo from '../../package.json'; interface MatchResourceLabelEntry { key: string; @@ -80,13 +81,17 @@ export class GkeClusterLocator implements KubernetesClustersSupplier { return gkeClusterLocator; } + // Added an `x-goog-api-client` header to API requests made by the GKE cluster locator to clearly identify API requests from this plugin. static fromConfig( config: Config, refreshInterval: Duration | undefined = undefined, ): GkeClusterLocator { return GkeClusterLocator.fromConfigWithClient( config, - new container.v1.ClusterManagerClient(), + new container.v1.ClusterManagerClient({ + libName: `backstage/kubernetes-backend.GkeClusterLocator`, + libVersion: packageinfo.version, + }), refreshInterval, ); } diff --git a/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts index 9bbab42443..f825203505 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts @@ -15,18 +15,25 @@ */ import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common'; -import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; +import { + ClusterDetails, + KubernetesClustersSupplier, +} from '@backstage/plugin-kubernetes-node'; +import dns from 'node:dns'; export class LocalKubectlProxyClusterLocator implements KubernetesClustersSupplier { private readonly clusterDetails: ClusterDetails[]; + // verbatim: when false, IPv4 addresses are placed before IPv6 addresses, ignoring the order from the DNS resolver + // By default kubectl proxy listens on 127.0.0.1 instead of [::1] + private lookupPromise = dns.promises.lookup('localhost', { verbatim: false }); public constructor() { this.clusterDetails = [ { name: 'local', - url: 'http:/localhost:8001', + url: 'http://localhost:8001', authMetadata: { [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'localKubectlProxy', }, @@ -36,6 +43,8 @@ export class LocalKubectlProxyClusterLocator } async getClusters(): Promise { + const lookupResolution = await this.lookupPromise; + this.clusterDetails[0].url = `http://${lookupResolution.address}:8001`; return this.clusterDetails; } } diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts index beb9fc9cfe..fcdac32ecf 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { getVoidLogger } from '@backstage/backend-common'; import { Config, ConfigReader } from '@backstage/config'; import { CatalogApi } from '@backstage/catalog-client'; import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common'; @@ -60,6 +61,7 @@ describe('getCombinedClusterSupplier', () => { config, catalogApi, mockStrategy, + getVoidLogger(), ); const result = await clusterSupplier.getClusters(); @@ -99,9 +101,64 @@ describe('getCombinedClusterSupplier', () => { config, catalogApi, new DispatchStrategy({ authStrategyMap: {} }), + getVoidLogger(), ), ).toThrow( new Error('Unsupported kubernetes.clusterLocatorMethods: "magic"'), ); }); + + it('logs a warning when two clusters have the same name', async () => { + const logger = getVoidLogger(); + const warn = jest.spyOn(logger, 'warn'); + const config: Config = new ConfigReader( + { + kubernetes: { + clusterLocatorMethods: [ + { + type: 'config', + clusters: [ + { name: 'cluster', url: 'url', authProvider: 'authProvider' }, + ], + }, + { type: 'catalog' }, + ], + }, + }, + 'ctx', + ); + const mockStrategy: jest.Mocked = { + getCredential: jest.fn(), + validateCluster: jest.fn().mockReturnValue([]), + presentAuthMetadata: jest.fn(), + }; + catalogApi = { + getEntities: jest.fn().mockResolvedValue({ + items: [{ metadata: { annotations: {}, name: 'cluster' } }], + }), + getEntitiesByRefs: jest.fn(), + queryEntities: jest.fn(), + getEntityAncestors: jest.fn(), + getEntityByRef: jest.fn(), + removeEntityByUid: jest.fn(), + refreshEntity: jest.fn(), + getEntityFacets: jest.fn(), + getLocationById: jest.fn(), + getLocationByRef: jest.fn(), + addLocation: jest.fn(), + removeLocationById: jest.fn(), + getLocationByEntity: jest.fn(), + validateEntity: jest.fn(), + }; + + const clusterSupplier = getCombinedClusterSupplier( + config, + catalogApi, + mockStrategy, + logger, + ); + await clusterSupplier.getClusters(); + + expect(warn).toHaveBeenCalledWith(`Duplicate cluster name 'cluster'`); + }); }); diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.ts b/plugins/kubernetes-backend/src/cluster-locator/index.ts index 03a459b634..2dfd3178f7 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.ts @@ -14,21 +14,25 @@ * limitations under the License. */ +import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Duration } from 'luxon'; +import { Logger } from 'winston'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; import { AuthenticationStrategy } from '../auth/types'; import { ConfigClusterLocator } from './ConfigClusterLocator'; import { GkeClusterLocator } from './GkeClusterLocator'; import { CatalogClusterLocator } from './CatalogClusterLocator'; -import { CatalogApi } from '@backstage/catalog-client'; import { LocalKubectlProxyClusterLocator } from './LocalKubectlProxyLocator'; class CombinedClustersSupplier implements KubernetesClustersSupplier { - constructor(readonly clusterSuppliers: KubernetesClustersSupplier[]) {} + constructor( + readonly clusterSuppliers: KubernetesClustersSupplier[], + readonly logger: Logger, + ) {} async getClusters(): Promise { - return await Promise.all( + const clusters = await Promise.all( this.clusterSuppliers.map(supplier => supplier.getClusters()), ) .then(res => { @@ -37,6 +41,23 @@ class CombinedClustersSupplier implements KubernetesClustersSupplier { .catch(e => { throw e; }); + return this.warnDuplicates(clusters); + } + + private warnDuplicates(clusters: ClusterDetails[]): ClusterDetails[] { + const clusterNames = new Set(); + const duplicatedNames = new Set(); + for (const clusterName of clusters.map(c => c.name)) { + if (clusterNames.has(clusterName)) { + duplicatedNames.add(clusterName); + } else { + clusterNames.add(clusterName); + } + } + for (const clusterName of duplicatedNames) { + this.logger.warn(`Duplicate cluster name '${clusterName}'`); + } + return clusters; } } @@ -44,6 +65,7 @@ export const getCombinedClusterSupplier = ( rootConfig: Config, catalogClient: CatalogApi, authStrategy: AuthenticationStrategy, + logger: Logger, refreshInterval: Duration | undefined = undefined, ): KubernetesClustersSupplier => { const clusterSuppliers = rootConfig @@ -72,5 +94,5 @@ export const getCombinedClusterSupplier = ( } }); - return new CombinedClustersSupplier(clusterSuppliers); + return new CombinedClustersSupplier(clusterSuppliers, logger); }; diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index 1b4aca4160..74a8a68e53 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -16,30 +16,29 @@ import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; + import { - KubernetesObjectsProviderExtensionPoint, - kubernetesObjectsProviderExtensionPoint, - KubernetesObjectsProvider, - KubernetesClusterSupplierExtensionPoint, - kubernetesClusterSupplierExtensionPoint, - KubernetesClustersSupplier, - KubernetesAuthStrategyExtensionPoint, - AuthenticationStrategy, kubernetesAuthStrategyExtensionPoint, - KubernetesFetcher, - KubernetesServiceLocatorExtensionPoint, - KubernetesServiceLocator, - kubernetesServiceLocatorExtensionPoint, -} from '@backstage/plugin-kubernetes-node'; -import { - KubernetesFetcherExtensionPoint, + kubernetesClusterSupplierExtensionPoint, kubernetesFetcherExtensionPoint, + kubernetesObjectsProviderExtensionPoint, + kubernetesServiceLocatorExtensionPoint, + type AuthenticationStrategy, + type KubernetesAuthStrategyExtensionPoint, + type KubernetesClusterSupplierExtensionPoint, + type KubernetesClustersSupplier, + type KubernetesFetcher, + type KubernetesFetcherExtensionPoint, + type KubernetesObjectsProvider, + type KubernetesObjectsProviderExtensionPoint, + type KubernetesServiceLocator, + type KubernetesServiceLocatorExtensionPoint, } from '@backstage/plugin-kubernetes-node'; class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint { diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 81cc3d471d..8cc9b8a8b6 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -243,6 +243,7 @@ export class KubernetesBuilder { config, this.env.catalogApi, new DispatchStrategy({ authStrategyMap: this.getAuthStrategyMap() }), + this.env.logger, refreshInterval, ); diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index f2eb61e7f9..527cf94a6a 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -646,7 +646,7 @@ describe('KubernetesProxy', () => { }); worker.use( - rest.get('http://localhost:8001/api/v1/namespaces', (req, res, ctx) => { + rest.get('http://127.0.0.1:8001/api/v1/namespaces', (req, res, ctx) => { return req.headers.get('Authorization') ? res(ctx.status(401)) : res( diff --git a/plugins/kubernetes-cluster/CHANGELOG.md b/plugins/kubernetes-cluster/CHANGELOG.md index d68450a87c..bef8de11d5 100644 --- a/plugins/kubernetes-cluster/CHANGELOG.md +++ b/plugins/kubernetes-cluster/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-kubernetes-cluster +## 0.0.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.0.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.0.6-next.0 ### Patch Changes diff --git a/plugins/kubernetes-cluster/knip-report.md b/plugins/kubernetes-cluster/knip-report.md new file mode 100644 index 0000000000..963f8f85a6 --- /dev/null +++ b/plugins/kubernetes-cluster/knip-report.md @@ -0,0 +1,22 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| luxon | package.json | +| lodash | package.json | +| js-yaml | package.json | +| cronstrue | package.json | +| @kubernetes-models/base | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/jest-dom | package.json | + diff --git a/plugins/kubernetes-cluster/package.json b/plugins/kubernetes-cluster/package.json index 0d7b7dce47..34a528e994 100644 --- a/plugins/kubernetes-cluster/package.json +++ b/plugins/kubernetes-cluster/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-cluster", "description": "A Backstage plugin that shows details of Kubernetes clusters", - "version": "0.0.6-next.0", + "version": "0.0.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -44,7 +44,7 @@ "@kubernetes-models/base": "^4.0.1", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cronstrue": "^2.2.0", "js-yaml": "^4.0.0", "kubernetes-models": "^4.1.0", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index ab8fd5cb9a..7150d5a457 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kubernetes-common +## 0.7.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + ## 0.7.4-next.0 ### Patch Changes diff --git a/plugins/kubernetes-common/knip-report.md b/plugins/kubernetes-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/kubernetes-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 647618a62d..71b488a330 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.7.4-next.0", + "version": "0.7.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-node/CHANGELOG.md b/plugins/kubernetes-node/CHANGELOG.md index 8f320e583c..611ce5db1c 100644 --- a/plugins/kubernetes-node/CHANGELOG.md +++ b/plugins/kubernetes-node/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-kubernetes-node +## 0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.1.4-next.1 + +### Patch Changes + +- cceed8a: Introduced `PinnipedHelper` class to enable authentication to Kubernetes clusters through Pinniped +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/kubernetes-node/knip-report.md b/plugins/kubernetes-node/knip-report.md new file mode 100644 index 0000000000..f45a227afc --- /dev/null +++ b/plugins/kubernetes-node/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused devDependencies (7) + +| Name | Location | +|:-------------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-common | package.json | +| @backstage/backend-app-api | package.json | +| @backstage/backend-test-utils | package.json | +| @backstage/plugin-kubernetes-backend | package.json | + diff --git a/plugins/kubernetes-node/package.json b/plugins/kubernetes-node/package.json index f09d1165e2..aeaa1c3dc4 100644 --- a/plugins/kubernetes-node/package.json +++ b/plugins/kubernetes-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-node", "description": "Node.js library for the kubernetes plugin", - "version": "0.1.4-next.0", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/kubernetes-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/kubernetes-react/CHANGELOG.md b/plugins/kubernetes-react/CHANGELOG.md index 643fea0159..122041918b 100644 --- a/plugins/kubernetes-react/CHANGELOG.md +++ b/plugins/kubernetes-react/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-kubernetes-react +## 0.3.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.3.0-next.1 + +### Patch Changes + +- 3c184af: Extracted common dialog component. +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.3.0-next.0 ### Minor Changes diff --git a/plugins/kubernetes-react/knip-report.md b/plugins/kubernetes-react/knip-report.md new file mode 100644 index 0000000000..176a3af098 --- /dev/null +++ b/plugins/kubernetes-react/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| jest-websocket-mock | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/kubernetes-react/package.json b/plugins/kubernetes-react/package.json index 0d722402ba..45df0bacb2 100644 --- a/plugins/kubernetes-react/package.json +++ b/plugins/kubernetes-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-react", "description": "Web library for the kubernetes-react plugin", - "version": "0.3.0-next.0", + "version": "0.3.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/kubernetes-react" + }, "backstage": { "role": "web-library" }, @@ -37,7 +42,7 @@ "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.11.3", "@material-ui/lab": "^4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cronstrue": "^2.32.0", "js-yaml": "^4.1.0", "kubernetes-models": "^4.3.1", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index 7cee4eda45..f3b031db19 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-kubernetes +## 0.11.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-kubernetes-react@0.3.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + +## 0.11.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-kubernetes-react@0.3.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-kubernetes-common@0.7.4-next.1 + ## 0.11.5-next.0 ### Patch Changes diff --git a/plugins/kubernetes/knip-report.md b/plugins/kubernetes/knip-report.md new file mode 100644 index 0000000000..b164678b81 --- /dev/null +++ b/plugins/kubernetes/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (11) + +| Name | Location | +|:--------------------------------|:-------------| +| xterm | package.json | +| luxon | package.json | +| lodash | package.json | +| js-yaml | package.json | +| cronstrue | package.json | +| xterm-addon-fit | package.json | +| kubernetes-models | package.json | +| xterm-addon-attach | package.json | +| @kubernetes/client-node | package.json | +| @kubernetes-models/base | package.json | +| @kubernetes-models/apimachinery | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 39a7a938a2..ef14922f9b 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.11.5-next.0", + "version": "0.11.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -44,7 +44,7 @@ "@kubernetes-models/base": "^4.0.1", "@kubernetes/client-node": "0.20.0", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cronstrue": "^2.2.0", "js-yaml": "^4.0.0", "kubernetes-models": "^4.1.0", diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md index ddfbe1a7c5..0be3ed1854 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-lighthouse-backend +## 0.4.2-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## 0.4.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + ## 0.4.2-next.0 ### Patch Changes diff --git a/plugins/lighthouse-backend/README.md b/plugins/lighthouse-backend/README.md index 687467f1d5..06455d90b4 100644 --- a/plugins/lighthouse-backend/README.md +++ b/plugins/lighthouse-backend/README.md @@ -8,7 +8,7 @@ Lighthouse Backend allows you to run scheduled lighthouse Tests for each Website ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-lighthouse-backend +yarn --cwd packages/backend add @backstage/plugin-lighthouse-backend ``` 2. Create a `lighthouse.ts` file inside `packages/backend/src/plugins/`: diff --git a/plugins/lighthouse-backend/knip-report.md b/plugins/lighthouse-backend/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/lighthouse-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index 9006c24488..5e1dd9c304 100644 --- a/plugins/lighthouse-backend/package.json +++ b/plugins/lighthouse-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse-backend", "description": "Backend functionalities for lighthouse", - "version": "0.4.2-next.0", + "version": "0.4.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse-common/knip-report.md b/plugins/lighthouse-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/lighthouse-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index e93b449c5e..b359686bdb 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-lighthouse +## 0.4.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-lighthouse-common@0.1.4 + +## 0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-lighthouse-common@0.1.4 + ## 0.4.15-next.0 ### Patch Changes diff --git a/plugins/lighthouse/README.md b/plugins/lighthouse/README.md index e834ad39c1..ee0e1dfd1d 100644 --- a/plugins/lighthouse/README.md +++ b/plugins/lighthouse/README.md @@ -29,7 +29,7 @@ When you have an instance running that Backstage can hook into, first install th ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-lighthouse +yarn --cwd packages/app add @backstage/plugin-lighthouse ``` Modify your app routes in `App.tsx` to include the `LighthousePage` component exported from the plugin, for example: diff --git a/plugins/lighthouse/knip-report.md b/plugins/lighthouse/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/lighthouse/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 104396d6d4..4887e63a92 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.4.15-next.0", + "version": "0.4.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/lighthouse/src/components/Intro/index.tsx b/plugins/lighthouse/src/components/Intro/index.tsx index 8701c473aa..4c102b7587 100644 --- a/plugins/lighthouse/src/components/Intro/index.tsx +++ b/plugins/lighthouse/src/components/Intro/index.tsx @@ -52,7 +52,7 @@ When you have an instance running that Backstage can hook into, first install th \`\`\`sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-lighthouse +yarn --cwd packages/app add @backstage/plugin-lighthouse \`\`\` Modify your app routes in \`App.tsx\` to include the \`LighthousePage\` component exported from the plugin, for example: diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md index dd2ca24981..7656050131 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,40 @@ # @backstage/plugin-linguist-backend +## 0.5.7-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-linguist-common@0.1.2 + +## 0.5.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-linguist-common@0.1.2 + ## 0.5.7-next.0 ### Patch Changes diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index d2ed7f5f03..3bc441c238 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -14,7 +14,7 @@ Here's how to get the backend up and running: ```sh # From the Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-linguist-backend + yarn --cwd packages/backend add @backstage/plugin-linguist-backend ``` 2. Then we will create a new file named `packages/backend/src/plugins/linguist.ts`, and add the diff --git a/plugins/linguist-backend/knip-report.md b/plugins/linguist-backend/knip-report.md new file mode 100644 index 0000000000..8588b69130 --- /dev/null +++ b/plugins/linguist-backend/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/plugin-auth-node | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| js-yaml | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 7acae2049c..2ec9cf6136 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.5.7-next.0", + "version": "0.5.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist-common/knip-report.md b/plugins/linguist-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/linguist-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 866d1f94f6..a4d3d776dd 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,35 @@ # @backstage/plugin-linguist +## 0.1.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## 0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/linguist/README.md b/plugins/linguist/README.md index e7cad1c8e0..7ad70f1db6 100644 --- a/plugins/linguist/README.md +++ b/plugins/linguist/README.md @@ -55,7 +55,7 @@ To setup the Linguist Card frontend you'll need to do the following steps: ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-linguist + yarn --cwd packages/app add @backstage/plugin-linguist ``` 2. Second we need to add the `EntityLinguistCard` extension to the entity page in your app: diff --git a/plugins/linguist/knip-report.md b/plugins/linguist/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/linguist/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index 6f20f2b007..4d308b2f73 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.15-next.0", + "version": "0.1.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -52,7 +52,7 @@ "@backstage/plugin-linguist-common": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^2.0.2", "react-use": "^17.2.4", "slugify": "^1.6.4" diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index 86ea39fcff..e307afa32d 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-microsoft-calendar +## 0.1.12-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## 0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + ## 0.1.11 ### Patch Changes diff --git a/plugins/microsoft-calendar/README.md b/plugins/microsoft-calendar/README.md index 3dcf58c418..f5ba17bde3 100644 --- a/plugins/microsoft-calendar/README.md +++ b/plugins/microsoft-calendar/README.md @@ -25,7 +25,7 @@ The following sections will help you set up the Microsoft calendar plugin. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-microsoft-calendar +yarn --cwd packages/app add @backstage/plugin-microsoft-calendar ``` 2. Import the Microsoft calendar React component from `@backstage/plugin-microsoft-calendar`. diff --git a/plugins/microsoft-calendar/knip-report.md b/plugins/microsoft-calendar/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/microsoft-calendar/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index aec094c029..aca81f8ad2 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-microsoft-calendar", - "version": "0.1.11", + "version": "0.1.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -55,9 +55,9 @@ "@material-ui/icons": "^4.9.1", "@microsoft/microsoft-graph-types": "^2.25.0", "@tanstack/react-query": "^4.1.3", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.3.1", - "dompurify": "^2.3.6", + "dompurify": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "material-ui-popup-state": "^1.9.3", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index ac5d043efe..6554f19ffd 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-newrelic-dashboard +## 0.3.5-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.3.5-next.0 ### Patch Changes diff --git a/plugins/newrelic-dashboard/knip-report.md b/plugins/newrelic-dashboard/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/newrelic-dashboard/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index e5a63a6971..8c17f4a34f 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.3.5-next.0", + "version": "0.3.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index 8935f6c619..535e317b0b 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-newrelic +## 0.3.45-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.3.45-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.3.44 ### Patch Changes diff --git a/plugins/newrelic/README.md b/plugins/newrelic/README.md index 14049ba39c..14e2c0005d 100644 --- a/plugins/newrelic/README.md +++ b/plugins/newrelic/README.md @@ -48,7 +48,7 @@ APIs. 2. Add a dependency to your `packages/app/package.json`: ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-newrelic + yarn --cwd packages/app add @backstage/plugin-newrelic ``` 3. Add the `NewRelicPage` to your `packages/app/src/App.tsx`: diff --git a/plugins/newrelic/knip-report.md b/plugins/newrelic/knip-report.md new file mode 100644 index 0000000000..a7fde3968b --- /dev/null +++ b/plugins/newrelic/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:-----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index a67a2203d5..407fc9b1af 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.44", + "version": "0.3.45-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -38,7 +38,7 @@ "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "parse-link-header": "^2.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/nomad-backend/CHANGELOG.md b/plugins/nomad-backend/CHANGELOG.md index 2c93b3a3d0..b125197e3d 100644 --- a/plugins/nomad-backend/CHANGELOG.md +++ b/plugins/nomad-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-nomad-backend +## 0.1.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.12-next.0 ### Patch Changes diff --git a/plugins/nomad-backend/README.md b/plugins/nomad-backend/README.md index 231f1ddccb..9f530bd943 100644 --- a/plugins/nomad-backend/README.md +++ b/plugins/nomad-backend/README.md @@ -22,7 +22,7 @@ In your `packages/backend/src/index.ts` make the following changes: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-nomad-backend +yarn --cwd packages/backend add @backstage/plugin-nomad-backend ``` 2. Create a `nomad.ts` file inside `packages/backend/src/plugins/`: diff --git a/plugins/nomad-backend/knip-report.md b/plugins/nomad-backend/knip-report.md new file mode 100644 index 0000000000..e31e20b852 --- /dev/null +++ b/plugins/nomad-backend/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/nomad-backend/package.json b/plugins/nomad-backend/package.json index c44721a581..4881c8c05e 100644 --- a/plugins/nomad-backend/package.json +++ b/plugins/nomad-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad-backend", - "version": "0.1.12-next.0", + "version": "0.1.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad/CHANGELOG.md b/plugins/nomad/CHANGELOG.md index e9d5afb1a1..2e9949d522 100644 --- a/plugins/nomad/CHANGELOG.md +++ b/plugins/nomad/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-nomad +## 0.1.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.11-next.0 ### Patch Changes diff --git a/plugins/nomad/README.md b/plugins/nomad/README.md index da14a0a3f3..443669b71a 100644 --- a/plugins/nomad/README.md +++ b/plugins/nomad/README.md @@ -31,7 +31,7 @@ If your Nomad cluster has ACLs enabled, you will need a `token` with at least th ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-nomad +yarn --cwd packages/app add @backstage/plugin-nomad ``` ### Configuration diff --git a/plugins/nomad/knip-report.md b/plugins/nomad/knip-report.md new file mode 100644 index 0000000000..9f54e7f06d --- /dev/null +++ b/plugins/nomad/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/nomad/package.json b/plugins/nomad/package.json index 17c345c761..8f9788bc89 100644 --- a/plugins/nomad/package.json +++ b/plugins/nomad/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad", - "version": "0.1.11-next.0", + "version": "0.1.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,7 +35,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.3.0", "react-use": "^17.2.4" }, diff --git a/plugins/catalog-backend-module-bitbucket/.eslintrc.js b/plugins/notifications-backend/.eslintrc.js similarity index 100% rename from plugins/catalog-backend-module-bitbucket/.eslintrc.js rename to plugins/notifications-backend/.eslintrc.js diff --git a/plugins/notifications-backend/CHANGELOG.md b/plugins/notifications-backend/CHANGELOG.md new file mode 100644 index 0000000000..2253dc57a6 --- /dev/null +++ b/plugins/notifications-backend/CHANGELOG.md @@ -0,0 +1,19 @@ +# @backstage/plugin-notifications-backend + +## 0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/plugin-notifications-node@0.0.1-next.0 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 diff --git a/plugins/notifications-backend/README.md b/plugins/notifications-backend/README.md new file mode 100644 index 0000000000..233d0e5e21 --- /dev/null +++ b/plugins/notifications-backend/README.md @@ -0,0 +1,77 @@ +# notifications + +Welcome to the notifications backend plugin! + +## Getting started + +Add the notifications to your backend: + +```ts +const backend = createBackend(); +// ... +backend.add(import('@backstage/plugin-notifications-backend')); +``` + +For users to be able to see notifications in real-time, you have to install also +the signals plugin (`@backstage/plugin-signals-node`, `@backstage/plugin-signals-backend`, and +`@backstage/plugin-signals`). + +## Extending Notifications + +The notifications can be extended with `NotificationProcessor`. These processors allow to decorate notifications +before they are sent or/and send the notifications to external services. + +Start off by creating a notification processor: + +```ts +import { Notification } from '@backstage/plugin-notifications-common'; +import { NotificationProcessor } from '@backstage/plugin-notifications-node'; + +class MyNotificationProcessor implements NotificationProcessor { + async decorate(notification: Notification): Promise { + if (notification.origin === 'plugin-my-plugin') { + notification.payload.icon = 'my-icon'; + } + return notification; + } + + async send(notification: Notification): Promise { + nodemailer.sendEmail({ + from: 'backstage', + to: 'user', + subject: notification.payload.title, + text: notification.payload.description, + }); + } +} +``` + +Both of the processing functions are optional, and you can implement only one of them. + +Add the notification processor to the notification system by: + +```ts +import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node'; +import { Notification } from '@backstage/plugin-notifications-common'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + notifications: notificationsProcessingExtensionPoint, + // ... + }, + async init({ notifications }) { + // ... + notifications.addProcessor(new MyNotificationProcessor()); + }, + }); + }, +}); +``` + +## Sending notifications + +To be able to send notifications to users, you have to integrate the `@backstage/plugin-notifications-node` +to your application and plugins. diff --git a/plugins/notifications-backend/api-report.md b/plugins/notifications-backend/api-report.md new file mode 100644 index 0000000000..6add3000f1 --- /dev/null +++ b/plugins/notifications-backend/api-report.md @@ -0,0 +1,13 @@ +## API Report File for "@backstage/plugin-notifications-backend" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; + +// @public +const notificationsPlugin: () => BackendFeature; +export default notificationsPlugin; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/notifications-backend/catalog-info.yaml b/plugins/notifications-backend/catalog-info.yaml new file mode 100644 index 0000000000..66b39c39df --- /dev/null +++ b/plugins/notifications-backend/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-notifications-backend + title: '@backstage/plugin-notifications-backend' +spec: + lifecycle: experimental + type: backstage-backend-plugin + owner: maintainers diff --git a/plugins/notifications-backend/knip-report.md b/plugins/notifications-backend/knip-report.md new file mode 100644 index 0000000000..07cbe4037a --- /dev/null +++ b/plugins/notifications-backend/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:------------------|:-------------| +| node-fetch | package.json | +| @backstage/config | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/notifications-backend/migrations/20231215_init.js b/plugins/notifications-backend/migrations/20231215_init.js new file mode 100644 index 0000000000..a1e57237b6 --- /dev/null +++ b/plugins/notifications-backend/migrations/20231215_init.js @@ -0,0 +1,44 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +exports.up = async function up(knex) { + await knex.schema.createTable('notification', table => { + table.uuid('id').primary(); + table.string('user', 255).notNullable(); + table.string('title').notNullable(); + table.text('description').nullable(); + table.string('severity', 8).notNullable(); + table.text('link').notNullable(); + table.string('origin', 255).notNullable(); + table.string('scope', 255).nullable(); + table.string('topic', 255).nullable(); + table.datetime('created').defaultTo(knex.fn.now()).notNullable(); + table.datetime('updated').nullable(); + table.datetime('read').nullable(); + table.datetime('done').nullable(); + table.datetime('saved').nullable(); + + table.index(['user'], 'notification_user_idx'); + table.index(['scope', 'origin'], 'notification_scope_origin_idx'); + }); +}; + +/** + * @param {import('knex').Knex} knex + */ +exports.down = async function down(knex) { + await knex.schema.dropTable('notification'); +}; diff --git a/plugins/notifications-backend/package.json b/plugins/notifications-backend/package.json new file mode 100644 index 0000000000..2b6b8ab573 --- /dev/null +++ b/plugins/notifications-backend/package.json @@ -0,0 +1,60 @@ +{ + "name": "@backstage/plugin-notifications-backend", + "version": "0.0.1-next.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-backend" + }, + "backstage": { + "role": "backend-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/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-events-node": "workspace:^", + "@backstage/plugin-notifications-common": "workspace:^", + "@backstage/plugin-notifications-node": "workspace:^", + "@backstage/plugin-signals-node": "workspace:^", + "express": "^4.17.1", + "express-promise-router": "^4.1.0", + "knex": "^3.0.0", + "node-fetch": "^2.6.7", + "uuid": "^8.0.0", + "winston": "^3.2.1", + "yn": "^4.0.0" + }, + "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@types/express": "^4.17.6", + "@types/supertest": "^2.0.8", + "msw": "^1.0.0", + "supertest": "^6.2.4" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/notifications-backend/src/database/DatabaseNotificationsStore.test.ts b/plugins/notifications-backend/src/database/DatabaseNotificationsStore.test.ts new file mode 100644 index 0000000000..35964ff582 --- /dev/null +++ b/plugins/notifications-backend/src/database/DatabaseNotificationsStore.test.ts @@ -0,0 +1,338 @@ +/* + * Copyright 2024 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 { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { DatabaseNotificationsStore } from './DatabaseNotificationsStore'; +import { Knex } from 'knex'; +import { v4 as uuid } from 'uuid'; +import { Notification } from '@backstage/plugin-notifications-common'; + +jest.setTimeout(60_000); + +const databases = TestDatabases.create(); + +async function createStore(databaseId: TestDatabaseId) { + const knex = await databases.init(databaseId); + const mgr = { + getClient: async () => knex, + migrations: { + skip: false, + }, + }; + return { + knex, + storage: await DatabaseNotificationsStore.create({ database: mgr }), + }; +} + +const user = 'user:default/john.doe'; +const testNotification: Partial = { + user, + created: new Date(), + origin: 'plugin-test', + payload: { + title: 'Notification 1', + link: '/catalog', + severity: 'normal', + }, +}; + +const otherUserNotification: Partial = { + ...testNotification, + user: 'user:default/jane.doe', +}; + +describe.each(databases.eachSupportedId())( + 'DatabaseNotificationsStore (%s)', + databaseId => { + let storage: DatabaseNotificationsStore; + let knex: Knex; + const insertNotification = async ( + notification: Partial & { + id: string; + done?: Date; + saved?: Date; + read?: Date; + }, + ) => + ( + await knex('notification') + .insert({ + id: notification.id, + user: notification.user, + origin: notification.origin, + created: notification.created, + link: notification.payload?.link, + title: notification.payload?.title, + severity: notification.payload?.severity, + scope: notification.payload?.scope, + done: notification.done, + saved: notification.saved, + read: notification.read, + }) + .returning('id') + )[0].id ?? -1; + + beforeAll(async () => { + ({ storage, knex } = await createStore(databaseId)); + }); + + afterEach(async () => { + jest.resetAllMocks(); + await knex('notification').del(); + }); + + describe('getNotifications', () => { + it('should return all notifications for user', async () => { + const id1 = uuid(); + const id2 = uuid(); + await insertNotification({ id: id1, ...testNotification }); + await insertNotification({ id: id2, ...testNotification }); + await insertNotification({ id: uuid(), ...otherUserNotification }); + + const notifications = await storage.getNotifications({ user }); + expect(notifications.length).toBe(2); + }); + + it('should return undone notifications for user', async () => { + const id1 = uuid(); + const id2 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + done: new Date(), + }); + await insertNotification({ id: id2, ...testNotification }); + await insertNotification({ id: uuid(), ...otherUserNotification }); + + const notifications = await storage.getNotifications({ + user, + type: 'undone', + }); + expect(notifications.length).toBe(1); + expect(notifications.at(0)?.id).toEqual(id2); + }); + + it('should return done notifications for user', async () => { + const id1 = uuid(); + const id2 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + done: new Date(), + }); + await insertNotification({ id: id2, ...testNotification }); + await insertNotification({ id: uuid(), ...otherUserNotification }); + + const notifications = await storage.getNotifications({ + user, + type: 'done', + }); + expect(notifications.length).toBe(1); + expect(notifications.at(0)?.id).toEqual(id1); + }); + + it('should allow searching for notifications', async () => { + const id1 = uuid(); + const id2 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + payload: { + link: '/catalog', + severity: 'normal', + title: 'Please find me', + }, + }); + await insertNotification({ id: id2, ...testNotification }); + await insertNotification({ id: uuid(), ...otherUserNotification }); + + const notifications = await storage.getNotifications({ + user, + search: 'find me', + }); + expect(notifications.length).toBe(1); + expect(notifications.at(0)?.id).toEqual(id1); + }); + }); + + describe('getStatus', () => { + it('should return status for user', async () => { + const id1 = uuid(); + const id2 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + read: new Date(), + }); + await insertNotification({ id: id2, ...testNotification }); + await insertNotification({ id: uuid(), ...otherUserNotification }); + + const status = await storage.getStatus({ user }); + expect(status.read).toEqual(1); + expect(status.unread).toEqual(1); + }); + }); + + describe('getExistingScopeNotification', () => { + it('should return existing scope notification', async () => { + const id1 = uuid(); + const notification: any = { + ...testNotification, + id: id1, + payload: { + title: 'Notification', + link: '/scaffolder/task/1234', + severity: 'normal', + scope: 'scaffolder-1234', + }, + }; + await insertNotification(notification); + + const existing = await storage.getExistingScopeNotification({ + user, + origin: 'plugin-test', + scope: 'scaffolder-1234', + }); + expect(existing).not.toBeNull(); + expect(existing?.id).toEqual(id1); + }); + }); + + describe('restoreExistingNotification', () => { + it('should return restore existing scope notification', async () => { + const id1 = uuid(); + const notification: any = { + ...testNotification, + id: id1, + read: new Date(), + done: new Date(), + payload: { + title: 'Notification', + link: '/scaffolder/task/1234', + severity: 'normal', + scope: 'scaffolder-1234', + }, + }; + await insertNotification(notification); + + const existing = await storage.restoreExistingNotification({ + id: id1, + notification: { + user: notification.user, + payload: { + title: 'New notification', + link: '/scaffolder/task/1234', + severity: 'normal', + }, + } as any, + }); + expect(existing).not.toBeNull(); + expect(existing?.id).toEqual(id1); + expect(existing?.payload.title).toEqual('New notification'); + expect(existing?.done).toBeNull(); + expect(existing?.read).toBeNull(); + }); + }); + + describe('getNotification', () => { + it('should return notification by id', async () => { + const id1 = uuid(); + await insertNotification({ id: id1, ...testNotification }); + + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.id).toEqual(id1); + }); + }); + + describe('markRead', () => { + it('should mark notification read', async () => { + const id1 = uuid(); + await insertNotification({ id: id1, ...testNotification }); + + await storage.markRead({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.read).not.toBeNull(); + }); + }); + + describe('markUnread', () => { + it('should mark notification unread', async () => { + const id1 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + read: new Date(), + }); + + await storage.markUnread({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.read).toBeNull(); + }); + }); + + describe('markDone', () => { + it('should mark notification done', async () => { + const id1 = uuid(); + await insertNotification({ id: id1, ...testNotification }); + + await storage.markDone({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.done).not.toBeNull(); + }); + }); + + describe('markUndone', () => { + it('should mark notification undone', async () => { + const id1 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + done: new Date(), + }); + + await storage.markUndone({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.done).toBeNull(); + }); + }); + + describe('markSaved', () => { + it('should mark notification saved', async () => { + const id1 = uuid(); + await insertNotification({ id: id1, ...testNotification }); + + await storage.markSaved({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.saved).not.toBeNull(); + }); + }); + + describe('markUnsaved', () => { + it('should mark notification not saved', async () => { + const id1 = uuid(); + await insertNotification({ + id: id1, + ...testNotification, + saved: new Date(), + }); + + await storage.markUnsaved({ ids: [id1], user }); + const notification = await storage.getNotification({ id: id1 }); + expect(notification?.saved).toBeNull(); + }); + }); + }, +); diff --git a/plugins/notifications-backend/src/database/DatabaseNotificationsStore.ts b/plugins/notifications-backend/src/database/DatabaseNotificationsStore.ts new file mode 100644 index 0000000000..7e5060106b --- /dev/null +++ b/plugins/notifications-backend/src/database/DatabaseNotificationsStore.ts @@ -0,0 +1,240 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + PluginDatabaseManager, + resolvePackagePath, +} from '@backstage/backend-common'; +import { + NotificationGetOptions, + NotificationModifyOptions, + NotificationsStore, +} from './NotificationsStore'; +import { Notification } from '@backstage/plugin-notifications-common'; +import { Knex } from 'knex'; + +const migrationsDir = resolvePackagePath( + '@backstage/plugin-notifications-backend', + 'migrations', +); + +/** @internal */ +export class DatabaseNotificationsStore implements NotificationsStore { + private constructor(private readonly db: Knex) {} + + static async create({ + database, + skipMigrations, + }: { + database: PluginDatabaseManager; + skipMigrations?: boolean; + }): Promise { + const client = await database.getClient(); + + if (!database.migrations?.skip && !skipMigrations) { + await client.migrate.latest({ + directory: migrationsDir, + }); + } + + return new DatabaseNotificationsStore(client); + } + + private mapToInteger = (val: string | number | undefined): number => { + return typeof val === 'string' ? Number.parseInt(val, 10) : val ?? 0; + }; + + private mapToNotifications = (rows: any[]): Notification[] => { + return rows.map(row => ({ + id: row.id, + user: row.user, + created: row.created, + done: row.done, + saved: row.saved, + read: row.read, + updated: row.updated, + origin: row.origin, + payload: { + title: row.title, + description: row.description, + link: row.link, + topic: row.topic, + severity: row.severity, + scope: row.scope, + icon: row.icon, + }, + })); + }; + + private getNotificationsBaseQuery = ( + options: NotificationGetOptions | NotificationModifyOptions, + ) => { + const { user, type } = options; + const query = this.db('notification').where('user', user); + + if (options.sort !== undefined && options.sort !== null) { + query.orderBy(options.sort, options.sortOrder ?? 'desc'); + } else if (options.sort !== null) { + query.orderBy('created', options.sortOrder ?? 'desc'); + } + + if (type === 'undone') { + query.whereNull('done'); + } else if (type === 'done') { + query.whereNotNull('done'); + } else if (type === 'saved') { + query.whereNotNull('saved'); + } + + if (options.limit) { + query.limit(options.limit); + } + + if (options.offset) { + query.offset(options.offset); + } + + if (options.search) { + query.whereRaw( + `(LOWER(notification.title) LIKE LOWER(?) OR LOWER(notification.description) LIKE LOWER(?))`, + [`%${options.search}%`, `%${options.search}%`], + ); + } + + if (options.ids) { + query.whereIn('notification.id', options.ids); + } + + return query; + }; + + async getNotifications(options: NotificationGetOptions) { + const notificationQuery = this.getNotificationsBaseQuery(options); + const notifications = await notificationQuery.select(); + return this.mapToNotifications(notifications); + } + + async saveNotification(notification: Notification) { + await this.db.insert(notification).into('notification'); + } + + async getStatus(options: NotificationGetOptions) { + const notificationQuery = this.getNotificationsBaseQuery({ + ...options, + sort: null, + }); + const readSubQuery = notificationQuery + .clone() + .count('id') + .whereNotNull('read') + .as('READ'); + const unreadSubQuery = notificationQuery + .clone() + .count('id') + .whereNull('read') + .as('UNREAD'); + + const query = await notificationQuery + .select(readSubQuery, unreadSubQuery) + .first(); + + return { + unread: this.mapToInteger((query as any)?.UNREAD), + read: this.mapToInteger((query as any)?.READ), + }; + } + + async getExistingScopeNotification(options: { + user: string; + scope: string; + origin: string; + }) { + const query = this.db('notification') + .where('user', options.user) + .where('scope', options.scope) + .where('origin', options.origin) + .select() + .limit(1); + + const rows = await query; + if (!rows || rows.length === 0) { + return null; + } + return rows[0] as Notification; + } + + async restoreExistingNotification(options: { + id: string; + notification: Notification; + }) { + const query = this.db('notification') + .where('id', options.id) + .where('user', options.notification.user); + + await query.update({ + title: options.notification.payload.title, + description: options.notification.payload.description, + link: options.notification.payload.link, + topic: options.notification.payload.topic, + updated: options.notification.created, + severity: options.notification.payload.severity, + read: null, + done: null, + }); + + return await this.getNotification(options); + } + + async getNotification(options: { id: string }): Promise { + const rows = await this.db('notification') + .where('id', options.id) + .select() + .limit(1); + if (!rows || rows.length === 0) { + return null; + } + return this.mapToNotifications(rows)[0]; + } + + async markRead(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ read: new Date() }); + } + + async markUnread(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ read: null }); + } + + async markDone(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ done: new Date(), read: new Date() }); + } + + async markUndone(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ done: null, read: null }); + } + + async markSaved(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ saved: new Date() }); + } + + async markUnsaved(options: NotificationModifyOptions): Promise { + const notificationQuery = this.getNotificationsBaseQuery(options); + await notificationQuery.update({ saved: null }); + } +} diff --git a/plugins/notifications-backend/src/database/NotificationsStore.ts b/plugins/notifications-backend/src/database/NotificationsStore.ts new file mode 100644 index 0000000000..4e3a2fa547 --- /dev/null +++ b/plugins/notifications-backend/src/database/NotificationsStore.ts @@ -0,0 +1,72 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + Notification, + NotificationStatus, + NotificationType, +} from '@backstage/plugin-notifications-common'; + +/** @internal */ +export type NotificationGetOptions = { + user: string; + ids?: string[]; + type?: NotificationType; + offset?: number; + limit?: number; + search?: string; + sort?: 'created' | 'read' | 'updated' | null; + sortOrder?: 'asc' | 'desc'; +}; + +/** @internal */ +export type NotificationModifyOptions = { + ids: string[]; +} & NotificationGetOptions; + +/** @internal */ +export interface NotificationsStore { + getNotifications(options: NotificationGetOptions): Promise; + + saveNotification(notification: Notification): Promise; + + getExistingScopeNotification(options: { + user: string; + scope: string; + origin: string; + }): Promise; + + restoreExistingNotification(options: { + id: string; + notification: Notification; + }): Promise; + + getNotification(options: { id: string }): Promise; + + getStatus(options: NotificationGetOptions): Promise; + + markRead(options: NotificationModifyOptions): Promise; + + markUnread(options: NotificationModifyOptions): Promise; + + markDone(options: NotificationModifyOptions): Promise; + + markUndone(options: NotificationModifyOptions): Promise; + + markSaved(options: NotificationModifyOptions): Promise; + + markUnsaved(options: NotificationModifyOptions): Promise; +} diff --git a/plugins/notifications-backend/src/database/index.ts b/plugins/notifications-backend/src/database/index.ts new file mode 100644 index 0000000000..6d2f549f38 --- /dev/null +++ b/plugins/notifications-backend/src/database/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './DatabaseNotificationsStore'; +export * from './NotificationsStore'; diff --git a/plugins/notifications-backend/src/index.ts b/plugins/notifications-backend/src/index.ts new file mode 100644 index 0000000000..b47321aa39 --- /dev/null +++ b/plugins/notifications-backend/src/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { notificationsPlugin as default } from './plugin'; diff --git a/plugins/notifications-backend/src/plugin.ts b/plugins/notifications-backend/src/plugin.ts new file mode 100644 index 0000000000..1d8806cf49 --- /dev/null +++ b/plugins/notifications-backend/src/plugin.ts @@ -0,0 +1,92 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; +import { signalService } from '@backstage/plugin-signals-node'; +import { + NotificationProcessor, + notificationsProcessingExtensionPoint, + NotificationsProcessingExtensionPoint, +} from '@backstage/plugin-notifications-node'; + +class NotificationsProcessingExtensionPointImpl + implements NotificationsProcessingExtensionPoint +{ + #processors = new Array(); + + addProcessor( + ...processors: Array> + ): void { + this.#processors.push(...processors.flat()); + } + + get processors() { + return this.#processors; + } +} + +/** + * Notifications backend plugin + * + * @public + */ +export const notificationsPlugin = createBackendPlugin({ + pluginId: 'notifications', + register(env) { + const processingExtensions = + new NotificationsProcessingExtensionPointImpl(); + env.registerExtensionPoint( + notificationsProcessingExtensionPoint, + processingExtensions, + ); + + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + identity: coreServices.identity, + database: coreServices.database, + tokenManager: coreServices.tokenManager, + discovery: coreServices.discovery, + signals: signalService, + }, + async init({ + httpRouter, + logger, + identity, + database, + tokenManager, + discovery, + signals, + }) { + httpRouter.use( + await createRouter({ + logger, + identity, + database, + tokenManager, + discovery, + signalService: signals, + processors: processingExtensions.processors, + }), + ); + }, + }); + }, +}); diff --git a/plugins/notifications-backend/src/run.ts b/plugins/notifications-backend/src/run.ts new file mode 100644 index 0000000000..d299ed23e9 --- /dev/null +++ b/plugins/notifications-backend/src/run.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getRootLogger } from '@backstage/backend-common'; +import yn from 'yn'; +import { startStandaloneServer } from './service/standaloneServer'; + +const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7007; +const enableCors = yn(process.env.PLUGIN_CORS, { default: false }); +const logger = getRootLogger(); + +startStandaloneServer({ port, enableCors, logger }).catch(err => { + logger.error(err); + process.exit(1); +}); + +process.on('SIGINT', () => { + logger.info('CTRL+C pressed; exiting.'); + process.exit(0); +}); diff --git a/plugins/notifications-backend/src/service/router.test.ts b/plugins/notifications-backend/src/service/router.test.ts new file mode 100644 index 0000000000..3152b1b07f --- /dev/null +++ b/plugins/notifications-backend/src/service/router.test.ts @@ -0,0 +1,97 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + DatabaseManager, + getVoidLogger, + PluginDatabaseManager, + PluginEndpointDiscovery, + TokenManager, +} from '@backstage/backend-common'; +import express from 'express'; +import request from 'supertest'; + +import { createRouter } from './router'; +import { IdentityApi } from '@backstage/plugin-auth-node'; +import { ConfigReader } from '@backstage/config'; +import { SignalService } from '@backstage/plugin-signals-node'; + +function createDatabase(): PluginDatabaseManager { + return DatabaseManager.fromConfig( + new ConfigReader({ + backend: { + database: { + client: 'better-sqlite3', + connection: ':memory:', + }, + }, + }), + ).forPlugin('notifications'); +} + +describe('createRouter', () => { + let app: express.Express; + + const identityMock: IdentityApi = { + async getIdentity() { + return { + identity: { + type: 'user', + ownershipEntityRefs: [], + userEntityRef: 'user:default/guest', + }, + token: 'no-token', + }; + }, + }; + const mockedTokenManager: jest.Mocked = { + getToken: jest.fn(), + authenticate: jest.fn(), + }; + + const discovery: jest.Mocked = { + getBaseUrl: jest.fn(), + getExternalBaseUrl: jest.fn(), + }; + + const signalService: jest.Mocked = { + publish: jest.fn(), + }; + + beforeAll(async () => { + const router = await createRouter({ + logger: getVoidLogger(), + identity: identityMock, + database: createDatabase(), + tokenManager: mockedTokenManager, + discovery, + signalService, + }); + app = express().use(router); + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('GET /health', () => { + it('returns ok', async () => { + const response = await request(app).get('/health'); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ status: 'ok' }); + }); + }); +}); diff --git a/plugins/notifications-backend/src/service/router.ts b/plugins/notifications-backend/src/service/router.ts new file mode 100644 index 0000000000..b293ea4a1f --- /dev/null +++ b/plugins/notifications-backend/src/service/router.ts @@ -0,0 +1,365 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + errorHandler, + PluginDatabaseManager, + TokenManager, +} from '@backstage/backend-common'; +import express, { Request } from 'express'; +import Router from 'express-promise-router'; +import { + getBearerTokenFromAuthorizationHeader, + IdentityApi, +} from '@backstage/plugin-auth-node'; +import { + DatabaseNotificationsStore, + NotificationGetOptions, +} from '../database'; +import { v4 as uuid } from 'uuid'; +import { CatalogApi, CatalogClient } from '@backstage/catalog-client'; +import { + Entity, + isGroupEntity, + isUserEntity, + RELATION_HAS_MEMBER, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { NotificationProcessor } from '@backstage/plugin-notifications-node'; +import { AuthenticationError, InputError } from '@backstage/errors'; +import { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api'; +import { SignalService } from '@backstage/plugin-signals-node'; +import { + Notification, + NotificationType, +} from '@backstage/plugin-notifications-common'; + +/** @internal */ +export interface RouterOptions { + logger: LoggerService; + identity: IdentityApi; + database: PluginDatabaseManager; + tokenManager: TokenManager; + discovery: DiscoveryService; + signalService?: SignalService; + catalog?: CatalogApi; + processors?: NotificationProcessor[]; +} + +/** @internal */ +export async function createRouter( + options: RouterOptions, +): Promise { + const { + logger, + database, + identity, + discovery, + catalog, + tokenManager, + processors, + signalService, + } = options; + + const catalogClient = + catalog ?? new CatalogClient({ discoveryApi: discovery }); + const store = await DatabaseNotificationsStore.create({ database }); + + const getUser = async (req: Request) => { + const user = await identity.getIdentity({ request: req }); + if (!user) { + throw new AuthenticationError(); + } + return user.identity.userEntityRef; + }; + + const authenticateService = async (req: Request) => { + const token = getBearerTokenFromAuthorizationHeader( + req.header('authorization'), + ); + if (!token) { + throw new AuthenticationError(); + } + await tokenManager.authenticate(token); + }; + + const getUsersForEntityRef = async ( + entityRef: string | string[] | null, + ): Promise => { + const { token } = await tokenManager.getToken(); + + // TODO: Support for broadcast + if (entityRef === null) { + return []; + } + + const refs = Array.isArray(entityRef) ? entityRef : [entityRef]; + const entities = await catalogClient.getEntitiesByRefs( + { + entityRefs: refs, + fields: ['kind', 'metadata.name', 'metadata.namespace'], + }, + { token }, + ); + const mapEntity = async (entity: Entity | undefined): Promise => { + if (!entity) { + return []; + } + + if (isUserEntity(entity)) { + return [stringifyEntityRef(entity)]; + } else if (isGroupEntity(entity) && entity.relations) { + const users = entity.relations + .filter( + relation => + relation.type === RELATION_HAS_MEMBER && relation.targetRef, + ) + .map(r => r.targetRef); + const childGroups = await catalogClient.getEntitiesByRefs( + { + entityRefs: entity.spec.children, + fields: ['kind', 'metadata.name', 'metadata.namespace'], + }, + { token }, + ); + const childGroupUsers = await Promise.all( + childGroups.items.map(mapEntity), + ); + return [...users, ...childGroupUsers.flat(2)]; + } else if (!isGroupEntity(entity) && entity.spec?.owner) { + const owner = await catalogClient.getEntityByRef( + entity.spec.owner as string, + { token }, + ); + if (owner) { + return mapEntity(owner); + } + } + + return []; + }; + + const users: string[] = []; + for (const entity of entities.items) { + const u = await mapEntity(entity); + users.push(...u); + } + return users; + }; + + const decorateNotification = async (notification: Notification) => { + let ret: Notification = notification; + for (const processor of processors ?? []) { + ret = processor.decorate ? await processor.decorate(ret) : ret; + } + return ret; + }; + + const processorSendNotification = async (notification: Notification) => { + for (const processor of processors ?? []) { + if (processor.send) { + processor.send(notification); + } + } + }; + + // TODO: Move to use OpenAPI router instead + const router = Router(); + router.use(express.json()); + + router.get('/health', (_, response) => { + logger.info('PONG!'); + response.json({ status: 'ok' }); + }); + + router.get('/', async (req, res) => { + const user = await getUser(req); + const opts: NotificationGetOptions = { + user: user, + }; + if (req.query.type) { + opts.type = req.query.type.toString() as NotificationType; + } + if (req.query.offset) { + opts.offset = Number.parseInt(req.query.offset.toString(), 10); + } + if (req.query.limit) { + opts.limit = Number.parseInt(req.query.limit.toString(), 10); + } + if (req.query.search) { + opts.search = req.query.search.toString(); + } + + const notifications = await store.getNotifications(opts); + res.send(notifications); + }); + + router.get('/status', async (req, res) => { + const user = await getUser(req); + const status = await store.getStatus({ user, type: 'undone' }); + res.send(status); + }); + + router.post('/update', async (req, res) => { + const user = await getUser(req); + const { ids, done, read, saved } = req.body; + if (!ids || !Array.isArray(ids)) { + throw new InputError(); + } + + if (done === true) { + await store.markDone({ user, ids }); + if (signalService) { + await signalService.publish({ + recipients: [user], + message: { action: 'done', notification_ids: ids }, + channel: 'notifications', + }); + } + } else if (done === false) { + await store.markUndone({ user, ids }); + if (signalService) { + await signalService.publish({ + recipients: [user], + message: { action: 'undone', notification_ids: ids }, + channel: 'notifications', + }); + } + } + + if (read === true) { + await store.markRead({ user, ids }); + + if (signalService) { + await signalService.publish({ + recipients: [user], + message: { action: 'mark_read', notification_ids: ids }, + channel: 'notifications', + }); + } + } else if (read === false) { + await store.markUnread({ user: user, ids }); + + if (signalService) { + await signalService.publish({ + recipients: [user], + message: { action: 'mark_unread', notification_ids: ids }, + channel: 'notifications', + }); + } + } + + if (saved === true) { + await store.markSaved({ user: user, ids }); + } else if (saved === false) { + await store.markUnsaved({ user: user, ids }); + } + + const notifications = await store.getNotifications({ ids, user: user }); + res.status(200).send(notifications); + }); + + // Add new notification + // Allowed only for service-to-service authentication, uses `getUsersForEntityRef` to retrieve recipients for + // specific entity reference + router.post('/', async (req, res) => { + const { recipients, origin, payload } = req.body; + const notifications = []; + let users = []; + + try { + await authenticateService(req); + } catch (e) { + throw new AuthenticationError(); + } + + const { title, link, description, scope } = payload; + + if (!recipients || !title || !origin || !link) { + logger.error(`Invalid notification request received`); + throw new InputError(); + } + + let entityRef = null; + // TODO: Support for broadcast notifications + if (recipients.entityRef && recipients.type === 'entity') { + entityRef = recipients.entityRef; + } + + try { + users = await getUsersForEntityRef(entityRef); + } catch (e) { + throw new InputError(); + } + + const baseNotification: Omit = { + payload: { + ...payload, + severity: payload.severity ?? 'normal', + }, + origin, + created: new Date(), + }; + + const uniqueUsers = [...new Set(users)]; + for (const user of uniqueUsers) { + const userNotification = { + ...baseNotification, + id: uuid(), + user, + }; + const notification = await decorateNotification(userNotification); + + let existingNotification; + if (scope) { + existingNotification = await store.getExistingScopeNotification({ + user, + scope, + origin, + }); + } + + let ret = notification; + if (existingNotification) { + const restored = await store.restoreExistingNotification({ + id: existingNotification.id, + notification, + }); + ret = restored ?? notification; + } else { + await store.saveNotification(notification); + } + + processorSendNotification(ret); + notifications.push(ret); + } + + if (signalService) { + await signalService.publish({ + recipients: entityRef === null ? null : uniqueUsers, + message: { + action: 'new_notification', + notification: { title, description, link }, + }, + channel: 'notifications', + }); + } + + res.json(notifications); + }); + + router.use(errorHandler()); + return router; +} diff --git a/plugins/notifications-backend/src/service/standaloneServer.ts b/plugins/notifications-backend/src/service/standaloneServer.ts new file mode 100644 index 0000000000..e2841543b1 --- /dev/null +++ b/plugins/notifications-backend/src/service/standaloneServer.ts @@ -0,0 +1,136 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createServiceBuilder, + HostDiscovery, + loadBackendConfig, + PluginDatabaseManager, + ServerTokenManager, +} from '@backstage/backend-common'; +import { Server } from 'http'; +import { Logger } from 'winston'; +import { createRouter } from './router'; +import Knex from 'knex'; +import { IdentityApi } from '@backstage/plugin-auth-node'; +import { Request } from 'express'; +import { + CatalogApi, + CatalogRequestOptions, + GetEntitiesByRefsRequest, +} from '@backstage/catalog-client'; +import { DefaultSignalService } from '@backstage/plugin-signals-node'; +import { + EventBroker, + EventParams, + EventSubscriber, +} from '@backstage/plugin-events-node'; + +export interface ServerOptions { + port: number; + enableCors: boolean; + logger: Logger; +} + +export async function startStandaloneServer( + options: ServerOptions, +): Promise { + const logger = options.logger.child({ service: 'notifications-backend' }); + logger.debug('Starting application server...'); + + const config = await loadBackendConfig({ logger, argv: process.argv }); + const db = Knex(config.get('backend.database')); + + const tokenManager = ServerTokenManager.fromConfig(config, { + logger, + }); + const discovery = HostDiscovery.fromConfig(config); + + const dbMock: PluginDatabaseManager = { + async getClient() { + return db; + }, + }; + + const catalogApi = { + async getEntitiesByRefs( + _request: GetEntitiesByRefsRequest, + __options?: CatalogRequestOptions, + ) { + return { + items: [ + { + apiVersion: 'backstage.io/v1alpha1', + kind: 'User', + metadata: { name: 'user', namespace: 'default' }, + spec: {}, + }, + ], + }; + }, + } as Partial as CatalogApi; + + const identityMock: IdentityApi = { + async getIdentity({ request }: { request: Request }) { + const token = request.headers.authorization?.split(' ')[1]; + return { + identity: { + type: 'user', + ownershipEntityRefs: [], + userEntityRef: 'user:default/guest', + }, + token: token || 'no-token', + }; + }, + }; + + const mockSubscribers: EventSubscriber[] = []; + const eventBroker: EventBroker = { + async publish(params: EventParams): Promise { + mockSubscribers.forEach(sub => sub.onEvent(params)); + }, + subscribe(...subscribers: EventSubscriber[]) { + subscribers.flat().forEach(subscriber => { + mockSubscribers.push(subscriber); + }); + }, + }; + + const signalService = DefaultSignalService.create({ eventBroker }); + + const router = await createRouter({ + logger, + identity: identityMock, + database: dbMock, + catalog: catalogApi, + discovery, + tokenManager, + signalService, + }); + + let service = createServiceBuilder(module) + .setPort(options.port) + .addRouter('/notifications', router); + if (options.enableCors) { + service = service.enableCors({ origin: 'http://localhost:3000' }); + } + + return await service.start().catch(err => { + logger.error(err); + process.exit(1); + }); +} + +module.hot?.accept(); diff --git a/plugins/catalog-backend-module-bitbucket/src/setupTests.ts b/plugins/notifications-backend/src/setupTests.ts similarity index 93% rename from plugins/catalog-backend-module-bitbucket/src/setupTests.ts rename to plugins/notifications-backend/src/setupTests.ts index d3232290a7..4b9026cde5 100644 --- a/plugins/catalog-backend-module-bitbucket/src/setupTests.ts +++ b/plugins/notifications-backend/src/setupTests.ts @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2023 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,5 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - export {}; diff --git a/plugins/notifications-common/.eslintrc.js b/plugins/notifications-common/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/notifications-common/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/notifications-common/CHANGELOG.md b/plugins/notifications-common/CHANGELOG.md new file mode 100644 index 0000000000..dedcf2a754 --- /dev/null +++ b/plugins/notifications-common/CHANGELOG.md @@ -0,0 +1,7 @@ +# @backstage/plugin-notifications-common + +## 0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage diff --git a/plugins/notifications-common/README.md b/plugins/notifications-common/README.md new file mode 100644 index 0000000000..673e30288f --- /dev/null +++ b/plugins/notifications-common/README.md @@ -0,0 +1,5 @@ +# @backstage/plugin-notifications-common + +Welcome to the common package for the notifications plugin! + +_This plugin was created through the Backstage CLI_ diff --git a/plugins/notifications-common/api-report.md b/plugins/notifications-common/api-report.md new file mode 100644 index 0000000000..d2dc1afb9d --- /dev/null +++ b/plugins/notifications-common/api-report.md @@ -0,0 +1,42 @@ +## API Report File for "@backstage/plugin-notifications-common" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +// @public (undocumented) +type Notification_2 = { + id: string; + user: string; + created: Date; + saved?: Date; + read?: Date; + done?: Date; + updated?: Date; + origin: string; + payload: NotificationPayload; +}; +export { Notification_2 as Notification }; + +// @public (undocumented) +export type NotificationPayload = { + title: string; + description?: string; + link: string; + severity: NotificationSeverity; + topic?: string; + scope?: string; + icon?: string; +}; + +// @public (undocumented) +export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; + +// @public (undocumented) +export type NotificationStatus = { + unread: number; + read: number; +}; + +// @public (undocumented) +export type NotificationType = 'undone' | 'done' | 'saved'; +``` diff --git a/plugins/notifications-common/catalog-info.yaml b/plugins/notifications-common/catalog-info.yaml new file mode 100644 index 0000000000..5a888d2372 --- /dev/null +++ b/plugins/notifications-common/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-notifications-common + title: '@backstage/plugin-notifications-common' + description: Common functionalities for the notifications plugin +spec: + lifecycle: experimental + type: backstage-common-library + owner: maintainers diff --git a/plugins/notifications-common/knip-report.md b/plugins/notifications-common/knip-report.md new file mode 100644 index 0000000000..372c0d21f4 --- /dev/null +++ b/plugins/notifications-common/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------------|:-------------| +| @material-ui/icons | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/notifications-common/package.json b/plugins/notifications-common/package.json new file mode 100644 index 0000000000..a768d64b73 --- /dev/null +++ b/plugins/notifications-common/package.json @@ -0,0 +1,40 @@ +{ + "name": "@backstage/plugin-notifications-common", + "description": "Common functionalities for the notifications plugin", + "version": "0.0.1-next.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "module": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-common" + }, + "backstage": { + "role": "common-library" + }, + "sideEffects": false, + "scripts": { + "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" + }, + "devDependencies": { + "@backstage/cli": "workspace:^" + }, + "files": [ + "dist" + ], + "dependencies": { + "@material-ui/icons": "^4.9.1" + } +} diff --git a/plugins/notifications-common/src/index.ts b/plugins/notifications-common/src/index.ts new file mode 100644 index 0000000000..8d9f26f07a --- /dev/null +++ b/plugins/notifications-common/src/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Common functionalities for the notifications plugin. + * + * @packageDocumentation + */ + +export * from './types'; diff --git a/plugins/notifications-common/src/setupTests.ts b/plugins/notifications-common/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/notifications-common/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; diff --git a/plugins/notifications-common/src/types.ts b/plugins/notifications-common/src/types.ts new file mode 100644 index 0000000000..1e7469244f --- /dev/null +++ b/plugins/notifications-common/src/types.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** @public */ +export type NotificationType = 'undone' | 'done' | 'saved'; + +/** @public */ +export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; + +/** @public */ +export type NotificationPayload = { + title: string; + description?: string; + link: string; + // TODO: Add support for additional links + // additionalLinks?: string[]; + severity: NotificationSeverity; + topic?: string; + scope?: string; + icon?: string; +}; + +/** @public */ +export type Notification = { + id: string; + user: string; + created: Date; + saved?: Date; + read?: Date; + done?: Date; + updated?: Date; + origin: string; + payload: NotificationPayload; +}; + +/** @public */ +export type NotificationStatus = { + unread: number; + read: number; +}; diff --git a/plugins/notifications-node/.eslintrc.js b/plugins/notifications-node/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/notifications-node/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/notifications-node/CHANGELOG.md b/plugins/notifications-node/CHANGELOG.md new file mode 100644 index 0000000000..0e0a5c4fe4 --- /dev/null +++ b/plugins/notifications-node/CHANGELOG.md @@ -0,0 +1,14 @@ +# @backstage/plugin-notifications-node + +## 0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 diff --git a/plugins/notifications-node/README.md b/plugins/notifications-node/README.md new file mode 100644 index 0000000000..13475ab209 --- /dev/null +++ b/plugins/notifications-node/README.md @@ -0,0 +1,51 @@ +# @backstage/plugin-notifications-node + +Welcome to the Node.js library package for the notifications plugin! + +## Getting Started + +To be able to send notifications from other backend plugins, the `NotificationService` must be initialized for the +environment. Add notification service to your `plugin.ts` as a dependency for init + +```ts +import { notificationService } from '@backstage/plugin-notifications-node'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + httpRouter: coreServices.httpRouter, + notificationService: notificationService, + }, + async init({ config, logger, httpRouter, notificationService }) { + httpRouter.use( + await createRouter({ + config, + logger, + permissions, + notificationService, + }), + ); + }, + }); + }, +}); +``` + +You also need to set up the `@backstage/plugin-notifications-backend` and `@backstage/plugin-notifications` +to be able to show notifications in the UI. + +## Sending notifications + +To send notifications from backend plugin, use the `NotificationService::send` functionality. This function will +save the notification and optionally signal the frontend to show the latest status for users. + +When sending notifications, you can specify the entity reference of the notification. If the entity reference is +a user, the notification will be sent to only that user. If it's a group, the notification will be sent to all +members of the group. If it's some other entity, the notification will be sent to the owner of that entity. + +If the notification has `scope` set and user already has notification with that scope, the existing notification +will be updated with the new notification values and moved to inbox as unread. diff --git a/plugins/notifications-node/api-report.md b/plugins/notifications-node/api-report.md new file mode 100644 index 0000000000..75a0fb68fd --- /dev/null +++ b/plugins/notifications-node/api-report.md @@ -0,0 +1,69 @@ +## API Report File for "@backstage/plugin-notifications-node" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { DiscoveryService } from '@backstage/backend-plugin-api'; +import { ExtensionPoint } from '@backstage/backend-plugin-api'; +import { Notification as Notification_2 } from '@backstage/plugin-notifications-common'; +import { NotificationPayload } from '@backstage/plugin-notifications-common'; +import { ServiceRef } from '@backstage/backend-plugin-api'; +import { TokenManager } from '@backstage/backend-common'; + +// @public (undocumented) +export class DefaultNotificationService implements NotificationService { + // (undocumented) + static create({ + tokenManager, + discovery, + pluginId, + }: NotificationServiceOptions): DefaultNotificationService; + // (undocumented) + send(notification: NotificationSendOptions): Promise; +} + +// @public (undocumented) +export interface NotificationProcessor { + decorate?(notification: Notification_2): Promise; + send?(notification: Notification_2): Promise; +} + +// @public (undocumented) +export type NotificationRecipients = { + type: 'entity'; + entityRef: string | string[]; +}; + +// @public (undocumented) +export type NotificationSendOptions = { + recipients: NotificationRecipients; + payload: NotificationPayload; +}; + +// @public (undocumented) +export interface NotificationService { + // (undocumented) + send(options: NotificationSendOptions): Promise; +} + +// @public (undocumented) +export const notificationService: ServiceRef; + +// @public (undocumented) +export type NotificationServiceOptions = { + discovery: DiscoveryService; + tokenManager: TokenManager; + pluginId: string; +}; + +// @public (undocumented) +export interface NotificationsProcessingExtensionPoint { + // (undocumented) + addProcessor( + ...processors: Array> + ): void; +} + +// @public (undocumented) +export const notificationsProcessingExtensionPoint: ExtensionPoint; +``` diff --git a/plugins/notifications-node/catalog-info.yaml b/plugins/notifications-node/catalog-info.yaml new file mode 100644 index 0000000000..cf25f049c9 --- /dev/null +++ b/plugins/notifications-node/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-notifications-node + title: '@backstage/plugin-notifications-node' + description: Node.js library for the notifications plugin +spec: + lifecycle: experimental + type: backstage-node-library + owner: maintainers diff --git a/plugins/notifications-node/knip-report.md b/plugins/notifications-node/knip-report.md new file mode 100644 index 0000000000..ede95a89bc --- /dev/null +++ b/plugins/notifications-node/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:-------------------------------|:-------------| +| uuid | package.json | +| knex | package.json | +| @backstage/catalog-model | package.json | +| @backstage/catalog-client | package.json | +| @backstage/plugin-signals-node | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | + diff --git a/plugins/notifications-node/package.json b/plugins/notifications-node/package.json new file mode 100644 index 0000000000..93cae9b929 --- /dev/null +++ b/plugins/notifications-node/package.json @@ -0,0 +1,47 @@ +{ + "name": "@backstage/plugin-notifications-node", + "description": "Node.js library for the notifications plugin", + "version": "0.0.1-next.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-node" + }, + "backstage": { + "role": "node-library" + }, + "scripts": { + "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" + }, + "devDependencies": { + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", + "msw": "^1.0.0" + }, + "files": [ + "dist" + ], + "dependencies": { + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/plugin-notifications-common": "workspace:^", + "@backstage/plugin-signals-node": "workspace:^", + "knex": "^3.0.0", + "uuid": "^8.0.0" + } +} diff --git a/plugins/notifications-node/src/extensions.ts b/plugins/notifications-node/src/extensions.ts new file mode 100644 index 0000000000..f8ab26462d --- /dev/null +++ b/plugins/notifications-node/src/extensions.ts @@ -0,0 +1,54 @@ +/* + * Copyright 2024 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 { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { Notification } from '@backstage/plugin-notifications-common'; + +/** + * @public + */ +export interface NotificationProcessor { + /** + * Decorate notification before sending it + * + * @param notification - The notification to decorate + * @returns The same notification or a modified version of it + */ + decorate?(notification: Notification): Promise; + + /** + * Send notification using this processor. + * + * @param notification - The notification to send + */ + send?(notification: Notification): Promise; +} + +/** + * @public + */ +export interface NotificationsProcessingExtensionPoint { + addProcessor( + ...processors: Array> + ): void; +} + +/** + * @public + */ +export const notificationsProcessingExtensionPoint = + createExtensionPoint({ + id: 'notifications.processing', + }); diff --git a/plugins/notifications-node/src/index.ts b/plugins/notifications-node/src/index.ts new file mode 100644 index 0000000000..05ca83957b --- /dev/null +++ b/plugins/notifications-node/src/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Node.js library for the notifications plugin. + * + * @packageDocumentation + */ + +export * from './service'; +export * from './lib'; +export * from './extensions'; diff --git a/plugins/notifications-node/src/lib.ts b/plugins/notifications-node/src/lib.ts new file mode 100644 index 0000000000..c79d871ff8 --- /dev/null +++ b/plugins/notifications-node/src/lib.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + coreServices, + createServiceFactory, + createServiceRef, +} from '@backstage/backend-plugin-api'; +import { DefaultNotificationService } from './service'; +import { NotificationService } from './service/NotificationService'; + +/** @public */ +export const notificationService = createServiceRef({ + id: 'notifications.service', + scope: 'plugin', + defaultFactory: async service => + createServiceFactory({ + service, + deps: { + discovery: coreServices.discovery, + tokenManager: coreServices.tokenManager, + pluginMetadata: coreServices.pluginMetadata, + }, + factory({ discovery, tokenManager, pluginMetadata }) { + return DefaultNotificationService.create({ + discovery, + tokenManager, + pluginId: pluginMetadata.getId(), + }); + }, + }), +}); diff --git a/plugins/notifications-node/src/service/DefaultNotificationService.test.ts b/plugins/notifications-node/src/service/DefaultNotificationService.test.ts new file mode 100644 index 0000000000..a9b204ca7f --- /dev/null +++ b/plugins/notifications-node/src/service/DefaultNotificationService.test.ts @@ -0,0 +1,90 @@ +/* + * Copyright 2024 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 { setupRequestMockHandlers } from '@backstage/test-utils'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { NotificationPayload } from '@backstage/plugin-notifications-common'; +import { + DefaultNotificationService, + NotificationSendOptions, +} from './DefaultNotificationService'; + +const server = setupServer(); + +const testNotification: NotificationPayload = { + title: 'Notification 1', + link: '/catalog', + severity: 'normal', +}; + +describe('DefaultNotificationService', () => { + setupRequestMockHandlers(server); + const mockBaseUrl = 'http://backstage/api/notifications'; + const discoveryApi = { + getBaseUrl: async () => mockBaseUrl, + getExternalBaseUrl: async () => mockBaseUrl, + }; + const tokenManager = { + getToken: async () => ({ token: '1234' }), + authenticate: jest.fn(), + }; + + let service: DefaultNotificationService; + beforeEach(() => { + service = DefaultNotificationService.create({ + discovery: discoveryApi, + tokenManager, + pluginId: 'test', + }); + }); + + describe('getNotifications', () => { + it('should create notification', async () => { + const body: NotificationSendOptions = { + recipients: { type: 'entity', entityRef: ['user:default/john.doe'] }, + payload: testNotification, + }; + + server.use( + rest.post(`${mockBaseUrl}/`, async (req, res, ctx) => { + const json = await req.json(); + expect(json).toEqual({ ...body, origin: 'plugin-test' }); + expect(req.headers.get('Authorization')).toEqual('Bearer 1234'); + return res(ctx.status(200)); + }), + ); + await expect(service.send(body)).resolves.not.toThrow(); + }); + + it('should throw error if failing', async () => { + const body: NotificationSendOptions = { + recipients: { type: 'entity', entityRef: ['user:default/john.doe'] }, + payload: testNotification, + }; + + server.use( + rest.post(`${mockBaseUrl}/`, async (req, res, ctx) => { + const json = await req.json(); + expect(json).toEqual({ ...body, origin: 'plugin-test' }); + expect(req.headers.get('Authorization')).toEqual('Bearer 1234'); + return res(ctx.status(400)); + }), + ); + await expect(service.send(body)).rejects.toThrow(); + }); + }); +}); diff --git a/plugins/notifications-node/src/service/DefaultNotificationService.ts b/plugins/notifications-node/src/service/DefaultNotificationService.ts new file mode 100644 index 0000000000..7e5cf58f53 --- /dev/null +++ b/plugins/notifications-node/src/service/DefaultNotificationService.ts @@ -0,0 +1,85 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TokenManager } from '@backstage/backend-common'; +import { NotificationService } from './NotificationService'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; +import { NotificationPayload } from '@backstage/plugin-notifications-common'; + +/** @public */ +export type NotificationServiceOptions = { + discovery: DiscoveryService; + tokenManager: TokenManager; + pluginId: string; +}; + +/** @public */ +export type NotificationRecipients = { + type: 'entity'; + entityRef: string | string[]; +}; + +// TODO: Support for broadcast messages +// | { type: 'broadcast' }; + +/** @public */ +export type NotificationSendOptions = { + recipients: NotificationRecipients; + payload: NotificationPayload; +}; + +/** @public */ +export class DefaultNotificationService implements NotificationService { + private constructor( + private readonly discovery: DiscoveryService, + private readonly tokenManager: TokenManager, + private readonly pluginId: string, + ) {} + + static create({ + tokenManager, + discovery, + pluginId, + }: NotificationServiceOptions): DefaultNotificationService { + return new DefaultNotificationService(discovery, tokenManager, pluginId); + } + + async send(notification: NotificationSendOptions): Promise { + try { + const baseUrl = await this.discovery.getBaseUrl('notifications'); + const { token } = await this.tokenManager.getToken(); + const response = await fetch(`${baseUrl}/`, { + method: 'POST', + body: JSON.stringify({ + ...notification, + // TODO: Should retrieve this in the backend from service auth instead + origin: `plugin-${this.pluginId}`, + }), + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + Authorization: `Bearer ${token}`, + }, + }); + + if (!response.ok) { + throw new Error(`Request failed with status ${response.status}`); + } + } catch (error) { + // TODO: Should not throw in optimal case, see BEP + throw new Error(`Failed to send notifications: ${error}`); + } + } +} diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/types.ts b/plugins/notifications-node/src/service/NotificationService.ts similarity index 68% rename from plugins/catalog-backend-module-bitbucket/src/lib/types.ts rename to plugins/notifications-node/src/service/NotificationService.ts index b1bb416363..08b63599cc 100644 --- a/plugins/catalog-backend-module-bitbucket/src/lib/types.ts +++ b/plugins/notifications-node/src/service/NotificationService.ts @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * Copyright 2024 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. @@ -14,18 +14,9 @@ * limitations under the License. */ -type BitbucketRepositoryBase = { - project: { - key: string; - }; - slug: string; -}; +import { NotificationSendOptions } from './DefaultNotificationService'; -export type BitbucketRepository = BitbucketRepositoryBase & { - links: Record< - string, - { - href: string; - }[] - >; -}; +/** @public */ +export interface NotificationService { + send(options: NotificationSendOptions): Promise; +} diff --git a/plugins/notifications-node/src/service/index.ts b/plugins/notifications-node/src/service/index.ts new file mode 100644 index 0000000000..37c3bff908 --- /dev/null +++ b/plugins/notifications-node/src/service/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './DefaultNotificationService'; +export type { NotificationService } from './NotificationService'; diff --git a/plugins/notifications-node/src/setupTests.ts b/plugins/notifications-node/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/notifications-node/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; diff --git a/plugins/notifications/.eslintrc.js b/plugins/notifications/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/notifications/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/notifications/CHANGELOG.md b/plugins/notifications/CHANGELOG.md new file mode 100644 index 0000000000..6e1cd230de --- /dev/null +++ b/plugins/notifications/CHANGELOG.md @@ -0,0 +1,15 @@ +# @backstage/plugin-notifications + +## 0.0.1-next.0 + +### Patch Changes + +- fb8fc24: Initial notifications system for backstage +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/plugin-notifications-common@0.0.1-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 diff --git a/plugins/notifications/README.md b/plugins/notifications/README.md new file mode 100644 index 0000000000..63212d2c16 --- /dev/null +++ b/plugins/notifications/README.md @@ -0,0 +1,41 @@ +# notifications + +Welcome to the notifications plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +First, install the `@backstage/plugin-notifications-backend` and `@backstage/plugin-notifications-node` packages. +See the documentation for installation instructions. + +To add the notifications main menu, add the following to your `packages/app/src/components/Root/Root.tsx`: + +```tsx +import { NotificationsSidebarItem } from '@backstage/plugin-notifications'; + + + + + // ... + + + +; +``` + +Also add the route to notifications to `packages/app/src/App.tsx`: + +```tsx +import { NotificationsPage } from '@backstage/plugin-notifications'; + + + // ... + } /> +; +``` + +## Real-time notifications + +To be able to get real-time notifications to the UI without need for the user to refresh the page, you also need to +add `@backstage/plugin-signals` package to your installation. diff --git a/plugins/notifications/api-report.md b/plugins/notifications/api-report.md new file mode 100644 index 0000000000..e2071dad14 --- /dev/null +++ b/plugins/notifications/api-report.md @@ -0,0 +1,135 @@ +## API Report File for "@backstage/plugin-notifications" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +/// + +import { ApiRef } from '@backstage/core-plugin-api'; +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { DiscoveryApi } from '@backstage/core-plugin-api'; +import { FetchApi } from '@backstage/core-plugin-api'; +import { JSX as JSX_2 } from 'react'; +import { Notification as Notification_2 } from '@backstage/plugin-notifications-common'; +import { NotificationStatus } from '@backstage/plugin-notifications-common'; +import { NotificationType } from '@backstage/plugin-notifications-common'; +import { default as React_2 } from 'react'; +import { RouteRef } from '@backstage/core-plugin-api'; + +// @public (undocumented) +export type GetNotificationsOptions = { + type?: NotificationType; + offset?: number; + limit?: number; + search?: string; +}; + +// @public (undocumented) +export interface NotificationsApi { + // (undocumented) + getNotifications( + options?: GetNotificationsOptions, + ): Promise; + // (undocumented) + getStatus(): Promise; + // (undocumented) + updateNotifications( + options: UpdateNotificationsOptions, + ): Promise; +} + +// @public (undocumented) +export const notificationsApiRef: ApiRef; + +// @public (undocumented) +export class NotificationsClient implements NotificationsApi { + constructor(options: { discoveryApi: DiscoveryApi; fetchApi: FetchApi }); + // (undocumented) + getNotifications( + options?: GetNotificationsOptions, + ): Promise; + // (undocumented) + getStatus(): Promise; + // (undocumented) + updateNotifications( + options: UpdateNotificationsOptions, + ): Promise; +} + +// @public (undocumented) +export const NotificationsPage: () => JSX_2.Element; + +// @public (undocumented) +export const notificationsPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; + +// @public (undocumented) +export const NotificationsSidebarItem: (props?: { + webNotificationsEnabled?: boolean; + titleCounterEnabled?: boolean; +}) => React_2.JSX.Element; + +// @public (undocumented) +export const NotificationsTable: (props: { + onUpdate: () => void; + type: NotificationType; + notifications?: Notification_2[]; +}) => React_2.JSX.Element; + +// @public (undocumented) +export type UpdateNotificationsOptions = { + ids: string[]; + done?: boolean; + read?: boolean; + saved?: boolean; +}; + +// @public (undocumented) +export function useNotificationsApi( + f: (api: NotificationsApi) => Promise, + deps?: any[], +): + | { + retry: () => void; + loading: boolean; + error?: undefined; + value?: undefined; + } + | { + retry: () => void; + loading: false; + error: Error; + value?: undefined; + } + | { + retry: () => void; + loading: true; + error?: Error | undefined; + value?: T | undefined; + } + | { + retry: () => void; + loading: false; + error?: undefined; + value: T; + }; + +// @public (undocumented) +export function useTitleCounter(): { + setNotificationCount: (newCount: number) => void; +}; + +// @public (undocumented) +export function useWebNotifications(): { + sendWebNotification: (options: { + title: string; + description: string; + }) => Notification | null; +}; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/notifications/catalog-info.yaml b/plugins/notifications/catalog-info.yaml new file mode 100644 index 0000000000..33d39798e7 --- /dev/null +++ b/plugins/notifications/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-notifications + title: '@backstage/plugin-notifications' +spec: + lifecycle: experimental + type: backstage-frontend-plugin + owner: maintainers diff --git a/plugins/catalog-backend-module-bitbucket/src/index.ts b/plugins/notifications/dev/index.tsx similarity index 63% rename from plugins/catalog-backend-module-bitbucket/src/index.ts rename to plugins/notifications/dev/index.tsx index 5bbda25dea..f4ea31f4ab 100644 --- a/plugins/catalog-backend-module-bitbucket/src/index.ts +++ b/plugins/notifications/dev/index.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2023 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,12 +13,15 @@ * 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 { notificationsPlugin } from '../src/plugin'; -/** - * A Backstage catalog backend module that helps integrate towards Bitbucket - * - * @packageDocumentation - */ - -export { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; -export type { BitbucketRepositoryParser } from './lib/BitbucketRepositoryParser'; +createDevApp() + .registerPlugin(notificationsPlugin) + .addPage({ + element:
, + title: 'Root Page', + path: '/notifications', + }) + .render(); diff --git a/plugins/notifications/knip-report.md b/plugins/notifications/knip-report.md new file mode 100644 index 0000000000..9713c78460 --- /dev/null +++ b/plugins/notifications/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| @material-ui/lab | package.json | +| @backstage/theme | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/notifications/package.json b/plugins/notifications/package.json new file mode 100644 index 0000000000..2e0a75d39b --- /dev/null +++ b/plugins/notifications/package.json @@ -0,0 +1,62 @@ +{ + "name": "@backstage/plugin-notifications", + "version": "0.0.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" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications" + }, + "backstage": { + "role": "frontend-plugin" + }, + "sideEffects": false, + "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": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-notifications-common": "workspace:^", + "@backstage/plugin-signals-react": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", + "@material-ui/core": "^4.9.13", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "^4.0.0-alpha.61", + "@types/react": "^16.13.1 || ^17.0.0", + "react-relative-time": "^0.0.9", + "react-use": "^17.2.4" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "devDependencies": { + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/notifications/src/api/NotificationsApi.ts b/plugins/notifications/src/api/NotificationsApi.ts new file mode 100644 index 0000000000..775dc6b244 --- /dev/null +++ b/plugins/notifications/src/api/NotificationsApi.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createApiRef } from '@backstage/core-plugin-api'; +import { + Notification, + NotificationStatus, + NotificationType, +} from '@backstage/plugin-notifications-common'; + +/** @public */ +export const notificationsApiRef = createApiRef({ + id: 'plugin.notifications.service', +}); + +/** @public */ +export type GetNotificationsOptions = { + type?: NotificationType; + offset?: number; + limit?: number; + search?: string; +}; + +/** @public */ +export type UpdateNotificationsOptions = { + ids: string[]; + done?: boolean; + read?: boolean; + saved?: boolean; +}; + +/** @public */ +export interface NotificationsApi { + getNotifications(options?: GetNotificationsOptions): Promise; + + getStatus(): Promise; + + updateNotifications( + options: UpdateNotificationsOptions, + ): Promise; +} diff --git a/plugins/notifications/src/api/NotificationsClient.test.ts b/plugins/notifications/src/api/NotificationsClient.test.ts new file mode 100644 index 0000000000..a7a2d1e5a7 --- /dev/null +++ b/plugins/notifications/src/api/NotificationsClient.test.ts @@ -0,0 +1,104 @@ +/* + * Copyright 2024 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 { MockFetchApi, setupRequestMockHandlers } from '@backstage/test-utils'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { NotificationsClient } from './NotificationsClient'; +import { Notification } from '@backstage/plugin-notifications-common'; + +const server = setupServer(); + +const testNotification: Partial = { + user: 'user:default/john.doe', + origin: 'plugin-test', + payload: { + title: 'Notification 1', + link: '/catalog', + severity: 'normal', + }, +}; + +describe('NotificationsClient', () => { + setupRequestMockHandlers(server); + const mockBaseUrl = 'http://backstage/api/notifications'; + const discoveryApi = { getBaseUrl: async () => mockBaseUrl }; + const fetchApi = new MockFetchApi(); + + let client: NotificationsClient; + beforeEach(() => { + client = new NotificationsClient({ discoveryApi, fetchApi }); + }); + + describe('getNotifications', () => { + const expectedResp = [testNotification]; + + it('should fetch notifications from correct endpoint', async () => { + server.use( + rest.get(`${mockBaseUrl}/`, (_, res, ctx) => + res(ctx.json(expectedResp)), + ), + ); + const response = await client.getNotifications(); + expect(response).toEqual(expectedResp); + }); + + it('should fetch notifications with options', async () => { + server.use( + rest.get(`${mockBaseUrl}/`, (req, res, ctx) => { + expect(req.url.search).toBe( + '?type=undone&limit=10&offset=0&search=find+me', + ); + return res(ctx.json(expectedResp)); + }), + ); + const response = await client.getNotifications({ + type: 'undone', + limit: 10, + offset: 0, + search: 'find me', + }); + expect(response).toEqual(expectedResp); + }); + + it('should fetch status from correct endpoint', async () => { + server.use( + rest.get(`${mockBaseUrl}/status`, (_, res, ctx) => + res(ctx.json({ read: 1, unread: 1 })), + ), + ); + const response = await client.getStatus(); + expect(response).toEqual({ read: 1, unread: 1 }); + }); + + it('should update notifications', async () => { + server.use( + rest.post(`${mockBaseUrl}/update`, async (req, res, ctx) => { + expect(await req.json()).toEqual({ + ids: ['acdaa8ca-262b-43c1-b74b-de06e5f3b3c7'], + done: true, + }); + return res(ctx.json(expectedResp)); + }), + ); + const response = await client.updateNotifications({ + ids: ['acdaa8ca-262b-43c1-b74b-de06e5f3b3c7'], + done: true, + }); + expect(response).toEqual(expectedResp); + }); + }); +}); diff --git a/plugins/notifications/src/api/NotificationsClient.ts b/plugins/notifications/src/api/NotificationsClient.ts new file mode 100644 index 0000000000..fe7a90d3e8 --- /dev/null +++ b/plugins/notifications/src/api/NotificationsClient.ts @@ -0,0 +1,89 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + GetNotificationsOptions, + NotificationsApi, + UpdateNotificationsOptions, +} from './NotificationsApi'; +import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'; +import { ResponseError } from '@backstage/errors'; +import { + Notification, + NotificationStatus, +} from '@backstage/plugin-notifications-common'; + +/** @public */ +export class NotificationsClient implements NotificationsApi { + private readonly discoveryApi: DiscoveryApi; + private readonly fetchApi: FetchApi; + + public constructor(options: { + discoveryApi: DiscoveryApi; + fetchApi: FetchApi; + }) { + this.discoveryApi = options.discoveryApi; + this.fetchApi = options.fetchApi; + } + + async getNotifications( + options?: GetNotificationsOptions, + ): Promise { + const queryString = new URLSearchParams(); + if (options?.type) { + queryString.append('type', options.type); + } + if (options?.limit !== undefined) { + queryString.append('limit', options.limit.toString(10)); + } + if (options?.offset !== undefined) { + queryString.append('offset', options.offset.toString(10)); + } + if (options?.search) { + queryString.append('search', options.search); + } + + const urlSegment = `?${queryString}`; + + return await this.request(urlSegment); + } + + async getStatus(): Promise { + return await this.request('status'); + } + + async updateNotifications( + options: UpdateNotificationsOptions, + ): Promise { + return await this.request('update', { + method: 'POST', + body: JSON.stringify(options), + headers: { 'Content-Type': 'application/json' }, + }); + } + + private async request(path: string, init?: any): Promise { + const baseUrl = `${await this.discoveryApi.getBaseUrl('notifications')}/`; + const url = new URL(path, baseUrl); + + const response = await this.fetchApi.fetch(url.toString(), init); + + if (!response.ok) { + throw await ResponseError.fromResponse(response); + } + + return response.json() as Promise; + } +} diff --git a/plugins/notifications/src/api/index.ts b/plugins/notifications/src/api/index.ts new file mode 100644 index 0000000000..bf39e313b8 --- /dev/null +++ b/plugins/notifications/src/api/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './NotificationsApi'; +export * from './NotificationsClient'; diff --git a/plugins/notifications/src/components/NotificationsPage/NotificationsPage.tsx b/plugins/notifications/src/components/NotificationsPage/NotificationsPage.tsx new file mode 100644 index 0000000000..85e0937ca3 --- /dev/null +++ b/plugins/notifications/src/components/NotificationsPage/NotificationsPage.tsx @@ -0,0 +1,112 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useEffect, useState } from 'react'; +import { + Content, + ErrorPanel, + PageWithHeader, +} from '@backstage/core-components'; +import { NotificationsTable } from '../NotificationsTable'; +import { useNotificationsApi } from '../../hooks'; +import { Button, Grid, makeStyles } from '@material-ui/core'; +import Bookmark from '@material-ui/icons/Bookmark'; +import Check from '@material-ui/icons/Check'; +import Inbox from '@material-ui/icons/Inbox'; +import { NotificationType } from '@backstage/plugin-notifications-common'; +import { useSignal } from '@backstage/plugin-signals-react'; + +const useStyles = makeStyles(_theme => ({ + filterButton: { + width: '100%', + justifyContent: 'start', + }, +})); + +export const NotificationsPage = () => { + const [type, setType] = useState('undone'); + const [refresh, setRefresh] = React.useState(false); + + const { error, value, retry } = useNotificationsApi( + api => api.getNotifications({ type }), + [type], + ); + + useEffect(() => { + if (refresh) { + retry(); + setRefresh(false); + } + }, [refresh, setRefresh, retry]); + + const { lastSignal } = useSignal('notifications'); + useEffect(() => { + if (lastSignal && lastSignal.action) { + setRefresh(true); + } + }, [lastSignal]); + + const onUpdate = () => { + setRefresh(true); + }; + + const styles = useStyles(); + if (error) { + return ; + } + + return ( + + + + + + + + + + + + + + + ); +}; diff --git a/plugins/notifications/src/components/NotificationsPage/index.ts b/plugins/notifications/src/components/NotificationsPage/index.ts new file mode 100644 index 0000000000..ace54c34d0 --- /dev/null +++ b/plugins/notifications/src/components/NotificationsPage/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './NotificationsPage'; diff --git a/plugins/notifications/src/components/NotificationsSideBarItem/NotificationsSideBarItem.tsx b/plugins/notifications/src/components/NotificationsSideBarItem/NotificationsSideBarItem.tsx new file mode 100644 index 0000000000..90fba009a3 --- /dev/null +++ b/plugins/notifications/src/components/NotificationsSideBarItem/NotificationsSideBarItem.tsx @@ -0,0 +1,107 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useEffect } from 'react'; +import { useNotificationsApi } from '../../hooks'; +import { SidebarItem } from '@backstage/core-components'; +import NotificationsIcon from '@material-ui/icons/Notifications'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { rootRouteRef } from '../../routes'; +import { useSignal } from '@backstage/plugin-signals-react'; +import { useWebNotifications } from '../../hooks/useWebNotifications'; +import { useTitleCounter } from '../../hooks/useTitleCounter'; +import { JsonObject } from '@backstage/types'; + +/** @public */ +export const NotificationsSidebarItem = (props?: { + webNotificationsEnabled?: boolean; + titleCounterEnabled?: boolean; +}) => { + const { webNotificationsEnabled = false, titleCounterEnabled = true } = + props ?? { webNotificationsEnabled: false, titleCounterEnabled: true }; + + const { loading, error, value, retry } = useNotificationsApi(api => + api.getStatus(), + ); + const [unreadCount, setUnreadCount] = React.useState(0); + const notificationsRoute = useRouteRef(rootRouteRef); + // TODO: Add signal type support to `useSignal` to make it a bit easier to use + // TODO: Do we want to add long polling in case signals are not available + const { lastSignal } = useSignal('notifications'); + const { sendWebNotification } = useWebNotifications(); + const [refresh, setRefresh] = React.useState(false); + const { setNotificationCount } = useTitleCounter(); + + useEffect(() => { + if (refresh) { + retry(); + setRefresh(false); + } + }, [refresh, retry]); + + useEffect(() => { + const handleWebNotification = (signal: JsonObject) => { + if (!webNotificationsEnabled || !('notification' in signal)) { + return; + } + + const notificationData = signal.notification as JsonObject; + + if ( + !notificationData || + !('title' in notificationData) || + !('description' in notificationData) || + !('title' in notificationData) + ) { + return; + } + const notification = sendWebNotification({ + title: notificationData.title as string, + description: notificationData.description as string, + }); + if (notification) { + notification.onclick = event => { + event.preventDefault(); + notification.close(); + window.open(notificationData.link as string, '_blank'); + }; + } + }; + + if (lastSignal && lastSignal.action) { + handleWebNotification(lastSignal); + setRefresh(true); + } + }, [lastSignal, sendWebNotification, webNotificationsEnabled]); + + useEffect(() => { + if (!loading && !error && value) { + setUnreadCount(value.unread); + if (titleCounterEnabled) { + setNotificationCount(value.unread); + } + } + }, [loading, error, value, titleCounterEnabled, setNotificationCount]); + + // TODO: Figure out if the count can be added to hasNotifications + return ( + + ); +}; diff --git a/plugins/notifications/src/components/NotificationsSideBarItem/index.ts b/plugins/notifications/src/components/NotificationsSideBarItem/index.ts new file mode 100644 index 0000000000..22d6b5d881 --- /dev/null +++ b/plugins/notifications/src/components/NotificationsSideBarItem/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './NotificationsSideBarItem'; diff --git a/plugins/notifications/src/components/NotificationsTable/NotificationsTable.tsx b/plugins/notifications/src/components/NotificationsTable/NotificationsTable.tsx new file mode 100644 index 0000000000..8328da1c6d --- /dev/null +++ b/plugins/notifications/src/components/NotificationsTable/NotificationsTable.tsx @@ -0,0 +1,308 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useEffect, useState } from 'react'; +import { + Box, + Button, + IconButton, + makeStyles, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + Tooltip, + Typography, +} from '@material-ui/core'; +import { + Notification, + NotificationType, +} from '@backstage/plugin-notifications-common'; +import { useNavigate } from 'react-router-dom'; +import Checkbox from '@material-ui/core/Checkbox'; +import Check from '@material-ui/icons/Check'; +import Bookmark from '@material-ui/icons/Bookmark'; +import { notificationsApiRef } from '../../api'; +import { useApi } from '@backstage/core-plugin-api'; +import Inbox from '@material-ui/icons/Inbox'; +import CloseIcon from '@material-ui/icons/Close'; +// @ts-ignore +import RelativeTime from 'react-relative-time'; +import ArrowForwardIcon from '@material-ui/icons/ArrowForward'; + +const useStyles = makeStyles(theme => ({ + table: { + border: `1px solid ${theme.palette.divider}`, + }, + header: { + borderBottom: `1px solid ${theme.palette.divider}`, + }, + + notificationRow: { + cursor: 'pointer', + '&.unread': { + border: '1px solid rgba(255, 255, 255, .3)', + }, + '& .hideOnHover': { + display: 'initial', + }, + '& .showOnHover': { + display: 'none', + }, + '&:hover': { + '& .hideOnHover': { + display: 'none', + }, + '& .showOnHover': { + display: 'initial', + }, + }, + }, + actionButton: { + padding: '9px', + }, + checkBox: { + padding: '0 10px 10px 0', + }, +})); + +/** @public */ +export const NotificationsTable = (props: { + onUpdate: () => void; + type: NotificationType; + notifications?: Notification[]; +}) => { + const { notifications, type } = props; + const navigate = useNavigate(); + const styles = useStyles(); + const [selected, setSelected] = useState([]); + const notificationsApi = useApi(notificationsApiRef); + + const onCheckBoxClick = (id: string) => { + const index = selected.indexOf(id); + if (index !== -1) { + setSelected(selected.filter(s => s !== id)); + } else { + setSelected([...selected, id]); + } + }; + + useEffect(() => { + setSelected([]); + }, [type]); + + const isChecked = (id: string) => { + return selected.indexOf(id) !== -1; + }; + + const isAllSelected = () => { + return ( + selected.length === notifications?.length && notifications.length > 0 + ); + }; + + return ( + + + + + {type !== 'saved' && !notifications?.length && 'No notifications'} + {type !== 'saved' && !!notifications?.length && ( + { + if (isAllSelected()) { + setSelected([]); + } else { + setSelected( + notifications ? notifications.map(n => n.id) : [], + ); + } + }} + /> + )} + {type === 'saved' && + `${notifications?.length ?? 0} saved notifications`} + {selected.length === 0 && + !!notifications?.length && + type !== 'saved' && + 'Select all'} + {selected.length > 0 && `${selected.length} selected`} + {type === 'done' && selected.length > 0 && ( + + )} + + {type === 'undone' && selected.length > 0 && ( + + )} + + + + + {props.notifications?.map(notification => { + return ( + + + onCheckBoxClick(notification.id)} + /> + + + notificationsApi + .updateNotifications({ ids: [notification.id], read: true }) + .then(() => navigate(notification.payload.link)) + } + style={{ paddingLeft: 0 }} + > + + {notification.payload.title} + + + {notification.payload.description} + + + + + + + + + + notificationsApi + .updateNotifications({ + ids: [notification.id], + read: true, + }) + .then(() => navigate(notification.payload.link)) + } + > + + + + + { + if (notification.read) { + notificationsApi + .updateNotifications({ + ids: [notification.id], + done: false, + }) + .then(() => { + props.onUpdate(); + }); + } else { + notificationsApi + .updateNotifications({ + ids: [notification.id], + done: true, + }) + .then(() => { + props.onUpdate(); + }); + } + }} + > + {notification.read ? ( + + ) : ( + + )} + + + + { + if (notification.saved) { + notificationsApi + .updateNotifications({ + ids: [notification.id], + saved: false, + }) + .then(() => { + props.onUpdate(); + }); + } else { + notificationsApi + .updateNotifications({ + ids: [notification.id], + saved: true, + }) + .then(() => { + props.onUpdate(); + }); + } + }} + > + {notification.saved ? ( + + ) : ( + + )} + + + + + + ); + })} + +
+ ); +}; diff --git a/plugins/notifications/src/components/NotificationsTable/index.ts b/plugins/notifications/src/components/NotificationsTable/index.ts new file mode 100644 index 0000000000..a1fb7a25c6 --- /dev/null +++ b/plugins/notifications/src/components/NotificationsTable/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './NotificationsTable'; diff --git a/plugins/notifications/src/components/index.ts b/plugins/notifications/src/components/index.ts new file mode 100644 index 0000000000..3bca70a215 --- /dev/null +++ b/plugins/notifications/src/components/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './NotificationsSideBarItem'; +export * from './NotificationsTable'; diff --git a/plugins/notifications/src/hooks/index.ts b/plugins/notifications/src/hooks/index.ts new file mode 100644 index 0000000000..516901aa04 --- /dev/null +++ b/plugins/notifications/src/hooks/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './useNotificationsApi'; +export * from './useWebNotifications'; +export * from './useTitleCounter'; diff --git a/plugins/notifications/src/hooks/useNotificationsApi.ts b/plugins/notifications/src/hooks/useNotificationsApi.ts new file mode 100644 index 0000000000..e1afb54c8d --- /dev/null +++ b/plugins/notifications/src/hooks/useNotificationsApi.ts @@ -0,0 +1,31 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NotificationsApi, notificationsApiRef } from '../api'; +import { useApi } from '@backstage/core-plugin-api'; +import useAsyncRetry from 'react-use/lib/useAsyncRetry'; + +/** @public */ +export function useNotificationsApi( + f: (api: NotificationsApi) => Promise, + deps: any[] = [], +) { + const notificationsApi = useApi(notificationsApiRef); + + return useAsyncRetry(async () => { + return await f(notificationsApi); + }, deps); +} diff --git a/plugins/notifications/src/hooks/useTitleCounter.ts b/plugins/notifications/src/hooks/useTitleCounter.ts new file mode 100644 index 0000000000..d4ba22b946 --- /dev/null +++ b/plugins/notifications/src/hooks/useTitleCounter.ts @@ -0,0 +1,60 @@ +/* + * Copyright 2024 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 { useCallback, useEffect, useState } from 'react'; + +/** @public */ +export function useTitleCounter() { + const [title, setTitle] = useState(document.title); + const [count, setCount] = useState(0); + + const getPrefix = (value: number) => { + return value === 0 ? '' : `(${value}) `; + }; + + const cleanTitle = (currentTitle: string) => { + return currentTitle.replace(/^\(\d+\)\s/, ''); + }; + + useEffect(() => { + document.title = title; + }, [title]); + + useEffect(() => { + const baseTitle = cleanTitle(title); + setTitle(`${getPrefix(count)}${baseTitle}`); + return () => { + document.title = cleanTitle(title); + }; + }, [title, count]); + + const titleElement = document.querySelector('title'); + if (titleElement) { + new MutationObserver(() => { + setTitle(document.title); + }).observe(titleElement, { + subtree: true, + characterData: true, + childList: true, + }); + } + + const setNotificationCount = useCallback( + (newCount: number) => setCount(newCount), + [], + ); + + return { setNotificationCount }; +} diff --git a/plugins/notifications/src/hooks/useWebNotifications.ts b/plugins/notifications/src/hooks/useWebNotifications.ts new file mode 100644 index 0000000000..7e34172a97 --- /dev/null +++ b/plugins/notifications/src/hooks/useWebNotifications.ts @@ -0,0 +1,54 @@ +/* + * Copyright 2024 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 { useCallback, useEffect, useState } from 'react'; + +/** @public */ +export function useWebNotifications() { + const [webNotificationPermission, setWebNotificationPermission] = + useState('default'); + const [webNotifications, setWebNotifications] = useState([]); + + useEffect(() => { + if ('Notification' in window && webNotificationPermission === 'default') { + window.Notification.requestPermission().then(permission => { + setWebNotificationPermission(permission); + }); + } + }, [webNotificationPermission]); + + document.addEventListener('visibilitychange', () => { + if (document.visibilityState === 'visible') { + webNotifications.forEach(n => n.close()); + setWebNotifications([]); + } + }); + + const sendWebNotification = useCallback( + (options: { title: string; description: string }) => { + if (webNotificationPermission !== 'granted') { + return null; + } + + const notification = new Notification(options.title, { + body: options.description, + }); + return notification; + }, + [webNotificationPermission], + ); + + return { sendWebNotification }; +} diff --git a/plugins/notifications/src/index.ts b/plugins/notifications/src/index.ts new file mode 100644 index 0000000000..bb5d76a0cf --- /dev/null +++ b/plugins/notifications/src/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { notificationsPlugin, NotificationsPage } from './plugin'; +export * from './api'; +export * from './hooks'; +export * from './components'; diff --git a/plugins/notifications/src/plugin.test.ts b/plugins/notifications/src/plugin.test.ts new file mode 100644 index 0000000000..3bf749aba9 --- /dev/null +++ b/plugins/notifications/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { notificationsPlugin } from './plugin'; + +describe('notifications', () => { + it('should export plugin', () => { + expect(notificationsPlugin).toBeDefined(); + }); +}); diff --git a/plugins/notifications/src/plugin.ts b/plugins/notifications/src/plugin.ts new file mode 100644 index 0000000000..472e519183 --- /dev/null +++ b/plugins/notifications/src/plugin.ts @@ -0,0 +1,52 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createApiFactory, + createPlugin, + createRoutableExtension, + discoveryApiRef, + fetchApiRef, +} from '@backstage/core-plugin-api'; + +import { rootRouteRef } from './routes'; +import { notificationsApiRef } from './api/NotificationsApi'; +import { NotificationsClient } from './api'; + +/** @public */ +export const notificationsPlugin = createPlugin({ + id: 'notifications', + routes: { + root: rootRouteRef, + }, + apis: [ + createApiFactory({ + api: notificationsApiRef, + deps: { discoveryApi: discoveryApiRef, fetchApi: fetchApiRef }, + factory: ({ discoveryApi, fetchApi }) => + new NotificationsClient({ discoveryApi, fetchApi }), + }), + ], +}); + +/** @public */ +export const NotificationsPage = notificationsPlugin.provide( + createRoutableExtension({ + name: 'NotificationsPage', + component: () => + import('./components/NotificationsPage').then(m => m.NotificationsPage), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/notifications/src/routes.ts b/plugins/notifications/src/routes.ts new file mode 100644 index 0000000000..f307038701 --- /dev/null +++ b/plugins/notifications/src/routes.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createRouteRef } from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'notifications', +}); diff --git a/plugins/notifications/src/setupTests.ts b/plugins/notifications/src/setupTests.ts new file mode 100644 index 0000000000..865308e634 --- /dev/null +++ b/plugins/notifications/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@testing-library/jest-dom'; diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md index ce7de86809..02cf12630f 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-octopus-deploy +## 0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.2.12-next.0 ### Patch Changes diff --git a/plugins/octopus-deploy/README.md b/plugins/octopus-deploy/README.md index 3699b76678..ee7d9d8543 100644 --- a/plugins/octopus-deploy/README.md +++ b/plugins/octopus-deploy/README.md @@ -14,7 +14,7 @@ To get started, first install the plugin with the following command: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-octopus-deploy +yarn --cwd packages/app add @backstage/plugin-octopus-deploy ``` ### Setup diff --git a/plugins/octopus-deploy/knip-report.md b/plugins/octopus-deploy/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/octopus-deploy/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index f37205e60b..d157cf6aa8 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.2.12-next.0", + "version": "0.2.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.9.13", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/opencost/CHANGELOG.md b/plugins/opencost/CHANGELOG.md index 16d73b63d2..80a73e7e48 100644 --- a/plugins/opencost/CHANGELOG.md +++ b/plugins/opencost/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-opencost +## 0.2.5-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 03c5bbe: Updated dependency `date-fns` to `^3.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/opencost/README.md b/plugins/opencost/README.md index 05c63206a2..1dec15dcc1 100644 --- a/plugins/opencost/README.md +++ b/plugins/opencost/README.md @@ -11,7 +11,7 @@ All of the code was originally ported from https://github.com/opencost/opencost/ 1. Add the OpenCost dependency to the `packages/app/package.json`: ```sh # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-opencost + yarn --cwd packages/app add @backstage/plugin-opencost ``` 2. Add the `OpenCostPage` to your `packages/app/src/App.tsx`: diff --git a/plugins/opencost/knip-report.md b/plugins/opencost/knip-report.md new file mode 100644 index 0000000000..ae56051f88 --- /dev/null +++ b/plugins/opencost/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/jest-dom | package.json | + diff --git a/plugins/opencost/package.json b/plugins/opencost/package.json index 1e1b4fb674..e947f307d4 100644 --- a/plugins/opencost/package.json +++ b/plugins/opencost/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-opencost", - "version": "0.2.4", + "version": "0.2.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/opencost" + }, "backstage": { "role": "frontend-plugin" }, @@ -30,9 +35,9 @@ "@material-ui/icons": "^4.9.1", "@material-ui/pickers": "^3.3.10", "@material-ui/styles": "^4.11.5", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "axios": "^1.4.0", - "date-fns": "^2.30.0", + "date-fns": "^3.0.0", "lodash": "^4.17.21", "recharts": "^2.5.0" }, diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index 294d0f50d5..391c960681 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-org-react +## 0.1.19-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.1.19-next.0 ### Patch Changes diff --git a/plugins/org-react/knip-report.md b/plugins/org-react/knip-report.md new file mode 100644 index 0000000000..7b939bc6d9 --- /dev/null +++ b/plugins/org-react/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/catalog-client | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index f07229e557..4df2900b49 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.19-next.0", + "version": "0.1.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 1d2534ee4d..6537bd3f26 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-org +## 0.6.20-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 6e1bf50: Added basic support for the new frontend system, exported from the `/alpha` subpath. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + +## 0.6.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + ## 0.6.20-next.0 ### Patch Changes diff --git a/plugins/org/api-report-alpha.md b/plugins/org/api-report-alpha.md new file mode 100644 index 0000000000..3cee584db0 --- /dev/null +++ b/plugins/org/api-report-alpha.md @@ -0,0 +1,19 @@ +## API Report File for "@backstage/plugin-org" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackstagePlugin } from '@backstage/frontend-plugin-api'; +import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; + +// @alpha (undocumented) +const _default: BackstagePlugin< + {}, + { + catalogIndex: ExternalRouteRef; + } +>; +export default _default; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/org/knip-report.md b/plugins/org/knip-report.md new file mode 100644 index 0000000000..d2f6612ddc --- /dev/null +++ b/plugins/org/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/types | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/plugin-catalog | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/org/package.json b/plugins/org/package.json index 1050876a7b..0d1a57004c 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,14 +1,27 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.20-next.0", + "version": "0.6.20-next.2", "main": "src/index.ts", "types": "src/index.ts", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.tsx", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.tsx" + ], + "package.json": [ + "package.json" + ] + } + }, "license": "Apache-2.0", "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" + "access": "public" }, "backstage": { "role": "frontend-plugin" @@ -31,14 +44,16 @@ }, "dependencies": { "@backstage/catalog-model": "workspace:^", + "@backstage/core-compat-api": "workspace:^", "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", + "@backstage/frontend-plugin-api": "workspace:^", "@backstage/plugin-catalog-common": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "p-limit": "^3.1.0", "pluralize": "^8.0.0", diff --git a/plugins/org/src/alpha.tsx b/plugins/org/src/alpha.tsx new file mode 100644 index 0000000000..3fbf5bcc41 --- /dev/null +++ b/plugins/org/src/alpha.tsx @@ -0,0 +1,78 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + compatWrapper, + convertLegacyRouteRefs, +} from '@backstage/core-compat-api'; +import { createPlugin } from '@backstage/frontend-plugin-api'; +import React from 'react'; +import { catalogIndexRouteRef } from './routes'; +import { createEntityCardExtension } from '@backstage/plugin-catalog-react/alpha'; + +/** @alpha */ +const EntityGroupProfileCard = createEntityCardExtension({ + name: 'group-profile', + filter: 'kind:group', + loader: async () => + import('./components/Cards/Group/GroupProfile/GroupProfileCard').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +const EntityMembersListCard = createEntityCardExtension({ + name: 'members-list', + filter: 'kind:group', + loader: async () => + import('./components/Cards/Group/MembersList/MembersListCard').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +const EntityOwnershipCard = createEntityCardExtension({ + name: 'ownership', + filter: 'kind:group,user', + loader: async () => + import('./components/Cards/OwnershipCard/OwnershipCard').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +const EntityUserProfileCard = createEntityCardExtension({ + name: 'user-profile', + filter: 'kind:user', + loader: async () => + import('./components/Cards/User/UserProfileCard/UserProfileCard').then(m => + compatWrapper(), + ), +}); + +/** @alpha */ +export default createPlugin({ + id: 'org', + extensions: [ + EntityGroupProfileCard, + EntityMembersListCard, + EntityOwnershipCard, + EntityUserProfileCard, + ], + externalRoutes: convertLegacyRouteRefs({ + catalogIndex: catalogIndexRouteRef, + }), +}); diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index a97f2a9085..6be8b7afc7 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-pagerduty +## 0.7.2-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.7.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/errors@1.2.3 + ## 0.7.2-next.0 ### Patch Changes diff --git a/plugins/pagerduty/knip-report.md b/plugins/pagerduty/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/pagerduty/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 383a7191bb..268a95f87b 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "This plugin has been deprecated, consider using [@pagerduty/backstage-plugin](https://github.com/pagerduty/backstage-plugin) instead.", - "version": "0.7.2-next.0", + "version": "0.7.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -43,7 +43,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index a524779ac9..d7f418ddec 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-periskop-backend +## 0.2.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + ## 0.2.8-next.0 ### Patch Changes diff --git a/plugins/periskop-backend/knip-report.md b/plugins/periskop-backend/knip-report.md new file mode 100644 index 0000000000..e31e20b852 --- /dev/null +++ b/plugins/periskop-backend/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index c342cf6ad4..986ed87956 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.2.8-next.0", + "version": "0.2.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 2b9409f9fa..ef19b26093 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-periskop +## 0.1.28-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.28-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.1.28-next.0 ### Patch Changes diff --git a/plugins/periskop/README.md b/plugins/periskop/README.md index 192948402a..85bced7c1b 100644 --- a/plugins/periskop/README.md +++ b/plugins/periskop/README.md @@ -19,7 +19,7 @@ Each of the entries in the table will direct you to the error details in your de ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-periskop +yarn --cwd packages/app add @backstage/plugin-periskop ``` 3. Add to the app `EntityPage` component: @@ -53,7 +53,7 @@ annotations: ### Instances -The periskop plugin can be configured to fetch aggregated errors from multiple deployment instances. +The periskop plugin can be configured to fetch aggregated errors from multiple deployment instances. This is especially useful if you have a multi-zone deployment, or a federated setup and would like to drill deeper into a single instance of the federation. Each of the configured instances will be included in the plugin's UI via a dropdown on the errors table. The plugin requires to configure _at least one_ Periskop API location in the [app-config.yaml](https://github.com/backstage/backstage/blob/master/app-config.yaml): diff --git a/plugins/periskop/knip-report.md b/plugins/periskop/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/periskop/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index f8f5f02fbd..0697b67232 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.28-next.0", + "version": "0.1.28-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,7 +34,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md index 14855fcb35..8a08b2dafd 100644 --- a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md +++ b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-permission-backend-module-allow-all-policy +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-permission-common@0.7.12 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/permission-backend-module-policy-allow-all/knip-report.md b/plugins/permission-backend-module-policy-allow-all/knip-report.md new file mode 100644 index 0000000000..2a595acf79 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json index e607bc84f3..b2284a6455 100644 --- a/plugins/permission-backend-module-policy-allow-all/package.json +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-backend-module-allow-all-policy", "description": "Allow all policy backend module for the permission plugin.", - "version": "0.1.7-next.0", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/permission-backend-module-policy-allow-all" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 287d320d61..c0659ebb07 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-permission-backend +## 0.5.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## 0.5.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + ## 0.5.33-next.0 ### Patch Changes diff --git a/plugins/permission-backend/knip-report.md b/plugins/permission-backend/knip-report.md new file mode 100644 index 0000000000..cd9ea197f2 --- /dev/null +++ b/plugins/permission-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| yn | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index eb1f04273f..6077969fc6 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.33-next.0", + "version": "0.5.33-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-common/knip-report.md b/plugins/permission-common/knip-report.md new file mode 100644 index 0000000000..23d85dc9a4 --- /dev/null +++ b/plugins/permission-common/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | + diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index 9a954e9aca..674d24ecc5 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-permission-node +## 0.7.21-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + +## 0.7.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + ## 0.7.21-next.0 ### Patch Changes diff --git a/plugins/permission-node/knip-report.md b/plugins/permission-node/knip-report.md new file mode 100644 index 0000000000..e03ed5c8a2 --- /dev/null +++ b/plugins/permission-node/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 168fbdaa81..3b182a0231 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.7.21-next.0", + "version": "0.7.21-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index a432970e3f..bc88f1421b 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-permission-react +## 0.4.20-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + +## 0.4.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + ## 0.4.19 ### Patch Changes diff --git a/plugins/permission-react/knip-report.md b/plugins/permission-react/knip-report.md new file mode 100644 index 0000000000..fb60112aa2 --- /dev/null +++ b/plugins/permission-react/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 7949433aa9..981a97a994 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.19", + "version": "0.4.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,7 +35,7 @@ "@backstage/config": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "swr": "^2.0.0" }, "peerDependencies": { diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index a4428bc5fe..1a291acff0 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/plugin-playlist-backend +## 0.3.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## 0.3.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-playlist-common@0.1.14 + ## 0.3.14-next.0 ### Patch Changes diff --git a/plugins/playlist-backend/README.md b/plugins/playlist-backend/README.md index b5c9b8797b..d4474e2331 100644 --- a/plugins/playlist-backend/README.md +++ b/plugins/playlist-backend/README.md @@ -8,7 +8,7 @@ Welcome to the playlist backend plugin! ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-playlist-backend +yarn --cwd packages/backend add @backstage/plugin-playlist-backend ``` ### Adding the plugin to your `packages/backend` diff --git a/plugins/playlist-backend/knip-report.md b/plugins/playlist-backend/knip-report.md new file mode 100644 index 0000000000..3e8751a225 --- /dev/null +++ b/plugins/playlist-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index 976ae79ce1..17a0ec9792 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.3.14-next.0", + "version": "0.3.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-common/knip-report.md b/plugins/playlist-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/playlist-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 7c90e8f956..a0da478579 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-playlist +## 0.2.4-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-playlist-common@0.1.14 + +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-playlist-common@0.1.14 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/playlist/knip-report.md b/plugins/playlist/knip-report.md new file mode 100644 index 0000000000..84aa502ad9 --- /dev/null +++ b/plugins/playlist/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------------|:-------------| +| @backstage/plugin-permission-common | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:------------------------|:-------------| +| swr | package.json | +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 9f9cbd6724..43c677f63b 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.2.4-next.0", + "version": "0.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "pluralize": "^8.0.0", "qs": "^6.9.4", diff --git a/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx b/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx index 1408607133..8b52bcc1de 100644 --- a/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx +++ b/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx @@ -106,7 +106,9 @@ export const PlaylistCard = ({ playlist }: PlaylistCardProps) => { Description - + {playlist.description && ( + + )} diff --git a/plugins/playlist/src/components/PlaylistPage/PlaylistPage.tsx b/plugins/playlist/src/components/PlaylistPage/PlaylistPage.tsx index 4c9a0edbb7..b17fbd2fb7 100644 --- a/plugins/playlist/src/components/PlaylistPage/PlaylistPage.tsx +++ b/plugins/playlist/src/components/PlaylistPage/PlaylistPage.tsx @@ -84,6 +84,7 @@ export const PlaylistPage = () => { ); } diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index 49c650ce3e..cbff180011 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-proxy-backend +## 0.4.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + +## 0.4.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + ## 0.4.8-next.0 ### Patch Changes diff --git a/plugins/proxy-backend/knip-report.md b/plugins/proxy-backend/knip-report.md new file mode 100644 index 0000000000..6895986f47 --- /dev/null +++ b/plugins/proxy-backend/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:-------|:-------------| +| yup | package.json | +| yaml | package.json | +| uuid | package.json | +| morgan | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @types/yup | package.json | +| @types/uuid | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/config-loader | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index eac4fa43e6..a22b79e6f8 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.4.8-next.0", + "version": "0.4.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md index 255ac0f314..c94ae73c49 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-puppetdb +## 0.1.13-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/puppetdb/knip-report.md b/plugins/puppetdb/knip-report.md new file mode 100644 index 0000000000..96247d3c96 --- /dev/null +++ b/plugins/puppetdb/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 005950f3a6..a2006d6836 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-puppetdb", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", - "version": "0.1.13-next.0", + "version": "0.1.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index c52f70327b..ad16de07bc 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-rollbar-backend +## 0.1.55-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/config@1.1.1 + +## 0.1.55-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + ## 0.1.55-next.0 ### Patch Changes diff --git a/plugins/rollbar-backend/README.md b/plugins/rollbar-backend/README.md index d28ee60181..1f5977f5df 100644 --- a/plugins/rollbar-backend/README.md +++ b/plugins/rollbar-backend/README.md @@ -8,7 +8,7 @@ Simple plugin that proxies requests to the [Rollbar](https://rollbar.com) API. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-rollbar-backend +yarn --cwd packages/backend add @backstage/plugin-rollbar-backend ``` 2. Create a `rollbar.ts` file inside `packages/backend/src/plugins/`: diff --git a/plugins/rollbar-backend/knip-report.md b/plugins/rollbar-backend/knip-report.md new file mode 100644 index 0000000000..a4bbbbb810 --- /dev/null +++ b/plugins/rollbar-backend/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:------------|:-------------| +| cors | package.json | +| morgan | package.json | +| fs-extra | package.json | +| compression | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index de6526701b..6740d46456 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.55-next.0", + "version": "0.1.55-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index ced8ca89fa..331c3ebd62 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-rollbar +## 0.4.30-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.4.30-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.4.30-next.0 ### Patch Changes diff --git a/plugins/rollbar/README.md b/plugins/rollbar/README.md index 99a3deb763..2b1fb7e40d 100644 --- a/plugins/rollbar/README.md +++ b/plugins/rollbar/README.md @@ -10,7 +10,7 @@ Website: [https://rollbar.com/](https://rollbar.com/) ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-rollbar +yarn --cwd packages/app add @backstage/plugin-rollbar ``` 3. Add to the app `EntityPage` component: diff --git a/plugins/rollbar/knip-report.md b/plugins/rollbar/knip-report.md new file mode 100644 index 0000000000..aa8f8b77be --- /dev/null +++ b/plugins/rollbar/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| lodash | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index a3898e64d3..66669c84af 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.30-next.0", + "version": "0.4.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "react-sparklines": "^1.7.0", "react-use": "^17.2.4" diff --git a/plugins/scaffolder-backend-module-azure/CHANGELOG.md b/plugins/scaffolder-backend-module-azure/CHANGELOG.md index 50b2070b72..523b18c102 100644 --- a/plugins/scaffolder-backend-module-azure/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-azure/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-scaffolder-backend-module-azure +## 0.1.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-azure/knip-report.md b/plugins/scaffolder-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..e0fd9e375f --- /dev/null +++ b/plugins/scaffolder-backend-module-azure/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/backend-common | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/scaffolder-backend-module-azure/package.json b/plugins/scaffolder-backend-module-azure/package.json index 2613104d7a..4c30a38d74 100644 --- a/plugins/scaffolder-backend-module-azure/package.json +++ b/plugins/scaffolder-backend-module-azure/package.json @@ -1,13 +1,18 @@ { "name": "@backstage/plugin-scaffolder-backend-module-azure", "description": "The azure module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-azure" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/.eslintrc.js b/plugins/scaffolder-backend-module-bitbucket-cloud/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md new file mode 100644 index 0000000000..2ab8b07ae1 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md @@ -0,0 +1,23 @@ +# @backstage/plugin-scaffolder-backend-module-bitbucket-cloud + +## 0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/README.md b/plugins/scaffolder-backend-module-bitbucket-cloud/README.md new file mode 100644 index 0000000000..0d616f2670 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/README.md @@ -0,0 +1,11 @@ +# @backstage/plugin-scaffolder-backend-module-bitbucket + +The [Bitbucket Cloud](https://bitbucket.org) module for +[@backstage/plugin-scaffolder-backend](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend). + +_This plugin was created through the Backstage CLI_ + +## Actions + +- `publish:bitbucketCloud` +- `bitbucket:pipelines:run` diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/api-report.md b/plugins/scaffolder-backend-module-bitbucket-cloud/api-report.md new file mode 100644 index 0000000000..fc7e0cd494 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/api-report.md @@ -0,0 +1,44 @@ +## API Report File for "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; +import { Config } from '@backstage/config'; +import { JsonObject } from '@backstage/types'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; + +// @public +const bitbucketCloudModule: () => BackendFeature; +export default bitbucketCloudModule; + +// @public +export const createBitbucketPipelinesRunAction: (options: { + integrations: ScmIntegrationRegistry; +}) => TemplateAction< + { + workspace: string; + repo_slug: string; + body?: object | undefined; + token?: string | undefined; + }, + JsonObject +>; + +// @public +export function createPublishBitbucketCloudAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}): TemplateAction< + { + repoUrl: string; + description?: string | undefined; + defaultBranch?: string | undefined; + repoVisibility?: 'private' | 'public' | undefined; + sourcePath?: string | undefined; + token?: string | undefined; + }, + JsonObject +>; +``` diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/catalog-info.yaml b/plugins/scaffolder-backend-module-bitbucket-cloud/catalog-info.yaml new file mode 100644 index 0000000000..68db17969a --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-scaffolder-backend-module-bitbucket-cloud + title: '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud' + description: The Bitbucket Cloud module for @backstage/plugin-scaffolder-backend +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md b/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..97643caaa1 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| fs-extra | package.json | +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json similarity index 53% rename from plugins/catalog-backend-module-bitbucket/package.json rename to plugins/scaffolder-backend-module-bitbucket-cloud/package.json index 8db2d2dabe..a71ff30e7b 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json @@ -1,45 +1,51 @@ { - "name": "@backstage/plugin-catalog-backend-module-bitbucket", - "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.25-next.0", - "deprecated": true, + "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud", + "description": "The Bitbucket Cloud module for @backstage/plugin-scaffolder-backend", + "version": "0.1.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", "publishConfig": { - "access": "public", - "main": "dist/index.cjs.js", - "types": "dist/index.d.ts" + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket-cloud" }, "backstage": { "role": "backend-plugin-module" }, - "homepage": "https://backstage.io", - "repository": { - "type": "git", - "url": "https://github.com/backstage/backstage", - "directory": "plugins/catalog-backend-module-bitbucket" + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } }, - "keywords": [ - "backstage" - ], "scripts": { + "start": "backstage-cli package start", "build": "backstage-cli package build", "lint": "backstage-cli package lint", "test": "backstage-cli package test", - "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack", "clean": "backstage-cli package clean", - "start": "backstage-cli package start" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@backstage/integration": "workspace:^", - "@backstage/plugin-bitbucket-cloud-common": "workspace:^", - "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/plugin-scaffolder-node": "workspace:^", + "fs-extra": "10.1.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1" + "yaml": "^2.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloud.test.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloud.test.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloud.test.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloud.test.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloud.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloud.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloud.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloud.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.examples.test.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.examples.test.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.examples.test.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.examples.test.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.examples.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.examples.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.examples.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.examples.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.test.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.test.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.test.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.test.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketCloudPipelinesRun.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPipelinesRun.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/helpers.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/helpers.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/helpers.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/helpers.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/index.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/index.ts similarity index 86% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/index.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/index.ts index 9b009255fd..a9826a268a 100644 --- a/plugins/scaffolder-backend-module-bitbucket/src/actions/index.ts +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/index.ts @@ -13,8 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export * from './bitbucket'; export * from './bitbucketCloud'; -export * from './bitbucketServer'; -export * from './bitbucketServerPullRequest'; export { createBitbucketPipelinesRunAction } from './bitbucketCloudPipelinesRun'; diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/inputProperties.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/inputProperties.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/inputProperties.ts rename to plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/inputProperties.ts diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/src/index.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/index.ts new file mode 100644 index 0000000000..ea27405f0f --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/src/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A module for the scaffolder backend that lets you interact with Bitbucket Cloud + * + * @packageDocumentation + */ + +export * from './actions'; +export { bitbucketCloudModule as default } from './module'; diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts new file mode 100644 index 0000000000..81afbf8c88 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts @@ -0,0 +1,50 @@ +/* + * Copyright 2024 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 { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { + createBitbucketPipelinesRunAction, + createPublishBitbucketCloudAction, +} from './actions'; +import { ScmIntegrations } from '@backstage/integration'; + +/** + * @public + * The Bitbucket Cloud Module for the Scaffolder Backend + */ +export const bitbucketCloudModule = createBackendModule({ + moduleId: 'bitbucketCloud', + pluginId: 'scaffolder', + register({ registerInit }) { + registerInit({ + deps: { + scaffolder: scaffolderActionsExtensionPoint, + config: coreServices.rootConfig, + }, + async init({ scaffolder, config }) { + const integrations = ScmIntegrations.fromConfig(config); + + scaffolder.addActions( + createPublishBitbucketCloudAction({ integrations, config }), + createBitbucketPipelinesRunAction({ integrations }), + ); + }, + }); + }, +}); diff --git a/plugins/scaffolder-backend-module-bitbucket-server/.eslintrc.js b/plugins/scaffolder-backend-module-bitbucket-server/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md new file mode 100644 index 0000000000..1ece6360af --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md @@ -0,0 +1,23 @@ +# @backstage/plugin-scaffolder-backend-module-bitbucket-server + +## 0.1.0-next.0 + +### Minor Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 diff --git a/plugins/scaffolder-backend-module-bitbucket-server/README.md b/plugins/scaffolder-backend-module-bitbucket-server/README.md new file mode 100644 index 0000000000..fda626c1b4 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/README.md @@ -0,0 +1,9 @@ +# @backstage/plugin-scaffolder-backend-module-bitbucket-server + +The Bitbucket Server module for +[@backstage/plugin-scaffolder-backend](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend). + +## Actions + +- `publish:bitbucketServer` +- `publish:bitbucketServer:pull-request` diff --git a/plugins/scaffolder-backend-module-bitbucket-server/api-report.md b/plugins/scaffolder-backend-module-bitbucket-server/api-report.md new file mode 100644 index 0000000000..3e2e3dffe4 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/api-report.md @@ -0,0 +1,51 @@ +## API Report File for "@backstage/plugin-scaffolder-backend-module-bitbucket-server" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; +import { Config } from '@backstage/config'; +import { JsonObject } from '@backstage/types'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { TemplateAction } from '@backstage/plugin-scaffolder-node'; + +// @public +const bitbucketServerModule: () => BackendFeature; +export default bitbucketServerModule; + +// @public +export function createPublishBitbucketServerAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}): TemplateAction< + { + repoUrl: string; + description?: string | undefined; + defaultBranch?: string | undefined; + repoVisibility?: 'private' | 'public' | undefined; + sourcePath?: string | undefined; + enableLFS?: boolean | undefined; + token?: string | undefined; + gitCommitMessage?: string | undefined; + gitAuthorName?: string | undefined; + gitAuthorEmail?: string | undefined; + }, + JsonObject +>; + +// @public +export function createPublishBitbucketServerPullRequestAction(options: { + integrations: ScmIntegrationRegistry; + config: Config; +}): TemplateAction< + { + repoUrl: string; + title: string; + description?: string | undefined; + targetBranch?: string | undefined; + sourceBranch: string; + token?: string | undefined; + }, + JsonObject +>; +``` diff --git a/plugins/scaffolder-backend-module-bitbucket-server/catalog-info.yaml b/plugins/scaffolder-backend-module-bitbucket-server/catalog-info.yaml new file mode 100644 index 0000000000..02c894eca3 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-scaffolder-backend-module-bitbucket-server + title: '@backstage/plugin-scaffolder-backend-module-bitbucket-server' + description: The Bitbucket Server module for @backstage/plugin-scaffolder-backend +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md b/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md new file mode 100644 index 0000000000..dd5d6b075b --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| yaml | package.json | +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-bitbucket-server/package.json b/plugins/scaffolder-backend-module-bitbucket-server/package.json new file mode 100644 index 0000000000..32384a77ea --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/package.json @@ -0,0 +1,58 @@ +{ + "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-server", + "description": "The Bitbucket Server module for @backstage/plugin-scaffolder-backend", + "version": "0.1.0-next.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket-server" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "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/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-scaffolder-node": "workspace:^", + "fs-extra": "10.1.0", + "node-fetch": "^2.6.7", + "yaml": "^2.0.0" + }, + "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "msw": "^1.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServer.test.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServer.test.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServer.test.ts rename to plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServer.test.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServer.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServer.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServer.ts rename to plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServer.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServerPullRequest.test.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.test.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServerPullRequest.test.ts rename to plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.test.ts diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServerPullRequest.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts similarity index 100% rename from plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucketServerPullRequest.ts rename to plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts diff --git a/plugins/scaffolder-backend-module-bitbucket-server/src/actions/index.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/index.ts new file mode 100644 index 0000000000..f72f03a247 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './bitbucketServer'; +export * from './bitbucketServerPullRequest'; diff --git a/plugins/scaffolder-backend-module-bitbucket-server/src/index.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/index.ts new file mode 100644 index 0000000000..be916b5711 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/src/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A module for the scaffolder backend that lets you interact with Bitbucket Server + * + * @packageDocumentation + */ + +export * from './actions'; +export { bitbucketServerModule as default } from './module'; diff --git a/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts new file mode 100644 index 0000000000..d3d457cb1f --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2024 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 { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { + createPublishBitbucketServerAction, + createPublishBitbucketServerPullRequestAction, +} from './actions'; +import { ScmIntegrations } from '@backstage/integration'; + +/** + * @public + * The Bitbucket Server Module for the Scaffolder Backend + */ +export const bitbucketServerModule = createBackendModule({ + moduleId: 'bitbucketServer', + pluginId: 'scaffolder', + register({ registerInit }) { + registerInit({ + deps: { + scaffolder: scaffolderActionsExtensionPoint, + config: coreServices.rootConfig, + }, + async init({ scaffolder, config }) { + const integrations = ScmIntegrations.fromConfig(config); + + scaffolder.addActions( + createPublishBitbucketServerAction({ integrations, config }), + createPublishBitbucketServerPullRequestAction({ + integrations, + config, + }), + ); + }, + }); + }, +}); diff --git a/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md index 9a0344eed8..049e46a52d 100644 --- a/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,47 @@ # @backstage/plugin-scaffolder-backend-module-bitbucket +## 0.2.0-next.2 + +### Minor Changes + +- 5eb6882: Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into + `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and + `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + `@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. + + Please use any of the two replacements depending on your needs. + + ```diff + - backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); + + backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-bitbucket/README.md b/plugins/scaffolder-backend-module-bitbucket/README.md index 90b8680e80..dde4207c0a 100644 --- a/plugins/scaffolder-backend-module-bitbucket/README.md +++ b/plugins/scaffolder-backend-module-bitbucket/README.md @@ -1,5 +1,8 @@ # @backstage/plugin-scaffolder-backend-module-bitbucket -The bitbucket module for [@backstage/plugin-scaffolder-backend](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend). +**Deprecated!** -_This plugin was created through the Backstage CLI_ +Please use one of the following modules instead: + +- [@backstage/plugin-scaffolder-backend-module-bitbucket-cloud](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-bitbucket-cloud) +- [@backstage/plugin-scaffolder-backend-module-bitbucket-server](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-bitbucket-server). diff --git a/plugins/scaffolder-backend-module-bitbucket/api-report.md b/plugins/scaffolder-backend-module-bitbucket/api-report.md index 7540b0c113..ce16b0038f 100644 --- a/plugins/scaffolder-backend-module-bitbucket/api-report.md +++ b/plugins/scaffolder-backend-module-bitbucket/api-report.md @@ -4,16 +4,18 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; +import * as bitbucketCloud from '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud'; +import * as bitbucketServer from '@backstage/plugin-scaffolder-backend-module-bitbucket-server'; import { Config } from '@backstage/config'; import { JsonObject } from '@backstage/types'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { TemplateAction } from '@backstage/plugin-scaffolder-node'; -// @public +// @public @deprecated const bitbucketModule: () => BackendFeature; export default bitbucketModule; -// @public +// @public @deprecated (undocumented) export const createBitbucketPipelinesRunAction: (options: { integrations: ScmIntegrationRegistry; }) => TemplateAction< @@ -46,55 +48,12 @@ export function createPublishBitbucketAction(options: { JsonObject >; -// @public -export function createPublishBitbucketCloudAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; -}): TemplateAction< - { - repoUrl: string; - description?: string | undefined; - defaultBranch?: string | undefined; - repoVisibility?: 'private' | 'public' | undefined; - sourcePath?: string | undefined; - token?: string | undefined; - }, - JsonObject ->; +// @public @deprecated (undocumented) +export const createPublishBitbucketCloudAction: typeof bitbucketCloud.createPublishBitbucketCloudAction; -// @public -export function createPublishBitbucketServerAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; -}): TemplateAction< - { - repoUrl: string; - description?: string | undefined; - defaultBranch?: string | undefined; - repoVisibility?: 'private' | 'public' | undefined; - sourcePath?: string | undefined; - enableLFS?: boolean | undefined; - token?: string | undefined; - gitCommitMessage?: string | undefined; - gitAuthorName?: string | undefined; - gitAuthorEmail?: string | undefined; - }, - JsonObject ->; +// @public @deprecated (undocumented) +export const createPublishBitbucketServerAction: typeof bitbucketServer.createPublishBitbucketServerAction; -// @public -export function createPublishBitbucketServerPullRequestAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; -}): TemplateAction< - { - repoUrl: string; - title: string; - description?: string | undefined; - targetBranch?: string | undefined; - sourceBranch: string; - token?: string | undefined; - }, - JsonObject ->; +// @public @deprecated (undocumented) +export const createPublishBitbucketServerPullRequestAction: typeof bitbucketServer.createPublishBitbucketServerPullRequestAction; ``` diff --git a/plugins/scaffolder-backend-module-bitbucket/knip-report.md b/plugins/scaffolder-backend-module-bitbucket/knip-report.md new file mode 100644 index 0000000000..97643caaa1 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| fs-extra | package.json | +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-bitbucket/package.json b/plugins/scaffolder-backend-module-bitbucket/package.json index 6f02655692..6d572cdf5f 100644 --- a/plugins/scaffolder-backend-module-bitbucket/package.json +++ b/plugins/scaffolder-backend-module-bitbucket/package.json @@ -1,13 +1,19 @@ { "name": "@backstage/plugin-scaffolder-backend-module-bitbucket", "description": "The bitbucket module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.0", + "version": "0.2.0-next.2", + "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket" + }, "backstage": { "role": "backend-plugin-module" }, @@ -37,6 +43,8 @@ "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/integration": "workspace:^", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^", "@backstage/plugin-scaffolder-node": "workspace:^", "fs-extra": "10.1.0", "node-fetch": "^2.6.7", diff --git a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucket.ts b/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucket.ts index 76fe1de5df..f1b45111b4 100644 --- a/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucket.ts +++ b/plugins/scaffolder-backend-module-bitbucket/src/actions/bitbucket.ts @@ -202,7 +202,7 @@ const performEnableLFS = async (opts: { * Creates a new action that initializes a git repository of the content in the workspace * and publishes it to Bitbucket. * @public - * @deprecated in favor of createPublishBitbucketCloudAction and createPublishBitbucketServerAction + * @deprecated in favor of "createPublishBitbucketCloudAction" by \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud and "createPublishBitbucketServerAction" by \@backstage/plugin-scaffolder-backend-module-bitbucket-server */ export function createPublishBitbucketAction(options: { integrations: ScmIntegrationRegistry; diff --git a/plugins/scaffolder-backend-module-bitbucket/src/deprecated.ts b/plugins/scaffolder-backend-module-bitbucket/src/deprecated.ts new file mode 100644 index 0000000000..a17c88c3a4 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket/src/deprecated.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2024 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 * as bitbucketCloud from '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud'; +import * as bitbucketServer from '@backstage/plugin-scaffolder-backend-module-bitbucket-server'; + +export { createPublishBitbucketAction } from './actions/bitbucket'; + +/** + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud instead + */ +export const createPublishBitbucketCloudAction = + bitbucketCloud.createPublishBitbucketCloudAction; + +/** + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud instead + */ +export const createBitbucketPipelinesRunAction = + bitbucketCloud.createBitbucketPipelinesRunAction; + +/** + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead + */ +export const createPublishBitbucketServerAction = + bitbucketServer.createPublishBitbucketServerAction; + +/** + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead + */ +export const createPublishBitbucketServerPullRequestAction = + bitbucketServer.createPublishBitbucketServerPullRequestAction; diff --git a/plugins/scaffolder-backend-module-bitbucket/src/index.ts b/plugins/scaffolder-backend-module-bitbucket/src/index.ts index 26f186b6dc..7f68a3f395 100644 --- a/plugins/scaffolder-backend-module-bitbucket/src/index.ts +++ b/plugins/scaffolder-backend-module-bitbucket/src/index.ts @@ -20,5 +20,5 @@ * @packageDocumentation */ -export * from './actions'; +export * from './deprecated'; export { bitbucketModule as default } from './module'; diff --git a/plugins/scaffolder-backend-module-bitbucket/src/module.ts b/plugins/scaffolder-backend-module-bitbucket/src/module.ts index 19554270a7..db27d0b7b9 100644 --- a/plugins/scaffolder-backend-module-bitbucket/src/module.ts +++ b/plugins/scaffolder-backend-module-bitbucket/src/module.ts @@ -23,12 +23,13 @@ import { createPublishBitbucketCloudAction, createPublishBitbucketServerAction, createPublishBitbucketServerPullRequestAction, -} from './actions'; +} from './deprecated'; import { ScmIntegrations } from '@backstage/integration'; /** - * @public * The Bitbucket Module for the Scaffolder Backend + * @public + * @deprecated use module by \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud or \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead */ export const bitbucketModule = createBackendModule({ moduleId: 'bitbucket', diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md index 1b943777b0..e65495e8ca 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +## 0.2.11-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.11-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md index 87f6acc6fe..1e64004041 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md @@ -12,7 +12,7 @@ From your Backstage root directory run: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-confluence-to-markdown ``` Then configure the action: diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md b/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md new file mode 100644 index 0000000000..3a54a7981d --- /dev/null +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json index cf23ba1ba4..d584f8e555 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown", "description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend", - "version": "0.2.11-next.0", + "version": "0.2.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 021b21be3e..a288949ce9 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.34-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## 0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.2.34-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/README.md b/plugins/scaffolder-backend-module-cookiecutter/README.md index 0e8e11ef7d..62c6eede97 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/README.md +++ b/plugins/scaffolder-backend-module-cookiecutter/README.md @@ -10,7 +10,7 @@ You need to configure the action in your backend: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-cookiecutter +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-cookiecutter ``` Configure the action: diff --git a/plugins/scaffolder-backend-module-cookiecutter/knip-report.md b/plugins/scaffolder-backend-module-cookiecutter/knip-report.md new file mode 100644 index 0000000000..bbd720480b --- /dev/null +++ b/plugins/scaffolder-backend-module-cookiecutter/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:------------------|:-------------| +| yn | package.json | +| winston | package.json | +| @backstage/config | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 32536047d1..fbcc9d3570 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.34-next.0", + "version": "0.2.34-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md b/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md index 0b0d09dbbd..a88377beae 100644 --- a/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-scaffolder-backend-module-gerrit +## 0.1.2-next.2 + +### Patch Changes + +- 8b269e1: Provide default branch when creating repositories. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gerrit/knip-report.md b/plugins/scaffolder-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..ae9842cd4e --- /dev/null +++ b/plugins/scaffolder-backend-module-gerrit/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-common | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-gerrit/package.json b/plugins/scaffolder-backend-module-gerrit/package.json index a1d3110bff..93d325fcf7 100644 --- a/plugins/scaffolder-backend-module-gerrit/package.json +++ b/plugins/scaffolder-backend-module-gerrit/package.json @@ -1,13 +1,18 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gerrit", "description": "The gerrit module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.0", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-gerrit" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.test.ts b/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.test.ts index d05c8727c4..2bd7783cb6 100644 --- a/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.test.ts +++ b/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.test.ts @@ -101,6 +101,7 @@ describe('publish:gerrit', () => { 'Basic Z2Vycml0dXNlcjp1c2VydG9rZW4=', ); expect(req.body).toEqual({ + branches: ['master'], create_empty_commit: false, owners: ['owner'], description, @@ -150,6 +151,7 @@ describe('publish:gerrit', () => { 'Basic Z2Vycml0dXNlcjp1c2VydG9rZW4=', ); expect(req.body).toEqual({ + branches: ['master'], create_empty_commit: false, owners: ['owner'], description, @@ -200,6 +202,7 @@ describe('publish:gerrit', () => { 'Basic Z2Vycml0dXNlcjp1c2VydG9rZW4=', ); expect(req.body).toEqual({ + branches: ['master'], create_empty_commit: false, owners: [], description, @@ -241,6 +244,58 @@ describe('publish:gerrit', () => { 'https://gerrithost.org/repo/+/refs/heads/master', ); }); + + it('can correctly create a new project with main as default branch', async () => { + expect.assertions(5); + server.use( + rest.put('https://gerrithost.org/a/projects/repo', (req, res, ctx) => { + expect(req.headers.get('Authorization')).toBe( + 'Basic Z2Vycml0dXNlcjp1c2VydG9rZW4=', + ); + expect(req.body).toEqual({ + branches: ['main'], + create_empty_commit: false, + owners: [], + description, + parent: 'workspace', + }); + return res( + ctx.status(201), + ctx.set('Content-Type', 'application/json'), + ctx.json({}), + ); + }), + ); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + repoUrl: 'gerrithost.org?workspace=workspace&repo=repo', + defaultBranch: 'main', + }, + }); + + expect(initRepoAndPush).toHaveBeenCalledWith({ + dir: mockContext.workspacePath, + remoteUrl: 'https://gerrithost.org/a/repo', + defaultBranch: 'main', + auth: { username: 'gerrituser', password: 'usertoken' }, + logger: mockContext.logger, + commitMessage: expect.stringContaining('initial commit\n\nChange-Id:'), + gitAuthorInfo: {}, + }); + + expect(mockContext.output).toHaveBeenCalledWith( + 'remoteUrl', + 'https://gerrithost.org/a/repo', + ); + expect(mockContext.output).toHaveBeenCalledWith( + 'repoContentsUrl', + 'https://gerrithost.org/repo/+/refs/heads/main', + ); + }); + it('should not create new projects on dryRun', async () => { await action.handler({ ...mockContext, diff --git a/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.ts b/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.ts index 6f729227e6..102d48a706 100644 --- a/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.ts +++ b/plugins/scaffolder-backend-module-gerrit/src/actions/gerrit.ts @@ -38,15 +38,17 @@ const createGerritProject = async ( parent: string; owner?: string; description: string; + defaultBranch: string; }, ): Promise => { - const { projectName, parent, owner, description } = options; + const { projectName, parent, owner, description, defaultBranch } = options; const fetchOptions: RequestInit = { method: 'PUT', body: JSON.stringify({ parent, description, + branches: [defaultBranch], owners: owner ? [owner] : [], create_empty_commit: false, }), @@ -221,6 +223,7 @@ export function createPublishGerritAction(options: { owner: owner, projectName: repo, parent: workspace, + defaultBranch, }); const auth = { username: integrationConfig.config.username!, diff --git a/plugins/scaffolder-backend-module-github/CHANGELOG.md b/plugins/scaffolder-backend-module-github/CHANGELOG.md index 88f68d392e..565098d73c 100644 --- a/plugins/scaffolder-backend-module-github/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-github/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-scaffolder-backend-module-github +## 0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.0-next.1 + +### Minor Changes + +- fd5eb1c: Allow to force the creation of a pull request from a forked repository + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-github/knip-report.md b/plugins/scaffolder-backend-module-github/knip-report.md new file mode 100644 index 0000000000..9a7a0d3a57 --- /dev/null +++ b/plugins/scaffolder-backend-module-github/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| fs-extra | package.json | +| jest-when | package.json | +| jsonschema | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + +## Unlisted dependencies (1) + +| Name | Location | +|:-------------------------------|:-----------------------| +| @octokit/core/dist-types/types | src/actions/helpers.ts | + diff --git a/plugins/scaffolder-backend-module-github/package.json b/plugins/scaffolder-backend-module-github/package.json index 8e0272c876..fd3ce88491 100644 --- a/plugins/scaffolder-backend-module-github/package.json +++ b/plugins/scaffolder-backend-module-github/package.json @@ -1,13 +1,18 @@ { "name": "@backstage/plugin-scaffolder-backend-module-github", "description": "The github module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.0", + "version": "0.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-github" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index fe7abefeda..e130bd045f 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-scaffolder-backend-module-gitlab +## 0.2.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gitlab/README.md b/plugins/scaffolder-backend-module-gitlab/README.md index c946c8b476..bb31769cef 100644 --- a/plugins/scaffolder-backend-module-gitlab/README.md +++ b/plugins/scaffolder-backend-module-gitlab/README.md @@ -10,7 +10,7 @@ Here you can find all Gitlab related features to improve your scaffolder: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-gitlab ``` Configure the action: diff --git a/plugins/scaffolder-backend-module-gitlab/knip-report.md b/plugins/scaffolder-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..f296802cab --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| jest-date-mock | package.json | +| @backstage/cli | package.json | +| @backstage/core-app-api | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index bf709c6b7f..1a8cc7729b 100644 --- a/plugins/scaffolder-backend-module-gitlab/package.json +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gitlab", - "version": "0.2.13-next.0", + "version": "0.2.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index e3aa1f0fe9..4b1e089998 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.27-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + +## 0.4.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.4.27-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/README.md b/plugins/scaffolder-backend-module-rails/README.md index f4ec086775..a7afd1429e 100644 --- a/plugins/scaffolder-backend-module-rails/README.md +++ b/plugins/scaffolder-backend-module-rails/README.md @@ -15,7 +15,7 @@ You need to configure the action in your backend: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-rails +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-rails ``` Configure the action (you can check diff --git a/plugins/scaffolder-backend-module-rails/Rails.dockerfile b/plugins/scaffolder-backend-module-rails/Rails.dockerfile index 8ea3fc370a..6c973c21b4 100644 --- a/plugins/scaffolder-backend-module-rails/Rails.dockerfile +++ b/plugins/scaffolder-backend-module-rails/Rails.dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3 +FROM ruby:3.3@sha256:6936c28e1221d653c0d9af9d2b6a9e27ba0350cd10c9cc57464c62743d723b76 RUN apt-get update -qq && \ apt-get install -y nodejs postgresql-client git && \ diff --git a/plugins/scaffolder-backend-module-rails/knip-report.md b/plugins/scaffolder-backend-module-rails/knip-report.md new file mode 100644 index 0000000000..b7d1f647ff --- /dev/null +++ b/plugins/scaffolder-backend-module-rails/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @backstage/config | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| jest-when | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 6c52665976..fc6512658f 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.27-next.0", + "version": "0.4.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index a6a79787c2..ca5ffb395b 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.18-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.18-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/README.md b/plugins/scaffolder-backend-module-sentry/README.md index 14751185c4..5cb1f1b810 100644 --- a/plugins/scaffolder-backend-module-sentry/README.md +++ b/plugins/scaffolder-backend-module-sentry/README.md @@ -12,7 +12,7 @@ You need to configure the action in your backend: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-sentry +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-sentry ``` Configure the action (you can check diff --git a/plugins/scaffolder-backend-module-sentry/knip-report.md b/plugins/scaffolder-backend-module-sentry/knip-report.md new file mode 100644 index 0000000000..8834481f6c --- /dev/null +++ b/plugins/scaffolder-backend-module-sentry/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----|:-------------| +| yaml | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/types | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 0039ad35a6..2657ef8643 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-sentry", - "version": "0.1.18-next.0", + "version": "0.1.18-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index b57b5a4c6e..fc1f65bfa4 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.31-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/types@1.1.1 + +## 0.2.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/types@1.1.1 + ## 0.2.31-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/README.md b/plugins/scaffolder-backend-module-yeoman/README.md index b5c7b4d026..05bbf6064b 100644 --- a/plugins/scaffolder-backend-module-yeoman/README.md +++ b/plugins/scaffolder-backend-module-yeoman/README.md @@ -10,7 +10,7 @@ You need to configure the action in your backend: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-yeoman +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-yeoman ``` Configure the action: diff --git a/plugins/scaffolder-backend-module-yeoman/knip-report.md b/plugins/scaffolder-backend-module-yeoman/knip-report.md new file mode 100644 index 0000000000..c15e502911 --- /dev/null +++ b/plugins/scaffolder-backend-module-yeoman/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-common | package.json | + diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 68739803df..5dc505d39f 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.31-next.0", + "version": "0.2.31-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 5e8c96ed91..0fa8ed8a92 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,88 @@ # @backstage/plugin-scaffolder-backend +## 1.21.0-next.2 + +### Patch Changes + +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Server. + + - `publish:bitbucketServer` + - `publish:bitbucketServer:pull-request` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 52ae6b9: Updated dependency `esbuild` to `^0.20.0`. +- 5eb6882: New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. + + Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` + and replaces its actions related to Bitbucket Cloud. + + - `publish:bitbucketCloud` + - `bitbucket:pipelines:run` + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.0-next.0 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.0-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.2 + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.2 + - @backstage/plugin-scaffolder-node@0.3.0-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## 1.21.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- 09f8b31: Simple typo fix in the fetch:template action example on the word 'skeleton'. +- f6792c6: Move the `NODE_OPTIONS` messaging for `--no-node-snapshot` to the `SecureTemplater` in order to get better messaging at runtime +- e1c479d: When using node 20+ the `scaffolder-backend` will now throw an error at startup if the `--no-node-snapshot` option was + not provided to node. +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.2.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-scaffolder-node@0.3.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.2-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + ## 1.21.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/README.md b/plugins/scaffolder-backend/README.md index ba9183c5cc..0aa57fd90c 100644 --- a/plugins/scaffolder-backend/README.md +++ b/plugins/scaffolder-backend/README.md @@ -21,7 +21,7 @@ restoring the plugin, if you previously removed it. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend ``` ### Adding the plugin to your `packages/backend` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 074bc92bf5..467887dfc5 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -6,6 +6,8 @@ import { ActionContext as ActionContext_2 } from '@backstage/plugin-scaffolder-node'; import * as azure from '@backstage/plugin-scaffolder-backend-module-azure'; import * as bitbucket from '@backstage/plugin-scaffolder-backend-module-bitbucket'; +import * as bitbucketCloud from '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud'; +import * as bitbucketServer from '@backstage/plugin-scaffolder-backend-module-bitbucket-server'; import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Duration } from 'luxon'; @@ -238,13 +240,13 @@ export const createPublishAzureAction: typeof azure.createPublishAzureAction; export const createPublishBitbucketAction: typeof bitbucket.createPublishBitbucketAction; // @public @deprecated (undocumented) -export const createPublishBitbucketCloudAction: typeof bitbucket.createPublishBitbucketCloudAction; +export const createPublishBitbucketCloudAction: typeof bitbucketCloud.createPublishBitbucketCloudAction; // @public @deprecated (undocumented) -export const createPublishBitbucketServerAction: typeof bitbucket.createPublishBitbucketServerAction; +export const createPublishBitbucketServerAction: typeof bitbucketServer.createPublishBitbucketServerAction; // @public @deprecated (undocumented) -export const createPublishBitbucketServerPullRequestAction: typeof bitbucket.createPublishBitbucketServerPullRequestAction; +export const createPublishBitbucketServerPullRequestAction: typeof bitbucketServer.createPublishBitbucketServerPullRequestAction; // @public @deprecated (undocumented) export const createPublishGerritAction: typeof gerrit.createPublishGerritAction; diff --git a/plugins/scaffolder-backend/knip-report.md b/plugins/scaffolder-backend/knip-report.md new file mode 100644 index 0000000000..de66889150 --- /dev/null +++ b/plugins/scaffolder-backend/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| p-limit | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| strip-ansi | package.json | +| @backstage/cli | package.json | +| wait-for-expect | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 2325f7d17e..f86f195279 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.21.0-next.0", + "version": "1.21.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -61,6 +61,8 @@ "@backstage/plugin-permission-node": "workspace:^", "@backstage/plugin-scaffolder-backend-module-azure": "workspace:^", "@backstage/plugin-scaffolder-backend-module-bitbucket": "workspace:^", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^", "@backstage/plugin-scaffolder-backend-module-gerrit": "workspace:^", "@backstage/plugin-scaffolder-backend-module-github": "workspace:^", "@backstage/plugin-scaffolder-backend-module-gitlab": "workspace:^", @@ -96,7 +98,7 @@ "@types/nunjucks": "^3.1.4", "@types/supertest": "^2.0.8", "@types/zen-observable": "^0.8.0", - "esbuild": "^0.19.0", + "esbuild": "^0.20.0", "strip-ansi": "^7.1.0", "supertest": "^6.1.3", "wait-for-expect": "^3.0.2" diff --git a/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile b/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile index a16248239c..33c6ad3788 100644 --- a/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile +++ b/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.18 +FROM alpine:3.18@sha256:11e21d7b981a59554b3f822c49f6e9f57b6068bb74f49c4cd5cc4c663c7e5160 RUN apk add --update \ git \ diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index 02b96e9fa7..4a8bdec951 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -55,13 +55,17 @@ import { import { createPublishAzureAction } from '@backstage/plugin-scaffolder-backend-module-azure'; +import { createPublishBitbucketAction } from '@backstage/plugin-scaffolder-backend-module-bitbucket'; + import { - createPublishBitbucketAction, createPublishBitbucketCloudAction, + createBitbucketPipelinesRunAction, +} from '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud'; + +import { createPublishBitbucketServerAction, createPublishBitbucketServerPullRequestAction, - createBitbucketPipelinesRunAction, -} from '@backstage/plugin-scaffolder-backend-module-bitbucket'; +} from '@backstage/plugin-scaffolder-backend-module-bitbucket-server'; import { createPublishGerritAction, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/deprecated.ts b/plugins/scaffolder-backend/src/scaffolder/actions/deprecated.ts index d5a13fbf6d..fd5fdd49e8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/deprecated.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/deprecated.ts @@ -17,6 +17,8 @@ import * as github from '@backstage/plugin-scaffolder-backend-module-github'; import * as gitlab from '@backstage/plugin-scaffolder-backend-module-gitlab'; import * as azure from '@backstage/plugin-scaffolder-backend-module-azure'; import * as bitbucket from '@backstage/plugin-scaffolder-backend-module-bitbucket'; +import * as bitbucketCloud from '@backstage/plugin-scaffolder-backend-module-bitbucket-cloud'; +import * as bitbucketServer from '@backstage/plugin-scaffolder-backend-module-bitbucket-server'; import * as gerrit from '@backstage/plugin-scaffolder-backend-module-gerrit'; /** @@ -75,28 +77,28 @@ export const createPublishGithubPullRequestAction = github.createPublishGithubPullRequestAction; /** - * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket instead + * @public @deprecated use "createPublishBitbucketCloudAction" from \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud or "createPublishBitbucketServerAction" from \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead */ export const createPublishBitbucketAction = bitbucket.createPublishBitbucketAction; /** - * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket instead + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-cloud instead */ export const createPublishBitbucketCloudAction = - bitbucket.createPublishBitbucketCloudAction; + bitbucketCloud.createPublishBitbucketCloudAction; /** - * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket instead + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead */ export const createPublishBitbucketServerAction = - bitbucket.createPublishBitbucketServerAction; + bitbucketServer.createPublishBitbucketServerAction; /** - * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket instead + * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-bitbucket-server instead */ export const createPublishBitbucketServerPullRequestAction = - bitbucket.createPublishBitbucketServerPullRequestAction; + bitbucketServer.createPublishBitbucketServerPullRequestAction; /** * @public @deprecated use import from \@backstage/plugin-scaffolder-backend-module-azure instead diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index 1e25a2c66e..1bd8a1f192 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-common +## 1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + ## 1.5.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-common/knip-report.md b/plugins/scaffolder-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/scaffolder-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 29a2f9bb74..df6f15f2ac 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.5.0-next.0", + "version": "1.5.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index 6f47b13296..f6707435d3 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-scaffolder-node +## 0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## 0.3.0-next.1 + +### Minor Changes + +- 78c100b: Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations + +### Patch Changes + +- e0e5afe: Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + ## 0.3.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-node/knip-report.md b/plugins/scaffolder-node/knip-report.md new file mode 100644 index 0000000000..27a330fa40 --- /dev/null +++ b/plugins/scaffolder-node/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/config | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index e0e780131f..67db624f89 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-node", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", - "version": "0.3.0-next.0", + "version": "0.3.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index ba40bc17fb..73be0b1ede 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/plugin-scaffolder-react +## 1.8.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- 2985186: Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## 1.8.0-next.1 + +### Minor Changes + +- b07ec70: Use more distinguishable icons for link (`Link`) and text output (`Description`). + +### Patch Changes + +- 3f60ad5: fix for: converting circular structure to JSON error +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- 82affc7: Fix issue where `ui:schema` was replaced with an empty object if `dependencies` is defined +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + ## 1.8.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-react/knip-report.md b/plugins/scaffolder-react/knip-report.md new file mode 100644 index 0000000000..ffe4b02cf2 --- /dev/null +++ b/plugins/scaffolder-react/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (6) + +| Name | Location | +|:--------------------------|:-------------| +| zod | package.json | +| immer | package.json | +| zen-observable | package.json | +| @backstage/theme | package.json | +| zod-to-json-schema | package.json | +| @backstage/catalog-client | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:---------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @backstage/plugin-catalog | package.json | +| @testing-library/user-event | package.json | +| @backstage/plugin-catalog-common | package.json | + diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 0f6da12d6c..438f6f0191 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.8.0-next.0", + "version": "1.8.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -58,13 +58,13 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", + "@react-hookz/web": "^24.0.0", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", "@types/json-schema": "^7.0.9", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.2.6", "flatted": "3.2.9", "humanize-duration": "^3.25.1", diff --git a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx index 5c373411fa..ec4e4e1b0a 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx @@ -70,7 +70,7 @@ describe('TemplateCard', () => { }, }; - const { getByText } = await renderInTestApp( + const { getByText, getByTestId } = await renderInTestApp( { const description = getByText('hello'); expect(description.querySelector('strong')).toBeInTheDocument(); + expect(getByTestId('template-card-separator')).toBeInTheDocument(); }); it('should render no description if none is provided through the template', async () => { @@ -118,6 +119,41 @@ describe('TemplateCard', () => { expect(getByText('No description')).toBeInTheDocument(); }); + it('should not render extra separators when tags or links are not present', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { queryByTestId } = await renderInTestApp( + + + , + ); + + expect(queryByTestId('template-card-separator')).toBeInTheDocument(); + expect( + queryByTestId('template-card-separator--tags'), + ).not.toBeInTheDocument(); + expect( + queryByTestId('template-card-separator--links'), + ).not.toBeInTheDocument(); + }); + it('should render the tags', async () => { const mockTemplate: TemplateEntityV1beta3 = { apiVersion: 'scaffolder.backstage.io/v1beta3', @@ -129,7 +165,7 @@ describe('TemplateCard', () => { }, }; - const { getByText } = await renderInTestApp( + const { getByText, queryByTestId } = await renderInTestApp( { for (const tag of mockTemplate.metadata.tags!) { expect(getByText(tag)).toBeInTheDocument(); } + expect(queryByTestId('template-card-separator')).not.toBeInTheDocument(); + expect(queryByTestId('template-card-separator--tags')).toBeInTheDocument(); + }); + + it('should not render links section when empty links are defined', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', tags: [], links: [] }, + spec: { + steps: [], + type: 'service', + }, + relations: [ + { + targetRef: 'group:default/my-test-user', + type: RELATION_OWNED_BY, + }, + ], + }; + + const { queryByTestId, queryByText } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/catalog/:kind/:namespace/:name': entityRouteRef, + }, + }, + ); + + expect(queryByTestId('template-card-separator')).toBeInTheDocument(); + expect( + queryByTestId('template-card-separator--links'), + ).not.toBeInTheDocument(); + expect(queryByText('0')).not.toBeInTheDocument(); + }); + + it('should not render links section when empty additional links are defined', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', tags: [], links: [] }, + spec: { + steps: [], + type: 'service', + }, + relations: [ + { + targetRef: 'group:default/my-test-user', + type: RELATION_OWNED_BY, + }, + ], + }; + + const { queryByTestId, queryByText } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/catalog/:kind/:namespace/:name': entityRouteRef, + }, + }, + ); + + expect(queryByTestId('template-card-separator')).toBeInTheDocument(); + expect( + queryByTestId('template-card-separator--links'), + ).not.toBeInTheDocument(); + expect(queryByText('0')).not.toBeInTheDocument(); + }); + + it('should render links section when links are defined', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { + name: 'bob', + tags: [], + links: [{ url: '/some/url', title: 'Learn More' }], + }, + spec: { + steps: [], + type: 'service', + }, + relations: [ + { + targetRef: 'group:default/my-test-user', + type: RELATION_OWNED_BY, + }, + ], + }; + + const { queryByTestId, getByRole } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/catalog/:kind/:namespace/:name': entityRouteRef, + }, + }, + ); + + expect(queryByTestId('template-card-separator')).not.toBeInTheDocument(); + expect(queryByTestId('template-card-separator--links')).toBeInTheDocument(); + expect(getByRole('link', { name: 'Learn More' })).toBeInTheDocument(); }); it('should render a link to the owner', async () => { @@ -186,12 +358,11 @@ describe('TemplateCard', () => { }, ); - expect( - getByRole('link', { name: 'group:default/my-test-user' }), - ).toBeInTheDocument(); - expect( - getByRole('link', { name: 'group:default/my-test-user' }), - ).toHaveAttribute('href', '/catalog/group/default/my-test-user'); + expect(getByRole('link', { name: /.*my-test-user$/ })).toBeInTheDocument(); + expect(getByRole('link', { name: /.*my-test-user$/ })).toHaveAttribute( + 'href', + '/catalog/group/default/my-test-user', + ); }); it('should call the onSelected handler when clicking the choose button', async () => { diff --git a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.tsx b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.tsx index 7850137945..2d8ff1e458 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.tsx @@ -101,6 +101,10 @@ export const TemplateCard = (props: TemplateCardProps) => { const app = useApp(); const iconResolver = (key?: string): IconComponent => key ? app.getSystemIcon(key) ?? LanguageIcon : LanguageIcon; + const hasTags = !!template.metadata.tags?.length; + const hasLinks = + !!props.additionalLinks?.length || !!template.metadata.links?.length; + const displayDefaultDivider = !hasTags && !hasLinks; return ( @@ -115,15 +119,20 @@ export const TemplateCard = (props: TemplateCardProps) => { /> - {(template.metadata.tags?.length ?? 0) > 0 && ( + {displayDefaultDivider && ( + + + + )} + {hasTags && ( <> - + {template.metadata.tags?.map(tag => ( - + { )} - {(props.additionalLinks || template.metadata.links?.length) && ( + {hasLinks && ( <> - + diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 2309a0554d..d8f321a62d 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,58 @@ # @backstage/plugin-scaffolder +## 1.18.0-next.2 + +### Minor Changes + +- 7f11009: Added stack trace display to `ErrorPage` and updated existing refs + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-permission-react@0.4.20-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + +## 1.18.0-next.1 + +### Minor Changes + +- 9b9c05c: Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. + +### Patch Changes + +- 31f0a0a: Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/plugin-scaffolder-react@1.8.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-react@0.4.20-next.0 + - @backstage/plugin-scaffolder-common@1.5.0-next.1 + ## 1.18.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder/README.md b/plugins/scaffolder/README.md index 80d59160c4..a6af441d62 100644 --- a/plugins/scaffolder/README.md +++ b/plugins/scaffolder/README.md @@ -20,7 +20,7 @@ the plugin, if you previously removed it. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-scaffolder +yarn --cwd packages/app add @backstage/plugin-scaffolder ``` ### Add the plugin to your `packages/app` diff --git a/plugins/scaffolder/knip-report.md b/plugins/scaffolder/knip-report.md new file mode 100644 index 0000000000..d3f951fd6f --- /dev/null +++ b/plugins/scaffolder/knip-report.md @@ -0,0 +1,23 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:--------------------|:-------------| +| immer | package.json | +| git-url-parse | package.json | +| @rjsf/material-ui | package.json | +| json-schema-library | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index eb6634218d..53e17ee1f4 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.18.0-next.0", + "version": "1.18.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -67,12 +67,12 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@react-hookz/web": "^24.0.0", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "event-source-polyfill": "^1.0.31", diff --git a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx index 9957d22456..9c0276fa28 100644 --- a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx +++ b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx @@ -142,6 +142,7 @@ export const ActionsPage = () => { ); } diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx index 4329b2208b..8016a6ae83 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx @@ -89,7 +89,10 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith(undefined); + expect(catalogApi.getEntities).toHaveBeenCalledWith({ + fields: ['metadata.name', 'metadata.namespace', 'kind'], + filter: undefined, + }); }); it('updates even if there is not an exact match', async () => { @@ -130,11 +133,13 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { - kind: ['User'], - }, - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: { + kind: ['User'], + }, + }), + ); }); }); @@ -173,18 +178,20 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: [ - { - kind: ['Group'], - 'metadata.name': 'test-entity', - }, - { - kind: ['User'], - 'metadata.name': 'test-entity', - }, - ], - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: [ + { + kind: ['Group'], + 'metadata.name': 'test-entity', + }, + { + kind: ['User'], + 'metadata.name': 'test-entity', + }, + ], + }), + ); }); it('allow single top level filter', async () => { uiSchema = { @@ -204,12 +211,14 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { - kind: ['Group'], - 'metadata.name': 'test-entity', - }, - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: { + kind: ['Group'], + 'metadata.name': 'test-entity', + }, + }), + ); }); it('search for entitities containing an specific key', async () => { @@ -230,14 +239,16 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: [ - { - kind: ['User'], - 'metadata.annotation.some/anotation': CATALOG_FILTER_EXISTS, - }, - ], - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: [ + { + kind: ['User'], + 'metadata.annotation.some/anotation': CATALOG_FILTER_EXISTS, + }, + ], + }), + ); }); }); @@ -273,14 +284,16 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: [ - { - kind: ['Group'], - 'metadata.name': 'test-group', - }, - ], - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: [ + { + kind: ['Group'], + 'metadata.name': 'test-group', + }, + ], + }), + ); }); }); diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 0d45fe771c..76dbe42332 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -67,8 +67,11 @@ export const EntityPicker = (props: EntityPickerProps) => { const catalogApi = useApi(catalogApiRef); const { value: entities, loading } = useAsync(async () => { + const fields = ['metadata.name', 'metadata.namespace', 'kind']; const { items } = await catalogApi.getEntities( - catalogFilter ? { filter: catalogFilter } : undefined, + catalogFilter + ? { filter: catalogFilter, fields } + : { filter: undefined, fields }, ); return items; }); diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx index 3c948b8261..57ca8e53ab 100644 --- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx @@ -94,11 +94,14 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { - kind: ['Group', 'User'], - }, - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: { + kind: ['Group', 'User'], + }, + fields: ['metadata.name', 'metadata.namespace', 'kind'], + }), + ); }); }); @@ -124,11 +127,14 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { - kind: ['User'], - }, - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: { + kind: ['User'], + }, + fields: ['metadata.name', 'metadata.namespace', 'kind'], + }), + ); }); }); @@ -163,14 +169,16 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: [ - { - kind: ['Group'], - 'spec.type': 'team', - }, - ], - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: [ + { + kind: ['Group'], + 'spec.type': 'team', + }, + ], + }), + ); }); }); @@ -208,16 +216,18 @@ describe('', () => { , ); - expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: [ - { - kind: ['Group', 'User'], - }, - { - 'spec.type': ['team', 'business-unit'], - }, - ], - }); + expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect.objectContaining({ + filter: [ + { + kind: ['Group', 'User'], + }, + { + 'spec.type': ['team', 'business-unit'], + }, + ], + }), + ); }); }); }); diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index a9123460c3..7112339046 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,42 @@ # @backstage/plugin-search-backend-module-catalog +## 0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.14-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-catalog/README.md b/plugins/search-backend-module-catalog/README.md index a2825c17cd..cbabe13d6d 100644 --- a/plugins/search-backend-module-catalog/README.md +++ b/plugins/search-backend-module-catalog/README.md @@ -8,7 +8,7 @@ Add the module package as a dependency: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend-module-catalog +yarn --cwd packages/backend add @backstage/plugin-search-backend-module-catalog ``` Add the collator to your backend instance, along with the search plugin itself: diff --git a/plugins/search-backend-module-catalog/knip-report.md b/plugins/search-backend-module-catalog/knip-report.md new file mode 100644 index 0000000000..3a54a7981d --- /dev/null +++ b/plugins/search-backend-module-catalog/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index 4fdecf1062..89fdf06464 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-catalog", "description": "A module for the search backend that exports catalog modules", - "version": "0.1.14-next.0", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 5be019c3f9..c63bf3e3d5 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.3.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + +## 1.3.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 1.3.13-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/knip-report.md b/plugins/search-backend-module-elasticsearch/knip-report.md new file mode 100644 index 0000000000..80371af481 --- /dev/null +++ b/plugins/search-backend-module-elasticsearch/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/backend-common | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @short.io/opensearch-mock | package.json | +| @backstage/backend-common | package.json | +| @elastic/elasticsearch-mock | package.json | + diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 81bc2fc72a..1c362f8b94 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.3.13-next.0", + "version": "1.3.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md index 50f12e9a3f..67acae898e 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-search-backend-module-explore +## 0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.14-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-explore/README.md b/plugins/search-backend-module-explore/README.md index 9ba33ae326..5bccf8c737 100644 --- a/plugins/search-backend-module-explore/README.md +++ b/plugins/search-backend-module-explore/README.md @@ -8,7 +8,7 @@ Add the module package as a dependency: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend-module-explore +yarn --cwd packages/backend add @backstage/plugin-search-backend-module-explore ``` Add the collator to your backend instance, along with the search plugin itself: diff --git a/plugins/search-backend-module-explore/knip-report.md b/plugins/search-backend-module-explore/knip-report.md new file mode 100644 index 0000000000..3a54a7981d --- /dev/null +++ b/plugins/search-backend-module-explore/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json index 4c1fab7f04..3b17551fc8 100644 --- a/plugins/search-backend-module-explore/package.json +++ b/plugins/search-backend-module-explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-explore", "description": "A module for the search backend that exports explore modules", - "version": "0.1.14-next.0", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index 1ea165328c..6afe62f0fb 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## 0.5.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.5.19-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-pg/knip-report.md b/plugins/search-backend-module-pg/knip-report.md new file mode 100644 index 0000000000..d85ea7be07 --- /dev/null +++ b/plugins/search-backend-module-pg/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| lodash | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 8a39be16be..4642c50815 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.5.19-next.0", + "version": "0.5.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md index be37af50b7..34a10955ec 100644 --- a/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md +++ b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-search-backend-module-stack-overflow-collator +## 0.1.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.3-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-stack-overflow-collator/README.md b/plugins/search-backend-module-stack-overflow-collator/README.md index 4790917375..e2d516ace5 100644 --- a/plugins/search-backend-module-stack-overflow-collator/README.md +++ b/plugins/search-backend-module-stack-overflow-collator/README.md @@ -73,7 +73,7 @@ Add the module package as a dependency: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend-module-stack-overflow-collator +yarn --cwd packages/backend add @backstage/plugin-search-backend-module-stack-overflow-collator ``` Add the collator to your backend instance, along with the search plugin itself: diff --git a/plugins/search-backend-module-stack-overflow-collator/knip-report.md b/plugins/search-backend-module-stack-overflow-collator/knip-report.md new file mode 100644 index 0000000000..3a54a7981d --- /dev/null +++ b/plugins/search-backend-module-stack-overflow-collator/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend-module-stack-overflow-collator/package.json b/plugins/search-backend-module-stack-overflow-collator/package.json index 865e277adc..aaa6bf68b3 100644 --- a/plugins/search-backend-module-stack-overflow-collator/package.json +++ b/plugins/search-backend-module-stack-overflow-collator/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-stack-overflow-collator", "description": "A module for the search backend that exports stack overflow modules", - "version": "0.1.3-next.0", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/search-backend-module-stack-overflow" + "directory": "plugins/search-backend-module-stack-overflow-collator" }, "scripts": { "start": "backstage-cli package start", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index 811c7ccf5c..8d6480056e 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,42 @@ # @backstage/plugin-search-backend-module-techdocs +## 0.1.14-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.14-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-techdocs/README.md b/plugins/search-backend-module-techdocs/README.md index 04c884efb0..68bb4b956e 100644 --- a/plugins/search-backend-module-techdocs/README.md +++ b/plugins/search-backend-module-techdocs/README.md @@ -8,7 +8,7 @@ Add the module package as a dependency: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend-module-techdocs +yarn --cwd packages/backend add @backstage/plugin-search-backend-module-techdocs ``` Add the collator to your backend instance, along with the search plugin itself: diff --git a/plugins/search-backend-module-techdocs/knip-report.md b/plugins/search-backend-module-techdocs/knip-report.md new file mode 100644 index 0000000000..3a54a7981d --- /dev/null +++ b/plugins/search-backend-module-techdocs/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json index dc349aa4fd..b91b19a32f 100644 --- a/plugins/search-backend-module-techdocs/package.json +++ b/plugins/search-backend-module-techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-techdocs", "description": "A module for the search backend that exports techdocs modules", - "version": "0.1.14-next.0", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index c3a8297475..60d436b65c 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-search-backend-node +## 1.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 1.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + ## 1.2.14-next.0 ### Patch Changes diff --git a/plugins/search-backend-node/knip-report.md b/plugins/search-backend-node/knip-report.md new file mode 100644 index 0000000000..1beec7d360 --- /dev/null +++ b/plugins/search-backend-node/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| lodash | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index aa38da0003..bd6d586b5d 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": "1.2.14-next.0", + "version": "1.2.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 8ddbf86643..7807d90b4d 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-search-backend +## 1.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-permission-node@0.7.21-next.2 + - @backstage/plugin-search-backend-node@1.2.14-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-common@1.2.10 + +## 1.5.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-permission-node@0.7.21-next.1 + - @backstage/plugin-search-backend-node@1.2.14-next.1 + - @backstage/plugin-search-common@1.2.10 + ## 1.5.0-next.0 ### Minor Changes diff --git a/plugins/search-backend/knip-report.md b/plugins/search-backend/knip-report.md new file mode 100644 index 0000000000..22d525923f --- /dev/null +++ b/plugins/search-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index e66c92a05a..cdcc979a03 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": "1.5.0-next.0", + "version": "1.5.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -39,7 +39,8 @@ "test": "backstage-cli package test", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean" + "clean": "backstage-cli package clean", + "generate": "backstage-repo-tools package schema openapi generate --server" }, "dependencies": { "@backstage/backend-common": "workspace:^", diff --git a/plugins/search-common/knip-report.md b/plugins/search-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/search-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index c2971227a6..cd786947dd 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-search-react +## 1.7.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## 1.7.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + ## 1.7.6-next.0 ### Patch Changes diff --git a/plugins/search-react/knip-report.md b/plugins/search-react/knip-report.md new file mode 100644 index 0000000000..3ab62f70ee --- /dev/null +++ b/plugins/search-react/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused devDependencies (7) + +| Name | Location | +|:-------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | +| @backstage/frontend-app-api | package.json | +| @backstage/frontend-test-utils | package.json | + diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 02fb2c130b..bf9c51ca91 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.7.6-next.0", + "version": "1.7.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -55,7 +55,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "qs": "^6.9.4", "react-use": "^17.3.2" diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index 3611b01d8a..ac299ee80b 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/plugin-search +## 1.4.6-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + +## 1.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/version-bridge@1.0.7 + - @backstage/plugin-search-common@1.2.10 + ## 1.4.6-next.0 ### Patch Changes diff --git a/plugins/search/knip-report.md b/plugins/search/knip-report.md new file mode 100644 index 0000000000..c6b6402246 --- /dev/null +++ b/plugins/search/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| history | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/search/package.json b/plugins/search/package.json index cf368caf87..ba4e914b97 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": "1.4.6-next.0", + "version": "1.4.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -58,7 +58,7 @@ "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "qs": "^6.9.4", "react-use": "^17.2.4" }, diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index fd317e88c8..e85d96de7b 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-sentry +## 0.5.15-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.5.15-next.0 ### Patch Changes diff --git a/plugins/sentry/README.md b/plugins/sentry/README.md index 7cc015eb13..78f31952b2 100644 --- a/plugins/sentry/README.md +++ b/plugins/sentry/README.md @@ -10,7 +10,7 @@ The Sentry Plugin displays issues from [Sentry](https://sentry.io). ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-sentry +yarn --cwd packages/app add @backstage/plugin-sentry ``` 2. Add the `EntitySentryCard` to the EntityPage: diff --git a/plugins/sentry/knip-report.md b/plugins/sentry/knip-report.md new file mode 100644 index 0000000000..8353ecad20 --- /dev/null +++ b/plugins/sentry/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------|:-------------| +| @date-io/core | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 7bf5a82661..9713419450 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.5.15-next.0", + "version": "0.5.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@date-io/core": "^1.3.13", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-sparklines": "^1.7.0", "react-use": "^17.2.4" diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index d819ae5921..9eb64ba1fb 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-shortcuts +## 0.3.19-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## 0.3.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + ## 0.3.18 ### Patch Changes diff --git a/plugins/shortcuts/README.md b/plugins/shortcuts/README.md index 46b878a579..18deb7ae37 100644 --- a/plugins/shortcuts/README.md +++ b/plugins/shortcuts/README.md @@ -8,7 +8,7 @@ The shortcuts plugin allows a user to have easy access to pages within a Backsta ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-shortcuts +yarn --cwd packages/app add @backstage/plugin-shortcuts ``` ### Register plugin: diff --git a/plugins/shortcuts/knip-report.md b/plugins/shortcuts/knip-report.md new file mode 100644 index 0000000000..ecf6480396 --- /dev/null +++ b/plugins/shortcuts/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 867e28dfa4..c39e22b4cd 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.3.18", + "version": "0.3.19-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-hook-form": "^7.12.2", "react-use": "^17.2.4", "uuid": "^8.3.2", diff --git a/plugins/signals-backend/CHANGELOG.md b/plugins/signals-backend/CHANGELOG.md index 81ad27a986..efd5a3b624 100644 --- a/plugins/signals-backend/CHANGELOG.md +++ b/plugins/signals-backend/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-signals-backend +## 0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-signals-node@0.0.1-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## 0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + - @backstage/plugin-signals-node@0.0.1-next.1 + ## 0.0.1-next.0 ### Patch Changes diff --git a/plugins/signals-backend/README.md b/plugins/signals-backend/README.md index e30a0836e0..ff1fcb6562 100644 --- a/plugins/signals-backend/README.md +++ b/plugins/signals-backend/README.md @@ -22,6 +22,7 @@ export default async function createPlugin( logger: env.logger, eventBroker: env.eventBroker, identity: env.identity, + discovery: env.discovery, }); } ``` diff --git a/plugins/signals-backend/api-report.md b/plugins/signals-backend/api-report.md index dd46778e5d..8bdaa581f3 100644 --- a/plugins/signals-backend/api-report.md +++ b/plugins/signals-backend/api-report.md @@ -8,12 +8,15 @@ import { EventBroker } from '@backstage/plugin-events-node'; import express from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { LoggerService } from '@backstage/backend-plugin-api'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export interface RouterOptions { + // (undocumented) + discovery: PluginEndpointDiscovery; // (undocumented) eventBroker?: EventBroker; // (undocumented) diff --git a/plugins/signals-backend/knip-report.md b/plugins/signals-backend/knip-report.md new file mode 100644 index 0000000000..03597de16c --- /dev/null +++ b/plugins/signals-backend/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| node-fetch | package.json | +| @backstage/config | package.json | +| http-proxy-middleware | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index 58ab25c320..728b11f7ba 100644 --- a/plugins/signals-backend/package.json +++ b/plugins/signals-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-signals-backend", - "version": "0.0.1-next.0", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-backend" + }, "backstage": { "role": "backend-plugin" }, diff --git a/plugins/signals-backend/src/plugin.ts b/plugins/signals-backend/src/plugin.ts index 4a9cef028f..11b63163d5 100644 --- a/plugins/signals-backend/src/plugin.ts +++ b/plugins/signals-backend/src/plugin.ts @@ -32,14 +32,16 @@ export const signalsPlugin = createBackendPlugin({ httpRouter: coreServices.httpRouter, logger: coreServices.logger, identity: coreServices.identity, + discovery: coreServices.discovery, // TODO: EventBroker. It is optional for now but it's actually required so waiting for the new backend system // for the events-backend for this to work. }, - async init({ httpRouter, logger, identity }) { + async init({ httpRouter, logger, identity, discovery }) { httpRouter.use( await createRouter({ logger, identity, + discovery, }), ); }, diff --git a/plugins/signals-backend/src/service/SignalManager.ts b/plugins/signals-backend/src/service/SignalManager.ts index 983496b96b..db374418e1 100644 --- a/plugins/signals-backend/src/service/SignalManager.ts +++ b/plugins/signals-backend/src/service/SignalManager.ts @@ -71,7 +71,9 @@ export class SignalManager { id, user: identity?.identity.userEntityRef ?? 'user:default/guest', ws, - ownershipEntityRefs: identity?.identity.ownershipEntityRefs ?? [], + ownershipEntityRefs: identity?.identity.ownershipEntityRefs ?? [ + 'user:default/guest', + ], subscriptions: new Set(), }; @@ -132,6 +134,10 @@ export class SignalManager { const { channel, recipients, message } = eventPayload; const jsonMessage = JSON.stringify({ channel, message }); + let users: string[] = []; + if (recipients !== null) { + users = Array.isArray(recipients) ? recipients : [recipients]; + } // Actual websocket message sending this.connections.forEach(conn => { @@ -141,9 +147,7 @@ export class SignalManager { // Sending to all users can be done with null if ( recipients !== null && - !conn.ownershipEntityRefs.some((ref: string) => - recipients.includes(ref), - ) + !conn.ownershipEntityRefs.some((ref: string) => users.includes(ref)) ) { return; } diff --git a/plugins/signals-backend/src/service/router.test.ts b/plugins/signals-backend/src/service/router.test.ts index ecf2ad4aa6..807b45d53e 100644 --- a/plugins/signals-backend/src/service/router.test.ts +++ b/plugins/signals-backend/src/service/router.test.ts @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; +import { + getVoidLogger, + PluginEndpointDiscovery, +} from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; @@ -30,6 +33,11 @@ const identityApiMock: jest.Mocked = { getIdentity: jest.fn(), }; +const discovery: jest.Mocked = { + getBaseUrl: jest.fn().mockResolvedValue('/api/signals'), + getExternalBaseUrl: jest.fn(), +}; + describe('createRouter', () => { let app: express.Express; @@ -38,6 +46,7 @@ describe('createRouter', () => { logger: getVoidLogger(), identity: identityApiMock, eventBroker: eventBrokerMock, + discovery, }); app = express().use(router); }); diff --git a/plugins/signals-backend/src/service/router.ts b/plugins/signals-backend/src/service/router.ts index 4394a9f480..cc8fe9b851 100644 --- a/plugins/signals-backend/src/service/router.ts +++ b/plugins/signals-backend/src/service/router.ts @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { errorHandler } from '@backstage/backend-common'; +import { + errorHandler, + PluginEndpointDiscovery, +} from '@backstage/backend-common'; import express, { NextFunction, Request, Response } from 'express'; import Router from 'express-promise-router'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -33,13 +36,14 @@ export interface RouterOptions { logger: LoggerService; eventBroker?: EventBroker; identity: IdentityApi; + discovery: PluginEndpointDiscovery; } /** @public */ export async function createRouter( options: RouterOptions, ): Promise { - const { logger, identity } = options; + const { logger, identity, discovery } = options; const manager = SignalManager.create(options); let subscribedToUpgradeRequests = false; @@ -66,9 +70,9 @@ export async function createRouter( } subscribedToUpgradeRequests = true; + const apiUrl = await discovery.getBaseUrl('signals'); server.on('upgrade', async (request, socket, head) => { - // TODO: Find a way to make this more generic - if (request.url !== '/api/signals') { + if (!request.url || !apiUrl.endsWith(request.url)) { return; } diff --git a/plugins/signals-backend/src/service/standaloneServer.ts b/plugins/signals-backend/src/service/standaloneServer.ts index 278de8621e..00ef7b5c77 100644 --- a/plugins/signals-backend/src/service/standaloneServer.ts +++ b/plugins/signals-backend/src/service/standaloneServer.ts @@ -68,6 +68,7 @@ export async function startStandaloneServer( logger, identity, eventBroker, + discovery, }); let service = createServiceBuilder(module) diff --git a/plugins/signals-node/CHANGELOG.md b/plugins/signals-node/CHANGELOG.md index ee01a4a078..fea0d770e4 100644 --- a/plugins/signals-node/CHANGELOG.md +++ b/plugins/signals-node/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-signals-node +## 0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/plugin-events-node@0.2.19-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## 0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + - @backstage/plugin-events-node@0.2.19-next.1 + ## 0.0.1-next.0 ### Patch Changes diff --git a/plugins/signals-node/api-report.md b/plugins/signals-node/api-report.md index 00d099f7db..cbf4142daf 100644 --- a/plugins/signals-node/api-report.md +++ b/plugins/signals-node/api-report.md @@ -16,15 +16,15 @@ export class DefaultSignalService implements SignalService { // @public (undocumented) export type SignalPayload = { - recipients: string[] | null; + recipients: string[] | string | null; channel: string; message: JsonObject; }; // @public (undocumented) -export type SignalService = { +export interface SignalService { publish(signal: SignalPayload): Promise; -}; +} // @public (undocumented) export const signalService: ServiceRef; diff --git a/plugins/signals-node/knip-report.md b/plugins/signals-node/knip-report.md new file mode 100644 index 0000000000..ef1a89a394 --- /dev/null +++ b/plugins/signals-node/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| ws | package.json | +| uuid | package.json | +| express | package.json | +| @backstage/config | package.json | +| @backstage/backend-common | package.json | +| @backstage/plugin-auth-node | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| @types/express | package.json | +| @backstage/cli | package.json | + diff --git a/plugins/signals-node/package.json b/plugins/signals-node/package.json index bdfdfe396c..40837e90a1 100644 --- a/plugins/signals-node/package.json +++ b/plugins/signals-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-signals-node", "description": "Node.js library for the signals plugin", - "version": "0.0.1-next.0", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/signals-node/src/DefaultSignalService.test.ts b/plugins/signals-node/src/DefaultSignalService.test.ts new file mode 100644 index 0000000000..9938c84c86 --- /dev/null +++ b/plugins/signals-node/src/DefaultSignalService.test.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2024 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 { DefaultSignalService } from './DefaultSignalService'; + +describe('DefaultSignalService', () => { + const mockEventBroker = { + publish: jest.fn(), + subscribe: jest.fn(), + }; + + const service = DefaultSignalService.create({ eventBroker: mockEventBroker }); + + it('should publish signal', () => { + const signal = { + channel: 'test-channel', + recipients: null, + message: { msg: 'hello world' }, + }; + service.publish(signal); + expect(mockEventBroker.publish).toHaveBeenCalledWith({ + topic: 'signals', + eventPayload: signal, + }); + }); +}); diff --git a/plugins/signals-node/src/DefaultSignalService.ts b/plugins/signals-node/src/DefaultSignalService.ts index 1fba96b8bc..2a234fe5d4 100644 --- a/plugins/signals-node/src/DefaultSignalService.ts +++ b/plugins/signals-node/src/DefaultSignalService.ts @@ -37,14 +37,9 @@ export class DefaultSignalService implements SignalService { * @param message - message to publish */ async publish(signal: SignalPayload) { - const { recipients, channel, message } = signal; await this.eventBroker?.publish({ topic: 'signals', - eventPayload: { - recipients, - message, - channel, - }, + eventPayload: signal, }); } } diff --git a/plugins/signals-node/src/SignalService.ts b/plugins/signals-node/src/SignalService.ts index f08a12661f..7d021ccf4e 100644 --- a/plugins/signals-node/src/SignalService.ts +++ b/plugins/signals-node/src/SignalService.ts @@ -16,9 +16,9 @@ import { SignalPayload } from './types'; /** @public */ -export type SignalService = { +export interface SignalService { /** * Publishes a message to user refs to specific topic */ publish(signal: SignalPayload): Promise; -}; +} diff --git a/plugins/signals-node/src/types.ts b/plugins/signals-node/src/types.ts index 0220a196aa..7e61aea320 100644 --- a/plugins/signals-node/src/types.ts +++ b/plugins/signals-node/src/types.ts @@ -25,7 +25,7 @@ export type SignalServiceOptions = { /** @public */ export type SignalPayload = { - recipients: string[] | null; + recipients: string[] | string | null; channel: string; message: JsonObject; }; diff --git a/plugins/signals-react/CHANGELOG.md b/plugins/signals-react/CHANGELOG.md index 4370801b4f..5b2552d593 100644 --- a/plugins/signals-react/CHANGELOG.md +++ b/plugins/signals-react/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-signals-react +## 0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/types@1.1.1 + +## 0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/types@1.1.1 + ## 0.0.1-next.0 ### Patch Changes diff --git a/plugins/signals-react/api-report.md b/plugins/signals-react/api-report.md index 2df2e4f1ce..ef4bc1b7fc 100644 --- a/plugins/signals-react/api-report.md +++ b/plugins/signals-react/api-report.md @@ -7,21 +7,27 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { JsonObject } from '@backstage/types'; // @public (undocumented) -export type SignalApi = { +export interface SignalApi { + // (undocumented) subscribe( channel: string, onMessage: (message: JsonObject) => void, - ): { - unsubscribe: () => void; - }; -}; + ): SignalSubscriber; +} // @public (undocumented) export const signalApiRef: ApiRef; +// @public (undocumented) +export interface SignalSubscriber { + // (undocumented) + unsubscribe(): void; +} + // @public (undocumented) export const useSignal: (channel: string) => { lastSignal: JsonObject | null; + isSignalsAvailable: boolean; }; // (No @packageDocumentation comment for this package) diff --git a/plugins/signals-react/knip-report.md b/plugins/signals-react/knip-report.md new file mode 100644 index 0000000000..b22feb3580 --- /dev/null +++ b/plugins/signals-react/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @material-ui/core | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/signals-react/package.json b/plugins/signals-react/package.json index 07fbd6dfbc..a8aa9bd885 100644 --- a/plugins/signals-react/package.json +++ b/plugins/signals-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-signals-react", "description": "Web library for the signals plugin", - "version": "0.0.1-next.0", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-react" + }, "backstage": { "role": "web-library" }, diff --git a/plugins/signals-react/src/api/SignalApi.ts b/plugins/signals-react/src/api/SignalApi.ts index b37b3ae2f5..b67b2ea0dc 100644 --- a/plugins/signals-react/src/api/SignalApi.ts +++ b/plugins/signals-react/src/api/SignalApi.ts @@ -22,9 +22,14 @@ export const signalApiRef = createApiRef({ }); /** @public */ -export type SignalApi = { +export interface SignalSubscriber { + unsubscribe(): void; +} + +/** @public */ +export interface SignalApi { subscribe( channel: string, onMessage: (message: JsonObject) => void, - ): { unsubscribe: () => void }; -}; + ): SignalSubscriber; +} diff --git a/plugins/signals-react/src/hooks/useSignal.ts b/plugins/signals-react/src/hooks/useSignal.ts index a7d50fbe3b..084427e2cc 100644 --- a/plugins/signals-react/src/hooks/useSignal.ts +++ b/plugins/signals-react/src/hooks/useSignal.ts @@ -16,7 +16,7 @@ import { signalApiRef } from '../api'; import { useApiHolder } from '@backstage/core-plugin-api'; import { JsonObject } from '@backstage/types'; -import { useEffect, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; /** @public */ export const useSignal = (channel: string) => { @@ -40,5 +40,8 @@ export const useSignal = (channel: string) => { }; }, [signals, channel]); - return { lastSignal }; + // Can be used to fallback (for example to long polling) if signals are not available in the system + const isSignalsAvailable = useMemo(() => !signals, [signals]); + + return { lastSignal, isSignalsAvailable }; }; diff --git a/plugins/signals/CHANGELOG.md b/plugins/signals/CHANGELOG.md index f180c1cc6f..9036b5cb46 100644 --- a/plugins/signals/CHANGELOG.md +++ b/plugins/signals/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-signals +## 0.0.1-next.2 + +### Patch Changes + +- 447d210: Fix disconnect loop on server start +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-signals-react@0.0.1-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/theme@0.5.1-next.0 + - @backstage/types@1.1.1 + +## 0.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + - @backstage/plugin-signals-react@0.0.1-next.1 + ## 0.0.1-next.0 ### Patch Changes diff --git a/plugins/signals/knip-report.md b/plugins/signals/knip-report.md new file mode 100644 index 0000000000..7331067004 --- /dev/null +++ b/plugins/signals/knip-report.md @@ -0,0 +1,23 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:-------------------|:-------------| +| react-use | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @material-ui/icons | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| jest-websocket-mock | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/signals/package.json b/plugins/signals/package.json index ea7953b0d4..9f69b615dc 100644 --- a/plugins/signals/package.json +++ b/plugins/signals/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-signals", - "version": "0.0.1-next.0", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/signals/src/api/SignalClient.ts b/plugins/signals/src/api/SignalClient.ts index ee4ed8756b..d6c4634264 100644 --- a/plugins/signals/src/api/SignalClient.ts +++ b/plugins/signals/src/api/SignalClient.ts @@ -146,20 +146,6 @@ export class SignalClient implements SignalApi { url.protocol = url.protocol === 'http:' ? 'ws:' : 'wss:'; this.ws = new WebSocket(url.toString(), token); - this.ws.onmessage = (data: MessageEvent) => { - this.handleMessage(data); - }; - - this.ws.onerror = () => { - this.reconnect(); - }; - - this.ws.onclose = (ev: CloseEvent) => { - if (ev.code !== WS_CLOSE_NORMAL && ev.code !== WS_CLOSE_GOING_AWAY) { - this.reconnect(); - } - }; - // Wait until connection is open let connectSleep = 0; while ( @@ -174,6 +160,20 @@ export class SignalClient implements SignalApi { if (!this.ws || this.ws.readyState !== WebSocket.OPEN) { throw new Error('Connect timeout'); } + + this.ws.onmessage = (data: MessageEvent) => { + this.handleMessage(data); + }; + + this.ws.onerror = () => { + this.reconnect(); + }; + + this.ws.onclose = (ev: CloseEvent) => { + if (ev.code !== WS_CLOSE_NORMAL && ev.code !== WS_CLOSE_GOING_AWAY) { + this.reconnect(); + } + }; } private handleMessage(data: MessageEvent) { diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 6d992b0442..33a8daeba6 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-sonarqube-backend +## 0.2.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.2.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.12-next.0 ### Patch Changes diff --git a/plugins/sonarqube-backend/README.md b/plugins/sonarqube-backend/README.md index 4eeac67498..6206cd8257 100644 --- a/plugins/sonarqube-backend/README.md +++ b/plugins/sonarqube-backend/README.md @@ -22,7 +22,7 @@ This plugin needs to be added to an existing backstage instance. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-sonarqube-backend +yarn --cwd packages/backend add @backstage/plugin-sonarqube-backend ``` Typically, this means creating a `src/plugins/sonarqube.ts` file and adding a reference to it to `src/index.ts` in the backend package. diff --git a/plugins/sonarqube-backend/knip-report.md b/plugins/sonarqube-backend/knip-report.md new file mode 100644 index 0000000000..e03ed5c8a2 --- /dev/null +++ b/plugins/sonarqube-backend/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 3819087933..264d934e51 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.2.12-next.0", + "version": "0.2.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-react/CHANGELOG.md b/plugins/sonarqube-react/CHANGELOG.md index b011d429fd..1fbf8229f9 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-sonarqube-react +## 0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.1.12 ### Patch Changes diff --git a/plugins/sonarqube-react/knip-report.md b/plugins/sonarqube-react/knip-report.md new file mode 100644 index 0000000000..588d89283b --- /dev/null +++ b/plugins/sonarqube-react/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:---------------|:-------------| +| @types/react | package.json | +| @backstage/cli | package.json | + diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index a2c3b8268d..8245d529da 100644 --- a/plugins/sonarqube-react/package.json +++ b/plugins/sonarqube-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-react", - "version": "0.1.12", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 00ac3e138b..412896eb2b 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-sonarqube +## 0.7.12-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-sonarqube-react@0.1.13-next.1 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.7.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-sonarqube-react@0.1.13-next.0 + ## 0.7.12-next.0 ### Patch Changes diff --git a/plugins/sonarqube/README.md b/plugins/sonarqube/README.md index ab85d128aa..9d3bc701f9 100644 --- a/plugins/sonarqube/README.md +++ b/plugins/sonarqube/README.md @@ -10,7 +10,7 @@ The SonarQube Plugin displays code statistics from [SonarCloud](https://sonarclo ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-sonarqube +yarn --cwd packages/app add @backstage/plugin-sonarqube ``` 2. Add the `EntitySonarQubeCard` to the EntityPage: diff --git a/plugins/sonarqube/knip-report.md b/plugins/sonarqube/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/sonarqube/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 99e333d170..b4f4dd7912 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.7.12-next.0", + "version": "0.7.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -43,7 +43,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/styles": "^4.10.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cross-fetch": "^4.0.0", "luxon": "^3.0.0", "rc-progress": "3.5.1", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 2311bf211e..d87015b3f7 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-splunk-on-call +## 0.4.19-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + +## 0.4.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + ## 0.4.19-next.0 ### Patch Changes diff --git a/plugins/splunk-on-call/README.md b/plugins/splunk-on-call/README.md index fd14b311c6..ceeec2fa4c 100644 --- a/plugins/splunk-on-call/README.md +++ b/plugins/splunk-on-call/README.md @@ -21,7 +21,7 @@ Install the plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-splunk-on-call +yarn --cwd packages/app add @backstage/plugin-splunk-on-call ``` Add it to your `EntityPage`: diff --git a/plugins/splunk-on-call/knip-report.md b/plugins/splunk-on-call/knip-report.md new file mode 100644 index 0000000000..3770bb993e --- /dev/null +++ b/plugins/splunk-on-call/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index e2045cfa8c..db64a29377 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.4.19-next.0", + "version": "0.4.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "luxon": "^3.0.0", "react-use": "^17.2.4" }, diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 103593ccc2..04a7423aa2 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.2.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.2 + +## 0.2.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.3-next.1 + ## 0.2.14-next.0 ### Patch Changes diff --git a/plugins/stack-overflow-backend/knip-report.md b/plugins/stack-overflow-backend/knip-report.md new file mode 100644 index 0000000000..42a04f1be0 --- /dev/null +++ b/plugins/stack-overflow-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:-----------|:-------------| +| qs | package.json | +| winston | package.json | +| node-fetch | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 991eeff9f6..140bafcf79 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stack-overflow-backend", "description": "Deprecated, consider using @backstage/plugin-search-backend-module-stack-overflow-collator instead", - "version": "0.2.14-next.0", + "version": "0.2.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index fd2c61a6c8..86472fef5e 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-stack-overflow +## 0.1.25-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-home-react@0.1.8-next.2 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + +## 0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/plugin-home-react@0.1.8-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.10 + ## 0.1.25-next.0 ### Patch Changes diff --git a/plugins/stack-overflow/knip-report.md b/plugins/stack-overflow/knip-report.md new file mode 100644 index 0000000000..5553b3a1f7 --- /dev/null +++ b/plugins/stack-overflow/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index de0aec1e61..c1a4f8f40b 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.25-next.0", + "version": "0.1.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -52,7 +52,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^6.0.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "cross-fetch": "^4.0.0", "lodash": "^4.17.21", "qs": "^6.9.4", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index dcade807b8..a5cb2e9f43 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-stackstorm +## 0.1.11-next.1 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + ## 0.1.10 ### Patch Changes diff --git a/plugins/stackstorm/knip-report.md b/plugins/stackstorm/knip-report.md new file mode 100644 index 0000000000..44a5bee885 --- /dev/null +++ b/plugins/stackstorm/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index d22b17be40..0cb7a7266a 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stackstorm", "description": "A Backstage plugin that integrates towards StackStorm", - "version": "0.1.10", + "version": "0.1.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -40,7 +40,7 @@ "@backstage/errors": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index e5ea8b3a9d..c82c7f296b 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,67 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.42-next.2 + +### Patch Changes + +- 25cfb76: Add support for the new backend system. + + A new backend module for the tech-insights backend + was added and exported as `default`. + + The module will register the `JsonRulesEngineFactCheckerFactory` + as `FactCheckerFactory`, loading checks from the config. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); + ``` + +- bc72782: Support loading `TechInsightsJsonRuleCheck` instances from config. + + Uses the check `id` as key. + + Example: + + ```yaml title="app-config.yaml" + techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## 0.1.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + ## 0.1.42-next.0 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/README.md b/plugins/tech-insights-backend-module-jsonfc/README.md index 5940d39b15..33b3ad7718 100644 --- a/plugins/tech-insights-backend-module-jsonfc/README.md +++ b/plugins/tech-insights-backend-module-jsonfc/README.md @@ -10,10 +10,20 @@ To add this FactChecker into your Tech Insights you need to install the module i ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-tech-insights-backend-module-jsonfc +yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend-module-jsonfc ``` -and modify the `techInsights.ts` file to contain a reference to the FactCheckers implementation. +### Add to the backend + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); +``` + +This setup requires checks to be provided using the config. + +### Add to the backend (old) + +Modify the `techInsights.ts` file to contain a reference to the FactCheckers implementation. ```diff +import { JsonRulesEngineFactCheckerFactory } from '@backstage/plugin-tech-insights-backend-module-jsonfc'; @@ -34,7 +44,7 @@ and modify the `techInsights.ts` file to contain a reference to the FactCheckers }); ``` -By default this implementation comes with an in-memory storage to store checks. You can inject an additional data store by adding an implementation of `TechInsightCheckRegistry` into the constructor options when creating a `JsonRulesEngineFactCheckerFactory`. That can be done as follows +By default, this implementation comes with an in-memory storage to store checks. You can inject an additional data store by adding an implementation of `TechInsightCheckRegistry` into the constructor options when creating a `JsonRulesEngineFactCheckerFactory`. That can be done as follows ```diff const myTechInsightCheckRegistry: TechInsightCheckRegistry = // snip @@ -46,7 +56,7 @@ By default this implementation comes with an in-memory storage to store checks. ``` -## Adding checks +## Adding checks in code Checks for this FactChecker are constructed as [`json-rules-engine` compatible JSON rules](https://github.com/CacheControl/json-rules-engine/blob/master/docs/rules.md#conditions). A check could look like the following for example: @@ -86,6 +96,28 @@ export const exampleCheck: TechInsightJsonRuleCheck = { }; ``` +## Adding checks in config + +Example: + +```yaml title="app-config.yaml" +techInsights: + factChecker: + checks: + groupOwnerCheck: + type: json-rules-engine + name: Group Owner Check + description: Verifies that a group has been set as the spec.owner for this entity + factIds: + - entityOwnershipFactRetriever + rule: + conditions: + all: + - fact: hasGroupOwner + operator: equal + value: true +``` + ### More than one `factIds` for a check. When more than one is supplied, the requested fact **MUST** be present in at least one of the fact retrievers. diff --git a/plugins/tech-insights-backend-module-jsonfc/api-report.md b/plugins/tech-insights-backend-module-jsonfc/api-report.md index 5fb29d275d..790aa0b666 100644 --- a/plugins/tech-insights-backend-module-jsonfc/api-report.md +++ b/plugins/tech-insights-backend-module-jsonfc/api-report.md @@ -3,9 +3,11 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { BooleanCheckResult } from '@backstage/plugin-tech-insights-common'; import { CheckResponse } from '@backstage/plugin-tech-insights-common'; import { CheckValidationResponse } from '@backstage/plugin-tech-insights-node'; +import { Config } from '@backstage/config'; import { FactChecker } from '@backstage/plugin-tech-insights-node'; import { Logger } from 'winston'; import { Operator } from 'json-rules-engine'; @@ -63,6 +65,11 @@ export class JsonRulesEngineFactCheckerFactory { constructor(options: JsonRulesEngineFactCheckerFactoryOptions); // (undocumented) construct(repository: TechInsightsStore): JsonRulesEngineFactChecker; + // (undocumented) + static fromConfig( + config: Config, + options: Omit, + ): JsonRulesEngineFactCheckerFactory; } // @public @@ -104,5 +111,9 @@ export interface TechInsightJsonRuleCheck extends TechInsightCheck { rule: Rule; } +// @public +const techInsightsModuleJsonRulesEngineFactCheckerFactory: () => BackendFeature; +export default techInsightsModuleJsonRulesEngineFactCheckerFactory; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/tech-insights-backend-module-jsonfc/config.json b/plugins/tech-insights-backend-module-jsonfc/config.json new file mode 100644 index 0000000000..b95b5e52bb --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/config.json @@ -0,0 +1,183 @@ +{ + "$schema": "https://backstage.io/schema/config-v1", + "type": "object", + "properties": { + "techInsights": { + "type": "object", + "properties": { + "factChecker": { + "type": "object", + "properties": { + "checks": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/check" + } + } + } + } + } + } + }, + "$defs": { + "check": { + "type": "object", + "required": ["type", "name", "description", "factIds", "rule"], + "properties": { + "type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "factIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "rule": { + "$ref": "#/$defs/rule" + } + } + }, + "conditionProperties": { + "type": "object", + "required": ["fact", "operator", "value"], + "properties": { + "fact": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "object", + "required": ["fact"], + "properties": { + "fact": { + "type": "string" + } + } + }, + {} + ] + }, + "path": { + "type": "string" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "params": { + "type": "object", + "additionalProperties": true + } + } + }, + "conditionReference": { + "type": "object", + "required": ["condition"], + "properties": { + "condition": { + "type": "string" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "number" + } + } + }, + "nestedCondition": { + "oneOf": [ + { + "$ref": "#/$defs/conditionProperties" + }, + { + "$ref": "#/$defs/topLevelCondition" + } + ] + }, + "rule": { + "type": "string", + "required": ["conditions"], + "properties": { + "conditions": { + "$ref": "#/$defs/topLevelCondition" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "successMetadata": { + "type": "object", + "additionalProperties": true + }, + "failureMetadata": { + "type": "object", + "additionalProperties": true + } + } + }, + "topLevelCondition": { + "oneOf": [ + { + "type": "object", + "required": ["all"], + "properties": { + "all": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/$defs/nestedCondition" + } + ] + } + } + } + }, + { + "type": "object", + "required": ["any"], + "properties": { + "any": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/$defs/nestedCondition" + } + ] + } + } + } + }, + { + "type": "object", + "required": ["not"], + "properties": { + "not": { + "$ref": "#/$defs/nestedCondition" + } + } + }, + { + "$ref": "#/$defs/conditionReference" + } + ] + } + } +} diff --git a/plugins/tech-insights-backend-module-jsonfc/knip-report.md b/plugins/tech-insights-backend-module-jsonfc/knip-report.md new file mode 100644 index 0000000000..bfd4d03096 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| luxon | package.json | +| @backstage/types | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 1c34a2157b..73904e8ba1 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.42-next.0", + "version": "0.1.42-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,9 +34,12 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-tech-insights-common": "workspace:^", "@backstage/plugin-tech-insights-node": "workspace:^", + "@backstage/types": "workspace:^", "ajv": "^8.10.0", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", @@ -44,9 +47,12 @@ "winston": "^3.2.1" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" }, "files": [ + "config.json", "dist" - ] + ], + "configSchema": "config.json" } diff --git a/plugins/tech-insights-backend-module-jsonfc/src/index.ts b/plugins/tech-insights-backend-module-jsonfc/src/index.ts index 1239211f73..1c1e8ab77d 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/index.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/index.ts @@ -13,15 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { - JsonRulesEngineFactCheckerFactory, - JsonRulesEngineFactChecker, -} from './service/JsonRulesEngineFactChecker'; + export { JSON_RULE_ENGINE_CHECK_TYPE } from './constants'; -export type { - JsonRulesEngineFactCheckerFactoryOptions, - JsonRulesEngineFactCheckerOptions, -} from './service/JsonRulesEngineFactChecker'; +export { techInsightsModuleJsonRulesEngineFactCheckerFactory as default } from './module'; +export * from './service'; export type { JsonRuleCheckResponse, JsonRuleBooleanCheckResult, diff --git a/plugins/tech-insights-backend-module-jsonfc/src/module/index.ts b/plugins/tech-insights-backend-module-jsonfc/src/module/index.ts new file mode 100644 index 0000000000..0fa167e883 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/module/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2024 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 * from './techInsightsModuleJsonRulesEngineFactCheckerFactory'; diff --git a/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.test.ts b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.test.ts new file mode 100644 index 0000000000..b6df48a8b2 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.test.ts @@ -0,0 +1,68 @@ +/* + * Copyright 2024 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 { mockServices, startTestBackend } from '@backstage/backend-test-utils'; +import { techInsightsFactCheckerFactoryExtensionPoint } from '@backstage/plugin-tech-insights-node'; +import { JSON_RULE_ENGINE_CHECK_TYPE } from '../constants'; +import { techInsightsModuleJsonRulesEngineFactCheckerFactory } from './techInsightsModuleJsonRulesEngineFactCheckerFactory'; + +describe('techInsightsModuleJsonRulesEngineFactCheckerFactory', () => { + it('should register the factory', async () => { + const extensionPoint = { + setFactCheckerFactory: jest.fn(), + } satisfies Partial; + + await startTestBackend({ + extensionPoints: [ + [techInsightsFactCheckerFactoryExtensionPoint, extensionPoint], + ], + features: [ + techInsightsModuleJsonRulesEngineFactCheckerFactory(), + mockServices.logger.factory(), + mockServices.rootConfig.factory({ + data: { + techInsights: { + factChecker: { + checks: { + groupOwnerCheck: { + type: JSON_RULE_ENGINE_CHECK_TYPE, + name: 'Group Owner Check', + description: + 'Verifies that a group has been set as the spec.owner for this entity', + factIds: ['entityOwnershipFactRetriever'], + rule: { + conditions: { + all: [ + { + fact: 'hasGroupOwner', + operator: 'equal', + value: true, + }, + ], + }, + }, + }, + }, + }, + }, + }, + }), + ], + }); + + expect(extensionPoint.setFactCheckerFactory).toHaveBeenCalled(); + }); +}); diff --git a/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts new file mode 100644 index 0000000000..8527b91d9d --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { techInsightsFactCheckerFactoryExtensionPoint } from '@backstage/plugin-tech-insights-node'; +import { JsonRulesEngineFactCheckerFactory } from '../service'; + +/** + * Sets a JsonRulesEngineFactCheckerFactory as FactCheckerFactory + * loading checks from the config. + * + * @public + */ +export const techInsightsModuleJsonRulesEngineFactCheckerFactory = + createBackendModule({ + pluginId: 'tech-insights', + moduleId: 'json-rules-engine-fact-checker-factory', + register(env) { + env.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + techInsights: techInsightsFactCheckerFactoryExtensionPoint, + }, + async init({ config, logger, techInsights }) { + const winstonLogger = loggerToWinstonLogger(logger); + const factory = JsonRulesEngineFactCheckerFactory.fromConfig(config, { + logger: winstonLogger, + }); + techInsights.setFactCheckerFactory(factory); + }, + }); + }, + }); diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts index 6c1c559fc4..51609bc916 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts @@ -14,7 +14,9 @@ * limitations under the License. */ -import { JsonRuleBooleanCheckResult, TechInsightJsonRuleCheck } from '../types'; +import { Config } from '@backstage/config'; +import { isError } from '@backstage/errors'; +import { FactResponse } from '@backstage/plugin-tech-insights-common'; import { FactChecker, TechInsightCheckRegistry, @@ -22,20 +24,20 @@ import { TechInsightsStore, CheckValidationResponse, } from '@backstage/plugin-tech-insights-node'; -import { FactResponse } from '@backstage/plugin-tech-insights-common'; +import Ajv, { SchemaObject } from 'ajv'; import { Engine, EngineResult, Operator, TopLevelCondition, } from 'json-rules-engine'; -import { DefaultCheckRegistry } from './CheckRegistry'; -import { Logger } from 'winston'; import { pick } from 'lodash'; -import Ajv, { SchemaObject } from 'ajv'; -import * as validationSchema from './validation-schema.json'; +import { Logger } from 'winston'; import { JSON_RULE_ENGINE_CHECK_TYPE } from '../constants'; -import { isError } from '@backstage/errors'; +import { JsonRuleBooleanCheckResult, TechInsightJsonRuleCheck } from '../types'; +import { DefaultCheckRegistry } from './CheckRegistry'; +import { readChecksFromConfig } from './config'; +import * as validationSchema from './validation-schema.json'; const noopEvent = { type: 'noop', @@ -340,7 +342,7 @@ export class JsonRulesEngineFactChecker * * Implementation of checkRegistry is optional. * If there is a need to use persistent storage for checks, it is recommended to inject a storage implementation here. - * Otherwise an in-memory option is instantiated and used. + * Otherwise, an in-memory option is instantiated and used. */ export type JsonRulesEngineFactCheckerFactoryOptions = { checks: TechInsightJsonRuleCheck[]; @@ -354,7 +356,7 @@ export type JsonRulesEngineFactCheckerFactoryOptions = { * * Factory to construct JsonRulesEngineFactChecker * Can be constructed with optional implementation of CheckInsightCheckRegistry if needed. - * Otherwise defaults to using in-memory CheckRegistry + * Otherwise, defaults to using in-memory CheckRegistry. */ export class JsonRulesEngineFactCheckerFactory { private readonly checks: TechInsightJsonRuleCheck[]; @@ -362,6 +364,18 @@ export class JsonRulesEngineFactCheckerFactory { private readonly checkRegistry?: TechInsightCheckRegistry; private readonly operators?: Operator[]; + static fromConfig( + config: Config, + options: Omit, + ): JsonRulesEngineFactCheckerFactory { + const checks = readChecksFromConfig(config); + + return new JsonRulesEngineFactCheckerFactory({ + ...options, + checks, + }); + } + constructor(options: JsonRulesEngineFactCheckerFactoryOptions) { this.logger = options.logger; this.checks = options.checks; diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/config.test.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/config.test.ts new file mode 100644 index 0000000000..732cc7f731 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/config.test.ts @@ -0,0 +1,164 @@ +/* + * Copyright 2024 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 { ConfigReader } from '@backstage/config'; +import { JSON_RULE_ENGINE_CHECK_TYPE } from '../constants'; +import { readChecksFromConfig } from './config'; + +describe('config', () => { + describe('readChecksFromConfig', () => { + it('no config return empty checks array', () => { + const config = new ConfigReader({}); + const checks = readChecksFromConfig(config); + + expect(checks).toHaveLength(0); + }); + + it('empty checks config return empty checks array', () => { + const config = new ConfigReader({ + techInsights: { + factChecker: {}, + }, + }); + const checks = readChecksFromConfig(config); + + expect(checks).toHaveLength(0); + }); + + it('with checks return parsed checks', () => { + const config = new ConfigReader({ + techInsights: { + factChecker: { + checks: { + fooCheck: { + type: JSON_RULE_ENGINE_CHECK_TYPE, + name: 'Foo Check', + description: 'Verifies foo', + factIds: ['fooFactRetriever'], + rule: { + conditions: { + all: [ + { + fact: 'numFoo', + operator: 'greaterThanInclusive', + value: 1, + }, + { + fact: 'hasFoo', + operator: 'equal', + value: true, + }, + ], + }, + }, + }, + barCheck: { + type: JSON_RULE_ENGINE_CHECK_TYPE, + name: 'Bar Check', + description: 'Verifies bar', + factIds: ['barFactRetriever'], + rule: { + conditions: { + any: [ + { + fact: 'barEnabled', + operator: 'equal', + value: false, + }, + { + fact: 'hasBar', + operator: 'equal', + value: true, + }, + ], + }, + }, + }, + bazCheck: { + type: JSON_RULE_ENGINE_CHECK_TYPE, + name: 'Baz Check', + description: 'Verifies baz', + factIds: ['bazFactRetriever'], + rule: { + conditions: { + not: { + fact: 'bazConfig', + operator: 'equal', + value: { invalid: true }, + }, + }, + }, + }, + }, + }, + }, + }); + + const checks = readChecksFromConfig(config); + + expect(checks).toHaveLength(3); + expect(checks.map(check => check.id)).toEqual([ + 'fooCheck', + 'barCheck', + 'bazCheck', + ]); + + const fooCheck = checks.find(check => check.id === 'fooCheck')!; + expect(fooCheck.name).toEqual('Foo Check'); + expect(fooCheck.rule.conditions).toEqual({ + all: [ + { + fact: 'numFoo', + operator: 'greaterThanInclusive', + value: 1, + }, + { + fact: 'hasFoo', + operator: 'equal', + value: true, + }, + ], + }); + + const barCheck = checks.find(check => check.id === 'barCheck')!; + expect(barCheck.name).toEqual('Bar Check'); + expect(barCheck.rule.conditions).toEqual({ + any: [ + { + fact: 'barEnabled', + operator: 'equal', + value: false, + }, + { + fact: 'hasBar', + operator: 'equal', + value: true, + }, + ], + }); + + const bazCheck = checks.find(check => check.id === 'bazCheck')!; + expect(bazCheck.name).toEqual('Baz Check'); + expect(bazCheck.rule.conditions).toEqual({ + not: { + fact: 'bazConfig', + operator: 'equal', + value: { invalid: true }, + }, + }); + }); + }); +}); diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/config.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/config.ts new file mode 100644 index 0000000000..5c663d0d41 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/config.ts @@ -0,0 +1,162 @@ +/* + * Copyright 2024 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 { Config } from '@backstage/config'; +import { TopLevelCondition } from 'json-rules-engine'; +import { Rule, TechInsightJsonRuleCheck } from '../types'; + +// copy of non-exported `ConditionProperties` from 'json-rules-engine' +interface ConditionProperties { + fact: string; + operator: string; + value: { fact: string } | any; + path?: string; + priority?: number; + params?: Record; + name?: string; +} + +// copy of non-exported `NestedCondition` from 'json-rules-engine' +type NestedCondition = ConditionProperties | TopLevelCondition; + +function readRuleConditionProperties(config: Config): ConditionProperties { + const fact = config.getString('fact'); + const name = config.getOptionalString('name'); + const operator = config.getString('operator'); + const params = config.getOptionalConfig('params')?.get>(); + const path = config.getOptionalString('path'); + const priority = config.getOptionalNumber('priority'); + const value: { fact: string } | any = config.get('value'); + + return { + fact, + name, + operator, + params, + path, + priority, + value, + }; +} + +function readRuleNestedCondition(config: Config): NestedCondition { + if (config.has('fact')) { + return readRuleConditionProperties(config); + } + + return readRuleTopLevelCondition(config); +} + +function readRuleTopLevelCondition(config: Config): TopLevelCondition { + const base = { + name: config.getOptionalString('name'), + priority: config.getOptionalNumber('priority'), + }; + + if (config.has('all')) { + const all = config + .getConfigArray('all') + .map(conditionConfig => readRuleNestedCondition(conditionConfig)); + return { + ...base, + all, + }; + } + + if (config.has('any')) { + const any = config + .getConfigArray('any') + .map(conditionConfig => readRuleNestedCondition(conditionConfig)); + return { + ...base, + any, + }; + } + + if (config.has('not')) { + const not = readRuleNestedCondition(config.getConfig('not')); + return { + ...base, + not, + }; + } + + const condition = config.getString('condition'); + + return { + ...base, + condition, + }; +} + +function readRuleFromRuleConfig(config: Config): Rule { + const conditions = readRuleTopLevelCondition(config.getConfig('conditions')); + const name = config.getOptionalString('name'); + const priority = config.getOptionalNumber('priority'); + + return { + conditions, + name, + priority, + }; +} + +function readCheckFromCheckConfig( + id: string, + config: Config, +): TechInsightJsonRuleCheck { + const type = config.getString('type'); + const name = config.getString('name'); + const description = config.getString('description'); + const factIds = config.getStringArray('factIds'); + const successMetadata = config + .getOptionalConfig('successMetadata') + ?.get>(); + const failureMetadata = config + .getOptionalConfig('failureMetadata') + ?.get>(); + const rule = readRuleFromRuleConfig(config.getConfig('rule')); + + return { + description, + factIds, + failureMetadata, + id, + name, + rule, + successMetadata, + type, + }; +} + +export function readChecksFromConfig( + config: Config, +): TechInsightJsonRuleCheck[] { + const key = 'techInsights.factChecker.checks'; + if (!config.has(key)) { + return []; + } + + const checksConfig = config.getConfig(key); + const checks: TechInsightJsonRuleCheck[] = []; + checksConfig.keys().forEach(checkId => { + const checkConfig = checksConfig.getConfig(checkId); + + checks.push(readCheckFromCheckConfig(checkId, checkConfig)); + }); + + return checks; +} diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/index.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/index.ts new file mode 100644 index 0000000000..5670c138a1 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2024 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 { + JsonRulesEngineFactCheckerFactory, + JsonRulesEngineFactChecker, +} from './JsonRulesEngineFactChecker'; + +export type { + JsonRulesEngineFactCheckerFactoryOptions, + JsonRulesEngineFactCheckerOptions, +} from './JsonRulesEngineFactChecker'; diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 8a07042a2a..834318c31a 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,70 @@ # @backstage/plugin-tech-insights-backend +## 0.5.24-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-tech-insights-node@0.4.16-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## 0.5.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.16-next.1 + ## 0.5.24-next.0 ### Patch Changes diff --git a/plugins/tech-insights-backend/README.md b/plugins/tech-insights-backend/README.md index 95fa3ccda9..56b927a10e 100644 --- a/plugins/tech-insights-backend/README.md +++ b/plugins/tech-insights-backend/README.md @@ -10,11 +10,36 @@ as well as a framework to run fact retrievers and store fact values in to a data ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-tech-insights-backend +yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend ``` ### Adding the plugin to your `packages/backend` +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-tech-insights-backend')); +``` + +You can use the extension points [@backstage/plugin-tech-insights-node](../tech-insights-node) +to add your `FactRetriever` or set a `FactCheckerFactory`. + +The built-in `FactRetrievers`: + +- `entityMetadataFactRetriever` +- `entityOwnershipFactRetriever` +- `techdocsFactRetriever` + +`FactRetrievers` only get registered if they get configured: + +```yaml title="app-config.yaml" +techInsights: + factRetrievers: + entityOwnershipFactRetriever: + cadence: '*/15 * * * *' + lifecycle: { timeToLive: { weeks: 2 } } +``` + +### Adding the plugin to your `packages/backend` (old) + You'll need to add the plugin to the router in your `backend` package. You can do this by creating a file called `packages/backend/src/plugins/techInsights.ts`. An example content for `techInsights.ts` could be something like this. @@ -189,7 +214,7 @@ To add the default FactChecker into your Tech Insights you need to install the m ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-tech-insights-backend-module-jsonfc +yarn --cwd packages/backend add @backstage/plugin-tech-insights-backend-module-jsonfc ``` and modify the `techInsights.ts` file to contain a reference to the FactChecker implementation. diff --git a/plugins/tech-insights-backend/api-report.md b/plugins/tech-insights-backend/api-report.md index 4b6e5b34dc..631e792141 100644 --- a/plugins/tech-insights-backend/api-report.md +++ b/plugins/tech-insights-backend/api-report.md @@ -3,6 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { Config } from '@backstage/config'; import { Duration } from 'luxon'; @@ -12,14 +13,14 @@ import { FactCheckerFactory } from '@backstage/plugin-tech-insights-node'; import { FactLifecycle } from '@backstage/plugin-tech-insights-node'; import { FactRetriever } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistration } from '@backstage/plugin-tech-insights-node'; -import { FactSchema } from '@backstage/plugin-tech-insights-common'; +import { FactRetrieverRegistry as FactRetrieverRegistry_2 } from '@backstage/plugin-tech-insights-node'; import { HumanDuration } from '@backstage/types'; import { Logger } from 'winston'; +import { PersistenceContext as PersistenceContext_2 } from '@backstage/plugin-tech-insights-node'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TechInsightCheck } from '@backstage/plugin-tech-insights-node'; -import { TechInsightsStore } from '@backstage/plugin-tech-insights-node'; import { TokenManager } from '@backstage/backend-common'; // @public @@ -63,30 +64,17 @@ export type FactRetrieverRegistrationOptions = { initialDelay?: Duration | HumanDuration; }; -// @public (undocumented) -export interface FactRetrieverRegistry { - // (undocumented) - get(retrieverReference: string): Promise; - // (undocumented) - getSchemas(): Promise; - // (undocumented) - listRegistrations(): Promise; - // (undocumented) - listRetrievers(): Promise; - // (undocumented) - register(registration: FactRetrieverRegistration): Promise; -} +// @public @deprecated (undocumented) +export type FactRetrieverRegistry = FactRetrieverRegistry_2; // @public export const initializePersistenceContext: ( database: PluginDatabaseManager, options?: PersistenceContextOptions, -) => Promise; +) => Promise; -// @public -export type PersistenceContext = { - techInsightsStore: TechInsightsStore; -}; +// @public @deprecated (undocumented) +export type PersistenceContext = PersistenceContext_2; // @public export type PersistenceContextOptions = { @@ -101,7 +89,7 @@ export interface RouterOptions< config: Config; factChecker?: FactChecker; logger: Logger; - persistenceContext: PersistenceContext; + persistenceContext: PersistenceContext_2; } // @public @@ -113,7 +101,7 @@ export type TechInsightsContext< CheckResultType extends CheckResult, > = { factChecker?: FactChecker; - persistenceContext: PersistenceContext; + persistenceContext: PersistenceContext_2; factRetrieverEngine: FactRetrieverEngine; }; @@ -129,16 +117,20 @@ export interface TechInsightsOptions< // (undocumented) discovery: PluginEndpointDiscovery; factCheckerFactory?: FactCheckerFactory; - factRetrieverRegistry?: FactRetrieverRegistry; + factRetrieverRegistry?: FactRetrieverRegistry_2; factRetrievers?: FactRetrieverRegistration[]; // (undocumented) logger: Logger; - persistenceContext?: PersistenceContext; + persistenceContext?: PersistenceContext_2; // (undocumented) scheduler: PluginTaskScheduler; // (undocumented) tokenManager: TokenManager; } +// @public +const techInsightsPlugin: () => BackendFeature; +export default techInsightsPlugin; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/tech-insights-backend/config.d.ts b/plugins/tech-insights-backend/config.d.ts new file mode 100644 index 0000000000..cb3602dc60 --- /dev/null +++ b/plugins/tech-insights-backend/config.d.ts @@ -0,0 +1,37 @@ +/* + * Copyright 2024 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 { HumanDuration } from '@backstage/types'; + +export interface Config { + /** Configuration options for the tech-insights plugin */ + techInsights?: { + /** Configuration options for fact retrievers */ + factRetrievers?: { + /** Configuration for a fact retriever and its registration identified by its name. */ + [name: string]: { + /** A cron expression to indicate when the fact retriever should be triggered. */ + cadence: string; + /** Optional duration of the initial delay. */ + initialDelay?: HumanDuration; + /** Optional lifecycle definition indicating the cleanup logic of facts when this retriever is run. */ + lifecycle?: { timeToLive: HumanDuration } | { maxItems: number }; + /** Optional duration to determine how long the fact retriever should be allowed to run, defaults to 5 minutes. */ + timeout?: HumanDuration; + }; + }; + }; +} diff --git a/plugins/tech-insights-backend/knip-report.md b/plugins/tech-insights-backend/knip-report.md new file mode 100644 index 0000000000..35f2e6fc89 --- /dev/null +++ b/plugins/tech-insights-backend/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----|:-------------| +| yn | package.json | +| uuid | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| wait-for-expect | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 50d86931ee..ff4632f005 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.24-next.0", + "version": "0.5.24-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -34,6 +34,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", @@ -63,7 +64,9 @@ "wait-for-expect": "^3.0.2" }, "files": [ + "config.d.ts", "dist", "migrations/**/*.{js,d.ts}" - ] + ], + "configSchema": "config.d.ts" } diff --git a/plugins/tech-insights-backend/src/deprecated.ts b/plugins/tech-insights-backend/src/deprecated.ts new file mode 100644 index 0000000000..1074e6f910 --- /dev/null +++ b/plugins/tech-insights-backend/src/deprecated.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2024 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 { + FactRetrieverRegistry as FactRetrieverRegistry_, + PersistenceContext as PersistenceContext_, +} from '@backstage/plugin-tech-insights-node'; + +/** + * @public + * @deprecated Use FactRetrieverRegistry from `@backstage/plugin-tech-insights-node` instead. + */ +export type FactRetrieverRegistry = FactRetrieverRegistry_; + +/** + * @public + * @deprecated Use PersistenceContext from `@backstage/plugin-tech-insights-node` instead. + */ +export type PersistenceContext = PersistenceContext_; diff --git a/plugins/tech-insights-backend/src/index.ts b/plugins/tech-insights-backend/src/index.ts index e9e037cce1..a582a04ebf 100644 --- a/plugins/tech-insights-backend/src/index.ts +++ b/plugins/tech-insights-backend/src/index.ts @@ -14,21 +14,6 @@ * limitations under the License. */ -export * from './service/router'; -export type { RouterOptions } from './service/router'; - -export { buildTechInsightsContext } from './service/techInsightsContextBuilder'; -export { initializePersistenceContext } from './service/persistence/persistenceContext'; -export type { - TechInsightsOptions, - TechInsightsContext, -} from './service/techInsightsContextBuilder'; -export type { FactRetrieverEngine } from './service/fact/FactRetrieverEngine'; -export type { - PersistenceContext, - PersistenceContextOptions, -} from './service/persistence/persistenceContext'; -export { createFactRetrieverRegistration } from './service/fact/createFactRetriever'; -export type { FactRetrieverRegistry } from './service/fact/FactRetrieverRegistry'; -export type { FactRetrieverRegistrationOptions } from './service/fact/createFactRetriever'; -export * from './service/fact/factRetrievers'; +export { techInsightsPlugin as default } from './plugin'; +export * from './deprecated'; +export * from './service'; diff --git a/plugins/tech-insights-backend/src/plugin/config.test.ts b/plugins/tech-insights-backend/src/plugin/config.test.ts new file mode 100644 index 0000000000..09b4954583 --- /dev/null +++ b/plugins/tech-insights-backend/src/plugin/config.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright 2024 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 { ConfigReader } from '@backstage/config'; +import { FactRetriever, TTL } from '@backstage/plugin-tech-insights-node'; +import { createFactRetrieverRegistrationFromConfig } from './config'; + +describe('config', () => { + const mockFactRetriever = jest.fn() as unknown as FactRetriever; + + describe('createFactRetrieverRegistrationFromConfig', () => { + it('no config return undefined', () => { + const config = new ConfigReader({}); + const registration = createFactRetrieverRegistrationFromConfig( + config, + 'any', + mockFactRetriever, + ); + + expect(registration).toBeUndefined(); + }); + + it('no entry for fact retriever return undefined', () => { + const config = new ConfigReader({ + techInsights: { + factRetrievers: {}, + }, + }); + const registration = createFactRetrieverRegistrationFromConfig( + config, + 'any', + mockFactRetriever, + ); + + expect(registration).toBeUndefined(); + }); + + it('with config for fact retriever return registration', () => { + const config = new ConfigReader({ + techInsights: { + factRetrievers: { + any: { + cadence: '*/15 * * * *', + lifecycle: { timeToLive: { weeks: 2 } }, + }, + }, + }, + }); + + const registration = createFactRetrieverRegistrationFromConfig( + config, + 'any', + mockFactRetriever, + ); + + expect(registration).toBeDefined(); + expect(registration!.cadence).toEqual('*/15 * * * *'); + expect((registration!.lifecycle! as TTL).timeToLive).toEqual({ + weeks: 2, + }); + }); + }); +}); diff --git a/plugins/tech-insights-backend/src/plugin/config.ts b/plugins/tech-insights-backend/src/plugin/config.ts new file mode 100644 index 0000000000..25827fbbc5 --- /dev/null +++ b/plugins/tech-insights-backend/src/plugin/config.ts @@ -0,0 +1,94 @@ +/* + * Copyright 2024 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 { Config, readDurationFromConfig } from '@backstage/config'; +import { + FactLifecycle, + FactRetriever, + FactRetrieverRegistration, +} from '@backstage/plugin-tech-insights-node'; +import { + createFactRetrieverRegistration, + FactRetrieverRegistrationOptions, +} from '../service'; + +type FactRetrieverConfig = Omit< + FactRetrieverRegistrationOptions, + 'factRetriever' +>; + +function readLifecycleConfig( + config: Config | undefined, +): FactLifecycle | undefined { + if (!config) { + return undefined; + } + + if (config.has('maxItems')) { + return { + maxItems: config.getNumber('maxItems'), + }; + } + + return { + timeToLive: readDurationFromConfig(config.getConfig('timeToLive')), + }; +} + +function readFactRetrieverConfig( + config: Config, + name: string, +): FactRetrieverConfig | undefined { + const factRetrieverConfig = config.getOptionalConfig( + `techInsights.factRetrievers.${name}`, + ); + if (!factRetrieverConfig) { + return undefined; + } + + const cadence = factRetrieverConfig.getString('cadence'); + const initialDelay = factRetrieverConfig.has('initialDelay') + ? readDurationFromConfig(factRetrieverConfig.getConfig('initialDelay')) + : undefined; + const lifecycle = readLifecycleConfig( + factRetrieverConfig.getOptionalConfig('lifecycle'), + ); + const timeout = factRetrieverConfig.has('timeout') + ? readDurationFromConfig(factRetrieverConfig.getConfig('timeout')) + : undefined; + + return { + cadence, + initialDelay, + lifecycle, + timeout, + }; +} + +export function createFactRetrieverRegistrationFromConfig( + config: Config, + name: string, + factRetriever: FactRetriever, +): FactRetrieverRegistration | undefined { + const factRetrieverConfig = readFactRetrieverConfig(config, name); + + return factRetrieverConfig + ? createFactRetrieverRegistration({ + ...factRetrieverConfig, + factRetriever, + }) + : undefined; +} diff --git a/plugins/tech-insights-backend/src/plugin/index.ts b/plugins/tech-insights-backend/src/plugin/index.ts new file mode 100644 index 0000000000..dd13bde435 --- /dev/null +++ b/plugins/tech-insights-backend/src/plugin/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2024 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 * from './plugin'; diff --git a/plugins/tech-insights-backend/src/plugin/plugin.test.ts b/plugins/tech-insights-backend/src/plugin/plugin.test.ts new file mode 100644 index 0000000000..66d06b827e --- /dev/null +++ b/plugins/tech-insights-backend/src/plugin/plugin.test.ts @@ -0,0 +1,50 @@ +/* + * Copyright 2024 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 { mockServices, startTestBackend } from '@backstage/backend-test-utils'; +import { techInsightsPlugin } from './plugin'; + +describe('techInsightsPlugin', () => { + it('should register tech-insights plugin and its router', async () => { + const httpRouterMock = mockServices.httpRouter.mock(); + + await startTestBackend({ + extensionPoints: [], + features: [ + techInsightsPlugin(), + httpRouterMock.factory, + mockServices.database.factory(), + mockServices.logger.factory(), + mockServices.rootConfig.factory({ + data: { + techInsights: { + factRetrievers: { + entityOwnershipFactRetriever: { + cadence: '*/15 * * * *', + lifecycle: { timeToLive: { weeks: 2 } }, + }, + }, + }, + }, + }), + mockServices.scheduler.factory(), + mockServices.tokenManager.factory(), + ], + }); + + expect(httpRouterMock.use).toHaveBeenCalledTimes(1); + }); +}); diff --git a/plugins/tech-insights-backend/src/plugin/plugin.ts b/plugins/tech-insights-backend/src/plugin/plugin.ts new file mode 100644 index 0000000000..6da1ac1637 --- /dev/null +++ b/plugins/tech-insights-backend/src/plugin/plugin.ts @@ -0,0 +1,151 @@ +/* + * Copyright 2024 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { CheckResult } from '@backstage/plugin-tech-insights-common'; +import { + FactCheckerFactory, + FactRetriever, + FactRetrieverRegistration, + FactRetrieverRegistry, + PersistenceContext, + TechInsightCheck, + techInsightsFactCheckerFactoryExtensionPoint, + techInsightsFactRetrieverRegistryExtensionPoint, + techInsightsFactRetrieversExtensionPoint, + techInsightsPersistenceContextExtensionPoint, +} from '@backstage/plugin-tech-insights-node'; +import { + buildTechInsightsContext, + createRouter, + entityMetadataFactRetriever, + entityOwnershipFactRetriever, + techdocsFactRetriever, +} from '../service'; +import { createFactRetrieverRegistrationFromConfig } from './config'; + +/** + * The tech-insights backend plugin. + * + * @public + */ +export const techInsightsPlugin = createBackendPlugin({ + pluginId: 'tech-insights', + register(env) { + let factCheckerFactory: + | FactCheckerFactory + | undefined = undefined; + env.registerExtensionPoint(techInsightsFactCheckerFactoryExtensionPoint, { + setFactCheckerFactory< + CheckType extends TechInsightCheck, + CheckResultType extends CheckResult, + >(factory: FactCheckerFactory): void { + factCheckerFactory = factory; + }, + }); + + let factRetrieverRegistry: FactRetrieverRegistry | undefined = undefined; + env.registerExtensionPoint( + techInsightsFactRetrieverRegistryExtensionPoint, + { + setFactRetrieverRegistry(registry: FactRetrieverRegistry): void { + factRetrieverRegistry = registry; + }, + }, + ); + + // initialized with built-in fact retrievers + // only added as registration if there is config for them + const addedFactRetrievers: Record = { + entityMetadataFactRetriever, + entityOwnershipFactRetriever, + techdocsFactRetriever, + }; + env.registerExtensionPoint(techInsightsFactRetrieversExtensionPoint, { + addFactRetrievers(factRetrievers: Record): void { + Object.entries(factRetrievers).forEach(([key, value]) => { + addedFactRetrievers[key] = value; + }); + }, + }); + + let persistenceContext: PersistenceContext | undefined = undefined; + env.registerExtensionPoint(techInsightsPersistenceContextExtensionPoint, { + setPersistenceContext(context: PersistenceContext): void { + persistenceContext = context; + }, + }); + + env.registerInit({ + deps: { + config: coreServices.rootConfig, + database: coreServices.database, + discovery: coreServices.discovery, + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + scheduler: coreServices.scheduler, + tokenManager: coreServices.tokenManager, + }, + async init({ + config, + database, + discovery, + httpRouter, + logger, + scheduler, + tokenManager, + }) { + const winstonLogger = loggerToWinstonLogger(logger); + const factRetrievers: FactRetrieverRegistration[] = Object.entries( + addedFactRetrievers, + ) + .map(([name, factRetriever]) => + createFactRetrieverRegistrationFromConfig( + config, + name, + factRetriever, + ), + ) + .filter(registration => registration) as FactRetrieverRegistration[]; + + const context = await buildTechInsightsContext({ + config, + database, + discovery, + factCheckerFactory, + factRetrieverRegistry, + factRetrievers, + logger: winstonLogger, + persistenceContext, + scheduler, + tokenManager, + }); + + httpRouter.use( + await createRouter({ + ...context, + config, + logger: winstonLogger, + }), + ); + }, + }); + }, +}); diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts index 677b778b9b..3bbaf9edf5 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts @@ -17,11 +17,11 @@ import { FactRetriever, FactRetrieverRegistration, + FactRetrieverRegistry, FactSchemaDefinition, TechInsightFact, TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; -import { FactRetrieverRegistry } from './FactRetrieverRegistry'; import { DefaultFactRetrieverEngine, FactRetrieverEngine, diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts index b723fcd7f5..04035ca8c7 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts @@ -18,10 +18,10 @@ import { FactRetriever, FactRetrieverContext, FactRetrieverRegistration, + FactRetrieverRegistry, TechInsightFact, TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; -import { FactRetrieverRegistry } from './FactRetrieverRegistry'; import { Logger } from 'winston'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Duration } from 'luxon'; diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts index 8796f1511a..42caca6b20 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts @@ -17,22 +17,11 @@ import { FactRetriever, FactRetrieverRegistration, + FactRetrieverRegistry, } from '@backstage/plugin-tech-insights-node'; import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { ConflictError, NotFoundError } from '@backstage/errors'; -/** - * @public - * - */ -export interface FactRetrieverRegistry { - register(registration: FactRetrieverRegistration): Promise; - get(retrieverReference: string): Promise; - listRetrievers(): Promise; - listRegistrations(): Promise; - getSchemas(): Promise; -} - /** * A basic in memory fact retriever registry. * diff --git a/plugins/tech-insights-backend/src/service/fact/factRetrievers/index.ts b/plugins/tech-insights-backend/src/service/fact/factRetrievers/index.ts index 587db8c4b9..5983a82e1d 100644 --- a/plugins/tech-insights-backend/src/service/fact/factRetrievers/index.ts +++ b/plugins/tech-insights-backend/src/service/fact/factRetrievers/index.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export * from './entityOwnershipFactRetriever'; + export * from './entityMetadataFactRetriever'; +export * from './entityOwnershipFactRetriever'; export * from './techdocsFactRetriever'; diff --git a/plugins/tech-insights-backend/src/service/fact/index.ts b/plugins/tech-insights-backend/src/service/fact/index.ts new file mode 100644 index 0000000000..b3df648a8e --- /dev/null +++ b/plugins/tech-insights-backend/src/service/fact/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2024 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 { createFactRetrieverRegistration } from './createFactRetriever'; +export type { FactRetrieverRegistrationOptions } from './createFactRetriever'; +export type { FactRetrieverEngine } from './FactRetrieverEngine'; +export * from './factRetrievers'; diff --git a/plugins/tech-insights-backend/src/service/index.ts b/plugins/tech-insights-backend/src/service/index.ts new file mode 100644 index 0000000000..5306ad26d6 --- /dev/null +++ b/plugins/tech-insights-backend/src/service/index.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2024 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 * from './fact'; +export * from './persistence'; +export * from './router'; +export type { RouterOptions } from './router'; + +export { buildTechInsightsContext } from './techInsightsContextBuilder'; +export type { + TechInsightsOptions, + TechInsightsContext, +} from './techInsightsContextBuilder'; diff --git a/plugins/tech-insights-backend/src/service/persistence/index.ts b/plugins/tech-insights-backend/src/service/persistence/index.ts new file mode 100644 index 0000000000..d87f91e1b0 --- /dev/null +++ b/plugins/tech-insights-backend/src/service/persistence/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 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 { initializePersistenceContext } from './persistenceContext'; +export type { PersistenceContextOptions } from './persistenceContext'; diff --git a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts index 07badb038c..3ddae3197f 100644 --- a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts +++ b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts @@ -20,22 +20,13 @@ import { } from '@backstage/backend-common'; import { Logger } from 'winston'; import { TechInsightsDatabase } from './TechInsightsDatabase'; -import { TechInsightsStore } from '@backstage/plugin-tech-insights-node'; +import { PersistenceContext } from '@backstage/plugin-tech-insights-node'; const migrationsDir = resolvePackagePath( '@backstage/plugin-tech-insights-backend', 'migrations', ); -/** - * A Container for persistence related components in TechInsights - * - * @public - */ -export type PersistenceContext = { - techInsightsStore: TechInsightsStore; -}; - /** * A Container for persistence context initialization options * diff --git a/plugins/tech-insights-backend/src/service/router.test.ts b/plugins/tech-insights-backend/src/service/router.test.ts index 6935338a56..bf4313748f 100644 --- a/plugins/tech-insights-backend/src/service/router.test.ts +++ b/plugins/tech-insights-backend/src/service/router.test.ts @@ -24,8 +24,10 @@ import { import { ConfigReader } from '@backstage/config'; import request from 'supertest'; import express from 'express'; -import { PersistenceContext } from './persistence/persistenceContext'; -import { TechInsightsStore } from '@backstage/plugin-tech-insights-node'; +import { + PersistenceContext, + TechInsightsStore, +} from '@backstage/plugin-tech-insights-node'; import { DateTime } from 'luxon'; import { Knex } from 'knex'; import { TaskScheduler } from '@backstage/backend-tasks'; diff --git a/plugins/tech-insights-backend/src/service/router.ts b/plugins/tech-insights-backend/src/service/router.ts index 5e58df1b20..53c1351ffa 100644 --- a/plugins/tech-insights-backend/src/service/router.ts +++ b/plugins/tech-insights-backend/src/service/router.ts @@ -19,13 +19,13 @@ import Router from 'express-promise-router'; import { Config } from '@backstage/config'; import { FactChecker, + PersistenceContext, TechInsightCheck, } from '@backstage/plugin-tech-insights-node'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { Logger } from 'winston'; import { DateTime } from 'luxon'; -import { PersistenceContext } from './persistence/persistenceContext'; import { CompoundEntityRef, parseEntityRef, diff --git a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts index 20693d0a7d..4f49e0031b 100644 --- a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts +++ b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts @@ -19,10 +19,7 @@ import { FactRetrieverEngine, } from './fact/FactRetrieverEngine'; import { Logger } from 'winston'; -import { - DefaultFactRetrieverRegistry, - FactRetrieverRegistry, -} from './fact/FactRetrieverRegistry'; +import { DefaultFactRetrieverRegistry } from './fact/FactRetrieverRegistry'; import { Config } from '@backstage/config'; import { PluginDatabaseManager, @@ -33,12 +30,11 @@ import { FactChecker, FactCheckerFactory, FactRetrieverRegistration, + FactRetrieverRegistry, + PersistenceContext, TechInsightCheck, } from '@backstage/plugin-tech-insights-node'; -import { - initializePersistenceContext, - PersistenceContext, -} from './persistence/persistenceContext'; +import { initializePersistenceContext } from './persistence'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; diff --git a/plugins/tech-insights-common/knip-report.md b/plugins/tech-insights-common/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/tech-insights-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index c0208f7245..5d617cf1ea 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,59 @@ # @backstage/plugin-tech-insights-node +## 0.4.16-next.2 + +### Patch Changes + +- 7201af3: Add support for the new backend system. + + A new backend plugin for the tech-insights backend + was added and exported as `default`. + + You can use it with the new backend system like + + ```ts title="packages/backend/src/index.ts" + backend.add(import('@backstage/plugin-tech-insights-backend')); + ``` + +- 341c2a2: Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. + + Original exports are marked as deprecated and re-export the moved types. + + Please replace uses like + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-backend'; + ``` + + with + + ```ts + import { + FactRetrieverRegistry, + PersistenceContext, + } from '@backstage/plugin-tech-insights-node'; + ``` + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## 0.4.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + ## 0.4.16-next.0 ### Patch Changes diff --git a/plugins/tech-insights-node/api-report.md b/plugins/tech-insights-node/api-report.md index dbb8a8b674..13056b5eaa 100644 --- a/plugins/tech-insights-node/api-report.md +++ b/plugins/tech-insights-node/api-report.md @@ -8,6 +8,7 @@ import { Config } from '@backstage/config'; import { DateTime } from 'luxon'; import { Duration } from 'luxon'; import { DurationLike } from 'luxon'; +import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { HumanDuration } from '@backstage/types'; import { JsonValue } from '@backstage/types'; @@ -79,6 +80,20 @@ export type FactRetrieverRegistration = { initialDelay?: Duration | HumanDuration; }; +// @public (undocumented) +export interface FactRetrieverRegistry { + // (undocumented) + get(retrieverReference: string): Promise; + // (undocumented) + getSchemas(): Promise; + // (undocumented) + listRegistrations(): Promise; + // (undocumented) + listRetrievers(): Promise; + // (undocumented) + register(registration: FactRetrieverRegistration): Promise; +} + // @public export type FactSchemaDefinition = Omit; @@ -92,6 +107,11 @@ export type MaxItems = { maxItems: number; }; +// @public +export type PersistenceContext = { + techInsightsStore: TechInsightsStore; +}; + // @public export interface TechInsightCheck { description: string; @@ -137,6 +157,47 @@ export type TechInsightFact = { timestamp?: DateTime; }; +// @public (undocumented) +export interface TechInsightsFactCheckerFactoryExtensionPoint { + // (undocumented) + setFactCheckerFactory< + CheckType extends TechInsightCheck, + CheckResultType extends CheckResult, + >( + factory: FactCheckerFactory, + ): void; +} + +// @public +export const techInsightsFactCheckerFactoryExtensionPoint: ExtensionPoint; + +// @public (undocumented) +export interface TechInsightsFactRetrieverRegistryExtensionPoint { + // (undocumented) + setFactRetrieverRegistry(registry: FactRetrieverRegistry): void; +} + +// @public +export const techInsightsFactRetrieverRegistryExtensionPoint: ExtensionPoint; + +// @public (undocumented) +export interface TechInsightsFactRetrieversExtensionPoint { + // (undocumented) + addFactRetrievers(factRetrievers: Record): void; +} + +// @public +export const techInsightsFactRetrieversExtensionPoint: ExtensionPoint; + +// @public (undocumented) +export interface TechInsightsPersistenceContextExtensionPoint { + // (undocumented) + setPersistenceContext(context: PersistenceContext): void; +} + +// @public +export const techInsightsPersistenceContextExtensionPoint: ExtensionPoint; + // @public export interface TechInsightsStore { getFactsBetweenTimestampsByIds( diff --git a/plugins/tech-insights-node/knip-report.md b/plugins/tech-insights-node/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/tech-insights-node/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 4cd03c38a7..21acddd25a 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.4.16-next.0", + "version": "0.4.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -33,6 +33,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/plugin-tech-insights-common": "workspace:^", "@backstage/types": "workspace:^", diff --git a/plugins/tech-insights-node/src/extensionPoints.ts b/plugins/tech-insights-node/src/extensionPoints.ts new file mode 100644 index 0000000000..e1f581a840 --- /dev/null +++ b/plugins/tech-insights-node/src/extensionPoints.ts @@ -0,0 +1,94 @@ +/* + * Copyright 2024 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 { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { CheckResult } from '@backstage/plugin-tech-insights-common'; +import { FactCheckerFactory, TechInsightCheck } from './checks'; +import { FactRetriever, FactRetrieverRegistry } from './facts'; +import { PersistenceContext } from './persistence'; + +/** + * @public + */ +export interface TechInsightsFactRetrieversExtensionPoint { + addFactRetrievers(factRetrievers: Record): void; +} + +/** + * An extension point that allows other plugins or modules to add fact retrievers. + * + * @public + */ +export const techInsightsFactRetrieversExtensionPoint = + createExtensionPoint({ + id: 'tech-insights.fact-retrievers', + }); + +/** + * @public + */ +export interface TechInsightsFactCheckerFactoryExtensionPoint { + setFactCheckerFactory< + CheckType extends TechInsightCheck, + CheckResultType extends CheckResult, + >( + factory: FactCheckerFactory, + ): void; +} + +/** + * An extension point that allows other plugins or modules to set a FactCheckerFactory. + * + * @public + */ +export const techInsightsFactCheckerFactoryExtensionPoint = + createExtensionPoint({ + id: 'tech-insights.fact-checker-factory', + }); + +/** + * @public + */ +export interface TechInsightsFactRetrieverRegistryExtensionPoint { + setFactRetrieverRegistry(registry: FactRetrieverRegistry): void; +} + +/** + * An extension point that allows other plugins or modules to set a custom FactRetrieverRegistry. + * + * @public + */ +export const techInsightsFactRetrieverRegistryExtensionPoint = + createExtensionPoint({ + id: 'tech-insights.fact-retriever-registry', + }); + +/** + * @public + */ +export interface TechInsightsPersistenceContextExtensionPoint { + setPersistenceContext(context: PersistenceContext): void; +} + +/** + * An extension point that allows other plugins or modules to set a custom PersistenceContext. + * + * @public + */ +export const techInsightsPersistenceContextExtensionPoint = + createExtensionPoint({ + id: 'tech-insights.persistence-context', + }); diff --git a/plugins/tech-insights-node/src/facts.ts b/plugins/tech-insights-node/src/facts.ts index b35ad756ed..9257ea789e 100644 --- a/plugins/tech-insights-node/src/facts.ts +++ b/plugins/tech-insights-node/src/facts.ts @@ -230,3 +230,14 @@ export type FactRetrieverRegistration = { */ initialDelay?: Duration | HumanDuration; }; + +/** + * @public + */ +export interface FactRetrieverRegistry { + register(registration: FactRetrieverRegistration): Promise; + get(retrieverReference: string): Promise; + listRetrievers(): Promise; + listRegistrations(): Promise; + getSchemas(): Promise; +} diff --git a/plugins/tech-insights-node/src/index.ts b/plugins/tech-insights-node/src/index.ts index 70ef27e159..c1c321f925 100644 --- a/plugins/tech-insights-node/src/index.ts +++ b/plugins/tech-insights-node/src/index.ts @@ -15,5 +15,6 @@ */ export * from './checks'; +export * from './extensionPoints'; export * from './facts'; export * from './persistence'; diff --git a/plugins/tech-insights-node/src/persistence.ts b/plugins/tech-insights-node/src/persistence.ts index 73abb6c5af..391d23bae5 100644 --- a/plugins/tech-insights-node/src/persistence.ts +++ b/plugins/tech-insights-node/src/persistence.ts @@ -22,6 +22,15 @@ import { import { DateTime } from 'luxon'; import { FactSchema } from '@backstage/plugin-tech-insights-common'; +/** + * A Container for persistence related components in TechInsights + * + * @public + */ +export type PersistenceContext = { + techInsightsStore: TechInsightsStore; +}; + /** * TechInsights Database * diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index bd1b16e46f..3d26856808 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-tech-insights +## 0.3.22-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## 0.3.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + ## 0.3.22-next.0 ### Patch Changes diff --git a/plugins/tech-insights/README.md b/plugins/tech-insights/README.md index 3185d40441..9145e892e7 100644 --- a/plugins/tech-insights/README.md +++ b/plugins/tech-insights/README.md @@ -14,7 +14,7 @@ Main areas covered by this plugin currently are: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-tech-insights +yarn --cwd packages/app add @backstage/plugin-tech-insights ``` ### Add boolean checks overview (Scorecards) page to the EntityPage: diff --git a/plugins/tech-insights/knip-report.md b/plugins/tech-insights/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/tech-insights/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 4977053132..0f8cd0d87b 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.22-next.0", + "version": "0.3.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -39,7 +39,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "qs": "^6.9.4", "react-use": "^17.2.4" }, diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index d1eeb41b84..ea60f3d51a 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-tech-radar +## 0.6.13-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/core-compat-api@0.2.0-next.2 + +## 0.6.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + ## 0.6.13-next.0 ### Patch Changes diff --git a/plugins/tech-radar/README.md b/plugins/tech-radar/README.md index 31d90de938..a28ced777e 100644 --- a/plugins/tech-radar/README.md +++ b/plugins/tech-radar/README.md @@ -27,7 +27,7 @@ For either simple or advanced installations, you'll need to add the dependency u ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-tech-radar +yarn --cwd packages/app add @backstage/plugin-tech-radar ``` ### Configuration diff --git a/plugins/tech-radar/knip-report.md b/plugins/tech-radar/knip-report.md new file mode 100644 index 0000000000..8fc787027b --- /dev/null +++ b/plugins/tech-radar/knip-report.md @@ -0,0 +1,13 @@ +# Knip report + +## Unused devDependencies (6) + +| Name | Location | +|:-------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | +| @backstage/frontend-test-utils | package.json | + diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index ad7ca45e41..eed68cb1d4 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.6.13-next.0", + "version": "0.6.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -52,7 +52,7 @@ "@backstage/frontend-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "color": "^4.0.1", "d3-force": "^3.0.0", "react-use": "^17.2.4" diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index a311522241..0e479d89d2 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.27-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.2 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/plugin-techdocs@1.10.0-next.2 + - @backstage/test-utils@1.5.0-next.2 + - @backstage/integration-react@1.1.24-next.1 + +## 1.0.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/test-utils@1.5.0-next.1 + - @backstage/plugin-catalog@1.17.0-next.1 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-techdocs@1.10.0-next.1 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + ## 1.0.27-next.0 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/knip-report.md b/plugins/techdocs-addons-test-utils/knip-report.md new file mode 100644 index 0000000000..79290793ca --- /dev/null +++ b/plugins/techdocs-addons-test-utils/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/plugin-catalog | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 8f1e8e5156..a21ba1ef80 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.27-next.0", + "version": "1.0.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,7 @@ "@backstage/plugin-techdocs": "workspace:^", "@backstage/plugin-techdocs-react": "workspace:^", "@backstage/test-utils": "workspace:^", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "testing-library__dom": "^7.29.4-beta.1" }, "peerDependencies": { diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index b5f6815373..a30f5fecf7 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-techdocs-backend +## 1.9.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-techdocs-node@1.11.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + +## 1.9.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/plugin-techdocs-node@1.11.2-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.21-next.0 + - @backstage/plugin-permission-common@0.7.12 + - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 + ## 1.9.3-next.0 ### Patch Changes diff --git a/plugins/techdocs-backend/knip-report.md b/plugins/techdocs-backend/knip-report.md new file mode 100644 index 0000000000..771313f9d2 --- /dev/null +++ b/plugins/techdocs-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index d2e42c48ce..5fb8b41137 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.9.3-next.0", + "version": "1.9.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 0405fc8948..f6beb348b0 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.1.5-next.2 + +### Patch Changes + +- ab9c9eb: Fixed the value label text color in dark mode for the TextSize addon. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/integration@1.9.0-next.0 + +## 1.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + ## 1.1.5-next.0 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/knip-report.md b/plugins/techdocs-module-addons-contrib/knip-report.md new file mode 100644 index 0000000000..88c7858e93 --- /dev/null +++ b/plugins/techdocs-module-addons-contrib/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:---------------------------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/plugin-techdocs-addons-test-utils | package.json | + diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index e19c9f3137..5357fbb736 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.1.5-next.0", + "version": "1.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -41,7 +41,7 @@ "@backstage/plugin-techdocs-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "git-url-parse": "^13.0.0", "photoswipe": "^5.3.7" }, diff --git a/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx index 50cc59b814..167f9c7c7c 100644 --- a/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx +++ b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx @@ -70,7 +70,7 @@ const StyledSlider = withStyles(theme => ({ left: '50%', transform: 'scale(1) translate(-50%, -5px) !important', '& *': { - color: theme.palette.common.black, + color: theme.palette.textSubtle, fontSize: theme.typography.caption.fontSize, background: 'transparent', }, diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 5da0d4f870..8db81e646b 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-techdocs-node +## 1.11.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/config@1.1.1 + - @backstage/integration-aws-node@0.1.8 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 1.11.2-next.1 + +### Patch Changes + +- 77e3050: Update to a newer version of `@trendyol-js/openstack-swift-sdk` +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/integration-aws-node@0.1.8 + - @backstage/plugin-search-common@1.2.10 + ## 1.11.2-next.0 ### Patch Changes diff --git a/plugins/techdocs-node/knip-report.md b/plugins/techdocs-node/knip-report.md new file mode 100644 index 0000000000..5057ef304a --- /dev/null +++ b/plugins/techdocs-node/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| aws-sdk-client-mock | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index dd7450bf64..417de9cf90 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.11.2-next.0", + "version": "1.11.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 7017882a65..ce7cb0f850 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-techdocs-react +## 1.1.16-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/version-bridge@1.0.7 + +## 1.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/config@1.1.1 + - @backstage/version-bridge@1.0.7 + ## 1.1.15 ### Patch Changes diff --git a/plugins/techdocs-react/README.md b/plugins/techdocs-react/README.md index 53e9fc6a3a..e0f792064c 100644 --- a/plugins/techdocs-react/README.md +++ b/plugins/techdocs-react/README.md @@ -6,5 +6,5 @@ This package provides frontend utilities for TechDocs and Addons. ```sh # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-techdocs-react +yarn --cwd packages/app add @backstage/plugin-techdocs-react ``` diff --git a/plugins/techdocs-react/knip-report.md b/plugins/techdocs-react/knip-report.md new file mode 100644 index 0000000000..912e0d57b9 --- /dev/null +++ b/plugins/techdocs-react/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:------------------|:-------------| +| react-helmet | package.json | +| @material-ui/core | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @backstage/theme | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 1bdb2a29c8..50fbcb44cd 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.1.15", + "version": "1.1.16-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", @@ -41,7 +41,7 @@ "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/styles": "^4.11.0", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "jss": "~10.10.0", "lodash": "^4.17.21", "react-helmet": "6.1.0", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index b1b9b27eda..fec0bef543 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,50 @@ # @backstage/plugin-techdocs +## 1.10.0-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/plugin-techdocs-react@1.1.16-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/plugin-search-react@1.7.6-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/integration-react@1.1.24-next.1 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-search-common@1.2.10 + +## 1.10.0-next.1 + +### Minor Changes + +- af4d147: Updated the styling for tags to avoid word break. + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/integration@1.9.0-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/plugin-search-react@1.7.6-next.1 + - @backstage/integration-react@1.1.24-next.0 + - @backstage/plugin-techdocs-react@1.1.16-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/plugin-search-common@1.2.10 + ## 1.9.4-next.0 ### Patch Changes diff --git a/plugins/techdocs/knip-report.md b/plugins/techdocs/knip-report.md new file mode 100644 index 0000000000..0aa86b7492 --- /dev/null +++ b/plugins/techdocs/knip-report.md @@ -0,0 +1,22 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| jss | package.json | +| @backstage/theme | package.json | + +## Unused devDependencies (8) + +| Name | Location | +|:-------------------------------------------------|:-------------| +| canvas | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | +| @backstage/plugin-techdocs-module-addons-contrib | package.json | + diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 829aaa9475..3544b62589 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.9.4-next.0", + "version": "1.10.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -65,8 +65,8 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@material-ui/styles": "^4.10.0", - "@types/react": "^16.13.1 || ^17.0.0", - "dompurify": "^2.2.9", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "dompurify": "^3.0.0", "event-source-polyfill": "1.0.25", "git-url-parse": "^13.0.0", "jss": "~10.10.0", @@ -89,7 +89,7 @@ "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", - "@types/dompurify": "^2.2.2", + "@types/dompurify": "^3.0.0", "@types/event-source-polyfill": "^1.0.0", "canvas": "^2.10.2" }, diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index fb9f17ab83..62656f133e 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-todo-backend +## 0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/repo-tools@0.6.0-next.2 + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-openapi-utils@0.1.3-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/integration@1.9.0-next.0 + +## 0.3.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/catalog-client@1.6.0-next.1 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-openapi-utils@0.1.3-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.6.2-next.1 + ## 0.3.8-next.0 ### Patch Changes diff --git a/plugins/todo-backend/knip-report.md b/plugins/todo-backend/knip-report.md new file mode 100644 index 0000000000..42fe56bac7 --- /dev/null +++ b/plugins/todo-backend/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| yn | package.json | +| @backstage/repo-tools | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 53c80f3b64..f8dd68fbcd 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.3.8-next.0", + "version": "0.3.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -26,7 +26,8 @@ "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", "clean": "backstage-cli package clean", - "start": "backstage-cli package start" + "start": "backstage-cli package start", + "generate": "backstage-repo-tools package schema openapi generate --server" }, "dependencies": { "@backstage/backend-common": "workspace:^", @@ -38,6 +39,7 @@ "@backstage/errors": "workspace:^", "@backstage/integration": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/repo-tools": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "leasot": "^12.0.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index 6217ff3d99..f418e7c24e 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-todo +## 0.2.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.2.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.2.34-next.0 ### Patch Changes diff --git a/plugins/todo/knip-report.md b/plugins/todo/knip-report.md new file mode 100644 index 0000000000..9679afeb54 --- /dev/null +++ b/plugins/todo/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 539a1ead3d..14dd14963a 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.34-next.0", + "version": "0.2.34-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index 96bc93a65c..da007703c1 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-user-settings-backend +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/plugin-auth-node@0.4.4-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.4-next.1 + ## 0.2.9-next.0 ### Patch Changes diff --git a/plugins/user-settings-backend/knip-report.md b/plugins/user-settings-backend/knip-report.md new file mode 100644 index 0000000000..22d525923f --- /dev/null +++ b/plugins/user-settings-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------------|:-------------| +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index 8cabb70468..207716bc61 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings-backend", "description": "The Backstage backend plugin to manage user settings", - "version": "0.2.9-next.0", + "version": "0.2.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 2c4a5edf5d..1c802dcbe3 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-user-settings +## 0.8.1-next.2 + +### Patch Changes + +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- d5b14a0: conditionally rendering the user name and email in user settings page +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-app-api@1.12.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/frontend-plugin-api@0.6.0-next.2 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/theme@0.5.1-next.0 + - @backstage/core-compat-api@0.2.0-next.2 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## 0.8.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.6.0-next.1 + - @backstage/core-compat-api@0.2.0-next.1 + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/core-app-api@1.11.4-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + - @backstage/theme@0.5.0 + - @backstage/types@1.1.1 + ## 0.8.1-next.0 ### Patch Changes diff --git a/plugins/user-settings/knip-report.md b/plugins/user-settings/knip-report.md new file mode 100644 index 0000000000..53337fea0b --- /dev/null +++ b/plugins/user-settings/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/theme | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 015a13e143..8ba3be1f4c 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.8.1-next.0", + "version": "0.8.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -58,7 +58,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4", "zen-observable": "^0.10.0" }, diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index e3fb597a15..e9a710036f 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -101,16 +101,20 @@ export const ProviderSettingsItem = (props: { - - {profile.displayName} - - - {profile.email} - + {profile.displayName && ( + + {profile.displayName} + + )} + {profile.email && ( + + {profile.email} + + )} {description} diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index 1bc3dc2bf3..6459f1bafa 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-vault-backend +## 0.4.3-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-vault-node@0.1.3-next.2 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## 0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-vault-node@0.1.3-next.1 + ## 0.4.3-next.0 ### Patch Changes diff --git a/plugins/vault-backend/README.md b/plugins/vault-backend/README.md index 117bcaacbb..2c7dd06e52 100644 --- a/plugins/vault-backend/README.md +++ b/plugins/vault-backend/README.md @@ -16,7 +16,7 @@ To get started, first you need a running instance of Vault. You can follow [this ```bash # From your Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-vault-backend + yarn --cwd packages/backend add @backstage/plugin-vault-backend ``` 2. Create a file in `src/plugins/vault.ts` and add a reference to it in `src/index.ts`: diff --git a/plugins/vault-backend/knip-report.md b/plugins/vault-backend/knip-report.md new file mode 100644 index 0000000000..9597d52c23 --- /dev/null +++ b/plugins/vault-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused devDependencies (4) + +| Name | Location | +|:-----------------|:-------------| +| msw | package.json | +| supertest | package.json | +| @backstage/cli | package.json | +| @types/supertest | package.json | + diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 247925856c..7dafc4a0d2 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.4.3-next.0", + "version": "0.4.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/vault" + "directory": "plugins/vault-backend" }, "keywords": [ "backstage", diff --git a/plugins/vault-node/CHANGELOG.md b/plugins/vault-node/CHANGELOG.md index 0105ba6667..f96db259ab 100644 --- a/plugins/vault-node/CHANGELOG.md +++ b/plugins/vault-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-vault-node +## 0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.2 + +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.10-next.1 + ## 0.1.3-next.0 ### Patch Changes diff --git a/plugins/vault-node/knip-report.md b/plugins/vault-node/knip-report.md new file mode 100644 index 0000000000..24c942926b --- /dev/null +++ b/plugins/vault-node/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @backstage/cli | package.json | + diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json index 4b0f3cc630..f5ab268b58 100644 --- a/plugins/vault-node/package.json +++ b/plugins/vault-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-node", "description": "Node.js library for the vault plugin", - "version": "0.1.3-next.0", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/vault-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 888c06fc68..b9a4ee2218 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-vault +## 0.1.25-next.2 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/plugin-catalog-react@1.10.0-next.2 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/errors@1.2.3 + +## 0.1.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/plugin-catalog-react@1.9.4-next.1 + - @backstage/errors@1.2.3 + ## 0.1.25-next.0 ### Patch Changes diff --git a/plugins/vault/README.md b/plugins/vault/README.md index ce2df6e47a..fe86a30bd2 100644 --- a/plugins/vault/README.md +++ b/plugins/vault/README.md @@ -18,7 +18,7 @@ To get started, first you need a running instance of Vault. You can follow [this ```bash # From your Backstage root directory - yarn add --cwd packages/app @backstage/plugin-vault + yarn --cwd packages/app add @backstage/plugin-vault ``` 2. Add the Vault card to the overview tab on the EntityPage: diff --git a/plugins/vault/knip-report.md b/plugins/vault/knip-report.md new file mode 100644 index 0000000000..a469608db4 --- /dev/null +++ b/plugins/vault/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | + diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 5d2b3c5c7b..8339425bd6 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.25-next.0", + "version": "0.1.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -42,7 +42,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 1fc98ffa8b..020803b6d1 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-xcmetrics +## 0.2.48-next.1 + +### Patch Changes + +- 9aac2b0: Use `--cwd` as the first `yarn` argument +- 8fe56a8: Widen `@types/react` dependency range to include version 18. +- Updated dependencies + - @backstage/core-components@0.14.0-next.1 + - @backstage/core-plugin-api@1.9.0-next.1 + - @backstage/errors@1.2.3 + +## 0.2.48-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.0-next.0 + - @backstage/core-plugin-api@1.8.3-next.0 + - @backstage/errors@1.2.3 + ## 0.2.47 ### Patch Changes diff --git a/plugins/xcmetrics/README.md b/plugins/xcmetrics/README.md index 7c003722a0..0823cbbb24 100644 --- a/plugins/xcmetrics/README.md +++ b/plugins/xcmetrics/README.md @@ -1,6 +1,6 @@ # XCMetrics -[XCMetrics](https://xcmetrics.io) is a tool for collecting build metrics from XCode. +[XCMetrics](https://xcmetrics.io) is a tool for collecting build metrics from XCode. With this plugin, you can view data from XCMetrics directly in Backstage. ![XCMetrics-overview](./docs/XCMetrics-overview.png) @@ -9,7 +9,7 @@ With this plugin, you can view data from XCMetrics directly in Backstage. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-xcmetrics +yarn --cwd packages/app add @backstage/plugin-xcmetrics ``` In `packages/app/src/App.tsx`, add the following: diff --git a/plugins/xcmetrics/knip-report.md b/plugins/xcmetrics/knip-report.md new file mode 100644 index 0000000000..d0ad73b69c --- /dev/null +++ b/plugins/xcmetrics/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/cli | package.json | +| @testing-library/dom | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 9ee51bb5c5..b2bcbd4db2 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.47", + "version": "0.2.48-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -36,7 +36,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@types/react": "^16.13.1 || ^17.0.0", + "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "react-use": "^17.2.4", diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index 7960ff72bb..b0c5790467 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -26,6 +26,7 @@ const IGNORED = [ /^OWNERS\.md$/, /^.*[/\\]CHANGELOG\.md$/, /^.*[/\\]([^\/]+-)?api-report\.md$/, + /^.*[/\\]knip-report\.md$/, /^docs[/\\]releases[/\\].*-changelog\.md$/, /^docs[/\\]reference[/\\]/, ]; @@ -65,7 +66,7 @@ async function exitIfMissingVale() { } catch (e) { if (process.env.CI) { console.log( - `Language linter (vale) was not found. Please install vale linter (https://docs.errata.ai/vale/install).\n`, + `Language linter (vale) was not found. Please install vale linter (https://vale.sh/docs/vale-cli/installation/).\n`, ); process.exit(1); } diff --git a/scripts/list-ownership.js b/scripts/list-ownership.js new file mode 100755 index 0000000000..7f338ceed4 --- /dev/null +++ b/scripts/list-ownership.js @@ -0,0 +1,139 @@ +#!/usr/bin/env node +/* + * 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. + */ + +const fs = require('fs-extra'); +const globby = require('globby'); +const sloc = require('sloc'); +const codeownersUtils = require('codeowners-utils'); +const { resolve: resolvePath } = require('path'); + +async function loadOwners(rootDir) { + const codeowners = await codeownersUtils.loadOwners(rootDir); + + return function getOwners(path) { + const { owners } = codeownersUtils.matchFile(path, codeowners); + if ( + owners.includes('@backstage/maintainers') && + owners.includes('@backstage/reviewers') + ) { + return owners.filter(owner => owner !== '@backstage/reviewers'); + } + return owners; + }; +} + +function createLocCounter(rootDir) { + return async path => { + const content = await fs.readFile(resolvePath(rootDir, path), 'utf-8'); + const stats = sloc(content, 'ts'); + return stats.source; + }; +} + +async function printOwnerDirectories(allFiles, getOwners, getLoc, onlyOwner) { + const countByPath = new Map(); + + let total = 0; + let totalShare = 0; + for (const file of allFiles) { + const owners = getOwners(file); + const loc = await getLoc(file); + + if (owners.includes(onlyOwner)) { + const share = loc / owners.length; + total += loc; + totalShare += share; + + const path = file.split('/').slice(0, 2).join('/'); + if ((await fs.stat(path)).isDirectory()) { + countByPath.set(path, (countByPath.get(path) || 0) + share); + } + } + } + + const sortedPaths = Array.from(countByPath) + .map(([path, loc]) => ({ path, loc: Math.round(loc) })) + .sort((a, b) => b.loc - a.loc); + + const maxPathLen = Math.max(...sortedPaths.map(({ path }) => path.length)); + for (const { path, loc } of sortedPaths) { + console.log(`${path.padEnd(maxPathLen)} ${loc}`); + } + console.log(); + console.log('Total share:', Math.round(totalShare)); + console.log('Total lines of code:', total); +} + +async function printAllOwners(allFiles, getOwners, getLoc) { + const countByOwners = new Map(); + + let total = 0; + for (const file of allFiles) { + const owners = getOwners(file); + const loc = await getLoc(file); + + total += loc; + const share = loc / owners.length; + for (const owner of owners) { + countByOwners.set(owner, (countByOwners.get(owner) || 0) + share); + } + } + + const sortedOwners = Array.from(countByOwners) + .map(([owner, loc]) => ({ owner, loc: Math.round(loc) })) + .sort((a, b) => b.loc - a.loc); + + const maxOwnerLen = Math.max( + ...sortedOwners.map(({ owner }) => owner.length), + ); + for (const { owner, loc } of sortedOwners) { + console.log(`${owner.padEnd(maxOwnerLen)} ${loc}`); + } + console.log(); + console.log('Total lines of code:', total); +} + +async function main(onlyOwner) { + const rootDir = resolvePath(__dirname, '..'); + + const allFiles = await globby( + [ + '**/*.{js,jsx,ts,tsx,mjs,cjs}', + '!**/*.{generated,test}.*', + '!**/{__fixtures__,fixtures}', + ], + { + cwd: rootDir, + gitignore: true, + followSymbolicLinks: false, + }, + ); + + const getOwners = await loadOwners(rootDir); + const getLoc = createLocCounter(rootDir); + + if (onlyOwner) { + await printOwnerDirectories(allFiles, getOwners, getLoc, onlyOwner); + } else { + await printAllOwners(allFiles, getOwners, getLoc); + } +} + +main(...process.argv.slice(2)).catch(err => { + console.error(err.stack); + process.exit(1); +}); diff --git a/scripts/verify-lockfile-duplicates.js b/scripts/verify-lockfile-duplicates.js index ddf99f4fd6..5c9adb72f0 100644 --- a/scripts/verify-lockfile-duplicates.js +++ b/scripts/verify-lockfile-duplicates.js @@ -95,11 +95,11 @@ async function main() { if (failed) { if (!fix) { - const command = `yarn dedupe${ + const command = `yarn${ lockFile.directoryRelativeToProjectRoot === '.' ? '' : ` --cwd ${lockFile.directoryRelativeToProjectRoot}` - }`; + } dedupe`; const padding = ' '.repeat(Math.max(0, 85 - 6 - command.length)); console.error(''); console.error( diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 54f50cbbb5..d2fe0b1c40 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -1604,10 +1604,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 languageName: node linkType: hard @@ -1618,30 +1618,30 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + checksum: 1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: ac7dd2cfe0b479aa1b81776d40d789243131cc792dc8b6b6a028c70fcd6171958ae1a71bf67b618ffe3c0c3feead9870c095ee46a5e30319410d92976b28f498 languageName: node linkType: hard @@ -2842,90 +2842,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -2954,14 +2954,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard @@ -3031,10 +3031,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 +"@types/estree@npm:*, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a languageName: node linkType: hard @@ -3466,12 +3466,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.5.0, acorn@npm:^8.7.1": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" +"acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c languageName: node linkType: hard @@ -4201,17 +4201,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.20.2, browserslist@npm:^4.21.3": - version: 4.21.3 - resolution: "browserslist@npm:4.21.3" +"browserslist@npm:^4.12.0, browserslist@npm:^4.20.2, browserslist@npm:^4.21.10, browserslist@npm:^4.21.3": + version: 4.22.3 + resolution: "browserslist@npm:4.22.3" dependencies: - caniuse-lite: ^1.0.30001370 - electron-to-chromium: ^1.4.202 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.5 + caniuse-lite: ^1.0.30001580 + electron-to-chromium: ^1.4.648 + node-releases: ^2.0.14 + update-browserslist-db: ^1.0.13 bin: browserslist: cli.js - checksum: ff512a7bcca1c530e2854bbdfc7be2791d0fb524097a6340e56e1d5924164c7e4e0a9b070de04cdc4c149d15cb4d4275cb7c626ebbce954278a2823aaad2452a + checksum: e62b17348e92143fe58181b02a6a97c4a98bd812d1dc9274673a54f73eec53dbed1c855ebf73e318ee00ee039f23c9a6d0e7629d24f3baef08c7a5b469742d57 languageName: node linkType: hard @@ -4399,10 +4399,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001370": - version: 1.0.30001378 - resolution: "caniuse-lite@npm:1.0.30001378" - checksum: 19f1774da1f62d393ddde55dc091eb3e4f5c5b0ce43f9a9d20e75307a0f329cf8591c836a35a9f6f9fd7c27db7a75e0682245a194acec2e2ba1bc25ef1c3300c +"caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001580": + version: 1.0.30001583 + resolution: "caniuse-lite@npm:1.0.30001583" + checksum: 35d34eac99c1f55a2232180254e9b674dd6326a89310e6896863bb0484278c6cdf1e934c9fbfb8ef7b215c47467354051f46dfce571f9b34c413f53b67c55aa1 languageName: node linkType: hard @@ -5300,10 +5300,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.202": - version: 1.4.225 - resolution: "electron-to-chromium@npm:1.4.225" - checksum: 54b5c5550e33ce5df1d2ab71543b9dc24e4dd55dc4650b29cc19b2911b932b072317e662ce3236c500a498ad69e90d2ceebe2433a772e53a337e97bd53cc7dc9 +"electron-to-chromium@npm:^1.4.648": + version: 1.4.656 + resolution: "electron-to-chromium@npm:1.4.656" + checksum: b9e00c81e74ee307141a216ef971efeff8784232a9eaa9074a65687b631029725f8f4ddeefd98c43287339cdadb6c7aba92c01806122f9cae813a95735fcd432 languageName: node linkType: hard @@ -8453,10 +8453,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 languageName: node linkType: hard @@ -10906,12 +10906,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.3 - resolution: "swc-loader@npm:0.2.3" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -10997,15 +10999,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.0.3, terser-webpack-plugin@npm:^5.3.7": - version: 5.3.7 - resolution: "terser-webpack-plugin@npm:5.3.7" +"terser-webpack-plugin@npm:^5.0.3, terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: - "@jridgewell/trace-mapping": ^0.3.17 + "@jridgewell/trace-mapping": ^0.3.20 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 - terser: ^5.16.5 + terser: ^5.26.0 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -11015,7 +11017,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 095e699fdeeb553cdf2c6f75f983949271b396d9c201d7ae9fc633c45c1c1ad14c7257ef9d51ccc62213dd3e97f875870ba31550f6d4f1b6674f2615562da7f7 + checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea languageName: node linkType: hard @@ -11032,17 +11034,17 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.5, terser@npm:^5.3.4": - version: 5.16.9 - resolution: "terser@npm:5.16.9" +"terser@npm:^5.10.0, terser@npm:^5.26.0, terser@npm:^5.3.4": + version: 5.27.0 + resolution: "terser@npm:5.27.0" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: b373693ee01ce08cc9b9595d57df889acbbc899d929a7fe53662330ce954d53145582f6715c9cc4839d555f5769a28fbeb203155b54e3a9c6c646db292002edd + checksum: c165052cfea061e8512e9b9ba42a098c2ff6382886ae122b040fd5b6153443070cc2dcb4862269f1669c09c716763e856125a355ff984aa72be525d6fffd8729 languageName: node linkType: hard @@ -11477,17 +11479,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.5": - version: 1.0.5 - resolution: "update-browserslist-db@npm:1.0.5" +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: 7e425fe5dbbebdccf72a84ce70ec47fc74dce561d28f47bc2b84a1c2b84179a862c2261b18ab66a5e73e261c7e2ef9e11c6129112989d4d52e8f75a56bb923f8 + update-browserslist-db: cli.js + checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 languageName: node linkType: hard @@ -11754,17 +11756,17 @@ __metadata: linkType: hard "webpack@npm:^5.73.0": - version: 5.89.0 - resolution: "webpack@npm:5.89.0" + version: 5.90.1 + resolution: "webpack@npm:5.90.1" dependencies: "@types/eslint-scope": ^3.7.3 - "@types/estree": ^1.0.0 + "@types/estree": ^1.0.5 "@webassemblyjs/ast": ^1.11.5 "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 acorn-import-assertions: ^1.9.0 - browserslist: ^4.14.5 + browserslist: ^4.21.10 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 @@ -11778,7 +11780,7 @@ __metadata: neo-async: ^2.6.2 schema-utils: ^3.2.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.7 + terser-webpack-plugin: ^5.3.10 watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: @@ -11786,7 +11788,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 43fe0dbc30e168a685ef5a86759d5016a705f6563b39a240aa00826a80637d4a3deeb8062e709d6a4b05c63e796278244c84b04174704dc4a37bedb0f565c5ed + checksum: a7be844d5720a0c6282fec012e6fa34b1137dff953c5d48bf2ef066a6c27c1dbc92a9b9effc05ee61c9fe269499266db9782073f2d82a589d3c5c966ffc56584 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 91a5836b28..6760e554de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -363,25 +363,25 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.496.0" +"@aws-sdk/client-cognito-identity@npm:3.509.0": + version: 3.509.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-signing": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-signing": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -407,29 +407,29 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: ee21d840134279f2d9c5bd113912fe89a48dcc6f56798894282886f48096743cd46499b908a659176cb1bfd10a771ec599694ae728d7fc53cb8a388124aff412 + checksum: 5ec80c36888445f6462308b66c9c06c85202b411ed4157ec96e638317507907b313f6e9062fa5266b88e091364d2872ea30a5c59f50ce5c2bdd069140bf6ab2d languageName: node linkType: hard "@aws-sdk/client-eks@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/client-eks@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/client-eks@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-signing": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-signing": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -457,29 +457,29 @@ __metadata: "@smithy/util-waiter": ^2.1.1 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 44042c4e746a27764db92f1966674034d7e9bb3a0cc6db3cedac1143472556d63e591a25048ebb8c11e07f3e807c7dd0b67b653c4f9bde30ef6fb7017eb82546 + checksum: 9c15bf5ea7635487e62b59974ec17940987b6efcac28a46786f423d4900508f10675976be72dfae8704fda5b0192d3e19faa8a6a4ad344790d4ab589e0c9ad30 languageName: node linkType: hard "@aws-sdk/client-organizations@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/client-organizations@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/client-organizations@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-signing": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-signing": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -505,37 +505,37 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: a94ab6fadd8442223fee939559c72ea341ff8ed310f06c3420f4f7fab3fe0d033e6bdcf8be9984b92b1114b91abd8020201f727b96977e4d4c85357f01898b38 + checksum: 3af1844b63bc996807483deb85919756f82381d112bfb2c1cdc5c1e9291a71eb926a064e84ed1c4c22c23e9631502437e6b7cfacf922145c35e8c5aa63a9fd06 languageName: node linkType: hard "@aws-sdk/client-s3@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/client-s3@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/client-s3@npm:3.509.0" dependencies: "@aws-crypto/sha1-browser": 3.0.0 "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-bucket-endpoint": 3.496.0 - "@aws-sdk/middleware-expect-continue": 3.496.0 - "@aws-sdk/middleware-flexible-checksums": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-location-constraint": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-sdk-s3": 3.496.0 - "@aws-sdk/middleware-signing": 3.496.0 - "@aws-sdk/middleware-ssec": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/signature-v4-multi-region": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/middleware-bucket-endpoint": 3.502.0 + "@aws-sdk/middleware-expect-continue": 3.502.0 + "@aws-sdk/middleware-flexible-checksums": 3.502.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-location-constraint": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-sdk-s3": 3.502.0 + "@aws-sdk/middleware-signing": 3.502.0 + "@aws-sdk/middleware-ssec": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/signature-v4-multi-region": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@aws-sdk/xml-builder": 3.496.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 @@ -571,29 +571,29 @@ __metadata: "@smithy/util-waiter": ^2.1.1 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: 6b87d1edd89376bfb0c27cd270e57cfdfedb3fbec725fddce4eff5df31daa84b7e89099d44503b5bd19dd2021da1a18f08374cb839e588fa7bb819cd6f3cf25a + checksum: 8bbb1badb376c4f541bcfdf45cef8c9057565f6ee7516fffd645f1384549b937f76fafbc9b73ff240aaff49efd9acfdd20a37e6d1e316f9215208a29abb2ea24 languageName: node linkType: hard "@aws-sdk/client-sqs@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/client-sqs@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/client-sqs@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-sdk-sqs": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-sdk-sqs": 3.507.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -621,26 +621,28 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 42f064fb83b443b1de55cbc56941f4b4b7c2b06fb467fcef4d556e75e0613b5a99a72a63a6f464d4101a26047c6d97baa842d3189433a34904d208bde6c0a829 + checksum: 4858f376f24dbd70007bff8a9c766c8b3778f32dabb6b4228f74b97f4b094c671c827d3f3ab1e30aec7bc24a39ada06e5f6f060c14274b7ee64081119de03fa6 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/client-sso@npm:3.496.0" +"@aws-sdk/client-sso-oidc@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.507.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-signing": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -666,27 +668,73 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: b775052f1f1fe85d411b8f84572eb68e05526afec0e3ad47b6383073351b2bc30cb3f8ad8bb2f33157c0c590e9f5deafd2522f543ae470bb0234fde6850118b5 + peerDependencies: + "@aws-sdk/credential-provider-node": ^3.507.0 + checksum: e85da9c9f2eb791c866dd767aa9942ac2e4f9f957185503032f8ae964c066bef6cae258d8075e442cf41333117e3bc73c1d8d1c2625ba76c569d0d42d5d48409 languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.496.0, @aws-sdk/client-sts@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/client-sts@npm:3.496.0" +"@aws-sdk/client-sso@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sso@npm:3.507.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 + "@smithy/config-resolver": ^2.1.1 + "@smithy/core": ^1.3.1 + "@smithy/fetch-http-handler": ^2.4.1 + "@smithy/hash-node": ^2.1.1 + "@smithy/invalid-dependency": ^2.1.1 + "@smithy/middleware-content-length": ^2.1.1 + "@smithy/middleware-endpoint": ^2.4.1 + "@smithy/middleware-retry": ^2.1.1 + "@smithy/middleware-serde": ^2.1.1 + "@smithy/middleware-stack": ^2.1.1 + "@smithy/node-config-provider": ^2.2.1 + "@smithy/node-http-handler": ^2.3.1 + "@smithy/protocol-http": ^3.1.1 + "@smithy/smithy-client": ^2.3.1 + "@smithy/types": ^2.9.1 + "@smithy/url-parser": ^2.1.1 + "@smithy/util-base64": ^2.1.1 + "@smithy/util-body-length-browser": ^2.1.1 + "@smithy/util-body-length-node": ^2.2.1 + "@smithy/util-defaults-mode-browser": ^2.1.1 + "@smithy/util-defaults-mode-node": ^2.1.1 + "@smithy/util-endpoints": ^1.1.1 + "@smithy/util-retry": ^2.1.1 + "@smithy/util-utf8": ^2.1.1 + tslib: ^2.5.0 + checksum: e5ede601b02c6fb33c9a6d93c0dfffb9b7b2631f601f323c3cf8594e9d472a55024a0345b33d213b5fa8940f685788080233b38d62cf7602c39fceae45d0b36a + languageName: node + linkType: hard + +"@aws-sdk/client-sts@npm:3.507.0, @aws-sdk/client-sts@npm:^3.350.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sts@npm:3.507.0" + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/core": 3.496.0 + "@aws-sdk/middleware-host-header": 3.502.0 + "@aws-sdk/middleware-logger": 3.502.0 + "@aws-sdk/middleware-recursion-detection": 3.502.0 + "@aws-sdk/middleware-user-agent": 3.502.0 + "@aws-sdk/region-config-resolver": 3.502.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 + "@aws-sdk/util-user-agent-browser": 3.502.0 + "@aws-sdk/util-user-agent-node": 3.502.0 "@smithy/config-resolver": ^2.1.1 "@smithy/core": ^1.3.1 "@smithy/fetch-http-handler": ^2.4.1 @@ -714,7 +762,9 @@ __metadata: "@smithy/util-utf8": ^2.1.1 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: a0427de70194c5391e883856d0c5f01f6bb610133970c6607530193c6961744424901c830872996c28c69300e51f417390e76ab5b967be7c164edc1be89e9e46 + peerDependencies: + "@aws-sdk/credential-provider-node": ^3.507.0 + checksum: f00584e210e99836457814c15c5796c4014117277d564f0eb7d2b98b18af5c5bd6f7df6925aa7f295fa9ac0a263c2d9d49bb8e23e583569074449a2fb3d15ed1 languageName: node linkType: hard @@ -732,36 +782,36 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.496.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.509.0": + version: 3.509.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.509.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/client-cognito-identity": 3.509.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 8125e31c183be3b9ceceb0e9773a135468b232c9ea28213c7cbdd00f3640124dc4bcd15f52b5a39074d472e74048121313b1d1dc8eb1ea719ad01132bdc42481 + checksum: 7fb2ff1e098968d36e711db7457d2389a3244cebec87da60488750020aad568b938de2e306566190e8c610e40d3c0e3402b2c48a6046f5ee8a9c11c00a4ca803 languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.496.0" +"@aws-sdk/credential-provider-env@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 0ff457ce12358c472a126e8994e04158c330c5ecf58d8fde6d431184a1d088d5358edac4e7efe8b1b64aa1c4fd386d570b5fcec30907fdc27cf2061a37910806 + checksum: 9a638955f1fc6bd07c6fe9c749cfea42867b4baf87caa8228e1203f856c989adac235ca1ee5c236d4819c973c44723f46e65bbc957843f025f40c6e24f69d65e languageName: node linkType: hard -"@aws-sdk/credential-provider-http@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-http@npm:3.496.0" +"@aws-sdk/credential-provider-http@npm:3.503.1": + version: 3.503.1 + resolution: "@aws-sdk/credential-provider-http@npm:3.503.1" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/fetch-http-handler": ^2.4.1 "@smithy/node-http-handler": ^2.3.1 "@smithy/property-provider": ^2.1.1 @@ -770,108 +820,111 @@ __metadata: "@smithy/types": ^2.9.1 "@smithy/util-stream": ^2.1.1 tslib: ^2.5.0 - checksum: 2ba3736689e26afe057ce9da11ebb45c73eae13d1179c2783a0f33cf9805644c464f77b4a60da2688e23fb1956e3bcd0dbb44292434d9f162ed7a86b19a03c2f + checksum: c4a6f7fc06a11071987ed803a4ce40c52ad077cbdd0171161030ecb157a76710e1bc95bb9c36acc4f01d32ab82c4c11620bb843d88c61027c011361205537bea languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.496.0" +"@aws-sdk/credential-provider-ini@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.507.0" dependencies: - "@aws-sdk/credential-provider-env": 3.496.0 - "@aws-sdk/credential-provider-process": 3.496.0 - "@aws-sdk/credential-provider-sso": 3.496.0 - "@aws-sdk/credential-provider-web-identity": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 + "@aws-sdk/credential-provider-env": 3.502.0 + "@aws-sdk/credential-provider-process": 3.502.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 190449c43d687753966949397cf41215edc4ef2395dd2bb470988465b3f8bd6cf88933a7dd92032c19844d8f0dd4dd185caeaa060449e2b1d4141d47f549f27c + checksum: b07df1a5f9e157d2fe49a44fd2c90564c8f3ab5543f70769a39e5d155e2ea21b3e793cfc84388e773c8d1d5d442bb1df64fa38fd223a8333f2c58f45ed2c8494 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.496.0, @aws-sdk/credential-provider-node@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.496.0" +"@aws-sdk/credential-provider-node@npm:3.509.0, @aws-sdk/credential-provider-node@npm:^3.350.0": + version: 3.509.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.509.0" dependencies: - "@aws-sdk/credential-provider-env": 3.496.0 - "@aws-sdk/credential-provider-ini": 3.496.0 - "@aws-sdk/credential-provider-process": 3.496.0 - "@aws-sdk/credential-provider-sso": 3.496.0 - "@aws-sdk/credential-provider-web-identity": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/credential-provider-env": 3.502.0 + "@aws-sdk/credential-provider-http": 3.503.1 + "@aws-sdk/credential-provider-ini": 3.507.0 + "@aws-sdk/credential-provider-process": 3.502.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 16523a15f77d4def6c32fd465a85edc6f65d1e813b52b323f8264bf7b5e0a4bc3ede943104c218344a5152ca8f316658f911e71f8e26775b3f6852079e8ecda7 + checksum: 85bac6b0813b9c4d3cd878b21e940bb7730005c9bd7f9307e0eb9e93a229166761fcb25b57714a8019063b9eb3ff0c90cca31d9821589e8cd51adafe42232c37 languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.496.0" +"@aws-sdk/credential-provider-process@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 324d86cc4c727faa87038fe67620e38e8aaafce7d97cfcefac80b04aff5d0077babadf881bfd85c51191350d52b040b986dad07d85d3340376cddc0b1689b7eb + checksum: 418a22b5ab08d73b68246e9abc79ebbdc93ca84319dff21f2354af93b157cf798551e7c47a123f9c65e18b2fd1f88987be451914e544b9f74ae5fcdf7fed0437 languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.496.0" +"@aws-sdk/credential-provider-sso@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.507.0" dependencies: - "@aws-sdk/client-sso": 3.496.0 - "@aws-sdk/token-providers": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/client-sso": 3.507.0 + "@aws-sdk/token-providers": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: fe4b34a3441777af37b7feeba60a538a59a35d5d0e8899f9d4ed6a482b8241cc0303df25049872773256c7ac19587d58aaf12330969fec7a85fdc6d1a07ed57a + checksum: 2bfbd29ea3650c25794ca6054fd93da51ecb59ae64515fc8257ccb17a6b4ade6fcf615f86b042169b57255305b4fb2892961c2ddae52c21e3b47f90c69f1b0b0 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.496.0" +"@aws-sdk/credential-provider-web-identity@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.507.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/client-sts": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: e1041486c76c229075c16afc3f0847abe7a30fa7a61bd82dbd4e731508f8a6b64a02cc80d97c105fea8e3efb138fb574a5ddda2f900d5a822033bffcc09830d4 + checksum: dc06ce47e00d1688e9297a2b7fdbe763ac0738325ebdb9779caa4d44914fb378b9381505ddb5fc30d44b68764bc3459481417cf7a8def7e96d9437b72d8649d0 languageName: node linkType: hard "@aws-sdk/credential-providers@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/credential-providers@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/credential-providers@npm:3.509.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.496.0 - "@aws-sdk/client-sso": 3.496.0 - "@aws-sdk/client-sts": 3.496.0 - "@aws-sdk/credential-provider-cognito-identity": 3.496.0 - "@aws-sdk/credential-provider-env": 3.496.0 - "@aws-sdk/credential-provider-http": 3.496.0 - "@aws-sdk/credential-provider-ini": 3.496.0 - "@aws-sdk/credential-provider-node": 3.496.0 - "@aws-sdk/credential-provider-process": 3.496.0 - "@aws-sdk/credential-provider-sso": 3.496.0 - "@aws-sdk/credential-provider-web-identity": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/client-cognito-identity": 3.509.0 + "@aws-sdk/client-sso": 3.507.0 + "@aws-sdk/client-sts": 3.507.0 + "@aws-sdk/credential-provider-cognito-identity": 3.509.0 + "@aws-sdk/credential-provider-env": 3.502.0 + "@aws-sdk/credential-provider-http": 3.503.1 + "@aws-sdk/credential-provider-ini": 3.507.0 + "@aws-sdk/credential-provider-node": 3.509.0 + "@aws-sdk/credential-provider-process": 3.502.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 30aac656bf113189b26856ee30175400c425781ca00ab4b7c609f949410cfd116e00a02294b9a86300e3ad9a6c8ede0cb5d6de134f057d0b17f999bfb6f0e400 + checksum: 2e6b2cc78734f69f2496dd940f868a39a919696625082fab63d7e5d7bd741a0d1c2109bdbb66fef216417a7fd6070e112a84236d1597731585f9f586e8c0926d languageName: node linkType: hard @@ -897,8 +950,8 @@ __metadata: linkType: hard "@aws-sdk/lib-storage@npm:^3.350.0": - version: 3.496.0 - resolution: "@aws-sdk/lib-storage@npm:3.496.0" + version: 3.509.0 + resolution: "@aws-sdk/lib-storage@npm:3.509.0" dependencies: "@smithy/abort-controller": ^2.1.1 "@smithy/middleware-endpoint": ^2.4.1 @@ -909,22 +962,22 @@ __metadata: tslib: ^2.5.0 peerDependencies: "@aws-sdk/client-s3": ^3.0.0 - checksum: d8a76e31848543c270a0f986344088eba209f638d8962832aa0872c852ed20cafa046372c25e7105cc23c2bf5e4a183fd89a37d0cd4edba3af4c20e9c35a1309 + checksum: eca8d6014fd58a675f493da236018ec35a5d8f7128966a097bcd3ca81c3b1d0738bf8baaffe155cc6cb7ad8f9e0d41946894f499a5337344162eb20efcf97846 languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.496.0" +"@aws-sdk/middleware-bucket-endpoint@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@aws-sdk/util-arn-parser": 3.495.0 "@smithy/node-config-provider": ^2.2.1 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 "@smithy/util-config-provider": ^2.2.1 tslib: ^2.5.0 - checksum: 3b0c8b9cec0202fc8bcea343758d042035d12006da21d60b356c5b7d38c8a0b8bfcbeba93f7ec4f443060815b45cd0a41e71ca9791d338d40776f53eaed8c428 + checksum: cb1f7e61ada2340d62efcfe7e90814f32dbb983139844a00859d767f09cd8201c4b92b9afd5b391e8ca1b5c8318bb998ab93c5bb7baa4cdbe6bfc2cc021cbb66 languageName: node linkType: hard @@ -941,85 +994,85 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.496.0" +"@aws-sdk/middleware-expect-continue@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: cd9e3b15c425e05a96eaf05c61ff4fd01e1e24d875ade4ab7fccfa95fddb0d925b4a9ac751f9bdf981184cbbb2327eb79710833afb41d64809b25e033d6ab395 + checksum: ef05feafa08721790f969518ceebd6bc78221732557747821665f5148dc979b32820c8c6158feea1cc696c38a1d55c4ab9e835aba3d8ffe84113ea1f0a4df934 languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.496.0" +"@aws-sdk/middleware-flexible-checksums@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.502.0" dependencies: "@aws-crypto/crc32": 3.0.0 "@aws-crypto/crc32c": 3.0.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/is-array-buffer": ^2.1.1 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 3740e40ea91b0c9d40c4922e5b46b35ee0cd48cb8388b0721c7e13f63ac2b534b71e5a8c29593fa1cb5a94d0f3eef001d7899766be09ec74728ac133eb9f9114 + checksum: d0615350823b8b4e3f07d4c200d7fa04313ca50c33a6caed0bd794bdde75cf758b73887fd1bf04dd64272e96a2500d2acb59fd5b8a5d828b87f7e0c514756a5f languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.496.0" +"@aws-sdk/middleware-host-header@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 7958c74aafb729cacfccfa0148d9788b1f621acfb52f5a50bf158f8bf2b76d23e52b8cf1908686e9ea5fdcb2cb6e92b75b6d16b938457133e83947982db3d645 + checksum: 4e55ee901f31b4372a82a0ed429912d96c07369353ab914fd05a2caf1e64fc22288d4214bcec99b36eb1e9336944718267f95a9be87653baac3a7c2365b99663 languageName: node linkType: hard -"@aws-sdk/middleware-location-constraint@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-location-constraint@npm:3.496.0" +"@aws-sdk/middleware-location-constraint@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: bd039384df036f8ebd7c860de3f6a152ec3366216e32d5953d9076fea5a9c9c5021ee9ea78a98670606a56625c2e5f96e6b4c33bb1554f1f9add4e31b7a67e61 + checksum: fdcfb1186cb53b4587b1ca3aa73f4160b2af3643006fcd1d68b41a0acfee4a80457140eefdbaee077da826397682d012ace06faacdbc8bff288831e96a735dc2 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-logger@npm:3.496.0" +"@aws-sdk/middleware-logger@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-logger@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 3e2859d10342bd99a6855ee1cf229ca54a27d9e16d6613f016718b14efd4586618f553c530eb19b331278b818e75c5f9bc71f02d82c8a92973e486af8da112e7 + checksum: ff8b754373c90e1c5baacf1e2f36b568602d2d1d2aa74da818516fbc6b49acd024204332cb950453b60d3f352b0e2d6c4c1f72b71662f953178a3e069a187681 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.496.0" +"@aws-sdk/middleware-recursion-detection@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 50a909552d9b1ef0871929eccfebbee1256305c6d4d62d1d51edd88bd7cd12fbb661c87ad9aaf788b4d8821f0c2780699c29702c42d3035a4fa08c8d7c1cc519 + checksum: 75a4d712b04c63d649e026fe83d252a9c825ca0500042dcd83ad3cdaa58df4c5c25d645206200cbc119f3e7e48dbdb2cccd86f255a699cfa7f8cf155acaac6e4 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.496.0" +"@aws-sdk/middleware-sdk-s3@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@aws-sdk/util-arn-parser": 3.495.0 "@smithy/node-config-provider": ^2.2.1 "@smithy/protocol-http": ^3.1.1 @@ -1028,20 +1081,21 @@ __metadata: "@smithy/types": ^2.9.1 "@smithy/util-config-provider": ^2.2.1 tslib: ^2.5.0 - checksum: e341f624e46912d09d14a4a7ad9ccc62cc8aa2cb4cdb683e86a3bfbb3134d07b6e5330344a63bae187448d2f0858679b1847fa2560f2ad2cdc32fa686360a0c0 + checksum: 6d27f5a82c30a1dadaefdbc89cd3eb3e08afc1fb1c627028e2bce2ac22e12bc035ecc8fc3578322386341266c4e801ac410091f38bc6dee5274be8ac0ec5dc39 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sqs@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.496.0" +"@aws-sdk/middleware-sdk-sqs@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.507.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 + "@smithy/smithy-client": ^2.3.1 "@smithy/types": ^2.9.1 "@smithy/util-hex-encoding": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 6a462b98fc8f9c8eb97e2aba20840ea3bbcda117392cf0a14e6971f2622efe956420f2811d5ab8844fef3dcce25af479dcf56d364032561a4d229f75d6533c4b + checksum: 2995ce335247ff7ac8660ebec8175bbb072c256f29d4577a520305b505cedaf7269638e393c79cc85949cb1eccb9cbad786ee88900df8a45f8a0cf4525f9a080 languageName: node linkType: hard @@ -1055,42 +1109,42 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-signing@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-signing@npm:3.496.0" +"@aws-sdk/middleware-signing@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-signing@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/protocol-http": ^3.1.1 "@smithy/signature-v4": ^2.1.1 "@smithy/types": ^2.9.1 "@smithy/util-middleware": ^2.1.1 tslib: ^2.5.0 - checksum: e39e9569e5063796729969115a719ede44595fee713fb5b44a6a11580c6810e93466ac48437ee002734ad608edf2701159bcfc4fb563d59f8a95901de78f5456 + checksum: b7595c3db33a62873fa29a8f08a64aca77f484035b42b5e12a8c364e2166b3dd81b1e3443bc3df5c97aaf3e00f14c2b99a8ef34cb3c132118d1e1872a74219e2 languageName: node linkType: hard -"@aws-sdk/middleware-ssec@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-ssec@npm:3.496.0" +"@aws-sdk/middleware-ssec@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 4a6f941346d43fe66bcccdc5da0490a38cae58b4ba0f80e629820e3e84d8f8125f3f1debf9b067b904a4a55fb29b3b58575635e1726543037512a2bb87a84442 + checksum: 0be54e13645bc97c130c61b09abb263def67e03382296aa020c118c672fef39359fddd997d2820ae62cbaeaa34d653ccafe0dfbb06a720e3b02d87e05b217e0f languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.496.0" +"@aws-sdk/middleware-user-agent@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 + "@aws-sdk/types": 3.502.0 + "@aws-sdk/util-endpoints": 3.502.0 "@smithy/protocol-http": ^3.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: a09de52251f0a7bf1a616881e3805fd728ef575d28c68f80b084d8db9342589adc6c95bef6b1b6085d8354459be0cf74516e05035c58e8b52a8a5b9b9133c475 + checksum: a65559d5cb790af73d75400099a2d0b38857cd28f8eb9e81f9250c59bd17a1a0e4c4210aeeb94ceb67716af996bd00655de11456ff73424f50597f6f05d4622d languageName: node linkType: hard @@ -1138,31 +1192,31 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.496.0" +"@aws-sdk/region-config-resolver@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/node-config-provider": ^2.2.1 "@smithy/types": ^2.9.1 "@smithy/util-config-provider": ^2.2.1 "@smithy/util-middleware": ^2.1.1 tslib: ^2.5.0 - checksum: b82878109cfa96ae08008531c44def03a33a506c4fc27fdf0cf1081cee0eb17b5d28df6d37279e9fe83c487825672a9a81dc0ba88f375d2dc5b5dc1730d2ae91 + checksum: a13ee3502015baee3f8897a2597ea1ade556da0fcda653344e06624fd65e78fcc91a1b0b49edd4008760cb4284fb0cece1c44ea052cd4a7dca4bb01fb83bffd2 languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.496.0" +"@aws-sdk/signature-v4-multi-region@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.502.0" dependencies: - "@aws-sdk/middleware-sdk-s3": 3.496.0 - "@aws-sdk/types": 3.496.0 + "@aws-sdk/middleware-sdk-s3": 3.502.0 + "@aws-sdk/types": 3.502.0 "@smithy/protocol-http": ^3.1.1 "@smithy/signature-v4": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: c2d8c11e30b285b827972de881307e927755d1c48f74c7d4a312fc5b7d0f1939aa9640c5b2b953ecdf8a541acdd42270ac175c026defc19e5ed5f0d49f9e160c + checksum: 745bab5b1daa45b30d62ec3b1939c766fcff42104539b8466245c7b5b7e538c827dd5cdd6c65dbdd8dfe1e7261bffb208729a225b242e4bb2f91df78a0c72a67 languageName: node linkType: hard @@ -1182,48 +1236,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/token-providers@npm:3.496.0" +"@aws-sdk/token-providers@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/token-providers@npm:3.507.0" dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.496.0 - "@aws-sdk/middleware-logger": 3.496.0 - "@aws-sdk/middleware-recursion-detection": 3.496.0 - "@aws-sdk/middleware-user-agent": 3.496.0 - "@aws-sdk/region-config-resolver": 3.496.0 - "@aws-sdk/types": 3.496.0 - "@aws-sdk/util-endpoints": 3.496.0 - "@aws-sdk/util-user-agent-browser": 3.496.0 - "@aws-sdk/util-user-agent-node": 3.496.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 + "@aws-sdk/client-sso-oidc": 3.507.0 + "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/smithy-client": ^2.3.1 "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 54ad339923d2e4e4a021a2d21b39c1185b33b02abbecac3cb71786dbc76db84c1b5237d1929a0b39cd7b1420312e1fc523050c4588a3a37c26209e1ed934f069 + checksum: 8d90139d9a1d2976e799b3234b723d903cbb2001acbfad658330de5a2fa5a04028e9db288780cd6d071edaf3d3890138ef7a69851e6b173433787635ac316ccf languageName: node linkType: hard @@ -1237,13 +1260,13 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.496.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": - version: 3.496.0 - resolution: "@aws-sdk/types@npm:3.496.0" +"@aws-sdk/types@npm:3.502.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": + version: 3.502.0 + resolution: "@aws-sdk/types@npm:3.502.0" dependencies: "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: d0d3b8a5cf8e9ab588c005d63b39b9c76f15913982cbe055b12ab4ad51c4fecb8faed935e96d4f8b19a38d6668ccdcf3555a1ca69c18831042ec06927bd73c74 + checksum: 11dddc2c1fb7b601adba1df6339b68367a3c77fcdd298c7ceb42541c813ba777ffc9ddfbb68633f9fd9082c883edf1b2fe3139acdf822d7d423c0b5f76ce78dd languageName: node linkType: hard @@ -1277,15 +1300,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/util-endpoints@npm:3.496.0" +"@aws-sdk/util-endpoints@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/util-endpoints@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/types": ^2.9.1 "@smithy/util-endpoints": ^1.1.1 tslib: ^2.5.0 - checksum: d2de596852c6c78b4145f6b152d1e05958415101898ca69e0ade5a2ce63dfc52b1fc4ccaeb1f34d40a4b5cf96cba4ec19f39935515acaa7682fe21a781f9bfb4 + checksum: 051b519c118ef28dd49d60efc21dd3c0a2b032f8b70fdedc831e6c747bd675d51edc3913630ab86a02ecda7a3ea3ea5bec87b20c756700e65e059e2307110859 languageName: node linkType: hard @@ -1337,23 +1360,23 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.496.0" +"@aws-sdk/util-user-agent-browser@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/types": ^2.9.1 bowser: ^2.11.0 tslib: ^2.5.0 - checksum: 0f7d5530a0f750094af2aa899323189c94f946dd870b37da965df49d705e05da11046da005864f5151cf3f4393d3e0ba39e71a7ca6121fc5702cdd5f3a1a502c + checksum: 89e4d26f79979f30e7b1285b4f073a65c76021b706ab5c7342e2f4e46b6a045cc353dfce9bca98c9d134e92767f1bc3270e9c485d10a0d37e9ec81c21656c2e5 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.496.0" +"@aws-sdk/util-user-agent-node@npm:3.502.0": + version: 3.502.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.502.0" dependencies: - "@aws-sdk/types": 3.496.0 + "@aws-sdk/types": 3.502.0 "@smithy/node-config-provider": ^2.2.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 @@ -1362,7 +1385,7 @@ __metadata: peerDependenciesMeta: aws-crt: optional: true - checksum: 9ea68207f061a04e93cdee7b4f0e47bae3f4afd8bb922179bd4ea284a4756e879c1f76f58c87a3aedb65eebbed82f453bf94dd26095ebd4728169b1e1a6c9d4c + checksum: b90a373d489bd34ce759acb76c91902bb2bd5991aad6a2d316d0b14c86bd7de659d85e9964111fc2e4bc76e67e19fd0d91ebe255e011c1054ca813c97992cc43 languageName: node linkType: hard @@ -3110,13 +3133,13 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.23.7": - version: 7.23.8 - resolution: "@babel/runtime-corejs3@npm:7.23.8" +"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.23.8": + version: 7.23.9 + resolution: "@babel/runtime-corejs3@npm:7.23.9" dependencies: core-js-pure: ^3.30.2 regenerator-runtime: ^0.14.0 - checksum: e786b79bcb3031bd7433fb4523e43f0acbd386cd7bb5b0a6df6e627c7965706b3d5612211ea3d729ce4459ba1d1b654ccdd8aefe791c6413f70882ee1be903b9 + checksum: 715d916b6cf60013597aa9a5823fd04a9c6cc6ba6221bb8611e76c369cbf1b4baf1d0ad63b6522736593a38e89a6502213a38f57a9c24e5586628e930c4fd52c languageName: node linkType: hard @@ -3493,7 +3516,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@^1.4.3, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": +"@backstage/catalog-model@npm:^1.4.3": + version: 1.4.3 + resolution: "@backstage/catalog-model@npm:1.4.3" + dependencies: + "@backstage/errors": ^1.2.3 + "@backstage/types": ^1.1.1 + ajv: ^8.10.0 + lodash: ^4.17.21 + checksum: 56a844d0c78adf62cefc09cf50f5aa221cdcf085e3558512758df9b1ea4ac088c7dbdf8274467a841170177d6cdd83d299ac412ccce5177c907fd6d6e2b2011c + languageName: node + linkType: hard + +"@backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": version: 0.0.0-use.local resolution: "@backstage/catalog-model@workspace:packages/catalog-model" dependencies: @@ -3613,7 +3648,7 @@ __metadata: ctrlc-windows: ^2.1.0 del: ^7.0.0 diff: ^5.0.0 - esbuild: ^0.19.0 + esbuild: ^0.20.0 esbuild-loader: ^2.18.0 eslint: ^8.6.0 eslint-config-prettier: ^8.3.0 @@ -3771,7 +3806,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/prop-types": ^15.7.3 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/zen-observable": ^0.8.0 history: ^5.0.0 i18next: ^22.4.15 @@ -3816,7 +3851,58 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.13.10, @backstage/core-components@^0.13.8, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@npm:^0.13.10, @backstage/core-components@npm:^0.13.8": + version: 0.13.10 + resolution: "@backstage/core-components@npm:0.13.10" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.8.2 + "@backstage/errors": ^1.2.3 + "@backstage/theme": ^0.5.0 + "@backstage/version-bridge": ^1.0.7 + "@date-io/core": ^1.3.13 + "@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.61 + "@react-hookz/web": ^23.0.0 + "@types/react": ^16.13.1 || ^17.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 + linkify-react: 4.1.3 + linkifyjs: 4.1.3 + lodash: ^4.17.21 + pluralize: ^8.0.0 + qs: ^6.9.4 + rc-progress: 3.5.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-idle-timer: 5.6.2 + react-markdown: ^8.0.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.11 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ^3.22.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: ec2a0d0a27bc4d6b9d4da97f0b4df600148529ee51bf2c8e7d3adc45c3950adac662535d3beabc451db346f2c7e3c412ceaa756fc774012b43dff5e2695f2271 + languageName: node + linkType: hard + +"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -3834,7 +3920,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -3846,7 +3932,7 @@ __metadata: "@types/d3-zoom": ^3.0.1 "@types/dagre": ^0.7.44 "@types/google-protobuf": ^3.7.2 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/react-helmet": ^6.1.0 "@types/react-sparklines": ^1.7.0 "@types/react-syntax-highlighter": ^15.0.0 @@ -3889,7 +3975,24 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.8.0, @backstage/core-plugin-api@^1.8.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@npm:^1.8.0, @backstage/core-plugin-api@npm:^1.8.2": + version: 1.8.2 + resolution: "@backstage/core-plugin-api@npm:1.8.2" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/types": ^1.1.1 + "@backstage/version-bridge": ^1.0.7 + "@types/react": ^16.13.1 || ^17.0.0 + history: ^5.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 48aeccba7efa29e6989839216fdd2bc212b96334cc94a9ac8feb713038074bdb10c9caa9a2e696c0c2282faa5473883908655148b59c8f071158b3b59c1a9629 + languageName: node + linkType: hard + +"@backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -3904,7 +4007,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 history: ^5.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -3930,6 +4033,8 @@ __metadata: fs-extra: 10.1.0 handlebars: ^4.7.3 inquirer: ^8.2.0 + msw: ^1.0.0 + node-fetch: ^2.6.7 nodemon: ^3.0.1 ora: ^5.3.0 recursive-readdir: ^2.2.2 @@ -3959,7 +4064,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 zen-observable: ^0.10.0 peerDependencies: @@ -4026,7 +4131,7 @@ __metadata: "@material-ui/icons": ^4.11.3 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -4069,7 +4174,7 @@ __metadata: "@material-ui/core": ^4.12.4 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 history: ^5.3.0 lodash: ^4.17.21 zod: ^3.22.4 @@ -4117,7 +4222,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@^1.1.21, @backstage/integration-react@^1.1.23, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@npm:^1.1.21, @backstage/integration-react@npm:^1.1.23": + version: 1.1.23 + resolution: "@backstage/integration-react@npm:1.1.23" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.8.2 + "@backstage/integration": ^1.8.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 84861ed10d2081d53451862a68c63ad123e2b3bf3bbcb541c2b938669ecf93b2244020edb6a505536f811c37344c2b1c639d1a29978df829d819fc5df43fba63 + languageName: node + linkType: hard + +"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: @@ -4141,6 +4264,22 @@ __metadata: languageName: unknown linkType: soft +"@backstage/integration@npm:^1.8.0": + version: 1.8.0 + resolution: "@backstage/integration@npm:1.8.0" + dependencies: + "@azure/identity": ^4.0.0 + "@backstage/config": ^1.1.1 + "@octokit/auth-app": ^4.0.0 + "@octokit/rest": ^19.0.3 + cross-fetch: ^4.0.0 + git-url-parse: ^13.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + checksum: 2cf2956cf2d37e7e0a1c21e60e5bb2e435c4d1a70f63fe915932ee618f3b673c3907e0dc5832a8221a1592e3c8338f333768a9f9693b7ed3bd8e7af1d7ebb2cb + languageName: node + linkType: hard + "@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": version: 0.0.0-use.local resolution: "@backstage/integration@workspace:packages/integration" @@ -4221,7 +4360,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 react-markdown: ^8.0.0 react-use: ^17.2.4 @@ -4270,7 +4409,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -4294,7 +4433,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -4383,7 +4522,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 msw: ^1.0.0 qs: ^6.10.1 @@ -4401,7 +4540,7 @@ __metadata: dependencies: "@backstage/cli": "workspace:^" "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 grpc-docs: ^1.1.2 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -4434,7 +4573,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/swagger-ui-react": ^4.18.0 graphiql: 3.1.0 graphql: ^16.0.0 @@ -4462,7 +4601,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 use-deep-compare-effect: ^1.8.1 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -4561,8 +4700,9 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" express: ^4.18.2 jose: ^4.6.0 - jwt-decode: ^3.1.0 + msw: ^2.0.8 node-cache: ^5.1.2 + node-fetch: ^2.6.7 languageName: unknown linkType: soft @@ -4792,12 +4932,13 @@ __metadata: "@backstage/plugin-auth-backend-module-okta-provider": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/types": "workspace:^" "@google-cloud/firestore": ^7.0.0 + "@node-saml/passport-saml": ^4.0.4 "@types/body-parser": ^1.19.0 "@types/cookie-parser": ^1.4.2 "@types/express": ^4.17.6 "@types/express-session": ^1.17.2 - "@types/jwt-decode": ^3.1.0 "@types/passport": ^1.0.3 "@types/passport-auth0": ^1.0.5 "@types/passport-github2": ^1.2.4 @@ -4816,7 +4957,6 @@ __metadata: fs-extra: 10.1.0 google-auth-library: ^8.0.0 jose: ^4.6.0 - jwt-decode: ^3.1.0 knex: ^3.0.0 lodash: ^4.17.21 luxon: ^3.0.0 @@ -4834,7 +4974,6 @@ __metadata: passport-microsoft: ^1.0.0 passport-oauth2: ^1.6.1 passport-onelogin-oauth: ^0.0.1 - passport-saml: ^3.1.2 supertest: ^6.1.3 uuid: ^8.0.0 winston: ^3.2.1 @@ -4914,10 +5053,12 @@ __metadata: dependencies: "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" + "@backstage/core-compat-api": "workspace:^" "@backstage/core-components": "workspace:^" "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" "@backstage/errors": "workspace:^" + "@backstage/frontend-plugin-api": "workspace:^" "@backstage/plugin-azure-devops-common": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" "@backstage/test-utils": "workspace:^" @@ -4926,7 +5067,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 humanize-duration: ^3.27.0 luxon: ^3.0.0 react-use: ^17.2.4 @@ -4996,7 +5137,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 msw: ^1.0.0 react-use: ^17.2.4 @@ -5048,7 +5189,7 @@ __metadata: "@backstage/test-utils": "workspace:^" "@material-ui/core": ^4.12.2 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -5094,7 +5235,7 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.61 "@material-ui/pickers": ^3.3.10 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 material-ui-search-bar: ^1.0.0 react-hook-form: ^7.13.0 @@ -5138,7 +5279,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/recharts": ^1.8.15 lodash: ^4.17.21 luxon: ^3.0.0 @@ -5279,23 +5420,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-bitbucket@workspace:plugins/catalog-backend-module-bitbucket": - version: 0.0.0-use.local - resolution: "@backstage/plugin-catalog-backend-module-bitbucket@workspace:plugins/catalog-backend-module-bitbucket" - dependencies: - "@backstage/backend-common": "workspace:^" - "@backstage/backend-test-utils": "workspace:^" - "@backstage/cli": "workspace:^" - "@backstage/config": "workspace:^" - "@backstage/integration": "workspace:^" - "@backstage/plugin-bitbucket-cloud-common": "workspace:^" - "@backstage/plugin-catalog-node": "workspace:^" - msw: ^1.0.0 - node-fetch: ^2.6.7 - winston: ^3.2.1 - languageName: unknown - linkType: soft - "@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp" @@ -5580,6 +5704,7 @@ __metadata: "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-search-backend-module-catalog": "workspace:^" + "@backstage/repo-tools": "workspace:^" "@backstage/types": "workspace:^" "@opentelemetry/api": ^1.3.0 "@types/core-js": ^2.5.4 @@ -5615,7 +5740,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.20, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@npm:^1.0.20": + version: 1.0.20 + resolution: "@backstage/plugin-catalog-common@npm:1.0.20" + dependencies: + "@backstage/catalog-model": ^1.4.3 + "@backstage/plugin-permission-common": ^0.7.12 + "@backstage/plugin-search-common": ^1.2.10 + checksum: 9691e4e022d39b6e2799fe95cbf6397c2f03ff7f0ce7859bb1d90d5df91215a94ee1eed5c174aceaaf2d51d0500eb87c441ae3786a939aae602402f828349dd4 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: @@ -5634,9 +5770,11 @@ __metadata: "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/core-app-api": "workspace:^" + "@backstage/core-compat-api": "workspace:^" "@backstage/core-components": "workspace:^" "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" + "@backstage/frontend-plugin-api": "workspace:^" "@backstage/plugin-catalog": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" "@backstage/test-utils": "workspace:^" @@ -5648,7 +5786,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 classnames: ^2.3.1 lodash: ^4.17.15 p-limit: ^3.1.0 @@ -5689,7 +5827,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 git-url-parse: ^13.0.0 js-base64: ^3.6.0 lodash: ^4.17.21 @@ -5780,12 +5918,12 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/zen-observable": ^0.8.0 classnames: ^2.2.6 lodash: ^4.17.21 @@ -5817,7 +5955,7 @@ __metadata: "@material-ui/lab": ^4.0.0-alpha.60 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -5858,7 +5996,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 dataloader: ^2.0.0 expiry-map: ^2.0.0 history: ^5.0.0 @@ -5934,7 +6072,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@types/humanize-duration": ^3.25.1 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 circleci-api: ^4.0.0 humanize-duration: ^3.27.0 lodash: ^4.17.21 @@ -5963,7 +6101,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 qs: ^6.9.4 react-use: ^17.2.4 @@ -5991,7 +6129,7 @@ __metadata: "@testing-library/react": ^14.0.0 "@types/humanize-duration": ^3.27.1 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 humanize-duration: ^3.27.1 luxon: ^3.0.0 react-use: ^17.2.4 @@ -6050,7 +6188,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/highlightjs": ^10.1.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/recharts": ^1.8.15 highlight.js: ^10.6.0 luxon: ^3.0.0 @@ -6080,7 +6218,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 rc-progress: 3.5.1 react-use: ^17.2.4 @@ -6107,7 +6245,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 jsonschema: ^1.2.6 react-use: ^17.2.4 zen-observable: ^0.10.0 @@ -6150,7 +6288,7 @@ __metadata: "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 "@types/pluralize": ^0.0.33 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/recharts": ^1.8.14 "@types/regression": ^2.0.0 "@types/yup": ^0.29.13 @@ -6239,7 +6377,7 @@ __metadata: react-json-view: ^1.21.3 react-use: ^17.2.4 peerDependencies: - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 @@ -6261,7 +6399,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: "@backstage/plugin-catalog-react": "workspace:^" @@ -6322,7 +6460,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -6352,11 +6490,11 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@uiw/react-codemirror": ^4.9.3 lodash: ^4.17.21 react-use: ^17.2.4 @@ -6568,7 +6706,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 classnames: ^2.2.6 msw: ^1.0.0 pluralize: ^8.0.0 @@ -6597,7 +6735,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 react-use: ^17.2.4 peerDependencies: @@ -6625,7 +6763,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 luxon: ^3.0.0 msw: ^1.0.0 @@ -6655,11 +6793,11 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/dompurify": ^2.3.3 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/dompurify": ^3.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/sanitize-html": ^2.6.2 classnames: ^2.3.1 - dompurify: ^2.3.6 + dompurify: ^3.0.0 lodash: ^4.17.21 luxon: ^3.0.0 material-ui-popup-state: ^1.9.3 @@ -6680,7 +6818,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" "@material-ui/core": ^4.12.2 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -6709,7 +6847,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/recharts": ^1.8.15 luxon: ^3.0.0 qs: ^6.10.1 @@ -6743,7 +6881,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 git-url-parse: ^13.0.0 luxon: ^3.0.0 react-use: ^17.2.4 @@ -6775,7 +6913,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 msw: ^1.0.0 react-use: ^17.2.4 @@ -6805,7 +6943,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 octokit: ^3.0.0 react-use: ^17.4.0 @@ -6834,7 +6972,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 p-limit: ^4.0.0 peerDependencies: @@ -6860,7 +6998,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -6919,7 +7057,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/codemirror": ^5.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 graphiql: ^3.0.6 graphql: ^16.0.0 graphql-ws: ^5.4.1 @@ -6943,7 +7081,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 graphql-voyager: ^1.0.0-rc.31 react-use: ^17.2.4 peerDependencies: @@ -6980,7 +7118,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@rjsf/utils": 5.16.1 + "@rjsf/utils": 5.17.0 "@types/react": ^16.13.1 || ^17.0.0 "@types/react-grid-layout": ^1.3.2 peerDependencies: @@ -7011,15 +7149,15 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@rjsf/core": 5.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/react-grid-layout": ^1.3.2 lodash: ^4.17.21 luxon: ^3.4.3 @@ -7053,7 +7191,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 humanize-duration: ^3.26.0 luxon: ^3.0.0 react-use: ^17.2.4 @@ -7120,7 +7258,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/testing-library__jest-dom": ^5.9.1 luxon: ^3.0.0 react-use: ^17.2.4 @@ -7169,7 +7307,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 jest-when: ^3.1.0 react-use: ^17.2.4 peerDependencies: @@ -7253,7 +7391,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cronstrue: ^2.2.0 js-yaml: ^4.0.0 kubernetes-models: ^4.1.0 @@ -7324,7 +7462,7 @@ __metadata: "@material-ui/lab": ^4.0.0-alpha.61 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cronstrue: ^2.32.0 jest-websocket-mock: ^2.5.0 js-yaml: ^4.1.0 @@ -7361,7 +7499,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cronstrue: ^2.2.0 js-yaml: ^4.0.0 kubernetes-models: ^4.1.0 @@ -7423,7 +7561,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -7494,7 +7632,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^2.0.2 react-use: ^17.2.4 slugify: ^1.6.4 @@ -7521,9 +7659,9 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 classnames: ^2.3.1 - dompurify: ^2.3.6 + dompurify: ^3.0.0 lodash: ^4.17.21 luxon: ^3.0.0 material-ui-popup-state: ^1.9.3 @@ -7550,7 +7688,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -7574,7 +7712,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/parse-link-header": ^2.0.1 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.2.3 parse-link-header: ^2.0.0 react-use: ^17.2.4 @@ -7619,7 +7757,7 @@ __metadata: "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 luxon: ^3.3.0 react-use: ^17.2.4 @@ -7630,6 +7768,95 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-notifications-backend@workspace:^, @backstage/plugin-notifications-backend@workspace:plugins/notifications-backend": + version: 0.0.0-use.local + resolution: "@backstage/plugin-notifications-backend@workspace:plugins/notifications-backend" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-events-node": "workspace:^" + "@backstage/plugin-notifications-common": "workspace:^" + "@backstage/plugin-notifications-node": "workspace:^" + "@backstage/plugin-signals-node": "workspace:^" + "@types/express": ^4.17.6 + "@types/supertest": ^2.0.8 + express: ^4.17.1 + express-promise-router: ^4.1.0 + knex: ^3.0.0 + msw: ^1.0.0 + node-fetch: ^2.6.7 + supertest: ^6.2.4 + uuid: ^8.0.0 + winston: ^3.2.1 + yn: ^4.0.0 + languageName: unknown + linkType: soft + +"@backstage/plugin-notifications-common@workspace:^, @backstage/plugin-notifications-common@workspace:plugins/notifications-common": + version: 0.0.0-use.local + resolution: "@backstage/plugin-notifications-common@workspace:plugins/notifications-common" + dependencies: + "@backstage/cli": "workspace:^" + "@material-ui/icons": ^4.9.1 + languageName: unknown + linkType: soft + +"@backstage/plugin-notifications-node@workspace:^, @backstage/plugin-notifications-node@workspace:plugins/notifications-node": + version: 0.0.0-use.local + resolution: "@backstage/plugin-notifications-node@workspace:plugins/notifications-node" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/plugin-notifications-common": "workspace:^" + "@backstage/plugin-signals-node": "workspace:^" + "@backstage/test-utils": "workspace:^" + knex: ^3.0.0 + msw: ^1.0.0 + uuid: ^8.0.0 + languageName: unknown + linkType: soft + +"@backstage/plugin-notifications@workspace:^, @backstage/plugin-notifications@workspace:plugins/notifications": + version: 0.0.0-use.local + resolution: "@backstage/plugin-notifications@workspace:plugins/notifications" + dependencies: + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-notifications-common": "workspace:^" + "@backstage/plugin-signals-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" + "@material-ui/core": ^4.9.13 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": ^4.0.0-alpha.61 + "@testing-library/jest-dom": ^6.0.0 + "@testing-library/react": ^14.0.0 + "@testing-library/user-event": ^14.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + msw: ^1.0.0 + react-relative-time: ^0.0.9 + react-use: ^17.2.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + languageName: unknown + linkType: soft + "@backstage/plugin-octopus-deploy@workspace:^, @backstage/plugin-octopus-deploy@workspace:plugins/octopus-deploy": version: 0.0.0-use.local resolution: "@backstage/plugin-octopus-deploy@workspace:plugins/octopus-deploy" @@ -7644,7 +7871,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -7667,9 +7894,9 @@ __metadata: "@material-ui/pickers": ^3.3.10 "@material-ui/styles": ^4.11.5 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 axios: ^1.4.0 - date-fns: ^2.30.0 + date-fns: ^3.0.0 lodash: ^4.17.21 recharts: ^2.5.0 peerDependencies: @@ -7697,7 +7924,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -7714,9 +7941,11 @@ __metadata: "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/core-app-api": "workspace:^" + "@backstage/core-compat-api": "workspace:^" "@backstage/core-components": "workspace:^" "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" + "@backstage/frontend-plugin-api": "workspace:^" "@backstage/plugin-catalog": "workspace:^" "@backstage/plugin-catalog-common": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" @@ -7731,7 +7960,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 p-limit: ^3.1.0 pluralize: ^8.0.0 @@ -7764,7 +7993,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 react-use: ^17.2.4 peerDependencies: @@ -7808,7 +8037,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 react-use: ^17.2.4 peerDependencies: @@ -7897,7 +8126,24 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-react@^0.4.19, @backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": +"@backstage/plugin-permission-react@npm:^0.4.19": + version: 0.4.19 + resolution: "@backstage/plugin-permission-react@npm:0.4.19" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.8.2 + "@backstage/plugin-permission-common": ^0.7.12 + "@types/react": ^16.13.1 || ^17.0.0 + swr: ^2.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 256ea54e395faeacb827d3e691dfd584e9f863c4a97af34468b3a49d252506e2d6f5672c011f8d05725374fa11f98ce50ed359c6c078855f13b5cce2e6a52bc7 + languageName: node + linkType: hard + +"@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react" dependencies: @@ -7908,7 +8154,7 @@ __metadata: "@backstage/test-utils": "workspace:^" "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 swr: ^2.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 @@ -7981,7 +8227,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 msw: ^1.0.0 pluralize: ^8.0.0 @@ -8041,7 +8287,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.1 react-use: ^17.2.4 peerDependencies: @@ -8092,7 +8338,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 react-sparklines: ^1.7.0 react-use: ^17.2.4 @@ -8119,6 +8365,44 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@workspace:^, @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@workspace:plugins/scaffolder-backend-module-bitbucket-cloud": + version: 0.0.0-use.local + resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@workspace:plugins/scaffolder-backend-module-bitbucket-cloud" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-scaffolder-node": "workspace:^" + fs-extra: 10.1.0 + msw: ^1.0.0 + node-fetch: ^2.6.7 + yaml: ^2.0.0 + languageName: unknown + linkType: soft + +"@backstage/plugin-scaffolder-backend-module-bitbucket-server@workspace:^, @backstage/plugin-scaffolder-backend-module-bitbucket-server@workspace:plugins/scaffolder-backend-module-bitbucket-server": + version: 0.0.0-use.local + resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket-server@workspace:plugins/scaffolder-backend-module-bitbucket-server" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-scaffolder-node": "workspace:^" + fs-extra: 10.1.0 + msw: ^1.0.0 + node-fetch: ^2.6.7 + yaml: ^2.0.0 + languageName: unknown + linkType: soft + "@backstage/plugin-scaffolder-backend-module-bitbucket@workspace:^, @backstage/plugin-scaffolder-backend-module-bitbucket@workspace:plugins/scaffolder-backend-module-bitbucket": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket@workspace:plugins/scaffolder-backend-module-bitbucket" @@ -8130,6 +8414,8 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^" + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^" "@backstage/plugin-scaffolder-node": "workspace:^" fs-extra: 10.1.0 msw: ^1.0.0 @@ -8319,6 +8605,8 @@ __metadata: "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-scaffolder-backend-module-azure": "workspace:^" "@backstage/plugin-scaffolder-backend-module-bitbucket": "workspace:^" + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "workspace:^" + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "workspace:^" "@backstage/plugin-scaffolder-backend-module-gerrit": "workspace:^" "@backstage/plugin-scaffolder-backend-module-github": "workspace:^" "@backstage/plugin-scaffolder-backend-module-gitlab": "workspace:^" @@ -8331,7 +8619,7 @@ __metadata: "@types/nunjucks": ^3.1.4 "@types/supertest": ^2.0.8 "@types/zen-observable": ^0.8.0 - esbuild: ^0.19.0 + esbuild: ^0.20.0 express: ^4.17.1 express-promise-router: ^4.1.0 fs-extra: 10.1.0 @@ -8413,11 +8701,11 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 - "@rjsf/core": 5.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -8425,7 +8713,7 @@ __metadata: "@types/humanize-duration": ^3.18.1 "@types/json-schema": ^7.0.9 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 classnames: ^2.2.6 flatted: 3.2.9 humanize-duration: ^3.25.1 @@ -8477,18 +8765,18 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 - "@rjsf/core": 5.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 "@types/humanize-duration": ^3.18.1 "@types/json-schema": ^7.0.9 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@uiw/react-codemirror": ^4.9.3 classnames: ^2.2.6 event-source-polyfill: ^1.0.31 @@ -8693,7 +8981,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-common@workspace:^, @backstage/plugin-search-common@workspace:plugins/search-common": +"@backstage/plugin-search-common@^1.2.10, @backstage/plugin-search-common@workspace:^, @backstage/plugin-search-common@workspace:plugins/search-common": version: 0.0.0-use.local resolution: "@backstage/plugin-search-common@workspace:plugins/search-common" dependencies: @@ -8726,7 +9014,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 qs: ^6.9.4 react-use: ^17.3.2 @@ -8761,7 +9049,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 history: ^5.0.0 qs: ^6.9.4 react-use: ^17.2.4 @@ -8790,7 +9078,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 react-sparklines: ^1.7.0 react-use: ^17.2.4 @@ -8817,7 +9105,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/zen-observable": ^0.8.2 react-hook-form: ^7.12.2 react-use: ^17.2.4 @@ -8975,7 +9263,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 luxon: ^3.0.0 msw: ^1.0.0 @@ -9007,7 +9295,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 luxon: ^3.0.0 react-use: ^17.2.4 peerDependencies: @@ -9049,7 +9337,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 lodash: ^4.17.21 msw: ^1.0.0 @@ -9078,7 +9366,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -9093,10 +9381,14 @@ __metadata: resolution: "@backstage/plugin-tech-insights-backend-module-jsonfc@workspace:plugins/tech-insights-backend-module-jsonfc" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-tech-insights-common": "workspace:^" "@backstage/plugin-tech-insights-node": "workspace:^" + "@backstage/types": "workspace:^" ajv: ^8.10.0 json-rules-engine: ^6.1.2 lodash: ^4.17.21 @@ -9110,6 +9402,7 @@ __metadata: resolution: "@backstage/plugin-tech-insights-backend@workspace:plugins/tech-insights-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" @@ -9154,6 +9447,7 @@ __metadata: resolution: "@backstage/plugin-tech-insights-node@workspace:plugins/tech-insights-node" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-tech-insights-common": "workspace:^" @@ -9183,7 +9477,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 qs: ^6.9.4 react-use: ^17.2.4 peerDependencies: @@ -9213,7 +9507,7 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/color": ^3.0.1 "@types/d3-force": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 color: ^4.0.1 d3-force: ^3.0.0 react-use: ^17.2.4 @@ -9240,7 +9534,7 @@ __metadata: "@backstage/test-utils": "workspace:^" "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 testing-library__dom: ^7.29.4-beta.1 peerDependencies: "@testing-library/react": ^12.1.3 || ^13.0.0 || ^14.0.0 @@ -9297,7 +9591,7 @@ __metadata: "@backstage/test-utils": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -9371,7 +9665,7 @@ __metadata: "@material-ui/styles": ^4.11.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 jss: ~10.10.0 lodash: ^4.17.21 react-helmet: 6.1.0 @@ -9414,11 +9708,11 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/dompurify": ^2.2.2 + "@types/dompurify": ^3.0.0 "@types/event-source-polyfill": ^1.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 canvas: ^2.10.2 - dompurify: ^2.2.9 + dompurify: ^3.0.0 event-source-polyfill: 1.0.25 git-url-parse: ^13.0.0 jss: ~10.10.0 @@ -9446,6 +9740,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/repo-tools": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -9527,7 +9822,7 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 zen-observable: ^0.10.0 @@ -9595,7 +9890,7 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 msw: ^1.0.0 react-use: ^17.2.4 peerDependencies: @@ -9623,7 +9918,7 @@ __metadata: "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 lodash: ^4.17.21 luxon: ^3.0.0 react-use: ^17.2.4 @@ -9646,7 +9941,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/repo-tools@workspace:*, @backstage/repo-tools@workspace:packages/repo-tools": +"@backstage/repo-tools@workspace:*, @backstage/repo-tools@workspace:^, @backstage/repo-tools@workspace:packages/repo-tools": version: 0.0.0-use.local resolution: "@backstage/repo-tools@workspace:packages/repo-tools" dependencies: @@ -9717,7 +10012,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^6.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 cross-fetch: ^4.0.0 i18next: ^22.4.15 msw: ^1.0.0 @@ -9730,26 +10025,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@^0.5.0, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": - version: 0.0.0-use.local - resolution: "@backstage/theme@workspace:packages/theme" - dependencies: - "@backstage/cli": "workspace:^" - "@emotion/react": ^11.10.5 - "@emotion/styled": ^11.10.5 - "@mui/material": ^5.12.2 - "@mui/styles": ^5.14.18 - "@testing-library/jest-dom": ^6.0.0 - "@testing-library/react": ^14.0.0 - "@types/react": ^16.13.1 || ^17.0.0 - peerDependencies: - "@material-ui/core": ^4.12.2 - "@types/react": ^16.13.1 || ^17.0.0 - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft - "@backstage/theme@npm:^0.4.4": version: 0.4.4 resolution: "@backstage/theme@npm:0.4.4" @@ -9766,6 +10041,42 @@ __metadata: languageName: node linkType: hard +"@backstage/theme@npm:^0.5.0": + version: 0.5.0 + resolution: "@backstage/theme@npm:0.5.0" + dependencies: + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + checksum: b3f7ebb3d37daa72ea41ff2cd2bc01df2fcdacf411576e28c8a8b8c9c656c3c2f7e1ce6e82d00add10aecbcaf58f6024cc87a47986618d61eb8b95ec85464d37 + languageName: node + linkType: hard + +"@backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": + version: 0.0.0-use.local + resolution: "@backstage/theme@workspace:packages/theme" + dependencies: + "@backstage/cli": "workspace:^" + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + "@mui/styles": ^5.14.18 + "@testing-library/jest-dom": ^6.0.0 + "@testing-library/react": ^14.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + languageName: unknown + linkType: soft + "@backstage/types@^1.1.1, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" @@ -10477,6 +10788,33 @@ __metadata: languageName: node linkType: hard +"@ericcornelissen/bash-parser@npm:0.5.2": + version: 0.5.2 + resolution: "@ericcornelissen/bash-parser@npm:0.5.2" + dependencies: + array-last: ^1.1.1 + babylon: ^6.9.1 + compose-function: ^3.0.3 + deep-freeze: 0.0.1 + filter-iterator: 0.0.1 + filter-obj: ^1.1.0 + has-own-property: ^0.1.0 + identity-function: ^1.0.0 + is-iterable: ^1.1.0 + iterable-lookahead: ^1.0.0 + lodash.curry: ^4.1.1 + magic-string: ^0.16.0 + map-obj: ^2.0.0 + object-pairs: ^0.1.0 + object-values: ^1.0.0 + reverse-arguments: ^1.0.0 + shell-quote-word: ^1.0.1 + to-pascal-case: ^1.0.0 + unescape-js: ^1.0.5 + checksum: ed6feb775a45e529e36b8ab01cfe2ba39446d8403f30022d4c00f009a45ae47e9c2fd43d5607b7120366c29c42aaf4c5b0bc202066e71d543f3cde235240a87b + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/aix-ppc64@npm:0.19.12" @@ -10484,6 +10822,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/aix-ppc64@npm:0.20.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm64@npm:0.16.17" @@ -10505,6 +10850,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm64@npm:0.20.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm@npm:0.16.17" @@ -10526,6 +10878,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm@npm:0.20.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-x64@npm:0.16.17" @@ -10547,6 +10906,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-x64@npm:0.20.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-arm64@npm:0.16.17" @@ -10568,6 +10934,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-arm64@npm:0.20.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/darwin-x64@npm:0.16.17" @@ -10589,6 +10962,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-x64@npm:0.20.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-arm64@npm:0.16.17" @@ -10610,6 +10990,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-arm64@npm:0.20.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/freebsd-x64@npm:0.16.17" @@ -10631,6 +11018,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-x64@npm:0.20.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm64@npm:0.16.17" @@ -10652,6 +11046,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm64@npm:0.20.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-arm@npm:0.16.17" @@ -10673,6 +11074,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm@npm:0.20.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ia32@npm:0.16.17" @@ -10694,6 +11102,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ia32@npm:0.20.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-loong64@npm:0.16.17" @@ -10715,6 +11130,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-loong64@npm:0.20.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-mips64el@npm:0.16.17" @@ -10736,6 +11158,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-mips64el@npm:0.20.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-ppc64@npm:0.16.17" @@ -10757,6 +11186,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ppc64@npm:0.20.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-riscv64@npm:0.16.17" @@ -10778,6 +11214,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-riscv64@npm:0.20.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-s390x@npm:0.16.17" @@ -10799,6 +11242,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-s390x@npm:0.20.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/linux-x64@npm:0.16.17" @@ -10820,6 +11270,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-x64@npm:0.20.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/netbsd-x64@npm:0.16.17" @@ -10841,6 +11298,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/netbsd-x64@npm:0.20.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/openbsd-x64@npm:0.16.17" @@ -10862,6 +11326,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/openbsd-x64@npm:0.20.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/sunos-x64@npm:0.16.17" @@ -10883,6 +11354,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/sunos-x64@npm:0.20.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-arm64@npm:0.16.17" @@ -10904,6 +11382,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-arm64@npm:0.20.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-ia32@npm:0.16.17" @@ -10925,6 +11410,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-ia32@npm:0.20.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/win32-x64@npm:0.16.17" @@ -10946,6 +11438,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-x64@npm:0.20.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -11123,14 +11622,14 @@ __metadata: languageName: node linkType: hard -"@gitbeaker/core@npm:^39.30.0": - version: 39.30.0 - resolution: "@gitbeaker/core@npm:39.30.0" +"@gitbeaker/core@npm:^39.34.2": + version: 39.34.2 + resolution: "@gitbeaker/core@npm:39.34.2" dependencies: - "@gitbeaker/requester-utils": ^39.30.0 + "@gitbeaker/requester-utils": ^39.34.2 qs: ^6.11.2 xcase: ^2.0.1 - checksum: 4724659bab57cde13b63bba7ffad52651ebb726c444bb1d6c1c69c70efb89ed3d319abf12c117f9a8ab6741cc26e6a19c23e237bebd07d13b2f8c970171dc069 + checksum: 3c1db0ed169d83c2f6631d34a3dd5b4dde597480e47b1f212fab00e2eb31ff2759e3f983475a4dc368df8811642c0c2822039d87461dcee7ac4b5bd2fa04adab languageName: node linkType: hard @@ -11158,46 +11657,46 @@ __metadata: languageName: node linkType: hard -"@gitbeaker/requester-utils@npm:^39.30.0": - version: 39.30.0 - resolution: "@gitbeaker/requester-utils@npm:39.30.0" +"@gitbeaker/requester-utils@npm:^39.34.2": + version: 39.34.2 + resolution: "@gitbeaker/requester-utils@npm:39.34.2" dependencies: picomatch-browser: ^2.2.6 qs: ^6.11.2 rate-limiter-flexible: ^4.0.0 xcase: ^2.0.1 - checksum: 05a60b027736edd165341c88ddbe095c78e77616f60033a9c9b419b657cd7d9998a9a801470a88d25d96be44b3a5233e3f1a4042aee075872f2882d10122db69 + checksum: ae70d558ce13af56e2b0b31330b76f2b528a503a27e9f152d4224d1c165f08f20109fff6dabea5ac4679a6c07e49f9025149a3fab4aabe3cd03754d8b138b5f9 languageName: node linkType: hard "@gitbeaker/rest@npm:^39.25.0": - version: 39.30.0 - resolution: "@gitbeaker/rest@npm:39.30.0" + version: 39.34.2 + resolution: "@gitbeaker/rest@npm:39.34.2" dependencies: - "@gitbeaker/core": ^39.30.0 - "@gitbeaker/requester-utils": ^39.30.0 - checksum: 2b04dbb28c1a5f47c067c376ff0b4664278d72dcdef7696646a6d9331a400d9dfe75382e041a0a683fdc5ac1805abdb2919455fea786fd97f0eb65a5473d3fb5 + "@gitbeaker/core": ^39.34.2 + "@gitbeaker/requester-utils": ^39.34.2 + checksum: e224214b816b9a9e38c77b0eb604aa456793ea7610e7f426899579ab738abe4b8aeafb0f6b9e94ccde9d5fd82cc4d6af0d51cc50174173184df2e7a8be18af5b languageName: node linkType: hard "@google-cloud/container@npm:^5.0.0": - version: 5.4.1 - resolution: "@google-cloud/container@npm:5.4.1" + version: 5.6.0 + resolution: "@google-cloud/container@npm:5.6.0" dependencies: google-gax: ^4.0.3 - checksum: 93f06b3171805c85d2ec8fa959e3caa147f1560da5c90082e23e1ccbd6ef88756e3271dbf3db139fefaa48874222f7e9e4a7dc5fb7da54a2e7ecd80db472ecf7 + checksum: 3222a86659e250e82694da16d0efa67855b905b931c08901d6aff0daf3d41b300cea3937342f3f6e9995f9dacf3a61914c74d45b2dea627aceedf87415b0aa3e languageName: node linkType: hard "@google-cloud/firestore@npm:^7.0.0": - version: 7.2.0 - resolution: "@google-cloud/firestore@npm:7.2.0" + version: 7.3.0 + resolution: "@google-cloud/firestore@npm:7.3.0" dependencies: fast-deep-equal: ^3.1.1 functional-red-black-tree: ^1.0.1 google-gax: ^4.0.4 protobufjs: ^7.2.5 - checksum: 2f9a5fa24741bb3e93c6dad2a366d8bfdab2a05d1a742a842eb432cc0e9e6cfc05828b0f6215827aa0da875556a329d1a39f06349b5b371b8dec685cd3225d6b + checksum: 6e12f011250ee6e3f8a522ab02d706af7966675b6653e77734929fce1493efc9fed90de398900228da660f4f4738ccafa2bad96f4573e8097267c67f1ab87f90 languageName: node linkType: hard @@ -11250,9 +11749,9 @@ __metadata: languageName: node linkType: hard -"@graphiql/react@npm:^0.20.0, @graphiql/react@npm:^0.20.2": - version: 0.20.2 - resolution: "@graphiql/react@npm:0.20.2" +"@graphiql/react@npm:^0.20.0, @graphiql/react@npm:^0.20.2, @graphiql/react@npm:^0.20.3": + version: 0.20.3 + resolution: "@graphiql/react@npm:0.20.3" dependencies: "@graphiql/toolkit": ^0.9.1 "@headlessui/react": ^1.7.15 @@ -11273,7 +11772,7 @@ __metadata: graphql: ^15.5.0 || ^16.0.0 react: ^16.8.0 || ^17 || ^18 react-dom: ^16.8.0 || ^17 || ^18 - checksum: 76bd00fd144b1e3044e3239d80fbda49795e5eb41d222da373af11819d06f657a430eff6853e93724134538f3c5e619e0ecf9111b0818fe14569edb290106c84 + checksum: e8b362bd67ff5499c8db64097f9a4050782be53420e27b4c84ad1eba99c9615984257b7a19d0fd9c6f72ce92366321014b04762b400403ee52f53248dd7a8785 languageName: node linkType: hard @@ -12844,9 +13343,9 @@ __metadata: languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.25.15": - version: 0.25.15 - resolution: "@mswjs/interceptors@npm:0.25.15" +"@mswjs/interceptors@npm:^0.25.16": + version: 0.25.16 + resolution: "@mswjs/interceptors@npm:0.25.16" dependencies: "@open-draft/deferred-promise": ^2.2.0 "@open-draft/logger": ^0.3.0 @@ -12854,7 +13353,7 @@ __metadata: is-node-process: ^1.2.0 outvariant: ^1.2.1 strict-event-emitter: ^0.5.1 - checksum: dbe43f2df398bbe48ee5ea4ecf055144c9c5689218e5955b01378ea084044dab992d1b434d3533e75df044030a976402e53ec65d743c2619e024defd75ffc076 + checksum: 862eb02be5f7606c643793b66b50b75e6a00784c4c6fcca3db7a52391f01a557f404d178493e716b9190412317a5fa7177abb33bfa4be576a08be4ba4e765575 languageName: node linkType: hard @@ -13116,14 +13615,47 @@ __metadata: linkType: hard "@newrelic/browser-agent@npm:^1.236.0": - version: 1.250.0 - resolution: "@newrelic/browser-agent@npm:1.250.0" + version: 1.251.1 + resolution: "@newrelic/browser-agent@npm:1.251.1" dependencies: core-js: ^3.26.0 fflate: ^0.7.4 rrweb: 2.0.0-alpha.11 web-vitals: ^3.1.0 - checksum: 4cea599b5544c3981c8a564cd1f31cce33c286130cab8cfdb7adc08adf47499d525f0a555d648f0aa17ccb23749e572fb548a84c061c789a996dc264de5ed7cc + checksum: ae91ac13978131258b245ffebeaad91108cf78732aa7fa4305ca2b57b9d8fc91235b76ae3e0c42f5e6d6b07de5ccf205bce15d7cc8ebaa62e4fe8d1590b53bff + languageName: node + linkType: hard + +"@node-saml/node-saml@npm:^4.0.4": + version: 4.0.5 + resolution: "@node-saml/node-saml@npm:4.0.5" + dependencies: + "@types/debug": ^4.1.7 + "@types/passport": ^1.0.11 + "@types/xml-crypto": ^1.4.2 + "@types/xml-encryption": ^1.2.1 + "@types/xml2js": ^0.4.11 + "@xmldom/xmldom": ^0.8.6 + debug: ^4.3.4 + xml-crypto: ^3.0.1 + xml-encryption: ^3.0.2 + xml2js: ^0.5.0 + xmlbuilder: ^15.1.1 + checksum: 7d97575111a381ef2d0f16e1fc85ae3f84322ccba06dcb0594b00cf598e429658f45e479b78836943f69f249c08a8593e5168404acf7f1ed659ead53ceef465e + languageName: node + linkType: hard + +"@node-saml/passport-saml@npm:^4.0.4": + version: 4.0.4 + resolution: "@node-saml/passport-saml@npm:4.0.4" + dependencies: + "@node-saml/node-saml": ^4.0.4 + "@types/express": ^4.17.14 + "@types/passport": ^1.0.11 + "@types/passport-strategy": ^0.2.35 + passport: ^0.6.0 + passport-strategy: ^1.0.0 + checksum: 75178669d7d47038c33bb0602454cb5030fc9b3ecdcae9163a35cef436bc6c22e68e57d06213e0118ff1cb0dcd2f2fa25112672ebe4cbad90578df21bec67fce languageName: node linkType: hard @@ -13137,6 +13669,16 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:3.0.0": + version: 3.0.0 + resolution: "@nodelib/fs.scandir@npm:3.0.0" + dependencies: + "@nodelib/fs.stat": 3.0.0 + run-parallel: ^1.2.0 + checksum: f4e9d07b310f248503d3cd632310b25cd01d97a74701bc59e1458bad32c84f78615d9853820adba8af73d970868aab46de68e540ca7efd90dacd4ea34d05553d + languageName: node + linkType: hard + "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" @@ -13144,6 +13686,23 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.stat@npm:3.0.0": + version: 3.0.0 + resolution: "@nodelib/fs.stat@npm:3.0.0" + checksum: 93a93e19b64d0275b5120bed2cf85da4c5804014de1bdac6e9933b835b1cb9f88252dc990b148076bec034fc757bdd97d74cf5d99bc9f895e0f925aeabe7dbcf + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:2.0.0": + version: 2.0.0 + resolution: "@nodelib/fs.walk@npm:2.0.0" + dependencies: + "@nodelib/fs.scandir": 3.0.0 + fastq: ^1.15.0 + checksum: f900965bc3953a67cb74916ec0950cd5d58006a9218aef99928cc22dd77d117376aaf710e46c740d18638a99337a4e81cbf70c892a2124269bf177c459d89837 + languageName: node + linkType: hard + "@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" @@ -13254,6 +13813,22 @@ __metadata: languageName: node linkType: hard +"@npmcli/git@npm:^5.0.0": + version: 5.0.4 + resolution: "@npmcli/git@npm:5.0.4" + dependencies: + "@npmcli/promise-spawn": ^7.0.0 + lru-cache: ^10.0.1 + npm-pick-manifest: ^9.0.0 + proc-log: ^3.0.0 + promise-inflight: ^1.0.1 + promise-retry: ^2.0.1 + semver: ^7.3.5 + which: ^4.0.0 + checksum: 3c4adb7294eb7562cb0d908f36e1967ae6bde438192affd7f103cdeebbd9b2d83cd6b41b7db2278c9acd934c4af138baa094544e8e8a530b515c4084438d0170 + languageName: node + linkType: hard + "@npmcli/installed-package-contents@npm:^1.0.6, @npmcli/installed-package-contents@npm:^1.0.7": version: 1.0.7 resolution: "@npmcli/installed-package-contents@npm:1.0.7" @@ -13266,6 +13841,18 @@ __metadata: languageName: node linkType: hard +"@npmcli/map-workspaces@npm:3.0.4": + version: 3.0.4 + resolution: "@npmcli/map-workspaces@npm:3.0.4" + dependencies: + "@npmcli/name-from-folder": ^2.0.0 + glob: ^10.2.2 + minimatch: ^9.0.0 + read-package-json-fast: ^3.0.0 + checksum: 99607dbc502b16d0ce7a47a81ccc496b3f5ed10df4e61e61a505929de12c356092996044174ae0cfd6d8cc177ef3b597eef4987b674fc0c5a306d3a8cc1fe91a + languageName: node + linkType: hard + "@npmcli/map-workspaces@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/map-workspaces@npm:2.0.0" @@ -13317,6 +13904,13 @@ __metadata: languageName: node linkType: hard +"@npmcli/name-from-folder@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/name-from-folder@npm:2.0.0" + checksum: fb3ef891aa57315fb6171866847f298577c8bda98a028e93e458048477133e142b4eb45ce9f3b80454f7c257612cb01754ee782d608507698dd712164436f5bd + languageName: node + linkType: hard + "@npmcli/node-gyp@npm:^1.0.2, @npmcli/node-gyp@npm:^1.0.3": version: 1.0.3 resolution: "@npmcli/node-gyp@npm:1.0.3" @@ -13324,6 +13918,21 @@ __metadata: languageName: node linkType: hard +"@npmcli/package-json@npm:5.0.0": + version: 5.0.0 + resolution: "@npmcli/package-json@npm:5.0.0" + dependencies: + "@npmcli/git": ^5.0.0 + glob: ^10.2.2 + hosted-git-info: ^7.0.0 + json-parse-even-better-errors: ^3.0.0 + normalize-package-data: ^6.0.0 + proc-log: ^3.0.0 + semver: ^7.5.3 + checksum: 0d128e84e05e8a1771c8cc1f4232053fecf32e28f44e123ad16366ca3a7fd06f272f25f0b7d058f2763cab26bc479c8fc3c570af5de6324b05cb39868dcc6264 + languageName: node + linkType: hard + "@npmcli/package-json@npm:^1.0.1": version: 1.0.1 resolution: "@npmcli/package-json@npm:1.0.1" @@ -13342,6 +13951,15 @@ __metadata: languageName: node linkType: hard +"@npmcli/promise-spawn@npm:^7.0.0": + version: 7.0.1 + resolution: "@npmcli/promise-spawn@npm:7.0.1" + dependencies: + which: ^4.0.0 + checksum: a2b25d66d4dc835c69593bdf56588d66299fde3e80be4978347e686f24647007b794ce4da4cfcfcc569c67112720b746c4e7bf18ce45c096712d8b75fed19ec7 + languageName: node + linkType: hard + "@npmcli/run-script@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/run-script@npm:2.0.0" @@ -14207,13 +14825,13 @@ __metadata: linkType: hard "@playwright/test@npm:^1.32.3": - version: 1.41.1 - resolution: "@playwright/test@npm:1.41.1" + version: 1.41.2 + resolution: "@playwright/test@npm:1.41.2" dependencies: - playwright: 1.41.1 + playwright: 1.41.2 bin: playwright: cli.js - checksum: d9877e777a1a7f60f097df57b6abc2478e2ae342930a409c8546c8aa40d6e206cbc16bf1c71b23414ac3fbad36dcae1ad79635d7f4eb705ab54d3c705e82ea04 + checksum: 87d9e725106111b2af1b2dec32454cd2a2d9665ff735669dc751caa30240e6db595ecfb9422719fa65dcff6ca19dea93ac2ae70d587efddde31def0754549d4c languageName: node linkType: hard @@ -14256,6 +14874,141 @@ __metadata: languageName: node linkType: hard +"@pnpm/constants@npm:7.1.1": + version: 7.1.1 + resolution: "@pnpm/constants@npm:7.1.1" + checksum: a8b6a8c633ba2099ee844a3dd7934352a2135872e86f8fe497d599837b8be7eac374839598b70030e63cb3a32f945e881d6c0e1542f0be2b74ec52d78f891649 + languageName: node + linkType: hard + +"@pnpm/core-loggers@npm:9.0.6": + version: 9.0.6 + resolution: "@pnpm/core-loggers@npm:9.0.6" + dependencies: + "@pnpm/types": 9.4.2 + peerDependencies: + "@pnpm/logger": ^5.0.0 + checksum: ab0656839c873f5954109d540ca2a7b144626036c7f78ef4a7717e755449f9c7acda3a425b83ebc1349ad5ce295f2b6e9b133be14294b11c5df6a0f8b4feaea1 + languageName: node + linkType: hard + +"@pnpm/error@npm:5.0.2": + version: 5.0.2 + resolution: "@pnpm/error@npm:5.0.2" + dependencies: + "@pnpm/constants": 7.1.1 + checksum: 490e90b3a6fa6527a5a2b07dfd46982e005d8834036871a30cf03fcb389497b9828ed01c0d39e88b6352a340556de316eae9dbefcb3246f368815a03241576e6 + languageName: node + linkType: hard + +"@pnpm/fetching-types@npm:5.0.0": + version: 5.0.0 + resolution: "@pnpm/fetching-types@npm:5.0.0" + dependencies: + "@zkochan/retry": ^0.2.0 + node-fetch: 3.0.0-beta.9 + checksum: 845c1597be6246f484477c3badce5573a1ab35c741f59e297813faf195d07e4c03ca871beb10d614a987a4dff78bd72265c0bd56c40cbf941e416b1f3ea6231c + languageName: node + linkType: hard + +"@pnpm/graceful-fs@npm:3.2.0": + version: 3.2.0 + resolution: "@pnpm/graceful-fs@npm:3.2.0" + dependencies: + graceful-fs: ^4.2.11 + checksum: b31bad77530101d27044d2d712ecf09684398cc72311fbb079675f393219fff002a9ab8e3ea91014e79f1586a861a100ac9b4881d72156383aca6e85cf9855be + languageName: node + linkType: hard + +"@pnpm/logger@npm:5.0.0": + version: 5.0.0 + resolution: "@pnpm/logger@npm:5.0.0" + dependencies: + bole: ^5.0.0 + ndjson: ^2.0.0 + checksum: 6ea91cb3a539351371147b6f051489a01630538327bb3773105e91b9b35ec689b6fc1d112d484726deffe6953b738318e1a86205362baf9fb49fad27084b8f74 + languageName: node + linkType: hard + +"@pnpm/npm-package-arg@npm:^1.0.0": + version: 1.0.0 + resolution: "@pnpm/npm-package-arg@npm:1.0.0" + dependencies: + hosted-git-info: ^4.0.1 + semver: ^7.3.5 + validate-npm-package-name: ^4.0.0 + checksum: e3dbcb605b6c86e0d29854aab00af086fd922211c9c2ed4f4923a70947c10d563b5e9adc8441d7ec0a23d074edb9cd1f0c334b506c4ecc549b07b60700f3639a + languageName: node + linkType: hard + +"@pnpm/npm-resolver@npm:18.1.0": + version: 18.1.0 + resolution: "@pnpm/npm-resolver@npm:18.1.0" + dependencies: + "@pnpm/core-loggers": 9.0.6 + "@pnpm/error": 5.0.2 + "@pnpm/fetching-types": 5.0.0 + "@pnpm/graceful-fs": 3.2.0 + "@pnpm/resolve-workspace-range": 5.0.1 + "@pnpm/resolver-base": 11.1.0 + "@pnpm/types": 9.4.2 + "@zkochan/retry": ^0.2.0 + encode-registry: ^3.0.1 + load-json-file: ^6.2.0 + lru-cache: ^10.0.2 + normalize-path: ^3.0.0 + p-limit: ^3.1.0 + p-memoize: 4.0.1 + parse-npm-tarball-url: ^3.0.0 + path-temp: ^2.1.0 + ramda: "npm:@pnpm/ramda@0.28.1" + rename-overwrite: ^5.0.0 + semver: ^7.5.4 + ssri: 10.0.5 + version-selector-type: ^3.0.0 + peerDependencies: + "@pnpm/logger": ^5.0.0 + checksum: 81b0dd97a0062374db7aecd68a94e7e52dd19c9675bd052c7fa7a2b5edb6219dc525e71dccb70bf4bae90faf44f6e1cd0d4f155606bc754ffcec4f9ab6852c08 + languageName: node + linkType: hard + +"@pnpm/resolve-workspace-range@npm:5.0.1": + version: 5.0.1 + resolution: "@pnpm/resolve-workspace-range@npm:5.0.1" + dependencies: + semver: ^7.4.0 + checksum: 4c6a853b1f6d8030e5458d1d88891932e209ed35daa3032919802e6005a4beca5fa31ffd2769be1353a9f0367971afebd51493ab187ac675a73a35640a82aaa1 + languageName: node + linkType: hard + +"@pnpm/resolver-base@npm:11.1.0": + version: 11.1.0 + resolution: "@pnpm/resolver-base@npm:11.1.0" + dependencies: + "@pnpm/types": 9.4.2 + checksum: ff42d6f1bd3cfef46ab644709de13795af682c04575d782ec8cf32ef4b114486f22f3d758b1d94423ee8969fbb786a81d3a7b6fa52054af8e403b19f15a40b3f + languageName: node + linkType: hard + +"@pnpm/types@npm:9.4.2": + version: 9.4.2 + resolution: "@pnpm/types@npm:9.4.2" + checksum: a499e5442c53c38820730e626eb75b67305c838d486e2544527a1dd7bc2666ac75e91db8bc8b6ee7776927593297339468e212d239f27b0d0520ee972ab8b0b9 + languageName: node + linkType: hard + +"@pnpm/workspace.pkgs-graph@npm:^2.0.14": + version: 2.0.14 + resolution: "@pnpm/workspace.pkgs-graph@npm:2.0.14" + dependencies: + "@pnpm/npm-package-arg": ^1.0.0 + "@pnpm/npm-resolver": 18.1.0 + "@pnpm/resolve-workspace-range": 5.0.1 + ramda: "npm:@pnpm/ramda@0.28.1" + checksum: ff3b5234611da1ec4b636616554abcb4720c4fcd3db33bcb7b4b1e4ed5ebd091a854163876c1b1f7d56d2ec6e4f344c22eaf02054f2963d9a50a49462412793d + languageName: node + linkType: hard + "@popperjs/core@npm:^2.11.8": version: 2.11.8 resolution: "@popperjs/core@npm:2.11.8" @@ -14917,10 +15670,26 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.14.2": - version: 1.14.2 - resolution: "@remix-run/router@npm:1.14.2" - checksum: 8be55596f64563de95dea04c147ab67c4e6c9b72277c92d4de257dbb326e2aa16ad2adbdec32eb2c985808c642933ac895220654b8c899e4f4bd38f9fd97ff6e +"@react-hookz/web@npm:^24.0.0": + version: 24.0.4 + resolution: "@react-hookz/web@npm:24.0.4" + dependencies: + "@react-hookz/deep-equal": ^1.0.4 + peerDependencies: + js-cookie: ^3.0.5 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + checksum: 842dd51a2c875814c7468632315d756e79fcdff2882d7224e8e06c630f95ab788b6a59c29c0318cb049a18be97537803be8e3dbae12de34b2ae1290ababe266a + languageName: node + linkType: hard + +"@remix-run/router@npm:1.15.0": + version: 1.15.0 + resolution: "@remix-run/router@npm:1.15.0" + checksum: 0b5ea6b2e7bb7f3266005e033337a6fed29c458aa5ddc9a97a90ff19813ae6dfb4392871722d66d7e8db93a29760a8257830a9af58824b3a3363ed58e1e471d8 languageName: node linkType: hard @@ -14938,32 +15707,32 @@ __metadata: languageName: node linkType: hard -"@rjsf/core@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/core@npm:5.16.1" +"@rjsf/core@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/core@npm:5.17.0" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 - markdown-to-jsx: ^7.4.0 + markdown-to-jsx: ^7.4.1 nanoid: ^3.3.7 prop-types: ^15.8.1 peerDependencies: "@rjsf/utils": ^5.16.x react: ^16.14.0 || >=17 - checksum: 2f88dc6af9dda8ec5c8cbac63f3f9e776a11fe363ce938aa7b5c7a3baaa84a7a2f3796ebf55b361a8cb65267a1715ab880a4743636fb88e06b0240d07f0e4c7b + checksum: adfcbd1d44cef5f9e5de2873096085abd03b146dcef2c9c226060341ce2c935b5399e4ad5f00ad5091394224f5859bd6ac9bac533537dc5c8e2edb16b52b67cf languageName: node linkType: hard -"@rjsf/material-ui@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/material-ui@npm:5.16.1" +"@rjsf/material-ui@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/material-ui@npm:5.17.0" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.16.x "@rjsf/utils": ^5.16.x react: ^16.14.0 || >=17 - checksum: ca237b699d74246622f4a29078674bfbf9c8238adec7fda6a5062e064d11c6f15c6dba117daa21fe3ac778fa2e884fb2366b5c5bb5e9490f91f9b611f7f010fe + checksum: c56fb145042cd1af7c6f0e149f4c7e61a9c4b9cf9e6dce40cd4f691da569e7d14ca1b922a0f54aafd6ae6900772cdccbdf3719ea83a0be2d0cc3a5f0486939f3 languageName: node linkType: hard @@ -14982,9 +15751,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/utils@npm:5.16.1" +"@rjsf/utils@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/utils@npm:5.17.0" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -14993,13 +15762,13 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 0c69527de4ab6f9d6ec4d1a5e05a31a0a38062d40abe2a2da7bc2324b20b08b0e90c188977ac4408f3b004c758c28097444746f3215e21e184c11cad7e9278c1 + checksum: 01d0001f83083764a8552e009aa7df084621df9d1fc6ccdfad9d534513084421b1ad7494cab77b9b8205d680fd915f612d87800e20ab242e7066f33184c73d4f languageName: node linkType: hard -"@rjsf/validator-ajv8@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/validator-ajv8@npm:5.16.1" +"@rjsf/validator-ajv8@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/validator-ajv8@npm:5.17.0" dependencies: ajv: ^8.12.0 ajv-formats: ^2.1.1 @@ -15007,7 +15776,7 @@ __metadata: lodash-es: ^4.17.21 peerDependencies: "@rjsf/utils": ^5.16.x - checksum: ab26fc02ad86c7ff36e69aa1285b43a67aa65b2a47e3741a67c243131f74848e55f7215a20416c1a636703aa7f95af7d4270eda9818253f7ea2b3c5f86a26980 + checksum: c6e20e04b33e5b37e55a3d378add22c36970c9c92b6d692003acc5cfaff10282ead6ff775b1fa152ead66e451bc3f0cc518730c6f0ed68a7ecfbcd4098d59f32 languageName: node linkType: hard @@ -16026,6 +16795,19 @@ __metadata: languageName: node linkType: hard +"@snyk/github-codeowners@npm:1.1.0": + version: 1.1.0 + resolution: "@snyk/github-codeowners@npm:1.1.0" + dependencies: + commander: ^4.1.1 + ignore: ^5.1.8 + p-map: ^4.0.0 + bin: + github-codeowners: dist/cli.js + checksum: 133f867fa968f96229ebce724d8aedaa124218e20add96a3a7d39ea45e52007fee50cc90c39e406c9e662483d003da9326e00dc4d612afa5c2ca069d1cdab9d7 + languageName: node + linkType: hard + "@spotify/eslint-config-base@npm:^14.0.0": version: 14.0.1 resolution: "@spotify/eslint-config-base@npm:14.0.1" @@ -17024,90 +17806,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -17136,35 +17918,36 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard "@swc/helpers@npm:^0.5.0": - version: 0.5.3 - resolution: "@swc/helpers@npm:0.5.3" + version: 0.5.6 + resolution: "@swc/helpers@npm:0.5.6" dependencies: tslib: ^2.4.0 - checksum: 61c3f7ccd47fc70ad91437df88be6b458cdc11e311cb331288827d7c50befffc72aa18fe913ec2a9e70fbf44e4b818bed38bfd7c329d689e1ff3c198d084cd02 + checksum: 45de57097e1f6f356f571c7a4f55c692a46b0404c8601e5d9552e152000dfe541ff529d3d01c8a4abf60799d6e7d0078936e40be0a203ca356299d5d6adea765 languageName: node linkType: hard "@swc/jest@npm:^0.2.22": - version: 0.2.31 - resolution: "@swc/jest@npm:0.2.31" + version: 0.2.36 + resolution: "@swc/jest@npm:0.2.36" dependencies: "@jest/create-cache-key-function": ^29.7.0 + "@swc/counter": ^0.1.3 jsonc-parser: ^3.2.0 peerDependencies: "@swc/core": "*" - checksum: 1dae629a81a623de6a662dcac34a97f91986457f172bec1c8fc360d4407c2499dcbf73d420123996809366900ef785b2cbfda4f2f6acf2f1729e85f6f2b791b7 + checksum: 14f2e696ac093e23dae1e2e57d894bbcde4de6fe80341a26c8d0d8cbae5aae31832f8fa32dc698529f128d19a76aeedf2227f59480de6dab5eb3f30bfdf9b71a languageName: node linkType: hard @@ -17270,8 +18053,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.0.0": - version: 6.3.0 - resolution: "@testing-library/jest-dom@npm:6.3.0" + version: 6.4.2 + resolution: "@testing-library/jest-dom@npm:6.4.2" dependencies: "@adobe/css-tools": ^4.3.2 "@babel/runtime": ^7.9.2 @@ -17298,7 +18081,7 @@ __metadata: optional: true vitest: optional: true - checksum: cea8aa17895cf4aff573fedee80e8a592611caf7bc724702fc70b3b7bfee94becd3a10873c818d931424018d6fdeeca9d1a2ea5f53b74092ad5e8e09f03dde90 + checksum: 631aeadbf4e738080ae095242cf1a29a0b4ee2f09c8bdd0d3f00a923707da64c1617e088ba9a961d098481afabdc1d19149fb7ef98edf15132348eb222f345ae languageName: node linkType: hard @@ -17325,8 +18108,8 @@ __metadata: linkType: hard "@testing-library/react@npm:^14.0.0": - version: 14.1.2 - resolution: "@testing-library/react@npm:14.1.2" + version: 14.2.1 + resolution: "@testing-library/react@npm:14.2.1" dependencies: "@babel/runtime": ^7.12.5 "@testing-library/dom": ^9.0.0 @@ -17334,7 +18117,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 0269903e53412cf96fddb55c8a97a9987a89c3308d71fa1418fe61c47d275445e7044c5387f57cf39b8cda319a41623dbad2cce7a17016aed3a9e85185aac75a + checksum: 7054ae69a0e06c0777da8105fa08fac7e8dac570476a065285d7b993947acda5c948598764a203ebaac759c161c562d6712f19f5bd08be3f09a07e23baee5426 languageName: node linkType: hard @@ -17928,7 +18711,7 @@ __metadata: languageName: node linkType: hard -"@types/dompurify@npm:^2.1.0, @types/dompurify@npm:^2.2.2, @types/dompurify@npm:^2.3.3": +"@types/dompurify@npm:^2.1.0": version: 2.4.0 resolution: "@types/dompurify@npm:2.4.0" dependencies: @@ -17937,6 +18720,15 @@ __metadata: languageName: node linkType: hard +"@types/dompurify@npm:^3.0.0": + version: 3.0.5 + resolution: "@types/dompurify@npm:3.0.5" + dependencies: + "@types/trusted-types": "*" + checksum: ffc34eca6a4536e1c8c16a47cce2623c5a118a9785492e71230052d92933ff096d14326ff449031e8dfaac509413222372d8f2b28786a13159de6241df716185 + languageName: node + linkType: hard + "@types/ejs@npm:^3.1.3": version: 3.1.5 resolution: "@types/ejs@npm:3.1.5" @@ -17973,10 +18765,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a languageName: node linkType: hard @@ -18002,14 +18794,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.17.5": - version: 4.17.41 - resolution: "@types/express-serve-static-core@npm:4.17.41" + version: 4.17.43 + resolution: "@types/express-serve-static-core@npm:4.17.43" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: 12750f6511dd870bbaccfb8208ad1e79361cf197b147f62a3bedc19ec642f3a0f9926ace96705f4bc88ec2ae56f61f7ca8c2438e6b22f5540842b5569c28a121 + checksum: 08e940cae52eb1388a7b5f61d65f028e783add77d1854243ae920a6a2dfb5febb6acaafbcf38be9d678b0411253b9bc325893c463a93302405f24135664ab1e4 languageName: node linkType: hard @@ -18022,7 +18814,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.14, @types/express@npm:^4.17.17, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": version: 4.17.21 resolution: "@types/express@npm:4.17.21" dependencies: @@ -18221,12 +19013,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:^29.0.0, @types/jest@npm:^29.5.11": - version: 29.5.11 - resolution: "@types/jest@npm:29.5.11" + version: 29.5.12 + resolution: "@types/jest@npm:29.5.12" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: f892a06ec9f0afa9a61cd7fa316ec614e21d4df1ad301b5a837787e046fcb40dfdf7f264a55e813ac6b9b633cb9d366bd5b8d1cea725e84102477b366df23fdd + checksum: 19b1efdeed9d9a60a81edc8226cdeae5af7479e493eaed273e01243891c9651f7b8b4c08fc633a7d0d1d379b091c4179bbaa0807af62542325fd72f2dd17ce1c languageName: node linkType: hard @@ -18333,15 +19125,6 @@ __metadata: languageName: node linkType: hard -"@types/jwt-decode@npm:^3.1.0": - version: 3.1.0 - resolution: "@types/jwt-decode@npm:3.1.0" - dependencies: - jwt-decode: "*" - checksum: 82ff0b3826e5d9da48be1f11e16fec96e56dd946995edaa100682202b9b7beb30fb04a353cbabd378d3b13a24241b48a0b662a4f181bae7f758147d92368d930 - languageName: node - linkType: hard - "@types/keyv@npm:*, @types/keyv@npm:^3.1.1": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" @@ -18669,7 +19452,7 @@ __metadata: languageName: node linkType: hard -"@types/passport@npm:*, @types/passport@npm:^1.0.3": +"@types/passport@npm:*, @types/passport@npm:^1.0.11, @types/passport@npm:^1.0.3": version: 1.0.16 resolution: "@types/passport@npm:1.0.16" dependencies: @@ -18679,13 +19462,20 @@ __metadata: linkType: hard "@types/pg@npm:^8.6.6": - version: 8.10.9 - resolution: "@types/pg@npm:8.10.9" + version: 8.11.0 + resolution: "@types/pg@npm:8.11.0" dependencies: "@types/node": "*" pg-protocol: "*" pg-types: ^4.0.1 - checksum: c0c750af1f0945fe31c2793931da33bf596476ec8b52babfdb20f61006570c1c6c7f62f2dedd0cb9aefd2cddab238f2ed279337d3b2aa734ddd1ee8958e2355e + checksum: 8ae18abce86a012afdd68b2fb85a9fd0e9529f2dae8ca64311a4804fc8423441d605df51f547170efa4584c6ee9f919b4f5f731d5a6221386c5d04560de4334c + languageName: node + linkType: hard + +"@types/picomatch@npm:2.3.3": + version: 2.3.3 + resolution: "@types/picomatch@npm:2.3.3" + checksum: 1bf1a1d80296a585d3310c97be87e67e16da6f5c168e01ce27eef835abfc5bcca8e395afd6ae8b2b73eb72540d1587da7a468e4dfe7277ea208cf43cae096854 languageName: node linkType: hard @@ -18759,11 +19549,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18": - version: 18.2.18 - resolution: "@types/react-dom@npm:18.2.18" + version: 18.2.19 + resolution: "@types/react-dom@npm:18.2.19" dependencies: "@types/react": "*" - checksum: 8e3da404c980e2b2a76da3852f812ea6d8b9d0e7f5923fbaf3bfbbbfa1d59116ff91c129de8f68e9b7668a67ae34484fe9df74d5a7518cf8591ec07a0c4dad57 + checksum: 087a19d8e4c1c0900ec4ac5ddb749a811a38274b25683d233c11755d2895cc6e475e8bf9bea3dee36519769298e078d4c2feab9ab4bd13b26bc2a6170716437e languageName: node linkType: hard @@ -18861,13 +19651,13 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.2.48 - resolution: "@types/react@npm:18.2.48" + version: 18.2.55 + resolution: "@types/react@npm:18.2.55" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: c9ca43ed2995389b7e09492c24e6f911a8439bb8276dd17cc66a2fbebbf0b42daf7b2ad177043256533607c2ca644d7d928fdfce37a67af1f8646d2bac988900 + checksum: a8eb4fa77f73831b9112d4f11a7006217dc0740361649b9b0da3fd441d151a9cd415d5d68b91c0af4e430e063424d301c77489e5edaddc9f711c4e46cf9818a5 languageName: node linkType: hard @@ -18961,11 +19751,11 @@ __metadata: linkType: hard "@types/sanitize-html@npm:^2.6.2": - version: 2.9.5 - resolution: "@types/sanitize-html@npm:2.9.5" + version: 2.11.0 + resolution: "@types/sanitize-html@npm:2.11.0" dependencies: htmlparser2: ^8.0.0 - checksum: fd0afee5dac91aa2c42391f0c8c9254204f4ee1f10b902aa04e8f7809043d785e28af2732f75277ef09e46838013ad60abedb02ba1424b6218264f3333437fb5 + checksum: a901d55d31cd946a7fce0130cc7cf6bcf56602af9c87291be77d8149c60e7afc47c83ca74c67c2d84e6ba029fe9bbd6f14f89a8cb30fbd185766eebc5722c251 languageName: node linkType: hard @@ -19158,12 +19948,12 @@ __metadata: linkType: hard "@types/tar@npm:^6.1.1": - version: 6.1.10 - resolution: "@types/tar@npm:6.1.10" + version: 6.1.11 + resolution: "@types/tar@npm:6.1.11" dependencies: "@types/node": "*" minipass: ^4.0.0 - checksum: 82d46f1246e830b98833ed94fbdfbcb3ffb8a5d7173609622d56c9326124523a3cc541607876c63a6ab9117eb59fb37ef8a6284b194164ab1d1d8c03a8ba59c6 + checksum: 9b79f61f9179db65ecd3f5e9c0d2152839ad13381d39c38c3a9408aa1f3a2b061ba195e7d758be1863294a0ce69df6659f0e3e09f440c9f5309bded58bc87c89 languageName: node linkType: hard @@ -19305,7 +20095,26 @@ __metadata: languageName: node linkType: hard -"@types/xml2js@npm:*, @types/xml2js@npm:^0.4.7": +"@types/xml-crypto@npm:^1.4.2": + version: 1.4.6 + resolution: "@types/xml-crypto@npm:1.4.6" + dependencies: + "@types/node": "*" + xpath: 0.0.27 + checksum: e53516a2f5e4e018e164eb1cb9fc922294b9a339624e567c1c00a2b1496e9f86826210473e62ceb0b45949638c9d149da088b3598f6b3acd86e933f0a2b23f2c + languageName: node + linkType: hard + +"@types/xml-encryption@npm:^1.2.1": + version: 1.2.4 + resolution: "@types/xml-encryption@npm:1.2.4" + dependencies: + "@types/node": "*" + checksum: 1ef957dfb47cf55b12e114755e271a2343f73eb4c59ab6c68b0b7d1b8111d7e1bd8d2bfe0601d2aea09be83c66355bc77fc59f9b71aeff9bb9e15371bcfef5d3 + languageName: node + linkType: hard + +"@types/xml2js@npm:*, @types/xml2js@npm:^0.4.11, @types/xml2js@npm:^0.4.7": version: 0.4.14 resolution: "@types/xml2js@npm:0.4.14" dependencies: @@ -19361,14 +20170,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.19.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.19.1" + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.19.1 - "@typescript-eslint/type-utils": 6.19.1 - "@typescript-eslint/utils": 6.19.1 - "@typescript-eslint/visitor-keys": 6.19.1 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/type-utils": 6.21.0 + "@typescript-eslint/utils": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -19381,25 +20190,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: ad04000cd6c15d864ff92655baa3aec99bb0ccf4714fedd145fedde60a27590a5feafe480beb2f0f3864b416098bde1e9431bada7480eb7ca4efad891e1d2f6f + checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.7.2": - version: 6.19.1 - resolution: "@typescript-eslint/parser@npm:6.19.1" + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" dependencies: - "@typescript-eslint/scope-manager": 6.19.1 - "@typescript-eslint/types": 6.19.1 - "@typescript-eslint/typescript-estree": 6.19.1 - "@typescript-eslint/visitor-keys": 6.19.1 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: cd29619da08a2d9b7123ba4d8240989c747f8e0d5672179d8b147e413ee1334d1fa48570b0c37cf0ae4e26a275fd2d268cbe702c6fed639d3331abbb3292570a + checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 languageName: node linkType: hard @@ -19413,22 +20222,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/scope-manager@npm:6.19.1" +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" dependencies: - "@typescript-eslint/types": 6.19.1 - "@typescript-eslint/visitor-keys": 6.19.1 - checksum: 848cdebc16a3803e8a6d6035a7067605309a652bb2425f475f755b5ace4d80d2c17c8c8901f0f4759556da8d0a5b71024d472b85c3f3c70d0e6dcfe2a972ef35 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/type-utils@npm:6.19.1" +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" dependencies: - "@typescript-eslint/typescript-estree": 6.19.1 - "@typescript-eslint/utils": 6.19.1 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/utils": 6.21.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -19436,7 +20245,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: eab1a30f8d85f7c6e2545de5963fbec2f3bb91913d59623069b4b0db372a671ab048c7018376fc853c3af06ea39417f3e7b27dd665027dd812347a5e64cecd77 + checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc languageName: node linkType: hard @@ -19447,10 +20256,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/types@npm:6.19.1" - checksum: 598ce222b59c20432d06f60703d0c2dd16d9b2151569c192852136c57b8188e3ef6ef9fddaa2c136c9a756fcc7d873c0e29ec41cfd340564842287ef7b4571cd +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 languageName: node linkType: hard @@ -19472,12 +20281,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.19.1" +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" dependencies: - "@typescript-eslint/types": 6.19.1 - "@typescript-eslint/visitor-keys": 6.19.1 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -19487,24 +20296,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: fb71a14aeee0468780219c5b8d39075f85d360b04ccd0ee88f4f0a615d2c232a6d3016e36d8c6eda2d9dfda86b4f4cc2c3d7582940fb29d33c7cf305e124d4e2 + checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/utils@npm:6.19.1" +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.19.1 - "@typescript-eslint/types": 6.19.1 - "@typescript-eslint/typescript-estree": 6.19.1 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: fe72e75c3ea17a85772b83f148555ea94ff5d55d13586f3fc038833197a74f8071e14c2bbf1781c40eec20005f052f4be2513a725eea82a15da3cb9af3046c70 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 languageName: node linkType: hard @@ -19536,13 +20345,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.19.1": - version: 6.19.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.19.1" +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" dependencies: - "@typescript-eslint/types": 6.19.1 + "@typescript-eslint/types": 6.21.0 eslint-visitor-keys: ^3.4.1 - checksum: bdf057a42e776970a89cdd568e493e3ea7ec085544d8f318d33084da63c3395ad2c0fb9cef9f61ceeca41f5dab54ab064b7078fe596889005e412ec74d2d1ae4 + checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 languageName: node linkType: hard @@ -19965,14 +20774,7 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.7.0, @xmldom/xmldom@npm:^0.7.6, @xmldom/xmldom@npm:^0.7.9": - version: 0.7.13 - resolution: "@xmldom/xmldom@npm:0.7.13" - checksum: b4054078530e5fa8ede9677425deff0fce6d965f4c477ca73f8490d8a089e60b8498a15560425a1335f5ff99ecb851ed2c734b0a9a879299a5694302f212f37a - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:^0.8.3": +"@xmldom/xmldom@npm:^0.8.3, @xmldom/xmldom@npm:^0.8.5, @xmldom/xmldom@npm:^0.8.6, @xmldom/xmldom@npm:^0.8.8": version: 0.8.10 resolution: "@xmldom/xmldom@npm:0.8.10" checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 @@ -20024,6 +20826,22 @@ __metadata: languageName: node linkType: hard +"@zkochan/retry@npm:^0.2.0": + version: 0.2.0 + resolution: "@zkochan/retry@npm:0.2.0" + checksum: 268e77e4f2254e608fdb79396ab6947e7c302ebe3df90696ad6cda4f09417845ca13ad4e6bfe813fab1839f1e66b14294ceb5591fb4dacd0999927aa6fe55826 + languageName: node + linkType: hard + +"@zkochan/rimraf@npm:^2.1.2": + version: 2.1.3 + resolution: "@zkochan/rimraf@npm:2.1.3" + dependencies: + rimraf: ^3.0.2 + checksum: 81cf488065b3b3fcb49980d35dc49a59f8961887c7ed589250ea233f7b91a30c3b9d3ec0b7700829062e7c514c5f07afdcf5f811a4f1a06227daa69c0638f32a + languageName: node + linkType: hard + "@zxing/text-encoding@npm:0.9.0": version: 0.9.0 resolution: "@zxing/text-encoding@npm:0.9.0" @@ -20621,6 +21439,13 @@ __metadata: languageName: node linkType: hard +"arity-n@npm:^1.0.4": + version: 1.0.4 + resolution: "arity-n@npm:1.0.4" + checksum: 3d76e16907f7b8a9452690c1efc301d0fbecea457365797eccfbade9b8d1653175b2c38343201bf26fdcbf0bcbb31eab6d912e7c008c6d19042301dc0be80a73 + languageName: node + linkType: hard + "array-buffer-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "array-buffer-byte-length@npm:1.0.0" @@ -20665,6 +21490,15 @@ __metadata: languageName: node linkType: hard +"array-last@npm:^1.1.1": + version: 1.3.0 + resolution: "array-last@npm:1.3.0" + dependencies: + is-number: ^4.0.0 + checksum: 7631c7df9b44ea26f49e2f6eeb7a7d4d95b3798586b917e1efae4a321b6362e449e00b011e88eb0260959fbfc940fbdfce1d2a35765ea080de6d71e3fc3cf1dd + languageName: node + linkType: hard + "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -21041,7 +21875,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.6.5, axios@npm:^1.0.0, axios@npm:^1.4.0, axios@npm:^1.6.0": +"axios@npm:1.6.5": version: 1.6.5 resolution: "axios@npm:1.6.5" dependencies: @@ -21071,6 +21905,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.0.0, axios@npm:^1.4.0, axios@npm:^1.6.0": + version: 1.6.7 + resolution: "axios@npm:1.6.7" + dependencies: + follow-redirects: ^1.15.4 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 87d4d429927d09942771f3b3a6c13580c183e31d7be0ee12f09be6d5655304996bb033d85e54be81606f4e89684df43be7bf52d14becb73a12727bf33298a082 + languageName: node + linkType: hard + "axobject-query@npm:^3.2.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" @@ -21081,12 +21926,12 @@ __metadata: linkType: hard "azure-devops-node-api@npm:^12.0.0": - version: 12.3.0 - resolution: "azure-devops-node-api@npm:12.3.0" + version: 12.4.0 + resolution: "azure-devops-node-api@npm:12.4.0" dependencies: tunnel: 0.0.6 typed-rest-client: ^1.8.4 - checksum: 4f76f4633f57b92267b9f841591ee2c9548bc51421d3d5b0072c854f6a3f3bc77b3a334863a22f1b903c620492a8be877ee16ff5af05e6d131b281a683a7f695 + checksum: d7207c2bb0e021a25e11d1f6e4b4ac02efdbe4467b0c28bfb19260b2a1a799393978e6ff0b916cf81e309ba8b9a80015d8638751bed253695ef779a3a904efd2 languageName: node linkType: hard @@ -21272,6 +22117,15 @@ __metadata: languageName: node linkType: hard +"babylon@npm:^6.9.1": + version: 6.18.0 + resolution: "babylon@npm:6.18.0" + bin: + babylon: ./bin/babylon.js + checksum: 0777ae0c735ce1cbfc856d627589ed9aae212b84fb0c03c368b55e6c5d3507841780052808d0ad46e18a2ba516e93d55eeed8cd967f3b2938822dfeccfb2a16d + languageName: node + linkType: hard + "backo2@npm:^1.0.2": version: 1.0.2 resolution: "backo2@npm:1.0.2" @@ -21405,13 +22259,13 @@ __metadata: linkType: hard "better-sqlite3@npm:^9.0.0": - version: 9.3.0 - resolution: "better-sqlite3@npm:9.3.0" + version: 9.4.0 + resolution: "better-sqlite3@npm:9.4.0" dependencies: bindings: ^1.5.0 node-gyp: latest prebuild-install: ^7.1.1 - checksum: 03dedaeef92aaa5e963e9fad5849afca3568c987b4d6f36957f9879137c994aa18f9654fe7bcc3804620ede55eabd19ff9bcba03ad0bf985aa8bd5561e4aaa43 + checksum: a1a470fae20dfba82d6e74ae90b35ea8996c60922e95574162732d6e076e84c0c90fc4ff77ab8c27554671899eb15f284e2c8de5e4ee406aa9f7eb170eca5bee languageName: node linkType: hard @@ -21581,6 +22435,16 @@ __metadata: languageName: node linkType: hard +"bole@npm:^5.0.0": + version: 5.0.11 + resolution: "bole@npm:5.0.11" + dependencies: + fast-safe-stringify: ^2.0.7 + individual: ^3.0.0 + checksum: de8d478613d032db781652942055b29e9daeb57be1df06067e2e840d5ce4f3d2cbabfbc01b6f8698f3e054564569f2910b8f5b1161387f031517d4b064d2ea01 + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.0.11 resolution: "bonjour-service@npm:1.0.11" @@ -21791,7 +22655,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.0, browserslist@npm:^4.16.6, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": +"browserslist@npm:^4.0.0, browserslist@npm:^4.16.0, browserslist@npm:^4.16.6, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": version: 4.21.10 resolution: "browserslist@npm:4.21.10" dependencies: @@ -21918,6 +22782,15 @@ __metadata: languageName: node linkType: hard +"builtins@npm:^5.0.0": + version: 5.0.1 + resolution: "builtins@npm:5.0.1" + dependencies: + semver: ^7.0.0 + checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 + languageName: node + linkType: hard + "busboy@npm:^1.0.0, busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -22315,8 +23188,8 @@ __metadata: linkType: hard "chokidar@npm:^3.3.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" dependencies: anymatch: ~3.1.2 braces: ~3.0.2 @@ -22329,7 +23202,7 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d languageName: node linkType: hard @@ -22492,12 +23365,12 @@ __metadata: languageName: node linkType: hard -"cli-table@npm:^0.3.1": - version: 0.3.6 - resolution: "cli-table@npm:0.3.6" +"cli-table@npm:^0.3.1, cli-table@npm:^0.3.11": + version: 0.3.11 + resolution: "cli-table@npm:0.3.11" dependencies: colors: 1.0.3 - checksum: b0cd08578c810240920438cc2b3ffb4b4f5106b29f3362707f1d8cfc0c0440ad2afb70b96e30ce37f72f0ffe1e844ae7341dde4df17d51ad345eb186a5903af2 + checksum: 59fb61f992ac9bc8610ed98c72bf7f5d396c5afb42926b6747b46b0f8bb98a0dfa097998e77542ac334c1eb7c18dbf4f104d5783493273c5ec4c34084aa7c663 languageName: node linkType: hard @@ -22915,7 +23788,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.0": +"commander@npm:^4.0.0, commander@npm:^4.1.1": version: 4.1.1 resolution: "commander@npm:4.1.1" checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 @@ -23006,6 +23879,15 @@ __metadata: languageName: node linkType: hard +"compose-function@npm:^3.0.3": + version: 3.0.3 + resolution: "compose-function@npm:3.0.3" + dependencies: + arity-n: ^1.0.4 + checksum: 9f17d431e3ee4797c844f2870e13494079882ac3dbc54c143b7d99967b371908e0ce7ceb71c6aed61e2ecddbcd7bb437d91428a3d0e6569aee17a87fcbc7918f + languageName: node + linkType: hard + "compress-commons@npm:^4.1.0": version: 4.1.0 resolution: "compress-commons@npm:4.1.0" @@ -23314,6 +24196,13 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:1.0.7": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 + languageName: node + linkType: hard + "cookie@npm:0.4.1": version: 0.4.1 resolution: "cookie@npm:0.4.1" @@ -23321,13 +24210,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.4.2, cookie@npm:^0.4.2": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b - languageName: node - linkType: hard - "cookie@npm:0.5.0, cookie@npm:^0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" @@ -23335,13 +24217,20 @@ __metadata: languageName: node linkType: hard -"cookie@npm:~0.6.0": +"cookie@npm:0.6.0, cookie@npm:~0.6.0": version: 0.6.0 resolution: "cookie@npm:0.6.0" checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 languageName: node linkType: hard +"cookie@npm:^0.4.2": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b + languageName: node + linkType: hard + "cookiejar@npm:^2.1.4": version: 2.1.4 resolution: "cookiejar@npm:2.1.4" @@ -23583,11 +24472,11 @@ __metadata: linkType: hard "cronstrue@npm:^2.2.0, cronstrue@npm:^2.32.0": - version: 2.47.0 - resolution: "cronstrue@npm:2.47.0" + version: 2.48.0 + resolution: "cronstrue@npm:2.48.0" bin: cronstrue: bin/cli.js - checksum: a6752c8873fec30cabab4c5b92abde3a625cb5ef1797d9360f762b9e0bb9c0607a09744340faccdbf5b97eaeb5df0ebe9b5c424043fdba9b39799c82404076ec + checksum: d767d0f2cc1e286256bf6a92f555aacd1da103e97efd3dfc057a6f836f449b34302ace9fc00fdd28732fa5f8be1a1e940cef1a222b23dff90a419f33b3ff45aa languageName: node linkType: hard @@ -23755,8 +24644,8 @@ __metadata: linkType: hard "css-loader@npm:^6.5.1": - version: 6.9.1 - resolution: "css-loader@npm:6.9.1" + version: 6.10.0 + resolution: "css-loader@npm:6.10.0" dependencies: icss-utils: ^5.1.0 postcss: ^8.4.33 @@ -23767,8 +24656,14 @@ __metadata: postcss-value-parser: ^4.2.0 semver: ^7.5.4 peerDependencies: + "@rspack/core": 0.x || 1.x webpack: ^5.0.0 - checksum: b0c1776f9c46474219eb471eeb8f4c8986a7735dc8356e578a63303cf292a7c8cb868fa74bf94a1a174e948fcb6523c63fca081cac6bbf246be8275b3cc384f0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: ee3d62b5f7e4eb24281a22506431e920d07a45bd6ea627731ce583f3c6a846ab8b8b703bace599b9b35256b9e762f9f326d969abb72b69c7e6055eacf39074fd languageName: node linkType: hard @@ -24222,6 +25117,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^3.0.1": + version: 3.0.1 + resolution: "data-uri-to-buffer@npm:3.0.1" + checksum: c59c3009686a78c071806b72f4810856ec28222f0f4e252aa495ec027ed9732298ceea99c50328cf59b151dd34cbc3ad6150bbb43e41fc56fa19f48c99e9fc30 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^6.0.0": version: 6.0.1 resolution: "data-uri-to-buffer@npm:6.0.1" @@ -24267,6 +25169,13 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^3.0.0": + version: 3.3.1 + resolution: "date-fns@npm:3.3.1" + checksum: 6245e93a47de28ac96dffd4d62877f86e6b64854860ae1e00a4f83174d80bc8e59bd1259cf265223fb2ddce5c8e586dc9cc210f0d052faba2f7660e265877283 + languageName: node + linkType: hard + "dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -24452,6 +25361,13 @@ __metadata: languageName: node linkType: hard +"deep-freeze@npm:0.0.1": + version: 0.0.1 + resolution: "deep-freeze@npm:0.0.1" + checksum: 1e43c98e44c7849382d9f896e679d48a1b5bf40993f7cc858e3730ef4e2ba387b9b7b7fe722cac34febe7f6a564cd242c27bbc319e8df793c2a287f21e5ba038 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": version: 0.1.3 resolution: "deep-is@npm:0.1.3" @@ -24844,9 +25760,9 @@ __metadata: linkType: hard "dom-accessibility-api@npm:^0.5.9": - version: 0.5.13 - resolution: "dom-accessibility-api@npm:0.5.13" - checksum: a5a5f14c01e466d424750aaac9225f1dc43cf16d101a1c40e01a554abce63c48084707002c39b805f2ce212273c179dd6d2258175997cd06d5f79851bf52dd40 + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 languageName: node linkType: hard @@ -24964,14 +25880,14 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:=3.0.6": - version: 3.0.6 - resolution: "dompurify@npm:3.0.6" - checksum: e5c6cdc5fe972a9d0859d939f1d86320de275be00bbef7bd5591c80b1e538935f6ce236624459a1b0c84ecd7c6a1e248684aa4637512659fccc0ce7c353828a6 +"dompurify@npm:=3.0.8, dompurify@npm:^3.0.0": + version: 3.0.8 + resolution: "dompurify@npm:3.0.8" + checksum: cac660ccae15a9603f06a85344da868a4c3732d8b57f7998de0f421eb4b9e67d916be52e9bb2a57b2f95b49e994cc50bcd06bb87f2cb2849cf058bdf15266237 languageName: node linkType: hard -"dompurify@npm:^2.2.7, dompurify@npm:^2.2.9, dompurify@npm:^2.3.6": +"dompurify@npm:^2.2.7": version: 2.4.7 resolution: "dompurify@npm:2.4.7" checksum: 13c047e772a1998348191554dda403950d45ef2ec75fa0b9915cc179ccea0a39ef780d283109bd72cf83a2a085af6c77664281d4d0106a737bc5f39906364efe @@ -25149,6 +26065,19 @@ __metadata: languageName: node linkType: hard +"easy-table@npm:1.2.0": + version: 1.2.0 + resolution: "easy-table@npm:1.2.0" + dependencies: + ansi-regex: ^5.0.1 + wcwidth: ^1.0.1 + dependenciesMeta: + wcwidth: + optional: true + checksum: 66961b19751a68d2d30ce9b74ef750c374cc3112bbcac3d1ed5a939e43c035ecf6b1954098df2d5b05f1e853ab2b67de893794390dcbf0abe1f157fddeb52174 + languageName: node + linkType: hard + "ebnf@npm:^1.9.1": version: 1.9.1 resolution: "ebnf@npm:1.9.1" @@ -25275,6 +26204,15 @@ __metadata: languageName: node linkType: hard +"encode-registry@npm:^3.0.1": + version: 3.0.1 + resolution: "encode-registry@npm:3.0.1" + dependencies: + mem: ^8.0.0 + checksum: 4e7cb234704782ef3e9e0c1941cb90de9b2421da8b87a21c968609e59b931c0316b15ea0e9b5280338a831dcb8e91362f8a54f712b10c70e28598f2dfb97da4a + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -25773,7 +26711,87 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.19.0, esbuild@npm:~0.19.10": +"esbuild@npm:^0.20.0": + version: 0.20.0 + resolution: "esbuild@npm:0.20.0" + dependencies: + "@esbuild/aix-ppc64": 0.20.0 + "@esbuild/android-arm": 0.20.0 + "@esbuild/android-arm64": 0.20.0 + "@esbuild/android-x64": 0.20.0 + "@esbuild/darwin-arm64": 0.20.0 + "@esbuild/darwin-x64": 0.20.0 + "@esbuild/freebsd-arm64": 0.20.0 + "@esbuild/freebsd-x64": 0.20.0 + "@esbuild/linux-arm": 0.20.0 + "@esbuild/linux-arm64": 0.20.0 + "@esbuild/linux-ia32": 0.20.0 + "@esbuild/linux-loong64": 0.20.0 + "@esbuild/linux-mips64el": 0.20.0 + "@esbuild/linux-ppc64": 0.20.0 + "@esbuild/linux-riscv64": 0.20.0 + "@esbuild/linux-s390x": 0.20.0 + "@esbuild/linux-x64": 0.20.0 + "@esbuild/netbsd-x64": 0.20.0 + "@esbuild/openbsd-x64": 0.20.0 + "@esbuild/sunos-x64": 0.20.0 + "@esbuild/win32-arm64": 0.20.0 + "@esbuild/win32-ia32": 0.20.0 + "@esbuild/win32-x64": 0.20.0 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 501b0f540ab68b3843cb9b1be7efa2d90353c8743e99e84931baa1ef5fe1b87934e29becb23cc635a8af45fab223875efa62200589e18d796f0881a655cb9c07 + languageName: node + linkType: hard + +"esbuild@npm:~0.19.10": version: 0.19.12 resolution: "esbuild@npm:0.19.12" dependencies: @@ -26579,6 +27597,7 @@ __metadata: "@backstage/plugin-newrelic": "workspace:^" "@backstage/plugin-newrelic-dashboard": "workspace:^" "@backstage/plugin-nomad": "workspace:^" + "@backstage/plugin-notifications": "workspace:^" "@backstage/plugin-octopus-deploy": "workspace:^" "@backstage/plugin-org": "workspace:^" "@backstage/plugin-pagerduty": "workspace:^" @@ -26664,6 +27683,7 @@ __metadata: "@backstage/plugin-lighthouse-backend": "workspace:^" "@backstage/plugin-linguist-backend": "workspace:^" "@backstage/plugin-nomad-backend": "workspace:^" + "@backstage/plugin-notifications-backend": "workspace:^" "@backstage/plugin-permission-backend": "workspace:^" "@backstage/plugin-permission-backend-module-allow-all-policy": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" @@ -26676,6 +27696,7 @@ __metadata: "@backstage/plugin-search-backend-module-explore": "workspace:^" "@backstage/plugin-search-backend-module-techdocs": "workspace:^" "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-signals-backend": "workspace:^" "@backstage/plugin-sonarqube-backend": "workspace:^" "@backstage/plugin-techdocs-backend": "workspace:^" "@backstage/plugin-todo-backend": "workspace:^" @@ -26885,8 +27906,8 @@ __metadata: linkType: hard "express-openapi-validator@npm:^5.0.4": - version: 5.1.2 - resolution: "express-openapi-validator@npm:5.1.2" + version: 5.1.3 + resolution: "express-openapi-validator@npm:5.1.3" dependencies: "@apidevtools/json-schema-ref-parser": ^9.1.2 "@types/multer": ^1.4.7 @@ -26903,7 +27924,7 @@ __metadata: multer: ^1.4.5-lts.1 ono: ^7.1.3 path-to-regexp: ^6.2.0 - checksum: e02eaad8549893f874916cfc52a9d81f1ef15c553e726876e6b73cc93469a21e28e42d1d25449aa04c764f8d024b1ea664b7ce6083abdd8513168ece7929ee20 + checksum: c99785e6bf3072086a671e854369e338bce2a20fea65d2a4445dac6c40ac632e67dc91d9e0edeb4cce5e739124b5d5742bcf2447c09b3085dc76e1ba89a71ca0 languageName: node linkType: hard @@ -26937,18 +27958,18 @@ __metadata: linkType: hard "express-session@npm:^1.17.1, express-session@npm:^1.17.3": - version: 1.17.3 - resolution: "express-session@npm:1.17.3" + version: 1.18.0 + resolution: "express-session@npm:1.18.0" dependencies: - cookie: 0.4.2 - cookie-signature: 1.0.6 + cookie: 0.6.0 + cookie-signature: 1.0.7 debug: 2.6.9 depd: ~2.0.0 on-headers: ~1.0.2 parseurl: ~1.3.3 safe-buffer: 5.2.1 uid-safe: ~2.1.5 - checksum: 1021a793433cbc6a1b32c803fcb2daa1e03a8f50dd907e8745ae57994370315a5cfde5b6ef7b062d9a9a0754ff268844bda211c08240b3a0e01014dcf1073ec5 + checksum: 56e52e4f5e09f77b201069f5f977e8c301d1feb324ac545f043e251745bb17ab0b05c6d7b3653f20ae548179afd76eeda9f44c9872ac9ce82d7c2a917a88d885 languageName: node linkType: hard @@ -27074,7 +28095,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -27204,12 +28225,12 @@ __metadata: languageName: node linkType: hard -"fastq@npm:^1.6.0": - version: 1.6.1 - resolution: "fastq@npm:1.6.1" +"fastq@npm:^1.15.0, fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: reusify: ^1.0.4 - checksum: e9940b30758a6a6bb3595d965accb4c86b85c7b594c3387788c480a83ac5e43d933eccb6b41f510d0c944aa17af340f432b4efe791f0d0bbe0e3e06dfdcda610 + checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 languageName: node linkType: hard @@ -27302,6 +28323,16 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^2.1.1": + version: 2.1.2 + resolution: "fetch-blob@npm:2.1.2" + peerDependenciesMeta: + domexception: + optional: true + checksum: 22d4487ce78ea4e52b432b0057d8d42922d5d93c0374b0bc2692cebdcb11bf8fac4f6d141b31f1633db1e9212effd38385adbd765a2c7412a621307058499214 + languageName: node + linkType: hard + "fflate@npm:^0.4.4": version: 0.4.8 resolution: "fflate@npm:0.4.8" @@ -27384,6 +28415,13 @@ __metadata: languageName: node linkType: hard +"filter-iterator@npm:0.0.1": + version: 0.0.1 + resolution: "filter-iterator@npm:0.0.1" + checksum: 1dd34e0728183b3cc69d45c57ec58cbdd21c5160d53e70592e2db049ed4da81ba551b7bfaccb11731011ce5b07ee09961b09fa4573fe906145ce63d9a1813db0 + languageName: node + linkType: hard + "filter-obj@npm:^1.1.0": version: 1.1.0 resolution: "filter-obj@npm:1.1.0" @@ -28529,10 +29567,10 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard @@ -28550,7 +29588,7 @@ __metadata: languageName: node linkType: hard -"graphiql@npm:3.1.0, graphiql@npm:^3.0.6": +"graphiql@npm:3.1.0": version: 3.1.0 resolution: "graphiql@npm:3.1.0" dependencies: @@ -28566,6 +29604,22 @@ __metadata: languageName: node linkType: hard +"graphiql@npm:^3.0.6": + version: 3.1.1 + resolution: "graphiql@npm:3.1.1" + dependencies: + "@graphiql/react": ^0.20.3 + "@graphiql/toolkit": ^0.9.1 + graphql-language-service: ^5.2.0 + markdown-it: ^12.2.0 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + checksum: fa0e6a6854b688a80d2d560c07c042c4d63a45ab1ebdb5b56a081a5a2aea6f77b2ef10afb73e071bbb22eb293048a9b72760e91459fe66704afce56271b13ba5 + languageName: node + linkType: hard + "graphlib@npm:^2.1.8": version: 2.1.8 resolution: "graphlib@npm:2.1.8" @@ -28827,6 +29881,13 @@ __metadata: languageName: node linkType: hard +"has-own-property@npm:^0.1.0": + version: 0.1.0 + resolution: "has-own-property@npm:0.1.0" + checksum: 4754f42e8a54860ea1a397c231843937ba890f3aa556698c9a2160df5f9b1a02ddb321ef0528294aec3aaa3139d17744da048027aa7129a631cb6554b6faed6f + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0": version: 1.0.0 resolution: "has-property-descriptors@npm:1.0.0" @@ -29055,6 +30116,15 @@ __metadata: languageName: node linkType: hard +"hosted-git-info@npm:^7.0.0": + version: 7.0.1 + resolution: "hosted-git-info@npm:7.0.1" + dependencies: + lru-cache: ^10.0.1 + checksum: be5280f0a20d6153b47e1ab578e09f5ae8ad734301b3ed7e547dc88a6814d7347a4888db1b4f9635cc738e3c0ef1fbff02272aba7d07c75d4c5a50ff8d618db6 + languageName: node + linkType: hard + "hpack.js@npm:^2.1.6": version: 2.1.6 resolution: "hpack.js@npm:2.1.6" @@ -29395,12 +30465,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:^8.0.0": - version: 8.0.3 - resolution: "husky@npm:8.0.3" +"husky@npm:^9.0.0": + version: 9.0.10 + resolution: "husky@npm:9.0.10" bin: - husky: lib/bin.js - checksum: 837bc7e4413e58c1f2946d38fb050f5d7324c6f16b0fd66411ffce5703b294bd21429e8ba58711cd331951ee86ed529c5be4f76805959ff668a337dbfa82a1b0 + husky: bin.mjs + checksum: 55f4b6db6706ff0bc181607d6a64f55310cbb18b4d7db2a5b85608c87a80abafc14ac3a8c4d0b44d6272f4a62d4c2d3d5491d6a13e2cc7ac4895309e5e5f0ec2 languageName: node linkType: hard @@ -29454,6 +30524,13 @@ __metadata: languageName: node linkType: hard +"identity-function@npm:^1.0.0": + version: 1.0.0 + resolution: "identity-function@npm:1.0.0" + checksum: 0ec311050c69679334b12479f53226f67ca41bc3ba7283ede3dacfb80802ec07643868d16b274ab823ceb2e81291697f01b07e32c7796f92255bd81452b7ea15 + languageName: node + linkType: hard + "identity-obj-proxy@npm:3.0.0": version: 3.0.0 resolution: "identity-obj-proxy@npm:3.0.0" @@ -29495,10 +30572,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.4, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef +"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 languageName: node linkType: hard @@ -29614,6 +30691,13 @@ __metadata: languageName: node linkType: hard +"individual@npm:^3.0.0": + version: 3.0.0 + resolution: "individual@npm:3.0.0" + checksum: 49f69cff2791f09d1364b39723cc03d8d48ae425b15b23c8f618ac81f8d76160dae9c2abde5fb885a6bfbce939017ba2a5c84cf3d8051d0804fca0ee79138aa2 + languageName: node + linkType: hard + "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -29965,7 +31049,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" dependencies: @@ -30118,6 +31202,13 @@ __metadata: languageName: node linkType: hard +"is-iterable@npm:^1.1.0": + version: 1.1.1 + resolution: "is-iterable@npm:1.1.1" + checksum: d059aaf00899cf351cdf4d71ea6b4e8912107c47b31b554d28205199b306420f3b5d30a419efa6b807f466f675fd945822f1651fd6d1fd45469a578573da671e + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -30179,6 +31270,13 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^4.0.0": + version: 4.0.0 + resolution: "is-number@npm:4.0.0" + checksum: e71962a5ae97400211e6be5946eff2b81d3fa85154dad498bfe2704999e63ac6b3f8591fdb7971a121122cc6e25915c2cfe882ff7b77e243d51b92ca6961267e + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -30708,6 +31806,13 @@ __metadata: languageName: node linkType: hard +"iterable-lookahead@npm:^1.0.0": + version: 1.0.0 + resolution: "iterable-lookahead@npm:1.0.0" + checksum: 9d849bfbfafcaf83c6eec2835192088b1f7d1aadf9f33ec4e1d117664af2d47acb742e130179c35a6eec01d0e3ec2750ea8347ba6796e47e329b015455076e67 + languageName: node + linkType: hard + "iterall@npm:^1.2.1, iterall@npm:^1.3.0": version: 1.3.0 resolution: "iterall@npm:1.3.0" @@ -31373,7 +32478,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.18.2": +"jiti@npm:1.21.0, jiti@npm:^1.18.2": version: 1.21.0 resolution: "jiti@npm:1.21.0" bin: @@ -31452,7 +32557,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -31685,6 +32790,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.1 + resolution: "json-parse-even-better-errors@npm:3.0.1" + checksum: bf74fa3f715e56699ccd68b80a7d20908de432a3fae2d5aa2ed530a148e9d9ccdf8e6983b93d9966a553aa70dcf003ce3a7ffec2c0ce74d2a6173e3691a426f0 + languageName: node + linkType: hard + "json-pointer@npm:0.6.2": version: 0.6.2 resolution: "json-pointer@npm:0.6.2" @@ -32203,13 +33315,6 @@ __metadata: languageName: node linkType: hard -"jwt-decode@npm:*, jwt-decode@npm:^3.1.0": - version: 3.1.2 - resolution: "jwt-decode@npm:3.1.2" - checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb - languageName: node - linkType: hard - "kafkajs@npm:^2.0.0": version: 2.2.4 resolution: "kafkajs@npm:2.2.4" @@ -32304,6 +33409,41 @@ __metadata: languageName: node linkType: hard +"knip@npm:^4.3.1": + version: 4.4.0 + resolution: "knip@npm:4.4.0" + dependencies: + "@ericcornelissen/bash-parser": 0.5.2 + "@nodelib/fs.walk": 2.0.0 + "@npmcli/map-workspaces": 3.0.4 + "@npmcli/package-json": 5.0.0 + "@pnpm/logger": 5.0.0 + "@pnpm/workspace.pkgs-graph": ^2.0.14 + "@snyk/github-codeowners": 1.1.0 + "@types/picomatch": 2.3.3 + easy-table: 1.2.0 + fast-glob: 3.3.2 + jiti: 1.21.0 + js-yaml: 4.1.0 + micromatch: 4.0.5 + minimist: 1.2.8 + picocolors: 1.0.0 + picomatch: 3.0.1 + pretty-ms: 9.0.0 + smol-toml: 1.1.4 + strip-json-comments: 5.0.1 + summary: 2.1.0 + zod: 3.22.4 + zod-validation-error: 3.0.0 + peerDependencies: + "@types/node": ">=18" + typescript: ">=5.0.4" + bin: + knip: bin/knip.js + checksum: 02ce0c03f732eeee73c76028569baf8105355ad58702af485201eb3d2e65e0cafbeb65c8d40be4e43b2abc29f4d8cf46d10ed6da8660103f1acd0e7beb2707eb + languageName: node + linkType: hard + "kubernetes-models@npm:^4.1.0, kubernetes-models@npm:^4.3.1": version: 4.3.1 resolution: "kubernetes-models@npm:4.3.1" @@ -32554,22 +33694,22 @@ __metadata: linkType: hard "lint-staged@npm:^15.0.0": - version: 15.2.0 - resolution: "lint-staged@npm:15.2.0" + version: 15.2.2 + resolution: "lint-staged@npm:15.2.2" dependencies: chalk: 5.3.0 commander: 11.1.0 debug: 4.3.4 execa: 8.0.1 lilconfig: 3.0.0 - listr2: 8.0.0 + listr2: 8.0.1 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.3.4 bin: lint-staged: bin/lint-staged.js - checksum: 4fb178b8d3ff454f7874697dfbd41017630f61a06296d12ac9dfd578d078c70aff7108b67fab38af94896ef2740a1e7541c1512d0d3c688ed90e6c3af3530f0d + checksum: 031718ad3f839475fb1d41bda34bab4330f25814175808169daa2686ff026e5a667a25c95fdf3cd46dac72f9af2c98852565bb62d920992f5e2d3f730c279760 languageName: node linkType: hard @@ -32580,9 +33720,9 @@ __metadata: languageName: node linkType: hard -"listr2@npm:8.0.0": - version: 8.0.0 - resolution: "listr2@npm:8.0.0" +"listr2@npm:8.0.1": + version: 8.0.1 + resolution: "listr2@npm:8.0.1" dependencies: cli-truncate: ^4.0.0 colorette: ^2.0.20 @@ -32590,7 +33730,19 @@ __metadata: log-update: ^6.0.0 rfdc: ^1.3.0 wrap-ansi: ^9.0.0 - checksum: 5cb110a710d14488c71d2207fc5141256abb1f21cbe5ebc12177ae640f94e040a1ef8c031b70ff9f24c4a8fa57c0825a54b534e52bdfaffc122a81082faae8ed + checksum: 4dfeabfa037b3981d0edbf30789971ba727ba4cfcc13051ceaff7a1b3d26509ef2d946015c65c600b0775ec9d1ef58a81937d94c9c03de464b654f429cc7c3ed + languageName: node + linkType: hard + +"load-json-file@npm:^6.2.0": + version: 6.2.0 + resolution: "load-json-file@npm:6.2.0" + dependencies: + graceful-fs: ^4.1.15 + parse-json: ^5.0.0 + strip-bom: ^4.0.0 + type-fest: ^0.6.0 + checksum: 4429e430ebb99375fc7cd936348e4f7ba729486080ced4272091c1e386a7f5f738ea3337d8ffd4b01c2f5bc3ddde92f2c780045b66838fe98bdb79f901884643 languageName: node linkType: hard @@ -32698,7 +33850,7 @@ __metadata: languageName: node linkType: hard -"lodash.curry@npm:^4.0.1": +"lodash.curry@npm:^4.0.1, lodash.curry@npm:^4.1.1": version: 4.1.1 resolution: "lodash.curry@npm:4.1.1" checksum: 9192b70fe7df4d1ff780c0260bee271afa9168c93fe4fa24bc861900240531b59781b5fdaadf4644fea8f4fbcd96f0700539ab294b579ffc1022c6c15dcc462a @@ -33057,10 +34209,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab +"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.0.2, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db languageName: node linkType: hard @@ -33159,6 +34311,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.16.0": + version: 0.16.0 + resolution: "magic-string@npm:0.16.0" + dependencies: + vlq: ^0.2.1 + checksum: f97e225062b600212e95fc8ed1948410bee3cb5248e03ed14fc45f12bb61a43960fdc0525f4aaaf62d6e79165526c9f8274ec225a92d421980cfcfcb8063be98 + languageName: node + linkType: hard + "magic-string@npm:^0.25.7": version: 0.25.7 resolution: "magic-string@npm:0.25.7" @@ -33288,6 +34449,15 @@ __metadata: languageName: node linkType: hard +"map-age-cleaner@npm:^0.1.3": + version: 0.1.3 + resolution: "map-age-cleaner@npm:0.1.3" + dependencies: + p-defer: ^1.0.0 + checksum: cb2804a5bcb3cbdfe4b59066ea6d19f5e7c8c196cd55795ea4c28f792b192e4c442426ae52524e5e1acbccf393d3bddacefc3d41f803e66453f6c4eda3650bc1 + languageName: node + linkType: hard + "map-age-cleaner@npm:^0.2.0": version: 0.2.0 resolution: "map-age-cleaner@npm:0.2.0" @@ -33304,6 +34474,13 @@ __metadata: languageName: node linkType: hard +"map-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "map-obj@npm:2.0.0" + checksum: 77d2b7b03398a71c84bd7df8ab7be2139e5459fc1e18dbb5f15055fe7284bec0fc37fe410185b5f8ca2e3c3e01fd0fd1f946c579607878adb26cad1cd75314aa + languageName: node + linkType: hard + "map-obj@npm:^4.0.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" @@ -33333,12 +34510,12 @@ __metadata: languageName: node linkType: hard -"markdown-to-jsx@npm:^7.4.0": - version: 7.4.0 - resolution: "markdown-to-jsx@npm:7.4.0" +"markdown-to-jsx@npm:^7.4.1": + version: 7.4.1 + resolution: "markdown-to-jsx@npm:7.4.1" peerDependencies: react: ">= 0.14.0" - checksum: 59959d14d7927ed8a97e42d39771e2b445b90fa098477fb6ab040f044d230517dc4a95ba38a4f924cfc965a96b32211d93def150a6184f0e51d2cefdc8cb415d + checksum: 2888cb2389cb810ab35454a59d0623474a60a78e28f281ae0081f87053f6c59b033232a2cd269cc383a5edcaa1eab8ca4b3cf639fe4e1aa3fb418648d14bcc7d languageName: node linkType: hard @@ -33622,6 +34799,26 @@ __metadata: languageName: node linkType: hard +"mem@npm:^6.0.1": + version: 6.1.1 + resolution: "mem@npm:6.1.1" + dependencies: + map-age-cleaner: ^0.1.3 + mimic-fn: ^3.0.0 + checksum: 59a54b66838f074354fd2ae32cca5064996761ded870e74fa1e098bb3e5d48fc033ebeacf6809d4b2ad3036f7a6fb7538858821bbd4f1cfb7ef8966c0ab9b753 + languageName: node + linkType: hard + +"mem@npm:^8.0.0": + version: 8.1.1 + resolution: "mem@npm:8.1.1" + dependencies: + map-age-cleaner: ^0.1.3 + mimic-fn: ^3.1.0 + checksum: c41bc97f6f82b91899206058989e34bcb1543af40413c2ab59e5a8e97e4f8f2188d62e7bd95b2d575d5b0d823d5034a0f274a0676f6d11a0e0b973898b06c8b1 + languageName: node + linkType: hard + "memfs@npm:^3.1.2, memfs@npm:^3.4.1": version: 3.4.1 resolution: "memfs@npm:3.4.1" @@ -34145,7 +35342,7 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^3.0.0": +"mimic-fn@npm:^3.0.0, mimic-fn@npm:^3.1.0": version: 3.1.0 resolution: "mimic-fn@npm:3.1.0" checksum: f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db @@ -34188,13 +35385,14 @@ __metadata: linkType: hard "mini-css-extract-plugin@npm:^2.4.2": - version: 2.7.7 - resolution: "mini-css-extract-plugin@npm:2.7.7" + version: 2.8.0 + resolution: "mini-css-extract-plugin@npm:2.8.0" dependencies: schema-utils: ^4.0.0 + tapable: ^2.2.1 peerDependencies: webpack: ^5.0.0 - checksum: 04af0e7d8c1a4ff31c70ac2d0895837dae3d51cce3bfd90e3c1d90d50eef7de21778361a3064531df046d775d80b3bf056324dddea93831c7def2047c5aa8718 + checksum: c1edc3ee0e1b3514c3323fa72ad38e993f357964e76737f1d7bb6cf50a0af1ac071080ec16b4e1a94688d23f78533944badad50cd0f00d2ae176f9c58c1f2029 languageName: node linkType: hard @@ -34230,7 +35428,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": +"minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -34277,7 +35475,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:>=1.2.2, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:1.2.8, minimist@npm:>=1.2.2, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -34640,13 +35838,13 @@ __metadata: linkType: hard "msw@npm:^2.0.0, msw@npm:^2.0.8": - version: 2.1.5 - resolution: "msw@npm:2.1.5" + version: 2.1.7 + resolution: "msw@npm:2.1.7" dependencies: "@bundled-es-modules/cookie": ^2.0.0 "@bundled-es-modules/statuses": ^1.0.1 "@mswjs/cookies": ^1.1.0 - "@mswjs/interceptors": ^0.25.15 + "@mswjs/interceptors": ^0.25.16 "@open-draft/until": ^2.1.0 "@types/cookie": ^0.6.0 "@types/statuses": ^2.0.4 @@ -34668,7 +35866,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 19a54a25baa584d1bafa219e1c2245073688eeed6ea5330f27c868a2f279390ee4fbd8a13d64cf0a056149d7e2faa300f901959bab8854e010f29368524d7c4f + checksum: 5a6e35433fb734f6e14c9e2446ea966c24777eae36adc6533af9a2f11837bbbd476401e9cbddad3cfec46c7712b89653549d62dc86c47df6aea163021a013314 languageName: node linkType: hard @@ -34994,6 +36192,16 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:3.0.0-beta.9": + version: 3.0.0-beta.9 + resolution: "node-fetch@npm:3.0.0-beta.9" + dependencies: + data-uri-to-buffer: ^3.0.1 + fetch-blob: ^2.1.1 + checksum: 586af0910649cb62f1c044ddac41e71c0b0f48133fba406ad5e0fab51baff18f22cd187ea65ef690ceed7386a71910e904348105dc8eae55f907fa94df7e76ca + languageName: node + linkType: hard + "node-fetch@npm:^1.0.1": version: 1.7.3 resolution: "node-fetch@npm:1.7.3" @@ -35256,6 +36464,18 @@ __metadata: languageName: node linkType: hard +"normalize-package-data@npm:^6.0.0": + version: 6.0.0 + resolution: "normalize-package-data@npm:6.0.0" + dependencies: + hosted-git-info: ^7.0.0 + is-core-module: ^2.8.1 + semver: ^7.3.5 + validate-npm-package-license: ^3.0.4 + checksum: 741211a4354ba6d618caffa98f64e0e5ec9e5575bf3aefe47f4b68e662d65f9ba1b6b2d10640c16254763ed0879288155566138b5ffe384172352f6e969c1752 + languageName: node + linkType: hard + "normalize-path@npm:^2.1.1": version: 2.1.1 resolution: "normalize-path@npm:2.1.1" @@ -35320,6 +36540,15 @@ __metadata: languageName: node linkType: hard +"npm-install-checks@npm:^6.0.0": + version: 6.3.0 + resolution: "npm-install-checks@npm:6.3.0" + dependencies: + semver: ^7.1.1 + checksum: 6c20dadb878a0d2f1f777405217b6b63af1299d0b43e556af9363ee6eefaa98a17dfb7b612a473a473e96faf7e789c58b221e0d8ffdc1d34903c4f71618df3b4 + languageName: node + linkType: hard + "npm-normalize-package-bin@npm:^1.0.0, npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" @@ -35334,6 +36563,25 @@ __metadata: languageName: node linkType: hard +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: de416d720ab22137a36292ff8a333af499ea0933ef2320a8c6f56a73b0f0448227fec4db5c890d702e26d21d04f271415eab6580b5546456861cc0c19498a4bf + languageName: node + linkType: hard + +"npm-package-arg@npm:^11.0.0": + version: 11.0.1 + resolution: "npm-package-arg@npm:11.0.1" + dependencies: + hosted-git-info: ^7.0.0 + proc-log: ^3.0.0 + semver: ^7.3.5 + validate-npm-package-name: ^5.0.0 + checksum: 60364504e04e34fc20b47ad192efc9181922bce0cb41fa81871b1b75748d8551725f61b2f9a2e3dffb1782d749a35313f5dc02c18c3987653990d486f223adf2 + languageName: node + linkType: hard + "npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.2, npm-package-arg@npm:^8.1.5": version: 8.1.5 resolution: "npm-package-arg@npm:8.1.5" @@ -35385,6 +36633,18 @@ __metadata: languageName: node linkType: hard +"npm-pick-manifest@npm:^9.0.0": + version: 9.0.0 + resolution: "npm-pick-manifest@npm:9.0.0" + dependencies: + npm-install-checks: ^6.0.0 + npm-normalize-package-bin: ^3.0.0 + npm-package-arg: ^11.0.0 + semver: ^7.3.5 + checksum: a6f102f9e9e8feea69be3a65e492fef6319084a85fc4e40dc88a277a3aa675089cef13ab0436ed7916e97c7bbba8315633d818eb15402c3abfb0bddc1af08cc7 + languageName: node + linkType: hard + "npm-registry-fetch@npm:^12.0.0, npm-registry-fetch@npm:^12.0.1": version: 12.0.2 resolution: "npm-registry-fetch@npm:12.0.2" @@ -35550,6 +36810,20 @@ __metadata: languageName: node linkType: hard +"object-pairs@npm:^0.1.0": + version: 0.1.0 + resolution: "object-pairs@npm:0.1.0" + checksum: 8bde82dda701c84a27ba5bcf5e014283c6defbdab6df189af0b6582541711ed86ba2f0cce0a300a2220ba27b54ee11128c508982a191fa04f81770a7695b23d9 + languageName: node + linkType: hard + +"object-values@npm:^1.0.0": + version: 1.0.0 + resolution: "object-values@npm:1.0.0" + checksum: b86e7ef56349de1444e45b00f4aac7dcb76f2973f3e2cd5836cf86815b1ea4b2b3827bb2320cd5d1a50c78dd3068ce23cbcb5a1f024abe12296af8cf50d17a22 + languageName: node + linkType: hard + "object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" @@ -36003,6 +37277,16 @@ __metadata: languageName: node linkType: hard +"p-memoize@npm:4.0.1": + version: 4.0.1 + resolution: "p-memoize@npm:4.0.1" + dependencies: + mem: ^6.0.1 + mimic-fn: ^3.0.0 + checksum: 322294f7d8c6112cc961cf48f3e08eadc5fa0da7bc457db1a3f6f6c72d9745ae098255584d67a62367707551c514825917c86773e60c27cc341eabc9636d0a0d + languageName: node + linkType: hard + "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" @@ -36230,6 +37514,13 @@ __metadata: languageName: node linkType: hard +"parse-ms@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-ms@npm:4.0.0" + checksum: 673c801d9f957ff79962d71ed5a24850163f4181a90dd30c4e3666b3a804f53b77f1f0556792e8b2adbb5d58757907d1aa51d7d7dc75997c2a56d72937cbc8b7 + languageName: node + linkType: hard + "parse-multipart-data@npm:^1.4.0": version: 1.5.0 resolution: "parse-multipart-data@npm:1.5.0" @@ -36237,6 +37528,15 @@ __metadata: languageName: node linkType: hard +"parse-npm-tarball-url@npm:^3.0.0": + version: 3.0.0 + resolution: "parse-npm-tarball-url@npm:3.0.0" + dependencies: + semver: ^6.1.0 + checksum: 4a6c1048a86465570fe128d69aa4d5a4a9916cbdf86ac39e43fca3fea16554905cafa4b351bf6274ce131e698412fd89157b372abed29dfd8e6aea9e67b3a717 + languageName: node + linkType: hard + "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" @@ -36413,21 +37713,6 @@ __metadata: languageName: node linkType: hard -"passport-saml@npm:^3.1.2": - version: 3.2.4 - resolution: "passport-saml@npm:3.2.4" - dependencies: - "@xmldom/xmldom": ^0.7.6 - debug: ^4.3.2 - passport-strategy: ^1.0.0 - xml-crypto: ^2.1.3 - xml-encryption: ^2.0.0 - xml2js: ^0.4.23 - xmlbuilder: ^15.1.1 - checksum: 8e885af4d44c2d862b2ea0d051ab2a36bc6f9a70e62f90daf7ce4eefd126ac2ab4d5fc070693eba05f5e1be248af23fa018611bbfa7fad31708371f387f5dd77 - languageName: node - linkType: hard - "passport-strategy@npm:1.x.x, passport-strategy@npm:^1.0.0": version: 1.0.0 resolution: "passport-strategy@npm:1.0.0" @@ -36435,6 +37720,17 @@ __metadata: languageName: node linkType: hard +"passport@npm:^0.6.0": + version: 0.6.0 + resolution: "passport@npm:0.6.0" + dependencies: + passport-strategy: 1.x.x + pause: 0.0.1 + utils-merge: ^1.0.1 + checksum: ef932ad671d50de34765c7a53cd1e058d8331a82a6df09265a9c6c1168911aee4a7b5215803d0101110ab7f317e096b4954ca7e18fb2c33b9929f0bd17dbe159 + languageName: node + linkType: hard + "passport@npm:^0.7.0": version: 0.7.0 resolution: "passport@npm:0.7.0" @@ -36558,6 +37854,15 @@ __metadata: languageName: node linkType: hard +"path-temp@npm:^2.1.0": + version: 2.1.0 + resolution: "path-temp@npm:2.1.0" + dependencies: + unique-string: ^2.0.0 + checksum: ad28022a9c807d17d729c3ee265cd51a36f2d0283c9b1daee02dfd84fa2e4944b93e0a8d07bd5c2ed678c3c6c048d011c1817a181f6a3f03cd3a9648faef1b7d + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -36783,7 +38088,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": +"picocolors@npm:1.0.0, picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 @@ -36797,6 +38102,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:3.0.1": + version: 3.0.1 + resolution: "picomatch@npm:3.0.1" + checksum: b7fe18174bcc05bbf0ea09cc85623ae395676b3e6bc25636d4c20db79a948586237e429905453bf1ba385bc7a7aa5b56f1b351680e650d2b5c305ceb98dfc914 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -36940,27 +38252,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.41.1": - version: 1.41.1 - resolution: "playwright-core@npm:1.41.1" +"playwright-core@npm:1.41.2": + version: 1.41.2 + resolution: "playwright-core@npm:1.41.2" bin: playwright-core: cli.js - checksum: c83446a560c6bd85f6f0cd586ff8c643b77e2005567386e12f85890936cc370673114b94cd883246018797cc1580e93b0296ade7d07275bb611b8962f5bb9693 + checksum: b41ede0db3fd3e3f7e0b0efbdfb2dbc4db345e113cf9c4451af21d1d5b5d9ab5e969f5662852925e37b2198ae5daab92aa48108fe3d4eb81c849ba8752aaf8cc languageName: node linkType: hard -"playwright@npm:1.41.1": - version: 1.41.1 - resolution: "playwright@npm:1.41.1" +"playwright@npm:1.41.2": + version: 1.41.2 + resolution: "playwright@npm:1.41.2" dependencies: fsevents: 2.3.2 - playwright-core: 1.41.1 + playwright-core: 1.41.2 dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 3da7fb929abdec6adbdd8829f840580f5f210713214a8d230b130127f2270403eb2113c6c1418012221149707250fff896794c7c22c260dd09a92bf800227f31 + checksum: acf166003ec42cd795f5fca096c5135880d78e84ec2d0a1911b2cab984cf75dc06e50d3aa24b56cbcbc5369ca8c61831e76c5f8674531a272fbd0f6e624fa387 languageName: node linkType: hard @@ -37428,13 +38740,13 @@ __metadata: linkType: hard "postcss@npm:^8.1.0, postcss@npm:^8.4.27, postcss@npm:^8.4.33": - version: 8.4.33 - resolution: "postcss@npm:8.4.33" + version: 8.4.34 + resolution: "postcss@npm:8.4.34" dependencies: nanoid: ^3.3.7 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 6f98b2af4b76632a3de20c4f47bf0e984a1ce1a531cf11adcb0b1d63a6cbda0aae4165e578b66c32ca4879038e3eaad386a6be725a8fb4429c78e3c1ab858fe9 + checksum: 46c32b51810a23060288c86fdb5195237c497f952c674167fd1cbb3f0c628389a3fd48ae0b289447e5368b4abbc95f81e2d318bfdc5554063b2a7e8192e1a540 languageName: node linkType: hard @@ -37655,6 +38967,15 @@ __metadata: languageName: node linkType: hard +"pretty-ms@npm:9.0.0": + version: 9.0.0 + resolution: "pretty-ms@npm:9.0.0" + dependencies: + parse-ms: ^4.0.0 + checksum: 072b17547e09cb232e8e4c7be0281e256b6d8acd18dfb2fdd715d50330d1689fdaa877f53cf90c62ed419ef842f0f5fb94a2cd8ed1aa6d7608ad48834219435d + languageName: node + linkType: hard + "printj@npm:~1.1.0": version: 1.1.2 resolution: "printj@npm:1.1.2" @@ -38015,6 +39336,13 @@ __metadata: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + "queue-tick@npm:^1.0.1": version: 1.0.1 resolution: "queue-tick@npm:1.0.1" @@ -38066,6 +39394,13 @@ __metadata: languageName: node linkType: hard +"ramda@npm:@pnpm/ramda@0.28.1": + version: 0.28.1 + resolution: "@pnpm/ramda@npm:0.28.1" + checksum: e45e41ceab4f9a0a08fec9c7809a7b79cf3b3220998588f76567addb7533167b591112e0ea1a34b9d99f97ab7511a5bedb1cbb3d49c424c7dc0cdc060ffc2aae + languageName: node + linkType: hard + "ramda@npm:~0.29.1": version: 0.29.1 resolution: "ramda@npm:0.29.1" @@ -38426,11 +39761,11 @@ __metadata: linkType: hard "react-hook-form@npm:^7.12.2, react-hook-form@npm:^7.13.0": - version: 7.49.3 - resolution: "react-hook-form@npm:7.49.3" + version: 7.50.1 + resolution: "react-hook-form@npm:7.50.1" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: 9769845e2749f5c9d1d033be3819bc572ffa67f19ec2e567c61a58d0d060107facdf8425aab253c2e667c00853b7706a50bd6739fca6228c284c9313420ca26f + checksum: 40dcb64d2ff631f6da76db2c5788957da3429f07649a6f3aed76545c616fae8eee557a6b06d0d0842be1f80ac8244f44d87f4d8d83fddabec76d7ab9921f8781 languageName: node linkType: hard @@ -38565,7 +39900,7 @@ __metadata: languageName: node linkType: hard -"react-redux@npm:^9.0.4": +"react-redux@npm:^9.1.0": version: 9.1.0 resolution: "react-redux@npm:9.1.0" dependencies: @@ -38594,6 +39929,15 @@ __metadata: languageName: node linkType: hard +"react-relative-time@npm:^0.0.9": + version: 0.0.9 + resolution: "react-relative-time@npm:0.0.9" + peerDependencies: + react: ">=0.13.0" + checksum: 9c25887125df0eccfd4fee1edc4c99b19bef262ed5c66ac93269b63f0e1654a7c2758489d0d4b534847decc542dac23555896a7e2a0492af4c0ffbf48f1c62fe + languageName: node + linkType: hard + "react-remove-scroll-bar@npm:^2.3.3": version: 2.3.4 resolution: "react-remove-scroll-bar@npm:2.3.4" @@ -38681,15 +40025,15 @@ __metadata: linkType: hard "react-router-dom@npm:^6.3.0": - version: 6.21.3 - resolution: "react-router-dom@npm:6.21.3" + version: 6.22.0 + resolution: "react-router-dom@npm:6.22.0" dependencies: - "@remix-run/router": 1.14.2 - react-router: 6.21.3 + "@remix-run/router": 1.15.0 + react-router: 6.22.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: bcf668aa1428ca3048d7675f1ae3fe983c8792357a0ed59a1414cb1d682227727aad7c44c4222c6774b8d01bf352478845f7f3f668ebfcaa177208ef64e10bdc + checksum: 21cbdda0070dffb50845a97e2688648a9925c7ebabd1f9335523a1f8ae66048c1d9d06442f1b0ec35a266d1c63ed3b56b437db70807f73440a185f3e2d3c632f languageName: node linkType: hard @@ -38704,14 +40048,14 @@ __metadata: languageName: node linkType: hard -"react-router@npm:6.21.3, react-router@npm:^6.3.0": - version: 6.21.3 - resolution: "react-router@npm:6.21.3" +"react-router@npm:6.22.0, react-router@npm:^6.3.0": + version: 6.22.0 + resolution: "react-router@npm:6.22.0" dependencies: - "@remix-run/router": 1.14.2 + "@remix-run/router": 1.15.0 peerDependencies: react: ">=16.8" - checksum: 7e6297d5b67ae07d2e8564e036dbb15ebd706b41c22238940f47eee9b21ffb76d41336803c3b33435f1ebe210226577e32df3838bcbf2cd7c813fa357c0a4fac + checksum: 94f382f3fa6fcb8525c143d83d4c3a3b010979f417cac0bbe7a63f906b3809e2bb56e8c329b9b3fd3212a498670ab278aea72893e921b827dcf00024c3d115dd languageName: node linkType: hard @@ -38887,12 +40231,12 @@ __metadata: linkType: hard "react-virtualized-auto-sizer@npm:^1.0.11": - version: 1.0.21 - resolution: "react-virtualized-auto-sizer@npm:1.0.21" + version: 1.0.22 + resolution: "react-virtualized-auto-sizer@npm:1.0.22" peerDependencies: react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 - checksum: 9c0929a0363b3b3b10ad65ac57d7562a20966a9c38c28c10dfd296d0a6a3e678319dce2384c5177f43965c2b7f226f5766deffc4b7eaaab0ee7c2cfe0c7d6b48 + checksum: dc3fc29437b7179de71f77e5be3514e8789944132d7eb03f7157f783ec167ad9bebf1d371c135cf74fc5787dfac313a2914a5d23b45e978ae77be36c673342e5 languageName: node linkType: hard @@ -38935,6 +40279,16 @@ __metadata: languageName: node linkType: hard +"read-package-json-fast@npm:^3.0.0": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: ^3.0.0 + npm-normalize-package-bin: ^3.0.0 + checksum: 8d406869f045f1d76e2a99865a8fd1c1af9c1dc06200b94d2b07eef87ed734b22703a8d72e1cd36ea36cc48e22020bdd187f88243c7dd0563f72114d38c17072 + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -39048,7 +40402,7 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.6.0": +"readdirp@npm:^3.3.0, readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: @@ -39092,8 +40446,8 @@ __metadata: linkType: hard "recharts@npm:^2.5.0": - version: 2.10.4 - resolution: "recharts@npm:2.10.4" + version: 2.11.0 + resolution: "recharts@npm:2.11.0" dependencies: clsx: ^2.0.0 eventemitter3: ^4.0.1 @@ -39107,7 +40461,7 @@ __metadata: prop-types: ^15.6.0 react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: f283a21367aa675af83ada6d92ebd7bfa8931ba805bba34ee6247f74cba1b5d37c5fd48d20baa3533bbd3f0a98a1566e5d3733d23825caee8b256dd66ae5ff2c + checksum: 5c81ff38a244901757c594d8cd48de5d0ad3450d357de826a7ca98cfd1658732f320699ae32e497fb51e8c0db3fe6e7338d1990f1278a1c774ee5b9f00146e2d languageName: node linkType: hard @@ -39198,7 +40552,7 @@ __metadata: languageName: node linkType: hard -"redux@npm:^5.0.0": +"redux@npm:^5.0.1": version: 5.0.1 resolution: "redux@npm:5.0.1" checksum: e74affa9009dd5d994878b9a1ce30d6569d986117175056edb003de2651c05b10fe7819d6fa94aea1a94de9a82f252f986547f007a2fbeb35c317a2e5f5ecf2c @@ -39412,6 +40766,16 @@ __metadata: languageName: node linkType: hard +"rename-overwrite@npm:^5.0.0": + version: 5.0.0 + resolution: "rename-overwrite@npm:5.0.0" + dependencies: + "@zkochan/rimraf": ^2.1.2 + fs-extra: 10.1.0 + checksum: eaac7b36302b6f184dcff91c625776e3a3b46b234550adcf70434695ef9c7dd28bd9c5b2945c4a7fbcd09649bd31efce26aae39166becdc05ca9213524d2c3b8 + languageName: node + linkType: hard + "renderkid@npm:^3.0.0": version: 3.0.0 resolution: "renderkid@npm:3.0.0" @@ -39508,7 +40872,7 @@ __metadata: languageName: node linkType: hard -"reselect@npm:^5.0.1": +"reselect@npm:^5.1.0": version: 5.1.0 resolution: "reselect@npm:5.1.0" checksum: 5bc9c5d03d7caea00d0c0e24330bf23d91801227346fec1cef6a60988ab8d3dd7cee76e6994ca0915bc1c20845bb2bd929b95753763e0a9db74c0f9dff5cb845 @@ -39723,6 +41087,13 @@ __metadata: languageName: node linkType: hard +"reverse-arguments@npm:^1.0.0": + version: 1.0.0 + resolution: "reverse-arguments@npm:1.0.0" + checksum: 4dc725066adb35bccdee90545bab7e3ddd07e61c3622afa22a6a17cc84cf22166f9355f8f206c89d344f0afc78a53ae6a8d43a710ca9774a676e3632a5a3d9a1 + languageName: node + linkType: hard + "rfc4648@npm:^1.3.0": version: 1.4.0 resolution: "rfc4648@npm:1.4.0" @@ -39965,15 +41336,17 @@ __metadata: eslint-plugin-react: ^7.28.0 eslint-plugin-testing-library: ^6.0.0 fs-extra: 10.1.0 - husky: ^8.0.0 + husky: ^9.0.0 + knip: ^4.3.1 lint-staged: ^15.0.0 minimist: ^1.2.5 node-gyp: ^10.0.0 prettier: ^2.2.1 semver: ^7.5.3 shx: ^0.3.2 + sloc: ^0.3.1 ts-node: ^10.4.0 - typescript: ~5.2.0 + typescript: ~5.1.0 languageName: unknown linkType: soft @@ -40027,10 +41400,12 @@ __metadata: languageName: node linkType: hard -"run-parallel@npm:^1.1.9": - version: 1.1.9 - resolution: "run-parallel@npm:1.1.9" - checksum: 8bbeda89c2c1dbfeaa0cdb9f17e93a011ac58ef77339ef1e61a62208b67c8e7b661891df677bb7c5be84b8792e27061177368d500b3c731bb019b0c71e667591 +"run-parallel@npm:^1.1.9, run-parallel@npm:^1.2.0": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d languageName: node linkType: hard @@ -40306,7 +41681,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4": +"semver@npm:7.5.4, semver@npm:~7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -40317,7 +41692,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -40326,6 +41701,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.4.0, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -40559,6 +41945,13 @@ __metadata: languageName: node linkType: hard +"shell-quote-word@npm:^1.0.1": + version: 1.0.1 + resolution: "shell-quote-word@npm:1.0.1" + checksum: 05c5df92acba3e7920dbd987b235276871d38cf360d339074cbfabea49bbca8406a6f06a822cd1e84912c3150277d73de5194ca21c37ef95e108dfe45372526f + languageName: node + linkType: hard + "shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" @@ -40755,6 +42148,20 @@ __metadata: languageName: node linkType: hard +"sloc@npm:^0.3.1": + version: 0.3.2 + resolution: "sloc@npm:0.3.2" + dependencies: + async: ^3.2.4 + cli-table: ^0.3.11 + commander: ^11.0.0 + readdirp: ^3.3.0 + bin: + sloc: bin/sloc + checksum: ea3b0a0c5383086d5210f9a9be5df5cbd8aa0a5f6a1902ba776e9faf9bb816092929f5eb4c88c5cd3961700da4229e55eee5b3bc291892159dd947e3e838e0aa + languageName: node + linkType: hard + "slugify@npm:^1.6.4": version: 1.6.6 resolution: "slugify@npm:1.6.6" @@ -40785,6 +42192,13 @@ __metadata: languageName: node linkType: hard +"smol-toml@npm:1.1.4": + version: 1.1.4 + resolution: "smol-toml@npm:1.1.4" + checksum: 71537b27c18172c819778d54b6328d438af9d16dd63f0722a9df9fd77c7084eb163274224910c89e6dec0369f130ab050bc3cf4bdba34a4dc134b4faa74749de + languageName: node + linkType: hard + "smtp-address-parser@npm:^1.0.3": version: 1.0.10 resolution: "smtp-address-parser@npm:1.0.10" @@ -41129,12 +42543,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.4 - resolution: "ssri@npm:10.0.4" +"ssri@npm:10.0.5, ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" dependencies: - minipass: ^5.0.0 - checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165 + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 languageName: node linkType: hard @@ -41464,6 +42878,13 @@ __metadata: languageName: node linkType: hard +"string.fromcodepoint@npm:^0.2.1": + version: 0.2.1 + resolution: "string.fromcodepoint@npm:0.2.1" + checksum: 6ba80f70c3e2a36dab87f5d68168936403295a73838564e701f5c861d397d77d9e97b0e2aa0f3c163a25a96c785dcc2145452b220753fb7b3e6c6fe431c9c411 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -41637,6 +43058,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:5.0.1": + version: 5.0.1 + resolution: "strip-json-comments@npm:5.0.1" + checksum: b314af70c6666a71133e309a571bdb87687fc878d9fd8b38ebed393a77b89835b92f191aa6b0bc10dfd028ba99eed6b6365985001d64c5aef32a4a82456a156b + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -41798,6 +43226,13 @@ __metadata: languageName: node linkType: hard +"summary@npm:2.1.0": + version: 2.1.0 + resolution: "summary@npm:2.1.0" + checksum: 10ac12ce12c013b56ad44c37cfac206961f0993d98867b33b1b03a27b38a1cf8dd2db0b788883356c5335bbbb37d953772ef4a381d6fc8f408faf99f2bc54af5 + languageName: node + linkType: hard + "superagent@npm:^8.1.2": version: 8.1.2 resolution: "superagent@npm:8.1.2" @@ -41925,16 +43360,16 @@ __metadata: linkType: hard "swagger-ui-react@npm:^5.0.0": - version: 5.11.0 - resolution: "swagger-ui-react@npm:5.11.0" + version: 5.11.3 + resolution: "swagger-ui-react@npm:5.11.3" dependencies: - "@babel/runtime-corejs3": ^7.23.7 + "@babel/runtime-corejs3": ^7.23.8 "@braintree/sanitize-url": =7.0.0 base64-js: ^1.5.1 classnames: ^2.5.1 css.escape: 1.5.1 deep-extend: 0.6.0 - dompurify: =3.0.6 + dompurify: =3.0.8 ieee754: ^1.2.1 immutable: ^3.x.x js-file-download: ^0.4.12 @@ -41949,12 +43384,12 @@ __metadata: react-immutable-proptypes: 2.2.0 react-immutable-pure-component: ^2.2.0 react-inspector: ^6.0.1 - react-redux: ^9.0.4 + react-redux: ^9.1.0 react-syntax-highlighter: ^15.5.0 - redux: ^5.0.0 + redux: ^5.0.1 redux-immutable: ^4.0.0 remarkable: ^2.0.1 - reselect: ^5.0.1 + reselect: ^5.1.0 serialize-error: ^8.1.0 sha.js: ^2.4.11 swagger-client: ^3.25.0 @@ -41965,17 +43400,19 @@ __metadata: peerDependencies: react: ">=16.8.0 <19" react-dom: ">=16.8.0 <19" - checksum: f46acfe503f80566f5a28c5a7a27091f80a764d4602e81ef2dc59466097bdf0e6f6568b866a0a90ab23db39a88fe6f5e4d96b3d5367d05b8ecedb256477fb1cb + checksum: 44b6693cb3285c83ef54ea3484a5b2d3285517d77b3a7ba9cd8dfb7a2b25a25242f99ae04c0c0a5786841d490e2a0e1c4021c4d69012caf6983096fc8ead70dd languageName: node linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.3 - resolution: "swc-loader@npm:0.2.3" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: 010d84d399525c0185d36d62c86c55ae017e7a90046bc8a39be4b7e07526924037868049f6037bc966da98151cb2600934b96a66279b742d3c413a718b427251 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -42166,7 +43603,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.7": +"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.10": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: @@ -42393,6 +43830,22 @@ __metadata: languageName: node linkType: hard +"to-no-case@npm:^1.0.0": + version: 1.0.2 + resolution: "to-no-case@npm:1.0.2" + checksum: 1d85326eeb89f9f3a805bf5b395bcabb8556e882350164c1faa10846076732f4cec02ac95b016e7d6bb2f55e448ce5dd227c7699ec43e387c705a5b2b1ee2963 + languageName: node + linkType: hard + +"to-pascal-case@npm:^1.0.0": + version: 1.0.0 + resolution: "to-pascal-case@npm:1.0.0" + dependencies: + to-space-case: ^1.0.0 + checksum: 3956e209defc6df9de98c5db24a16fb2a1a11f711350ea3bdd9466240a04ab889fa09f1bd005e26fc31343c1cca341981daf2d80d4ec3f2d0706a557978f8b91 + languageName: node + linkType: hard + "to-readable-stream@npm:^1.0.0": version: 1.0.0 resolution: "to-readable-stream@npm:1.0.0" @@ -42409,6 +43862,15 @@ __metadata: languageName: node linkType: hard +"to-space-case@npm:^1.0.0": + version: 1.0.0 + resolution: "to-space-case@npm:1.0.0" + dependencies: + to-no-case: ^1.0.0 + checksum: 157cebe3e98e7cb465fe1978cf26450cc8ea8e637a01039854fac7ed60ad074e5e18b32333cc5f30df81b81ca374d63df768cd4c1fa0fe672605f965376227f4 + languageName: node + linkType: hard + "toggle-selection@npm:^1.0.6": version: 1.0.6 resolution: "toggle-selection@npm:1.0.6" @@ -43035,16 +44497,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.2.0": - version: 5.2.2 - resolution: "typescript@npm:5.2.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c - languageName: node - linkType: hard - "typescript@patch:typescript@~5.0.4#~builtin": version: 5.0.4 resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=a1c5e5" @@ -43065,16 +44517,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@~5.2.0#~builtin": - version: 5.2.2 - resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin::version=5.2.2&hash=a1c5e5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 07106822b4305de3f22835cbba949a2b35451cad50888759b6818421290ff95d522b38ef7919e70fb381c5fe9c1c643d7dea22c8b31652a717ddbd57b7f4d554 - languageName: node - linkType: hard - "ua-parser-js@npm:^0.7.30": version: 0.7.33 resolution: "ua-parser-js@npm:0.7.33" @@ -43179,6 +44621,15 @@ __metadata: languageName: node linkType: hard +"unescape-js@npm:^1.0.5": + version: 1.1.4 + resolution: "unescape-js@npm:1.1.4" + dependencies: + string.fromcodepoint: ^0.2.1 + checksum: 97acf60a8f6c170f8a66b48b71f5c56bda728c2ff6b08c3443c5f21635bf5fa38a4265bcfcf46d17cb6ac9bbb8b913a34b1abc5cfe8db5d7cc5c8eecb1817472 + languageName: node + linkType: hard + "uni-global@npm:^1.0.0": version: 1.0.0 resolution: "uni-global@npm:1.0.0" @@ -43789,7 +45240,7 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1": +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: @@ -43808,6 +45259,24 @@ __metadata: languageName: node linkType: hard +"validate-npm-package-name@npm:^4.0.0": + version: 4.0.0 + resolution: "validate-npm-package-name@npm:4.0.0" + dependencies: + builtins: ^5.0.0 + checksum: a32fd537bad17fcb59cfd58ae95a414d443866020d448ec3b22e8d40550cb585026582a57efbe1f132b882eea4da8ac38ee35f7be0dd72988a3cb55d305a20c1 + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^5.0.0": + version: 5.0.0 + resolution: "validate-npm-package-name@npm:5.0.0" + dependencies: + builtins: ^5.0.0 + checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e + languageName: node + linkType: hard + "validate.io-array@npm:^1.0.3": version: 1.0.6 resolution: "validate.io-array@npm:1.0.6" @@ -43896,6 +45365,15 @@ __metadata: languageName: node linkType: hard +"version-selector-type@npm:^3.0.0": + version: 3.0.0 + resolution: "version-selector-type@npm:3.0.0" + dependencies: + semver: ^7.3.2 + checksum: e97968054ad3bd2ff25a1c8e55273d34db5601e573f1ebca144b145d6a984925390358959859e77aca526082a64483e776e3f15178b0d8e2b3f1deb64932a7aa + languageName: node + linkType: hard + "vfile-message@npm:^3.0.0": version: 3.0.2 resolution: "vfile-message@npm:3.0.2" @@ -44048,6 +45526,13 @@ __metadata: languageName: node linkType: hard +"vlq@npm:^0.2.1": + version: 0.2.3 + resolution: "vlq@npm:0.2.3" + checksum: 2231d8caeb5b2c1a438677ab029e9a94aa6fb61ab05819c72691b792aea0456dab29576aff5ae29309ee45bad0a309e832dc45173119bca1393f3b87709d8f8d + languageName: node + linkType: hard + "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" @@ -44314,17 +45799,17 @@ __metadata: linkType: hard "webpack@npm:^5, webpack@npm:^5.70.0": - version: 5.89.0 - resolution: "webpack@npm:5.89.0" + version: 5.90.1 + resolution: "webpack@npm:5.90.1" dependencies: "@types/eslint-scope": ^3.7.3 - "@types/estree": ^1.0.0 + "@types/estree": ^1.0.5 "@webassemblyjs/ast": ^1.11.5 "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 acorn-import-assertions: ^1.9.0 - browserslist: ^4.14.5 + browserslist: ^4.21.10 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 @@ -44338,7 +45823,7 @@ __metadata: neo-async: ^2.6.2 schema-utils: ^3.2.0 tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.7 + terser-webpack-plugin: ^5.3.10 watchpack: ^2.4.0 webpack-sources: ^3.2.3 peerDependenciesMeta: @@ -44346,7 +45831,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 43fe0dbc30e168a685ef5a86759d5016a705f6563b39a240aa00826a80637d4a3deeb8062e709d6a4b05c63e796278244c84b04174704dc4a37bedb0f565c5ed + checksum: a7be844d5720a0c6282fec012e6fa34b1137dff953c5d48bf2ef066a6c27c1dbc92a9b9effc05ee61c9fe269499266db9782073f2d82a589d3c5c966ffc56584 languageName: node linkType: hard @@ -44565,13 +46050,13 @@ __metadata: linkType: hard "winston-transport@npm:^4.5.0": - version: 4.6.0 - resolution: "winston-transport@npm:4.6.0" + version: 4.7.0 + resolution: "winston-transport@npm:4.7.0" dependencies: logform: ^2.3.2 readable-stream: ^3.6.0 triple-beam: ^1.3.0 - checksum: 19f06ebdbb57cb14cdd48a23145d418d3bbe538851053303f84f04a8a849bb530b78b1495a175059c1299f92945dc61d5421c4914fee32d9a41bc397d84f26d7 + checksum: ce074b5c76a99bee5236cf2b4d30fadfaf1e551d566f654f1eba303dc5b5f77169c21545ff5c5e4fdad9f8e815fc6d91b989f1db34161ecca6e860e62fd3a862 languageName: node linkType: hard @@ -44760,24 +46245,24 @@ __metadata: languageName: node linkType: hard -"xml-crypto@npm:^2.1.3": - version: 2.1.5 - resolution: "xml-crypto@npm:2.1.5" +"xml-crypto@npm:^3.0.1": + version: 3.2.0 + resolution: "xml-crypto@npm:3.2.0" dependencies: - "@xmldom/xmldom": ^0.7.9 + "@xmldom/xmldom": ^0.8.8 xpath: 0.0.32 - checksum: 387ed6aa812f9ea7fb33385bd3e934042152ee9a97870f28ebfa5c7931eee23a7a2d36ca35916fbe5eadd65163ce9483db661cf3f569c9177773e8efa1acfa37 + checksum: 6c4974a7518307ea006dcfc1405f61c6738b45574b4d9d1e62f53b602bfcf894d34017f99d618f26f67c40a5e6d78e6228116ded2768b2ca5b2df5c8bf7774b7 languageName: node linkType: hard -"xml-encryption@npm:^2.0.0": - version: 2.0.0 - resolution: "xml-encryption@npm:2.0.0" +"xml-encryption@npm:^3.0.2": + version: 3.0.2 + resolution: "xml-encryption@npm:3.0.2" dependencies: - "@xmldom/xmldom": ^0.7.0 + "@xmldom/xmldom": ^0.8.5 escape-html: ^1.0.3 xpath: 0.0.32 - checksum: a454445704c5e3aa3f992128c413c02f3c00c346cb0d63b01beae4b6a341cfc0a52a0219ccec47dcce250e336ba7b09d95909913b1f199ca43604961a00a1995 + checksum: aac1b987d5de5becfc747c88c3a656c00799a153ab541078b875a69e1ac1f1c2f29bf85f22eab6a78382dc2919f79401a916cc392aba7994475919e0695893eb languageName: node linkType: hard @@ -44795,16 +46280,6 @@ __metadata: languageName: node linkType: hard -"xml2js@npm:^0.4.23": - version: 0.4.23 - resolution: "xml2js@npm:0.4.23" - dependencies: - sax: ">=0.6.0" - xmlbuilder: ~11.0.0 - checksum: ca0cf2dfbf6deeaae878a891c8fbc0db6fd04398087084edf143cdc83d0509ad0fe199b890f62f39c4415cf60268a27a6aed0d343f0658f8779bd7add690fa98 - languageName: node - linkType: hard - "xml2js@npm:^0.5.0": version: 0.5.0 resolution: "xml2js@npm:0.5.0" @@ -44853,6 +46328,13 @@ __metadata: languageName: node linkType: hard +"xpath@npm:0.0.27": + version: 0.0.27 + resolution: "xpath@npm:0.0.27" + checksum: 51f45d211a9a552a8f6a12a474061e89bafb07e0aecd4bad18a557411feb975919c158e1a66e4ea0542198c6ed442481d9f709c625cca57b97aaedeaeded902e + languageName: node + linkType: hard + "xpath@npm:0.0.32": version: 0.0.32 resolution: "xpath@npm:0.0.32" @@ -45223,15 +46705,24 @@ __metadata: linkType: hard "zod-to-json-schema@npm:^3.20.4, zod-to-json-schema@npm:^3.21.4": - version: 3.22.3 - resolution: "zod-to-json-schema@npm:3.22.3" + version: 3.22.4 + resolution: "zod-to-json-schema@npm:3.22.4" peerDependencies: zod: ^3.22.4 - checksum: 2747a3d1514f579006939c0edd6a420acae65ad016df223b09c4a542cbc8c0ae61b4d7b391228a211cde973635ed49c47b1449791982f3b32d799319bb174f42 + checksum: 22f89d505cc3d93020de38e4471362fbecd73a8df58017553ad57fb14e69b6f2f88bcdfe9f84b291442ed0654f97344d517af291d23848e43e6e208ee23dac2b languageName: node linkType: hard -"zod@npm:^3.22.4": +"zod-validation-error@npm:3.0.0": + version: 3.0.0 + resolution: "zod-validation-error@npm:3.0.0" + peerDependencies: + zod: ^3.18.0 + checksum: a1492268847aa69a160a50ad04dcce3d65454520c56a63680c1e6382f07a66a98463f5fbc0d58ee536651ec189fd0464d6ce657dddbdc37700cc8f7fc6e9c292 + languageName: node + linkType: hard + +"zod@npm:3.22.4, zod@npm:^3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f