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/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/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/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/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/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/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-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/pre.json b/.changeset/pre.json index e430b3c2f1..ec2e47ab29 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -268,25 +268,37 @@ "@backstage/plugin-signals-backend": "0.0.0", "@backstage/plugin-signals-node": "0.0.0", "@backstage/plugin-signals-react": "0.0.0", - "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.0.0" + "@backstage/plugin-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", @@ -297,35 +309,53 @@ "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", @@ -333,8 +363,10 @@ "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", @@ -342,10 +374,15 @@ "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", @@ -356,7 +393,10 @@ "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", @@ -364,16 +404,23 @@ "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", @@ -381,6 +428,7 @@ "thirty-dolls-admire", "tidy-cooks-mix", "tidy-cooks-mixed", + "tiny-donuts-drive", "tiny-kiwis-know", "tough-drinks-scream", "twelve-hounds-know", @@ -393,10 +441,14 @@ "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/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/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/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/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/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/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/workflows/ci.yml b/.github/workflows/ci.yml index 9332012290..247770a74e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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/deploy_packages.yml b/.github/workflows/deploy_packages.yml index ea390a3903..7e4f297933 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -196,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/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 1bddd792b7..fdedf56fb7 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -61,7 +61,7 @@ jobs: python-version: '3.10' - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@ede762b26a2de8d110bb5a3db4d7e0e080c0e917 # v1.3.3 + uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 - name: Setup gyp env run: | 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/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index 4c44c8ae65..8b71151ee9 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -88,7 +88,7 @@ Install cookie-parser: ```bash # From your Backstage root directory -yarn add --cwd packages/backend cookie-parser +yarn --cwd packages/backend add cookie-parser ``` Update routes in `packages/backend/src/index.ts`: @@ -223,7 +223,7 @@ Install cookie-parser: ```bash # From your Backstage root directory -yarn add --cwd packages/backend cookie-parser @types/cookie-parser +yarn --cwd packages/backend add cookie-parser @types/cookie-parser ``` Create a custom configured `rootHttpRouterService` in `packages/backend/src/customRootHttpRouterService.ts`: diff --git a/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md b/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md index 9ec3f1ca64..deef356d84 100644 --- a/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md +++ b/contrib/docs/tutorials/help-im-behind-a-corporate-proxy.md @@ -1,66 +1,65 @@ # Running the backend behind a Corporate Proxy -Let's admit it, we've all been there. Sometimes you've gotta run stuff with no way out to the public internet, only the smallest of corporate proxy tunnels. +This article helps you get your backend installation up and running making calls through corporate proxies. -Whilst this isn't supported natively by Backstage, this might help you get your installation up and running making calls through the said proxy tunnel. +## Background -## backend +Let's admit it, we've all been there. Sometimes you have to run stuff with no way out to the public internet, except via the smallest of corporate proxy tunnels. It's most likely that you're going to run into these issues from the backend part of Backstage as that's the part that isn't helped by your browser or OS settings for the corporate proxy. -Unfortunately, `nodejs` does not respect `HTTP(S)_PROXY` environment variables by default, and the library that we use to provide `fetch` functionality `node-fetch` (provided by `cross-fetch`) does not also respect these environment variables. +Unfortunately, neither the Node.js native `fetch` nor the other frequently used library `node-fetch` (see [ADR013](https://backstage.io/docs/architecture-decisions/adrs-adr013)) respect `HTTP(S)_PROXY` environment variables by default. As an additional complication, there is no single solution for configuring both native `fetch` and `node-fetch` at once, uniformly. -There are however some ways to get this to work without too much effort. It's most likely that you're going to run into these issues from the `backend` part of `backstage` as that's the part that isn't helped by your browser or OS's settings for the corporate proxy. +There are however some ways to get this to work without too much effort. -**Note:** You're gonna want to be in your backend working directory for these solutions as that's where the requests come from that don't go through this proxy. +## Installation -### Using `global-agent` +**Note:** You're going to want to be in your backend working directory for these solutions as that's where the requests come from that don't go through this proxy. -1. Install `global-agent` using `yarn add global-agent` -2. Go to the entry file for the backend (`src/index.ts`) -3. At the top of the file paste the following: +1. Install the required packages in your backend, by running the following command inside your backend directory (typically `packages/backend` under your repository root). -```ts -import 'global-agent/bootstrap'; -``` + ```bash + yarn add undici global-agent + ``` -4. Start the backend with the `global-agent` variables + `undici` exposes the settings for native `fetch`, and `global-agent` can set things up for `node-fetch`. -```sh -export GLOBAL_AGENT_HTTP_PROXY=$HTTP_PROXY -export GLOBAL_AGENT_NO_PROXY=$NO_PROXY -yarn start -``` +1. Go to the entry file for the backend (typically `packages/backend/src/index.ts`), and add the following at the top: -More information and more options for configuring `global-agent` including just using the default environment variables can be found here: https://github.com/gajus/global-agent + ```ts + import 'global-agent/bootstrap'; + import { setGlobalDispatcher, ProxyAgent } from 'undici'; -### Using `proxy-agent` + const proxyEnv = + process.env.GLOBAL_AGENT_HTTP_PROXY || + process.env.GLOBAL_AGENT_HTTPS_PROXY; -`proxy-agent` is a library that you can use to override the `globalAgents` of `node` land with a tunnel to use for each request. + if (proxyEnv) { + const proxyUrl = new URL(proxyEnv); + setGlobalDispatcher( + new ProxyAgent({ + uri: proxyUrl.protocol + proxyUrl.host, + token: + proxyUrl.username && proxyUrl.password + ? `Basic ${Buffer.from( + `${proxyUrl.username}:${proxyUrl.password}`, + ).toString('base64')}` + : undefined, + }), + ); + } + ``` -1. Install `proxy-agent` using `yarn add proxy-agent` -2. Go to the entry file for the backend (`src/index.ts`) -3. At the top of the file paste the following: + The first import automatically bootstraps `global-agent`, which addresses `node-fetch` proxying. The lines of code below that peeks into the same environment variables as `global-agent` uses, and also leverages them to set up the `undici` package which affects native `fetch`. Does that seem weird? Yes, we think so too. But in the current state of the Node.js ecosystem, that's how it works. -```ts -import ProxyAgent from 'proxy-agent'; -import http from 'http'; -import https from 'https'; + This code is kept brief for illustrative purposes. You may want to adjust it slightly if you need support for [no-proxy excludes](https://gist.github.com/zicklag/1bb50db6c5138de347c224fda14286da) or only do proxying in local development etc. Also see [the `global-agent` docs](https://github.com/gajus/global-agent) for information about its configuration options. -/* - Something to note here, this might need different configuration depending on your own setup. - If you only have an http_proxy then you'll need to set that as both the http and https globalAgent instead. -*/ -if (process.env.HTTP_PROXY) { - http.globalAgent = new ProxyAgent(process.env.HTTP_PROXY); -} +1. Start the backend with the correct environment variables set. For example: -if (process.env.HTTPS_PROXY) { - https.globalAgent = new ProxyAgent(process.env.HTTPS_PROXY); -} -``` + ```sh + export GLOBAL_AGENT_HTTP_PROXY=http://username:password@proxy.example.net:8888 + yarn start + ``` -4. Start the backend with `yarn start` - -## config +## Configuration If your development environment is in the cloud (like with [AWS Cloud9](https://aws.amazon.com/cloud9/) or an instance of [Theia](https://theia-ide.org/)), you will need to update your configuration. @@ -82,3 +81,33 @@ backend: ``` The app port must proxy web socket connections in order to make hot reloading work. + +## Alternatives to `global-agent` + +The `proxy-agent` package can be used as an alternative to `global-agent` (do not install both!), and also ensures that the `node-fetch` library correctly respects proxy settings, but [does NOT work](https://github.com/TooTallNate/proxy-agents/issues/239) for modern `undici` based native Node.js `fetch`, so you'll still have to also do the `undici` steps in the section above in addition to this. + +`proxy-agent` is a library that you can use to override the `globalAgents` of `node` land with a tunnel to use for each request. + +1. Install `proxy-agent` using `yarn add proxy-agent` +2. Go to the entry file for the backend (`src/index.ts`) +3. At the top of the file paste the following: + + ```ts + import ProxyAgent from 'proxy-agent'; + import http from 'http'; + import https from 'https'; + + /* + Something to note here, this might need different configuration depending on your own setup. + If you only have an http_proxy then you'll need to set that as both the http and https globalAgent instead. + */ + if (process.env.HTTP_PROXY) { + http.globalAgent = new ProxyAgent(process.env.HTTP_PROXY); + } + + if (process.env.HTTPS_PROXY) { + https.globalAgent = new ProxyAgent(process.env.HTTPS_PROXY); + } + ``` + +4. Start the backend with `yarn start` diff --git a/docs/auth/index.md b/docs/auth/index.md index 806cda0ff7..f6282264e4 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -35,6 +35,7 @@ Backstage comes with many common authentication providers in the core library: - [Okta](okta/provider.md) - [OAuth 2 Custom Proxy](oauth2-proxy/provider.md) - [OneLogin](onelogin/provider.md) +- [VMware Cloud](vmware-cloud/provider.md) These built-in providers handle the authentication flow for a particular service including required scopes, callbacks, etc. These providers are each added to a diff --git a/docs/auth/vmware-cloud/provider.md b/docs/auth/vmware-cloud/provider.md new file mode 100644 index 0000000000..20115f9e75 --- /dev/null +++ b/docs/auth/vmware-cloud/provider.md @@ -0,0 +1,171 @@ +--- +id: provider +title: VMware Cloud Authentication Provider +sidebar_label: VMware Cloud +description: Adding VMware Cloud as an authentication provider in Backstage +--- + +Backstage comes with an auth provider module to allow users to sign-in with +their VMware Cloud account. This page describes some actions within the VMware +Cloud Console and within a Backstage app required to enable this capability. + +## Create an OAuth App in the VMware Cloud Console + +1. Log in to the [VMware Cloud Console](https://console.cloud.vmware.com). +1. Navigate to [Identity & Access Management > OAuth + Apps](https://console.cloud.vmware.com/csp/gateway/portal/#/consumer/usermgmt/oauth-apps) + and click the [Owned + Apps](https://console.cloud.vmware.com/csp/gateway/portal/#/consumer/usermgmt/oauth-apps/owned-apps/view) + tab -- if you are not an Organization Owner or Administrator but only a + Member, you will not see this nav entry unless the **Developer** check box is + selected for your role (see the [Organization roles and + permissions](https://docs.vmware.com/en/VMware-Cloud-services/services/Using-VMware-Cloud-Services/GUID-C11D3AAC-267C-4F16-A0E3-3EDF286EBE53.html#organization-roles-and-permissions-0) + docs for details). +1. Click **Create App**, choose 'Web/Mobile app' and click **Continue**. +1. Use default settings except: + - `App Name` and `App Description` of your choosing. + - `Redirect URIs`: `${baseUrl}/api/auth/vmwareCloudServices/handler/frame` + where `baseUrl` is the URL where your Backstage backend can be reached; + note that VMware Cloud does not support the combination of an `http://` + scheme and a `localhost` hostname, so when testing locally it may help to + set your backend base URL to `http://127.0.0.1:7007`. + - `Refresh Token`: check `Issue refresh token`; refresh tokens are required + to prevent forcing users to re-login when they refresh their browser. + - `Define Scopes`: check `OpenID` at the bottom. +1. Click **Create**. +1. Take note of the `App ID` in the resulting modal; this is the client ID to be + used by Backstage. + +## Install the provider in the backend + +### New backend system + +Apps using the [new backend system](../../backend-system/index.md), +can enable the VMware Cloud provider with a small modification like: + +```ts title="packages/backend-next/src/index.ts" +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); +backend.add(import('@backstage/plugin-auth-backend')); +/* highlight-add-start */ +backend.add( + import('@backstage/plugin-auth-backend-module-vmware-cloud-provider'), +); +/* highlight-add-end */ +backend.start(); +``` + +### Old backend system + +This provider was added after the migration of the auth-backend plugin to the +new backend system, so no default provider factory was added. Because of this, +the installation procedure for old-style backends is slightly more involved: + +```ts title="packages/backend/src/plugins/auth.ts" +import { + DEFAULT_NAMESPACE, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { + createRouter, + providers, + defaultAuthProviderFactories, +} from '@backstage/plugin-auth-backend'; +import { Router } from 'express'; +import { PluginEnvironment } from '../types'; +/* highlight-add-start */ +import { + commonSignInResolvers, + createOAuthProviderFactory, +} from '@backstage/plugin-auth-node'; +import { + vmwareCloudAuthenticator, +} from '@backstage/plugin-auth-backend-module-vmware-cloud-provider'; +/* highlight-add-end */ + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + return await createRouter({ + logger: env.logger, + config: env.config, + database: env.database, + discovery: env.discovery, + tokenManager: env.tokenManager, + providerFactories: { + ...defaultAuthProviderFactories, + /* highlight-add-start */ + vmwareCloudServices: createOAuthProviderFactory({ + authenticator: vmwareCloudAuthenticator, + signInResolver: + commonSignInResolvers.emailLocalPartMatchingUserEntityName(), + }), + /* highlight-add-end */ +``` + +In the above, `commonSignInResolvers.emailLocalPartMatchingUserEntityName()` +can be replaced with a more suitable resolver for the app in question. + +## Configure Sign-in Resolution + +See [Sign-in Identities and Resolvers](../identity-resolver.md) for details. + +## Add to Sign-in Page + +See the [Sign-In Configuration](../index.md#sign-in-configuration) docs for +general guidance, but as an example: + +```tsx title="packages/app/src/App.tsx" +/* highlight-add-start */ +import { vmwareCloudAuthApiRef } from '@backstage/core-plugin-api'; +import { SignInPage } from '@backstage/core-components'; +/* highlight-add-end */ + +const app = createApp({ + /* highlight-add-start */ + components: { + SignInPage: props => ( + + ), + }, + /* highlight-add-end */ + // .. +}); +``` + +## Configuration + +Add the following to your `app-config.yaml` under the root `auth` configuration: + +```yaml +auth: + session: + secret: your session secret + environment: development + providers: + vmwareCloudServices: + development: + clientId: ${APP_ID} + organizationId: ${ORG_ID} +``` + +where `APP_ID` refers to the ID retrieved when creating the OAuth App, and +`ORG_ID` is the [long ID of the +Organization](https://docs.vmware.com/en/VMware-Cloud-services/services/Using-VMware-Cloud-Services/GUID-CF9E9318-B811-48CF-8499-9419997DC1F8.html#view-the-organization-id-1) +in VMware Cloud for which you wish to enable sign-in. + +Note that VMware Cloud requires OAuth Apps to use +[PKCE](https://oauth.net/2/pkce/) when performing authorization code flows; the +library used by this provider requires the use of Express session middleware to +do this. Therefore the value `your session secret` under `auth.session.secret` +should be replaced with a long, complex and unique string which will act as a +key for signing session cookies set by Backstage. diff --git a/docs/backend-system/building-backends/08-migrating.md b/docs/backend-system/building-backends/08-migrating.md index fc1a6f1859..9eada30ef6 100644 --- a/docs/backend-system/building-backends/08-migrating.md +++ b/docs/backend-system/building-backends/08-migrating.md @@ -83,7 +83,7 @@ following command: ```bash # from the repository root -yarn add --cwd packages/backend @backstage/backend-defaults @backstage/backend-plugin-api +yarn --cwd packages/backend add @backstage/backend-defaults @backstage/backend-plugin-api ``` You should now be able to start this up with the familiar `yarn workspace @@ -616,7 +616,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-catalog-node +yarn --cwd packages/backend add @backstage/plugin-catalog-node ``` Here we've placed the module directly in the backend index file just to get @@ -681,7 +681,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-events-node +yarn --cwd packages/backend add @backstage/plugin-events-node ``` Here we've placed the module directly in the backend index file just to get @@ -715,7 +715,7 @@ And of course you'll need to install those separately as well. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-scaffolder-backend-module-github ``` You can find a list of the available modules under the [plugins directory](https://github.com/backstage/backstage/tree/master/plugins) in the monorepo. @@ -766,7 +766,7 @@ if you didn't already have one. ```bash # from the repository root -yarn add --cwd packages/backend @backstage/plugin-scaffolder-node +yarn --cwd packages/backend add @backstage/plugin-scaffolder-node ``` Here we've placed the module directly in the backend index file just to get diff --git a/docs/features/kubernetes/installation.md b/docs/features/kubernetes/installation.md index 5111b5ad2e..bdd14098ff 100644 --- a/docs/features/kubernetes/installation.md +++ b/docs/features/kubernetes/installation.md @@ -17,7 +17,7 @@ application. ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-kubernetes +yarn --cwd packages/app add @backstage/plugin-kubernetes ``` Once the package has been installed, you need to import the plugin in your app @@ -55,7 +55,7 @@ Navigate to `packages/backend` of your Backstage app, and install the ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-kubernetes-backend +yarn --cwd packages/backend add @backstage/plugin-kubernetes-backend ``` Create a file called `kubernetes.ts` inside `packages/backend/src/plugins/` and diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index 1787189e91..7989b60ae2 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -18,7 +18,7 @@ If you haven't setup Backstage already, start ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-search @backstage/plugin-search-react +yarn --cwd packages/app add @backstage/plugin-search @backstage/plugin-search-react ``` Create a new `packages/app/src/components/search/SearchPage.tsx` file in your @@ -135,7 +135,7 @@ Add the following plugins into your backend app: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-search-backend @backstage/plugin-search-backend-node +yarn --cwd packages/backend add @backstage/plugin-search-backend @backstage/plugin-search-backend-node ``` Create a `packages/backend/src/plugins/search.ts` file containing the following diff --git a/docs/features/techdocs/addons.md b/docs/features/techdocs/addons.md index 2e17891917..471e62a57f 100644 --- a/docs/features/techdocs/addons.md +++ b/docs/features/techdocs/addons.md @@ -54,7 +54,7 @@ Addons are rendered in the order in which they are registered. ## Installing and using Addons -To start using Addons you need to add the `@backstage/plugin-techdocs-module-addons-contrib` package to your app. You can do that by running this command from the root of your project: `yarn add --cwd packages/app @backstage/plugin-techdocs-module-addons-contrib` +To start using Addons you need to add the `@backstage/plugin-techdocs-module-addons-contrib` package to your app. You can do that by running this command from the root of your project: `yarn --cwd packages/app add @backstage/plugin-techdocs-module-addons-contrib` Addons can be installed and configured in much the same way as extensions for other Backstage plugins: by adding them underneath an extension registry diff --git a/docs/features/techdocs/getting-started.md b/docs/features/techdocs/getting-started.md index f798384697..eaa6c2de72 100644 --- a/docs/features/techdocs/getting-started.md +++ b/docs/features/techdocs/getting-started.md @@ -23,7 +23,7 @@ Navigate to your new Backstage application directory. And then to your ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-techdocs +yarn --cwd packages/app add @backstage/plugin-techdocs ``` Once the package has been installed, you need to import the plugin in your app. @@ -108,7 +108,7 @@ Navigate to `packages/backend` of your Backstage app, and install the ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-techdocs-backend +yarn --cwd packages/backend add @backstage/plugin-techdocs-backend ``` Create a file called `techdocs.ts` inside `packages/backend/src/plugins/` and diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 5d797ecb4b..0c813b1aee 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -67,7 +67,7 @@ App. Use the following commands to start the PostgreSQL client installation: ```bash # From your Backstage root directory -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg ``` Use your favorite editor to open `app-config.yaml` and add your PostgreSQL diff --git a/docs/getting-started/configure-app-with-plugins.md b/docs/getting-started/configure-app-with-plugins.md index 5611117636..724746ca16 100644 --- a/docs/getting-started/configure-app-with-plugins.md +++ b/docs/getting-started/configure-app-with-plugins.md @@ -23,7 +23,7 @@ to an entity in the software catalog. ```bash # From your Backstage root directory - yarn add --cwd packages/app @circleci/backstage-plugin + yarn --cwd packages/app add @circleci/backstage-plugin ``` Note the plugin is added to the `app` package, rather than the root diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 04dfb13d6a..18f23f6607 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -30,7 +30,7 @@ Now, let's get started by installing the home plugin and creating a simple homep ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin-home +yarn --cwd packages/app add @backstage/plugin-home ``` #### 2. Create a new HomePage component diff --git a/docs/integrations/aws-s3/discovery.md b/docs/integrations/aws-s3/discovery.md index ceb780141f..d664466a16 100644 --- a/docs/integrations/aws-s3/discovery.md +++ b/docs/integrations/aws-s3/discovery.md @@ -64,7 +64,7 @@ the AWS catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-aws +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-aws ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index 3b25a9ac75..742fbb6076 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -98,7 +98,7 @@ the Azure catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-azure +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-azure ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 061baf7301..38c2e7618a 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -16,7 +16,7 @@ The package is not installed by default, therefore you have to add `@backstage/p ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-msgraph +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-msgraph ``` Next add the basic configuration to `app-config.yaml` diff --git a/docs/integrations/bitbucketCloud/discovery.md b/docs/integrations/bitbucketCloud/discovery.md index 53315a4c48..a7477a2a61 100644 --- a/docs/integrations/bitbucketCloud/discovery.md +++ b/docs/integrations/bitbucketCloud/discovery.md @@ -21,7 +21,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-bitbucket-cloud +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-cloud ``` ### Installation without Events Support diff --git a/docs/integrations/bitbucketServer/discovery.md b/docs/integrations/bitbucketServer/discovery.md index ad59006ff1..f37732b600 100644 --- a/docs/integrations/bitbucketServer/discovery.md +++ b/docs/integrations/bitbucketServer/discovery.md @@ -21,7 +21,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-bitbucket-server +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-server ``` And then add the entity provider to your catalog builder: diff --git a/docs/integrations/gerrit/discovery.md b/docs/integrations/gerrit/discovery.md index ee843d2454..e2922c1f76 100644 --- a/docs/integrations/gerrit/discovery.md +++ b/docs/integrations/gerrit/discovery.md @@ -18,7 +18,7 @@ the Gerrit provider plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gerrit +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gerrit ``` Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index 3c3d90d6e9..461fab8af8 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -23,7 +23,7 @@ package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` And then add the entity provider to your catalog builder: @@ -250,7 +250,7 @@ package, plus `@backstage/integration` for the basic credentials management: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/integration @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/integration @backstage/plugin-catalog-backend-module-github ``` And then add the processors to your catalog builder: diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 1404b20559..263ceda6c6 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -27,7 +27,7 @@ to `@backstage/plugin-catalog-backend-module-github` to your backend package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` > Note: When configuring to use a Provider instead of a Processor you do not @@ -308,7 +308,7 @@ install and register it in the catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-github +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github ``` ```typescript title="packages/backend/src/plugins/catalog.ts" diff --git a/docs/integrations/gitlab/discovery.md b/docs/integrations/gitlab/discovery.md index 235d93ab03..d41f4f8de5 100644 --- a/docs/integrations/gitlab/discovery.md +++ b/docs/integrations/gitlab/discovery.md @@ -39,7 +39,7 @@ the gitlab catalog plugin: ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gitlab ``` Once you've done that, you'll also need to add the segment below to `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index ca40cefa9e..f2a483c9d1 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -15,7 +15,7 @@ As this provider is not one of the default providers, you will first need to ins ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-gitlab +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gitlab ``` Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`: diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index 7306ab4105..9bc2667aa7 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -26,7 +26,7 @@ to `@backstage/plugin-catalog-backend-module-ldap` to your backend package. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-ldap +yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-ldap ``` > Note: When configuring to use a Provider instead of a Processor you do not diff --git a/docs/openapi/01-getting-started.md b/docs/openapi/01-getting-started.md index eb3b1c1209..5b9908756f 100644 --- a/docs/openapi/01-getting-started.md +++ b/docs/openapi/01-getting-started.md @@ -45,7 +45,7 @@ You should create a new folder, `src/schema` in your backend plugin to store you ## Generating a typed express router from a spec -Run `yarn backstage-repo-tools schema openapi generate `. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. +Run `yarn backstage-repo-tools package schema openapi generate --server` from the directory with your plugin. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. You should add this command to your `package.json` for future use and you can combine both the server generation and the client generation below like so, `yarn backstage-repo-tools package schema openapi generate --server --client-package ` Use it like so, update your `router.ts` or `createRouter.ts` file with the following content, @@ -63,7 +63,7 @@ export async function createRouter( ## Generating a typed client from a spec -Run `yarn backstage-repo-tools schema openapi generate-client --input-spec /src/schema/openapi.yaml --output-directory `. `` should match the same backend plugin we've been using so far. `` is a new directory and npm package that you should create. The general pattern is `plugins/-client`. +From your current backend plugin directory, run `yarn backstage-repo-tools package schema openapi generate --client-package `. `` is a new directory and npm package that you should create. The general pattern is `plugins/-client` or if you want to co-locate this with your other shared types, use `plugins/-common`. You should add this command to your `package.json` for future use. The generated client will have a directory `src/generated` that exports a `DefaultApiClient` class and all generated types. You can use the client like so, @@ -108,7 +108,7 @@ describe('createRouter', () => { + app = wrapInOpenApiTestServer(express().use(router)); ``` -This adds a wrapper around the express server that allows it to reroute traffic for `supertest`. Run `yarn backstage-repo-tools schema openapi init` to create some required config files. Now, when you run `yarn backstage-repo-tools schema openapi test` your schema will now be tested against your test data. Any errors will be reported. +This adds a wrapper around the express server that allows it to reroute traffic for `supertest`. Run `yarn backstage-repo-tools package schema openapi init` to create some required files. Now, when you run `yarn backstage-repo-tools repo schema openapi test` your schema will now be tested against your test data. Any errors will be reported. Our command is a small wrapper over [`Optic`](https://github.com/opticdev/optic) which does all of the heavy lifting. diff --git a/docs/openapi/generate-client.md b/docs/openapi/generate-client.md index f2c7c64574..640036960e 100644 --- a/docs/openapi/generate-client.md +++ b/docs/openapi/generate-client.md @@ -4,7 +4,7 @@ title: Generate a client from your OpenAPI spec description: Documentation on how to create a client for a given OpenAPI spec --- -## How to generate a client with `repo-tools schema openapi generate-client`? +## How to generate a client with `repo-tools package schema openapi generate client`? ### Prerequisites @@ -20,7 +20,7 @@ info: ### Generating your client -1. Run `yarn backstage-repo-tools schema openapi generate-client --input-spec --output-directory `. This will create a new folder in `/src/generated` to house the generated content. +1. Run `yarn backstage-repo-tools schema openapi generate client --output-package `. This will create a new folder in `/src/generated` to house the generated content. 2. You should use the generated files as follows, - `apis/DefaultApi.client.ts` - this is the client that you should use. It has types for all of the various operations on your API. diff --git a/docs/openapi/test-case-validation.md b/docs/openapi/test-case-validation.md index 0d93b6d5b5..28d0eb5470 100644 --- a/docs/openapi/test-case-validation.md +++ b/docs/openapi/test-case-validation.md @@ -1,15 +1,15 @@ --- id: test-case-validation title: Validate your OpenAPI spec against test data -description: Documentation on how to use the `schema openapi test` command. +description: Documentation on how to use the `repo schema openapi test` command. --- ## OpenAPI Validation using Test Cases -This is primarily performed by `backstage-repo-tools schema openapi test`. Any errors found in the generated specs can be either +This is primarily performed by `backstage-repo-tools repo schema openapi test`. Any errors found in the generated specs can be either 1. Fixed manually, this is usually relevant for request body or response body changes. -2. Fixed automatically with `backstage-repo-tools schema openapi test --update`. +2. Fixed automatically with `backstage-repo-tools repo schema openapi test --update`. 3. Fixing the test case. This can happen where a response is mocked as ```ts diff --git a/docs/permissions/getting-started.md b/docs/permissions/getting-started.md index 01a268f7ef..e241f0e38e 100644 --- a/docs/permissions/getting-started.md +++ b/docs/permissions/getting-started.md @@ -48,7 +48,7 @@ The permissions framework uses a new `permission-backend` plugin to accept autho ```bash # From your Backstage root directory - yarn add --cwd packages/backend @backstage/plugin-permission-backend + yarn --cwd packages/backend add @backstage/plugin-permission-backend ``` 2. Add the following to a new file, `packages/backend/src/plugins/permission.ts`. This adds the permission-backend router, and configures it with a policy which allows everything. diff --git a/docs/permissions/plugin-authors/01-setup.md b/docs/permissions/plugin-authors/01-setup.md index 8134fc0c39..a674d82e25 100644 --- a/docs/permissions/plugin-authors/01-setup.md +++ b/docs/permissions/plugin-authors/01-setup.md @@ -41,8 +41,8 @@ The source code is available here: ```sh # From your Backstage root directory - yarn add --cwd packages/backend @internal/plugin-todo-list-backend @internal/plugin-todo-list-common - yarn add --cwd packages/app @internal/plugin-todo-list + yarn --cwd packages/backend add @internal/plugin-todo-list-backend @internal/plugin-todo-list-common + yarn --cwd packages/app add @internal/plugin-todo-list ``` 3. Include the backend and frontend plugin in your application: diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index d2e93bb08c..22d4bae371 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -69,7 +69,7 @@ to your backend. ```bash # From your Backstage root directory -yarn add --cwd packages/backend @internal/plugin-carmen-backend@^0.1.0 # Change this to match the plugin's package.json +yarn --cwd packages/backend add @internal/plugin-carmen-backend@^0.1.0 # Change this to match the plugin's package.json ``` Create a new file named `packages/backend/src/plugins/carmen.ts`, and add the diff --git a/docs/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/switching-sqlite-postgres.md b/docs/tutorials/switching-sqlite-postgres.md index 87afabda60..2ef481dbf3 100644 --- a/docs/tutorials/switching-sqlite-postgres.md +++ b/docs/tutorials/switching-sqlite-postgres.md @@ -21,7 +21,7 @@ First, add PostgreSQL to your `backend` package: ```bash # From your Backstage root directory -yarn add --cwd packages/backend pg +yarn --cwd packages/backend add pg ``` ## Add PostgreSQL configuration diff --git a/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx b/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx index 4884762560..b59f943245 100644 --- a/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx +++ b/microsite/blog/2020-04-30-how-to-quickly-set-up-backstage.mdx @@ -102,7 +102,7 @@ Install in your app’s package folder (`/packages/app`) with: ```bash # From your Backstage root directory -yarn add --cwd packages/app @backstage/plugin- +yarn --cwd packages/app add @backstage/plugin- ``` After that, you inject the plugin into the application where you want it to be exposed. Please read the documentation for the specific plugin you are installing for more information. diff --git a/microsite/data/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/sidebars.json b/microsite/sidebars.json index 9bbc42dbfc..e76faac0ed 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -308,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", 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/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/package.json b/package.json index 6deae7611e..3592a3df84 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,8 @@ "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" }, "workspaces": { "packages": [ @@ -56,7 +56,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.1", + "version": "1.23.0-next.2", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3", @@ -85,13 +85,14 @@ "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", "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.1.0" }, diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 5a94ee1e0f..8df429cb29 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,26 @@ # @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 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/package.json b/packages/app-defaults/package.json index 450c9899e6..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.1", + "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 1e2fddca07..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 6369de1cb5..9de890ca79 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,13 @@ # 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 diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index 02c4a8fc9e..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.1", + "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 74f3baa8b6..26ebcd6f21 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,81 @@ # 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 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/package.json b/packages/app-next/package.json index 3907661e5f..3848870f53 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,6 +1,6 @@ { "name": "example-app-next", - "version": "0.0.6-next.1", + "version": "0.0.6-next.2", "private": true, "backstage": { "role": "frontend" diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 107eaba754..ca0d9ccc70 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,83 @@ # 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 diff --git a/packages/app/package.json b/packages/app/package.json index 31be0e1610..ae2fb203da 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.92-next.1", + "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 00c8a7ce99..e15a57936b 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 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/package.json b/packages/backend-app-api/package.json index 0d8065ef5c..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.1", + "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 d35884e425..42b0ba5d02 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,24 @@ # @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 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/package.json b/packages/backend-common/package.json index 2aab5c979c..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.1", + "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 479589a0d4..f0315d58d8 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/packages/backend-defaults/package.json index bf9b70a6a2..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.1", + "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/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 8615607ec8..4406c671c4 100644 --- a/packages/backend-dynamic-feature-service/CHANGELOG.md +++ b/packages/backend-dynamic-feature-service/CHANGELOG.md @@ -1,5 +1,28 @@ # @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 diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index 5a3b88eda6..08e3af8cec 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.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 2354345909..26f3cdf6b1 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,48 @@ # 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 diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index aca0acbdd3..1cb45644f7 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.1", + "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:^", @@ -58,6 +59,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 dd99bab5d7..4a16142e09 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -52,5 +52,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 fcddc4c1b8..e2f6b8521b 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index c551f1410b..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.1", + "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 d2f90ff3d5..139b9ac2b7 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/packages/backend-plugin-api/package.json index a2946bd803..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.1", + "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 5b0f4a899c..2c60f0ee93 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/packages/backend-tasks/package.json index 4089c3b520..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.1", + "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 ed2df1d75e..c39c5f9ab2 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 85a8588bfe..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.1", + "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 ff53bb5c58..188a359107 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,65 @@ # 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 diff --git a/packages/backend/package.json b/packages/backend/package.json index 2386d799a9..0b0a0f1491 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.92-next.1", + "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/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/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 6aada1492d..6928d03916 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 diff --git a/packages/cli/package.json b/packages/cli/package.json index 682e7dc09d..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.1", + "version": "0.25.2-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 456feeaa0f..c693f18b89 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,24 @@ # @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 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/package.json b/packages/core-app-api/package.json index d146f505e7..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.4-next.0", + "version": "1.12.0-next.1", "publishConfig": { "access": "public" }, 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 63c30cfe3c..366ac5cb65 100644 --- a/packages/core-compat-api/CHANGELOG.md +++ b/packages/core-compat-api/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/packages/core-compat-api/package.json b/packages/core-compat-api/package.json index dff05e9774..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.2.0-next.1", + "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 46c92e85bc..76b8d36ac6 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,37 @@ # @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 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/package.json b/packages/core-components/package.json index ffdf51c9ae..12a07e74a7 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.14.0-next.0", + "version": "0.14.0-next.1", "publishConfig": { "access": "public" }, 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 4639e8de59..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; 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-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 9705dad2c3..5c98243cb9 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 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/package.json b/packages/core-plugin-api/package.json index 717b90745b..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.3-next.0", + "version": "1.9.0-next.1", "publishConfig": { "access": "public" }, 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 ce03e3fcf4..136347bd3e 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 1485fa8474..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.1", + "version": "0.5.11-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/create-app/seed-yarn.lock b/packages/create-app/seed-yarn.lock index ec5d2e6c89..00a86105cc 100644 --- a/packages/create-app/seed-yarn.lock +++ b/packages/create-app/seed-yarn.lock @@ -16,9 +16,3 @@ // 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 - -// Fix for https://github.com/testing-library/jest-dom/issues/574 -"@testing-library/jest-dom@^6.0.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.3.0.tgz#e8d308e0c0e91d882340cbbfdea0e4daa7987d36" - integrity sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg== diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 1f07f4da83..19194614fd 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c0fa0b8658..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.1", + "version": "1.0.27-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index e89643470e..2188ec9ac7 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,14 @@ # 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 diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index e00be1d7cc..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.1", + "version": "0.2.12-next.2", "private": true, "backstage": { "role": "cli" diff --git a/packages/frontend-app-api/CHANGELOG.md b/packages/frontend-app-api/CHANGELOG.md index 1ddc9110db..f5ec61fa70 100644 --- a/packages/frontend-app-api/CHANGELOG.md +++ b/packages/frontend-app-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index 7d59e7ffd0..4dd530fd1a 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.1", + "version": "0.6.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 01479c692d..e81f3746d5 100644 --- a/packages/frontend-plugin-api/CHANGELOG.md +++ b/packages/frontend-plugin-api/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/packages/frontend-plugin-api/package.json index 7d8009f338..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.6.0-next.1", + "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", 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 7fe034bf04..c42e22e159 100644 --- a/packages/frontend-test-utils/CHANGELOG.md +++ b/packages/frontend-test-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/packages/frontend-test-utils/package.json b/packages/frontend-test-utils/package.json index a64cd68846..ea1a461b72 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.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index 03881f6da2..b057308802 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index a8371bf4c0..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.24-next.0", + "version": "1.1.24-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index 9b495d8db1..7454cd8473 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,35 @@ # @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 diff --git a/packages/repo-tools/cli-report.md b/packages/repo-tools/cli-report.md index be1e7ffceb..7988c479b0 100644 --- a/packages/repo-tools/cli-report.md +++ b/packages/repo-tools/cli-report.md @@ -15,7 +15,8 @@ Commands: api-reports [options] [paths...] type-deps generate-catalog-info [options] - schema [command] + package [command] + repo [command] help [command] ``` @@ -48,10 +49,23 @@ Options: -h, --help ``` -### `backstage-repo-tools schema` +### `backstage-repo-tools package` ``` -Usage: backstage-repo-tools schema [options] [command] [command] +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 +75,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/package.json b/packages/repo-tools/package.json index 95de5b6774..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.1", + "version": "0.6.0-next.2", "publishConfig": { "access": "public" }, 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..1fa37402ce 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)), ); } @@ -139,8 +168,8 @@ export function registerCommands(program: Command) { ), ), ); - - registerSchemaCommand(program); + registerPackageCommand(program); + registerRepoCommand(program); } // Wraps an action function so that it always exits and handles errors 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/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 996442157a..5aa1c0b002 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,24 @@ # 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 diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 6d74e17c29..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.1", + "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 5a3fd6703a..da5312e5de 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 025cc85df2..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.1", + "version": "1.8.2-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index b750ef2e66..69dd9616c6 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index d80d166573..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.1", + "version": "1.5.0-next.2", "publishConfig": { "access": "public" }, 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/package.json b/packages/theme/package.json index c844ba2019..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", diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 9afeca089b..077ba4feaa 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 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/package.json b/plugins/adr-backend/package.json index dea8d125ed..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.1", + "version": "0.4.7-next.2", "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 592477bc85..37af99141c 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 8767e24a1d..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.1", + "version": "0.6.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index cc518f1be4..098b5a988d 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 4d40a51881..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.1", + "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 def87da93f..086664d1dc 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/airbrake/package.json index fe304fc144..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.1", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index b1d8970d7b..454f4b9aea 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/allure/package.json index fc6c5a960d..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.1", + "version": "0.1.46-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index 693f313a99..b773e8dcbb 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-analytics-module-ga +## 0.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 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/package.json b/plugins/analytics-module-ga/package.json index 5774bd99c2..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.2.0-next.0", + "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 8406fe5c1b..7176b5f96a 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/analytics-module-ga4/package.json index 3ec2e762d1..7b21e4a30d 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.2.0-next.0", + "version": "0.2.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-newrelic-browser/CHANGELOG.md b/plugins/analytics-module-newrelic-browser/CHANGELOG.md index 9a5b34adc1..67bd3d94cc 100644 --- a/plugins/analytics-module-newrelic-browser/CHANGELOG.md +++ b/plugins/analytics-module-newrelic-browser/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/analytics-module-newrelic-browser/package.json index b3571e8bcf..e3d250f386 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.1.0-next.0", + "version": "0.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 3b534c978a..c733a68823 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 07bdd25627..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.20-next.0", + "version": "0.2.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 7ed0edf39b..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", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index ce6cecd924..07f9155a68 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 diff --git a/plugins/api-docs/README.md b/plugins/api-docs/README.md index 46d9df4628..9b8eb1669e 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/package.json b/plugins/api-docs/package.json index 723925dc5f..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.1", + "version": "0.10.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index c3aa23748b..9d3104cef5 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index b1a8e466e2..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.20-next.0", + "version": "0.1.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index b1ca09491d..562d4f9be2 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/app-backend/package.json index 4678001fb8..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.1", + "version": "0.3.58-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-node/CHANGELOG.md b/plugins/app-node/CHANGELOG.md index a61ea14c0d..8cfbbdc394 100644 --- a/plugins/app-node/CHANGELOG.md +++ b/plugins/app-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @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 diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json index 8da14adf64..02c0d999da 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.1", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-visualizer/CHANGELOG.md b/plugins/app-visualizer/CHANGELOG.md index 7a1b1085f9..e8965cc349 100644 --- a/plugins/app-visualizer/CHANGELOG.md +++ b/plugins/app-visualizer/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/app-visualizer/package.json b/plugins/app-visualizer/package.json index 60ea6a1e4b..4b5568e06f 100644 --- a/plugins/app-visualizer/package.json +++ b/plugins/app-visualizer/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-visualizer", "description": "Visualizes the Backstage app structure", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "publishConfig": { "access": "public" }, diff --git a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md index 427ec61299..68bc6e18c6 100644 --- a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-atlassian-provider/package.json b/plugins/auth-backend-module-atlassian-provider/package.json index 5be3261783..2e9d8d8b32 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.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md index 6d8e5e3968..feb86da63a 100644 --- a/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/auth-backend-module-aws-alb-provider/package.json b/plugins/auth-backend-module-aws-alb-provider/package.json index d4658dd7ea..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.1.0-next.0", + "version": "0.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md index dfde5de3fc..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,15 @@ # @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 diff --git a/plugins/auth-backend-module-gcp-iap-provider/package.json b/plugins/auth-backend-module-gcp-iap-provider/package.json index ecb597a396..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.1", + "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 82ea28d5c1..6ea4fa4bed 100644 --- a/plugins/auth-backend-module-github-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-github-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index 4bc9c00904..c72730efae 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.1", + "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-gitlab-provider/CHANGELOG.md b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md index d5888c773c..dbf92af499 100644 --- a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-gitlab-provider/package.json b/plugins/auth-backend-module-gitlab-provider/package.json index 371f39b83b..5f60e9baff 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.1", + "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-google-provider/CHANGELOG.md b/plugins/auth-backend-module-google-provider/CHANGELOG.md index addaaca1d9..cc0de75a00 100644 --- a/plugins/auth-backend-module-google-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-google-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-google-provider/package.json b/plugins/auth-backend-module-google-provider/package.json index c3a558cc8b..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.1", + "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 39506e9b32..e418b0dddb 100644 --- a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json index eda0b1af65..e68abd607e 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.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md index 9c9b71d17d..b3c248e7e5 100644 --- a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-oauth2-provider/package.json b/plugins/auth-backend-module-oauth2-provider/package.json index d1c1079c04..c5d940c7e0 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.1", + "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-oauth2-proxy-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md index 927c39c1c7..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,14 @@ # @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 diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/package.json b/plugins/auth-backend-module-oauth2-proxy-provider/package.json index 46473424b2..17f5a512cb 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.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md index 7c110f9102..d1e09e9d74 100644 --- a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/auth-backend-module-oidc-provider/package.json b/plugins/auth-backend-module-oidc-provider/package.json index b47c80099f..93b6196bfb 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.1", + "version": "0.1.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-okta-provider/CHANGELOG.md b/plugins/auth-backend-module-okta-provider/CHANGELOG.md index da62fc2c9d..483ba8b046 100644 --- a/plugins/auth-backend-module-okta-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-okta-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/auth-backend-module-okta-provider/package.json b/plugins/auth-backend-module-okta-provider/package.json index 4c12f3638b..c770d443bc 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.1", + "version": "0.0.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md index 9fcd872ff6..fbca8e4f78 100644 --- a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/auth-backend-module-pinniped-provider/package.json b/plugins/auth-backend-module-pinniped-provider/package.json index d4f712734a..977839c87a 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.1", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md b/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md index 9b508762b2..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,14 @@ # @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 diff --git a/plugins/auth-backend-module-vmware-cloud-provider/package.json b/plugins/auth-backend-module-vmware-cloud-provider/package.json index 914f88b37c..ab5eb71477 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.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 2defa050dc..dfe13532d0 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,46 @@ # @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 diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 9e11ff454f..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.1", + "version": "0.21.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -53,6 +53,7 @@ "@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", @@ -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" 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/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-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 61fa20fab5..edaf466c36 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index ce71dc8f68..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.1", + "version": "0.4.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 7c9b73e2c2..e6b38e5b6d 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-azure-devops-backend +## 0.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 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/package.json b/plugins/azure-devops-backend/package.json index 43b7796fc9..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.1", + "version": "0.5.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index c41a67c936..5cae1f7768 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 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/package.json b/plugins/azure-devops/package.json index e0cf441155..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.1", + "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,9 +43,11 @@ }, "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", diff --git a/plugins/azure-devops/src/alpha.ts b/plugins/azure-devops/src/alpha.ts new file mode 100644 index 0000000000..e80f131817 --- /dev/null +++ b/plugins/azure-devops/src/alpha.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 './alpha/index'; +export { default } from './alpha/index'; diff --git a/plugins/azure-devops/src/alpha/index.ts b/plugins/azure-devops/src/alpha/index.ts new file mode 100644 index 0000000000..2f137f09ee --- /dev/null +++ b/plugins/azure-devops/src/alpha/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 { 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 a8a6d35410..335303ef2f 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 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/package.json b/plugins/azure-sites-backend/package.json index 85ede81120..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.2.0-next.1", + "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/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 9309ce0f53..63979beec2 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 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/package.json b/plugins/azure-sites/package.json index 11349b64b4..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.1", + "version": "0.1.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index ab0009845a..8aa962cb71 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/badges-backend/package.json index ff96dda96c..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.1", + "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 483a122f31..a9a6bdc0c6 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/badges/package.json index ea02e5ac2a..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.1", + "version": "0.2.54-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 39ae91b7ae..895f81791e 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/bazaar-backend/package.json index 5da80c4abf..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.1", + "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 0ba74375b7..ffccf59822 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/bazaar/package.json index caab06574f..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.1", + "version": "0.2.22-next.2", "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 26550f8256..19e140bea9 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/bitrise/package.json index aed576b1a4..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.1", + "version": "0.1.57-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index ca262679da..e2975c6f47 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 6c4bfbcc24..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.1", + "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 e0a5015f45..4c480eabb8 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 25689ee227..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.1", + "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 d753d9c329..3507a16b9d 100644 --- a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index d1f802ad9c..e76d550c11 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.1", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 54af617791..5b327a6686 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 22b2dced18..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.1", + "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 cf949be883..8caf208ac0 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 87cc04f44b..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.1", + "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 index 072a012f3c..8a54e85f13 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 + ## 0.2.25-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index a1da43ef67..19dd046280 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.25-next.1", + "version": "0.2.25-next.2", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gcp/CHANGELOG.md b/plugins/catalog-backend-module-gcp/CHANGELOG.md index 803edca6c0..a259732710 100644 --- a/plugins/catalog-backend-module-gcp/CHANGELOG.md +++ b/plugins/catalog-backend-module-gcp/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json index c7ba34b81d..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.1", + "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 583bb808c7..295a1cc9b9 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 15d50fe373..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.1", + "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 af239ea8cd..0cfb5e4f1c 100644 --- a/plugins/catalog-backend-module-github-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-github-org/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index fff0740a8c..4eef491fef 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.1", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index d9ed9a3cf7..f1d44fe4e2 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index b330fdedab..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.5.0-next.1", + "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 f6b436e45b..dcf98ca5e6 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 691e5b2397..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.1", + "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 5de87bd35b..80e085e26a 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 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/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index e9e8ee9a07..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.1", + "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 7029f009fe..1c89427e82 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 191dc3a71a..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.1", + "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 6c6bea04ce..de85e49f8b 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/catalog-backend-module-msgraph/package.json index c248d653f2..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.1", + "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 021843ec33..6fb88caa5e 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 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/package.json b/plugins/catalog-backend-module-openapi/package.json index 7d6ff2cbe1..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.1", + "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 b8a6f0bb07..ffdc22dae2 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 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/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 16b267c1e4..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.1", + "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 e79aad72b7..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,16 @@ # @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 diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index 3d108cb573..17304252f2 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.1", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md index 1eeb5a275f..eb02dc42e8 100644 --- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md +++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/catalog-backend-module-unprocessed/package.json index 11bb465476..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.1", + "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 487782260d..ac8c84aac8 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @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 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/package.json b/plugins/catalog-backend/package.json index f062f51f0c..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.1", + "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-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 10a77816fd..196ed5dbb0 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,43 @@ # @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 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/package.json b/plugins/catalog-graph/package.json index 1dba15d840..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.1", + "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,8 +44,10 @@ "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", 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 8fc2ae334e..1a3627bb2f 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,25 @@ # @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 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/package.json b/plugins/catalog-import/package.json index efad119147..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.1", + "version": "0.10.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index 94101eca61..76bcdbf30a 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 6df027bbff..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.1", + "version": "1.6.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 0c2e6d2e3b..3d5bc36b5f 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,28 @@ # @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 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/package.json b/plugins/catalog-react/package.json index 6a8d425b88..b4c2c786b4 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.1", + "version": "1.10.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 633e77565b..84593ba2e1 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/catalog-unprocessed-entities/package.json index 5310384d83..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.8-next.0", + "version": "0.1.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 7c746f50a0..57c0698116 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,28 @@ # @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 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/package.json b/plugins/catalog/package.json index d7be816b36..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.1", + "version": "1.17.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index a55094f17d..8625e93e93 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index b5b3df2e90..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.1", + "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 2244ecd8b7..74830062f8 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 5145d3e861..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.1", + "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 fd6c349f91..aa44580b19 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/circleci/package.json index 4f28d51563..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.1", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index c068750a40..e869f48d9c 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index b0ba39fa5b..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.1", + "version": "0.4.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index af22228aac..b4be2026dc 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/code-climate/package.json index 64e1bf52e3..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.1", + "version": "0.1.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 41ccb0983f..4b25f421e3 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/code-coverage-backend/package.json index c734ff5baf..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.1", + "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 966f1ababd..3416ec8aef 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/code-coverage/package.json index 0f0bce758c..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.1", + "version": "0.2.23-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index 798bf1c1ce..b65c008d92 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/codescene/package.json index 1289303104..877ff7e537 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.22-next.0", + "version": "0.1.22-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 73c81c8fc8..4b880dcf75 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 4c3d5cc89c..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.50-next.0", + "version": "0.1.50-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index dccffc5cd3..763a02c730 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/cost-insights/package.json index 58d5e4c314..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.1", + "version": "0.12.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index b7810ca045..10d7b23896 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 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/package.json b/plugins/devtools-backend/package.json index 97823cf828..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.1", + "version": "0.2.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index fdf1491613..d088f41df5 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/devtools/package.json index 364188e3f4..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.1", + "version": "0.1.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index 2a0b88c042..671b9c9cc8 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/dynatrace/package.json index 10c3098e20..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.1", + "version": "9.0.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md index c0385a703c..c383d7327c 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/entity-feedback-backend/package.json index fe5499ab26..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.1", + "version": "0.2.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index 0d8ead8022..929acd6eed 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index c65bf8d670..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.1", + "version": "0.2.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index 452521c446..43123c3c35 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/entity-validation/package.json index 4431ba2b88..ed9d240067 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.1", + "version": "0.1.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index c2d54c9cf9..cae8875a0b 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/events-backend-module-aws-sqs/package.json index fbf35e693c..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.1", + "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 3ad7d00f96..0d5bd9553f 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 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/package.json b/plugins/events-backend-module-azure/package.json index 494b3da8d5..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.1", + "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 e54472e962..ba6730d810 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 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/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 4d8cfa22aa..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.1", + "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 c58d7bfac2..3cbd67c0fb 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 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/package.json b/plugins/events-backend-module-gerrit/package.json index b101fd58ac..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.1", + "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 93146d860b..101e29d5e9 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/events-backend-module-github/package.json index 2c9dc3bee6..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.1", + "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 1f434b21f4..eee1232877 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/events-backend-module-gitlab/package.json index a1f61b3ad6..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.1", + "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 8c9d9201a1..2e457eb3f6 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @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 diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index 71681b860b..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.1", + "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 0f5b012294..6c50327ffd 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/events-backend/package.json index 1a0d62f7fe..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.1", + "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 ae2127dfaf..dbe5d6b09f 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @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 diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 22f9388d0f..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.1", + "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 bc84f88be7..2717878149 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index a3e086079a..fb9ddd74a8 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.1", + "version": "1.0.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index e59692d964..f09e5acecd 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 82561eda37..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.22-next.0", + "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 f8527001f9..368f8cf2b4 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/explore-backend/package.json index 01f46b1f15..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.1", + "version": "0.0.20-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index ea65de3bae..f319daec4a 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index ffd368ca96..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.36-next.0", + "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 b42173f965..5a078cd842 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 83a4be0ec4..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.1", + "version": "0.4.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 16bdbe4200..355666d174 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/firehydrant/package.json index ba32ca259a..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.1", + "version": "0.2.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index 40cd2087d1..f7eabd5eca 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/fossa/package.json index 86db448e18..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.1", + "version": "0.2.62-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index f58ac8a65f..945b6f1e32 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 3b2c119fbc..d3f3fa31da 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.23-next.0", + "version": "0.3.23-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 05632ab18e..d2b4fce314 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 9925b5d853..3963141099 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.46-next.0", + "version": "0.3.46-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 335119c73a..d9e3f199a3 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index c1102756d9..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.42-next.0", + "version": "0.3.42-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 2125324bfc..f7556c1d30 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/github-actions/package.json index 7aa941acf1..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.1", + "version": "0.6.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 37793d24f1..337aaaa6ad 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/github-deployments/package.json index 6a4b45568d..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.1", + "version": "0.1.61-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index 27ff142acf..a1c4743805 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 5660e27397..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.1", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 6512e26ef7..2c38900bae 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 5bc03d2388..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.1", + "version": "0.1.24-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 77b13f0d28..41dd407fd5 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index c287555997..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.45-next.0", + "version": "0.3.45-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index d2bad7c04d..5065699d7c 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 3e3f7154ea..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.1", + "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 91a4be36c4..af6e1c246e 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/graphiql/package.json index 058352e8e0..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.1", + "version": "0.3.3-next.2", "publishConfig": { "access": "public" }, diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index 2d8af5adcb..75b5163061 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/graphql-voyager/package.json index c61e26889e..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.12-next.0", + "version": "0.1.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index aba096163f..83fab03632 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index dcaed77089..c37399f40a 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.1", + "version": "0.1.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 665d41c119..8310c70b4b 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,25 @@ # @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 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/package.json b/plugins/home/package.json index ae314c2e9d..a1a989db74 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.1", + "version": "0.6.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 055b169f7d..2db92262d5 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/ilert/package.json index c00eec63f6..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.1", + "version": "0.2.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 650b5919ed..3c6eebd2f4 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 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/package.json b/plugins/jenkins-backend/package.json index 0012912d95..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.1", + "version": "0.3.4-next.2", "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 9431caa947..8d0a465de8 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/jenkins/package.json index 78bd00be24..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.1", + "version": "0.9.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 649bda3e86..4d21265228 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 9d19680c91..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.1", + "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 02d34327fb..87f0907776 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 923bb1ba49..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.1", + "version": "0.3.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index c0cb236c5b..ee736375ab 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,33 @@ # @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 diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 7a2ec98bec..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.1", + "version": "0.15.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-cluster/CHANGELOG.md b/plugins/kubernetes-cluster/CHANGELOG.md index be9e7e7a11..bef8de11d5 100644 --- a/plugins/kubernetes-cluster/CHANGELOG.md +++ b/plugins/kubernetes-cluster/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/kubernetes-cluster/package.json b/plugins/kubernetes-cluster/package.json index bfbb16ddbc..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.1", + "version": "0.0.6-next.2", "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 69eb5c10f1..611ce5db1c 100644 --- a/plugins/kubernetes-node/CHANGELOG.md +++ b/plugins/kubernetes-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/kubernetes-node/package.json b/plugins/kubernetes-node/package.json index d1141e970e..fa47649351 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.1", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-react/CHANGELOG.md b/plugins/kubernetes-react/CHANGELOG.md index 7f528287a5..122041918b 100644 --- a/plugins/kubernetes-react/CHANGELOG.md +++ b/plugins/kubernetes-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/kubernetes-react/package.json b/plugins/kubernetes-react/package.json index 64259912c8..fa8e24b6ba 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.1", + "version": "0.3.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index cdf9fbcb0b..f3b031db19 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 050907c5d1..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.1", + "version": "0.11.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md index 50bf314090..0be3ed1854 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 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/package.json b/plugins/lighthouse-backend/package.json index 90470d60d5..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.1", + "version": "0.4.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index ffb6f6c7bc..b359686bdb 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/lighthouse/package.json index d9f51faa8c..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.1", + "version": "0.4.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 86d4a7adec..7656050131 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 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/package.json b/plugins/linguist-backend/package.json index 5e3f0ddff4..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.1", + "version": "0.5.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 6fd2da3adf..a4d3d776dd 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 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/package.json b/plugins/linguist/package.json index 8e2ef8a9c2..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.1", + "version": "0.1.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index abc8583592..e307afa32d 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/microsoft-calendar/package.json index 36df97ccbf..25b8993713 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.12-next.0", + "version": "0.1.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 5eb5c9ac4f..6554f19ffd 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 9c44ba5413..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.1", + "version": "0.3.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index df27bd6150..535e317b0b 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/newrelic/package.json index f427615c56..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.45-next.0", + "version": "0.3.45-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad-backend/CHANGELOG.md b/plugins/nomad-backend/CHANGELOG.md index 64a12844ca..b125197e3d 100644 --- a/plugins/nomad-backend/CHANGELOG.md +++ b/plugins/nomad-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/nomad-backend/package.json index 00b505f139..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.1", + "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 624193fcd2..2e9949d522 100644 --- a/plugins/nomad/CHANGELOG.md +++ b/plugins/nomad/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/nomad/package.json index aa2851e727..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.1", + "version": "0.1.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/notifications-backend/.eslintrc.js b/plugins/notifications-backend/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/notifications-backend/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); 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/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..f9138e38b4 --- /dev/null +++ b/plugins/notifications-backend/package.json @@ -0,0 +1,55 @@ +{ + "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" + }, + "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/notifications-backend/src/setupTests.ts b/plugins/notifications-backend/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/notifications-backend/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/.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/package.json b/plugins/notifications-common/package.json new file mode 100644 index 0000000000..f2c4018ea9 --- /dev/null +++ b/plugins/notifications-common/package.json @@ -0,0 +1,35 @@ +{ + "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" + }, + "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/package.json b/plugins/notifications-node/package.json new file mode 100644 index 0000000000..44c38b2314 --- /dev/null +++ b/plugins/notifications-node/package.json @@ -0,0 +1,42 @@ +{ + "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" + }, + "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/notifications-node/src/service/NotificationService.ts b/plugins/notifications-node/src/service/NotificationService.ts new file mode 100644 index 0000000000..08b63599cc --- /dev/null +++ b/plugins/notifications-node/src/service/NotificationService.ts @@ -0,0 +1,22 @@ +/* + * 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 { NotificationSendOptions } from './DefaultNotificationService'; + +/** @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/notifications/dev/index.tsx b/plugins/notifications/dev/index.tsx new file mode 100644 index 0000000000..f4ea31f4ab --- /dev/null +++ b/plugins/notifications/dev/index.tsx @@ -0,0 +1,27 @@ +/* + * 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 { createDevApp } from '@backstage/dev-utils'; +import { notificationsPlugin } from '../src/plugin'; + +createDevApp() + .registerPlugin(notificationsPlugin) + .addPage({ + element:
, + title: 'Root Page', + path: '/notifications', + }) + .render(); diff --git a/plugins/notifications/package.json b/plugins/notifications/package.json new file mode 100644 index 0000000000..e41bedc17a --- /dev/null +++ b/plugins/notifications/package.json @@ -0,0 +1,57 @@ +{ + "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" + }, + "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 e515085bab..02cf12630f 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/octopus-deploy/package.json index ce5011be2e..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.1", + "version": "0.2.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/opencost/CHANGELOG.md b/plugins/opencost/CHANGELOG.md index 2052e8331c..80a73e7e48 100644 --- a/plugins/opencost/CHANGELOG.md +++ b/plugins/opencost/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/opencost/package.json index 2046d04c47..5fba181742 100644 --- a/plugins/opencost/package.json +++ b/plugins/opencost/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-opencost", - "version": "0.2.5-next.0", + "version": "0.2.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -32,7 +32,7 @@ "@material-ui/styles": "^4.11.5", "@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 ae22815dba..391c960681 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index bbb2f9f886..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.1", + "version": "0.1.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 8eafdd7a7d..6537bd3f26 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/org/package.json index df3aa60c00..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.1", + "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,8 +44,10 @@ }, "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", 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 4911f9d43a..6be8b7afc7 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 6ee701b775..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.1", + "version": "0.7.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index c7d498b8c0..d7f418ddec 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index e4bcc6172a..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.1", + "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 c9738e0447..ef19b26093 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/periskop/package.json index 44e14b791b..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.1", + "version": "0.1.28-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md index 2a94cdf1ad..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,15 @@ # @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 diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json index e386e655ce..22027f88f1 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.1", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 1453b6e88c..c0659ebb07 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 23ec23e1b5..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.1", + "version": "0.5.33-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index 920d52be43..674d24ecc5 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 50ddb4287e..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.1", + "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 f2ae9d50dd..bc88f1421b 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 8000fbc608..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.20-next.0", + "version": "0.4.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index 27d02ed8c3..1a291acff0 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 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/package.json b/plugins/playlist-backend/package.json index e745337fbf..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.1", + "version": "0.3.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index fc1147d6c0..a0da478579 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,23 @@ # @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 diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 5ac1d17c44..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.1", + "version": "0.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 5daf444787..cbff180011 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +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 + ## 0.4.8-next.1 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 4ac471b616..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.1", + "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 7e5d214b74..c94ae73c49 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 25533ea763..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.1", + "version": "0.1.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index f3d64642c8..ad16de07bc 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 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/package.json b/plugins/rollbar-backend/package.json index 0d5544d7b7..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.1", + "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 18a05c34b3..331c3ebd62 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/rollbar/package.json index 77b7721a30..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.1", + "version": "0.4.30-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-azure/CHANGELOG.md b/plugins/scaffolder-backend-module-azure/CHANGELOG.md index 0f36ab54c8..523b18c102 100644 --- a/plugins/scaffolder-backend-module-azure/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-azure/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/scaffolder-backend-module-azure/package.json b/plugins/scaffolder-backend-module-azure/package.json index 136588dbfd..5c69820477 100644 --- a/plugins/scaffolder-backend-module-azure/package.json +++ b/plugins/scaffolder-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-azure", "description": "The azure module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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/package.json b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json new file mode 100644 index 0000000000..23136e9d0d --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json @@ -0,0 +1,53 @@ +{ + "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" + }, + "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/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/package.json b/plugins/scaffolder-backend-module-bitbucket-server/package.json new file mode 100644 index 0000000000..261bf3eb31 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/package.json @@ -0,0 +1,53 @@ +{ + "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" + }, + "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 35554b3810..049e46a52d 100644 --- a/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,35 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-bitbucket/package.json index 411f282834..5393340287 100644 --- a/plugins/scaffolder-backend-module-bitbucket/package.json +++ b/plugins/scaffolder-backend-module-bitbucket/package.json @@ -1,7 +1,8 @@ { "name": "@backstage/plugin-scaffolder-backend-module-bitbucket", "description": "The bitbucket module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.1", + "version": "0.2.0-next.2", + "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -37,6 +38,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 6df8c3e217..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,18 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json index c45b596f16..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.1", + "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 954d0ea4c8..a288949ce9 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 443c446dfe..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.1", + "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 abcefe70db..a88377beae 100644 --- a/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/scaffolder-backend-module-gerrit/package.json b/plugins/scaffolder-backend-module-gerrit/package.json index e8753bbd36..7fd95a1209 100644 --- a/plugins/scaffolder-backend-module-gerrit/package.json +++ b/plugins/scaffolder-backend-module-gerrit/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gerrit", "description": "The gerrit module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.1", + "version": "0.1.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-github/CHANGELOG.md b/plugins/scaffolder-backend-module-github/CHANGELOG.md index 26b0e1da61..565098d73c 100644 --- a/plugins/scaffolder-backend-module-github/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-github/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/scaffolder-backend-module-github/package.json b/plugins/scaffolder-backend-module-github/package.json index b3f5c856b3..97ac31cf80 100644 --- a/plugins/scaffolder-backend-module-github/package.json +++ b/plugins/scaffolder-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-github", "description": "The github module for @backstage/plugin-scaffolder-backend", - "version": "0.2.0-next.1", + "version": "0.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index b0b9db42c9..e130bd045f 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index d0b2fd7dd0..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.1", + "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 82deacf251..4b1e089998 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-rails/package.json index 823051df9e..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.1", + "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 407356fa96..ca5ffb395b 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 242aa5dc6f..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.1", + "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 96d8622ea2..fc1f65bfa4 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 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/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index a10b73c931..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.1", + "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 04643f3cb3..0fa8ed8a92 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,52 @@ # @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 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/package.json b/plugins/scaffolder-backend/package.json index 356c10bf47..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.1", + "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:^", 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-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index cd1d4d9c61..f6707435d3 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index 2a3a230507..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.1", + "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 9bd46e6edc..73be0b1ede 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 21b3045d87..ec1eaf85ec 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.1", + "version": "1.8.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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 9ff1dd1b17..ec4e4e1b0a 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx @@ -358,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/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index ec45f92be2..d8f321a62d 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,32 @@ # @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 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/package.json b/plugins/scaffolder/package.json index 4faa2d9198..ce90c8d035 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.1", + "version": "1.18.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index ec647da935..7112339046 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,24 @@ # @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 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/package.json b/plugins/search-backend-module-catalog/package.json index abf5d340af..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.1", + "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 7b46360c04..c63bf3e3d5 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 6a17403efd..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.1", + "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 7dfcf2edcc..67acae898e 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 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/package.json b/plugins/search-backend-module-explore/package.json index 7c06d9c5d7..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.1", + "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 2bf2792985..6afe62f0fb 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index f36ea26d63..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.1", + "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 d872cae111..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,18 @@ # @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 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/package.json b/plugins/search-backend-module-stack-overflow-collator/package.json index d225b03381..8ff7324e08 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.1", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index e624727b8f..8d6480056e 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,24 @@ # @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 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/package.json b/plugins/search-backend-module-techdocs/package.json index f32900ddf4..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.1", + "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 170b57d5ea..60d436b65c 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 1a8b6e9404..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.1", + "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 48fc23f81a..7807d90b4d 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 574f849963..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.1", + "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-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 75106c4925..cd786947dd 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 602b870294..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.1", + "version": "1.7.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index 072f56c675..ac299ee80b 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/search/package.json b/plugins/search/package.json index 28577fffe8..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.1", + "version": "1.4.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index ad158e756a..e85d96de7b 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/sentry/package.json index 6756c96b2b..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.1", + "version": "0.5.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index 72e9a3731f..9eb64ba1fb 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/shortcuts/package.json index 7387f64aee..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.19-next.0", + "version": "0.3.19-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/signals-backend/CHANGELOG.md b/plugins/signals-backend/CHANGELOG.md index 2c91d975e7..efd5a3b624 100644 --- a/plugins/signals-backend/CHANGELOG.md +++ b/plugins/signals-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index eeb8ff3a6b..fa33e58992 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.1", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/signals-node/CHANGELOG.md b/plugins/signals-node/CHANGELOG.md index 8bd9dbad8d..fea0d770e4 100644 --- a/plugins/signals-node/CHANGELOG.md +++ b/plugins/signals-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 diff --git a/plugins/signals-node/package.json b/plugins/signals-node/package.json index e06cd5e1c6..09aa8e2d2e 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.1", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/signals-react/CHANGELOG.md b/plugins/signals-react/CHANGELOG.md index 4b68c623be..5b2552d593 100644 --- a/plugins/signals-react/CHANGELOG.md +++ b/plugins/signals-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 diff --git a/plugins/signals-react/package.json b/plugins/signals-react/package.json index 6c4a4be79e..a977de7802 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.1", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/signals/CHANGELOG.md b/plugins/signals/CHANGELOG.md index 4001bda476..9036b5cb46 100644 --- a/plugins/signals/CHANGELOG.md +++ b/plugins/signals/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/signals/package.json b/plugins/signals/package.json index dae18b6a92..45be979c8c 100644 --- a/plugins/signals/package.json +++ b/plugins/signals/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-signals", - "version": "0.0.1-next.1", + "version": "0.0.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 73da93941e..33a8daeba6 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/sonarqube-backend/package.json index dad40ad3e6..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.1", + "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 85d97d871f..1fbf8229f9 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @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 diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index dada16198c..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.13-next.0", + "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 b64fe9286f..412896eb2b 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/sonarqube/package.json index e485089d8a..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.1", + "version": "0.7.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 6429b1378b..d87015b3f7 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/splunk-on-call/package.json index 57396a45dd..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.1", + "version": "0.4.19-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 76cdaab37b..04a7423aa2 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,12 @@ # @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 diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 150b407a3d..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.1", + "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 34854e634b..86472fef5e 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 8aef5962df..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.1", + "version": "0.1.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index ffaa1ea330..a5cb2e9f43 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index c5e11f43d8..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.11-next.0", + "version": "0.1.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index a8bd564c12..c82c7f296b 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,57 @@ # @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 diff --git a/plugins/tech-insights-backend-module-jsonfc/README.md b/plugins/tech-insights-backend-module-jsonfc/README.md index c405ac34ef..33b3ad7718 100644 --- a/plugins/tech-insights-backend-module-jsonfc/README.md +++ b/plugins/tech-insights-backend-module-jsonfc/README.md @@ -10,7 +10,7 @@ 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 ``` ### Add to the backend diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 99ea9aca56..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.1", + "version": "0.1.42-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 3eb8c122f7..834318c31a 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,55 @@ # @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 diff --git a/plugins/tech-insights-backend/README.md b/plugins/tech-insights-backend/README.md index 29b374c18c..56b927a10e 100644 --- a/plugins/tech-insights-backend/README.md +++ b/plugins/tech-insights-backend/README.md @@ -10,7 +10,7 @@ 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` @@ -214,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/package.json b/plugins/tech-insights-backend/package.json index 74d7f9929f..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.1", + "version": "0.5.24-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index 2a39acdeca..5d617cf1ea 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,49 @@ # @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 diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index ec800b7845..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.1", + "version": "0.4.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index 5d5289fa73..3d26856808 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,20 @@ # @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 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/package.json b/plugins/tech-insights/package.json index cbe7837382..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.1", + "version": "0.3.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 93f4ae95fc..ea60f3d51a 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 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/package.json b/plugins/tech-radar/package.json index 96f15ab813..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.1", + "version": "0.6.13-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index fee49918a1..0e479d89d2 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 8e39c48fd2..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.1", + "version": "1.0.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 43a64a9a07..a30f5fecf7 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index d1a52cd566..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.1", + "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 7263e16e3c..f6beb348b0 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index c32729e6ea..af1a88c174 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.1", + "version": "1.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 60b4346eb6..8db81e646b 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 6f4df8abf5..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.1", + "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 d7ec7f943b..ce7cb0f850 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/techdocs-react/package.json index 975f0a6da3..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.16-next.0", + "version": "1.1.16-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 150ac0b6d6..fec0bef543 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,26 @@ # @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 diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 4510cc1f63..9629494159 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.10.0-next.1", + "version": "1.10.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index 7a93b93001..62656f133e 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @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 diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index d3c10811d0..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.1", + "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 345818accb..f418e7c24e 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 9a3e0c95dc..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.1", + "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 7bed83d817..da007703c1 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @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 diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index f3f70d9613..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.1", + "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 68454cddf3..1c802dcbe3 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,22 @@ # @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 diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 90d7a12003..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.1", + "version": "0.8.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.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 4068bd2af2..6459f1bafa 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/vault-backend/package.json index d3fd7d205c..4bd9d93c3e 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.1", + "version": "0.4.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-node/CHANGELOG.md b/plugins/vault-node/CHANGELOG.md index 74b84a6077..f96db259ab 100644 --- a/plugins/vault-node/CHANGELOG.md +++ b/plugins/vault-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @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 diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json index aa38af4c49..0460b3fd8e 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.1", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 8e7254fed4..b9a4ee2218 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,18 @@ # @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 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/package.json b/plugins/vault/package.json index f239a66b6c..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.1", + "version": "0.1.25-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 8d0c42acc2..020803b6d1 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 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/package.json b/plugins/xcmetrics/package.json index 3344ee258c..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.48-next.0", + "version": "0.2.48-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", 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/yarn.lock b/yarn.lock index 3020b8cb26..b95b0b9dfd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4933,6 +4933,7 @@ __metadata: "@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 @@ -4972,7 +4973,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 @@ -5052,10 +5052,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:^" @@ -5718,6 +5720,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 @@ -5783,9 +5786,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:^" @@ -7779,6 +7784,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" @@ -7818,7 +7912,7 @@ __metadata: "@testing-library/jest-dom": ^6.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: @@ -7863,9 +7957,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:^" @@ -8285,6 +8381,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" @@ -8296,6 +8430,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 @@ -8487,6 +8623,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:^" @@ -9620,6 +9758,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 @@ -9820,7 +9959,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: @@ -9904,7 +10043,39 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@^0.5.0, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": +"@backstage/theme@npm:^0.4.4": + version: 0.4.4 + resolution: "@backstage/theme@npm:0.4.4" + 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: 562ce0f0fd07202b44971b55bba9c39cd13c91a65873034d2e68fb5833c0d9882c2fd967d6c779a8563618ce035ec159823c865b0163911b7004f1bfce3ce4a1 + 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: @@ -9924,22 +10095,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@npm:^0.4.4": - version: 0.4.4 - resolution: "@backstage/theme@npm:0.4.4" - 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: 562ce0f0fd07202b44971b55bba9c39cd13c91a65873034d2e68fb5833c0d9882c2fd967d6c779a8563618ce035ec159823c865b0163911b7004f1bfce3ce4a1 - languageName: node - linkType: hard - "@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" @@ -13462,6 +13617,39 @@ __metadata: 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 + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -18357,7 +18545,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: @@ -18995,7 +19183,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: @@ -19631,7 +19819,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: @@ -20291,14 +20498,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 @@ -22829,12 +23029,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 @@ -24617,6 +24817,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" @@ -25194,9 +25401,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 @@ -27009,6 +27216,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:^" @@ -27094,6 +27302,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:^" @@ -27107,6 +27316,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:^" @@ -29842,12 +30052,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 @@ -36854,21 +37064,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" @@ -36876,6 +37071,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" @@ -39035,6 +39241,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" @@ -39489,7 +39704,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: @@ -40406,13 +40621,14 @@ __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 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.1.0 languageName: unknown @@ -41196,6 +41412,20 @@ __metadata: languageName: node linkType: hard +"sloc@npm:^0.3.1": + version: 0.3.1 + resolution: "sloc@npm:0.3.1" + dependencies: + async: ^3.2.4 + cli-table: ^0.3.11 + commander: ^11.0.0 + readdirp: ^3.3.0 + bin: + sloc: bin/sloc + checksum: 3075150912b4fbb90167c446b155fcfffa20351245d7ae2a7139b2c3ba5dd9fd01fe97fc11a917d5f6a66778c3a9ab4c6ceff0bcd234338f38942fb7238ab927 + languageName: node + linkType: hard + "slugify@npm:^1.6.4": version: 1.6.6 resolution: "slugify@npm:1.6.6" @@ -45181,24 +45411,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 @@ -45216,16 +45446,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" @@ -45274,6 +45494,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"