diff --git a/.changeset/afraid-trees-stare.md b/.changeset/afraid-trees-stare.md
new file mode 100644
index 0000000000..748bbb3cfe
--- /dev/null
+++ b/.changeset/afraid-trees-stare.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': minor
+---
+
+Added the ability to be able to define an actions `input` and `output` schema using `zod` instead of hand writing types and `jsonschema`
diff --git a/.changeset/backend-token-authentication.md b/.changeset/backend-token-authentication.md
new file mode 100644
index 0000000000..3b0f016800
--- /dev/null
+++ b/.changeset/backend-token-authentication.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Make identity valid if subject of token is a backstage server-2-server auth token
diff --git a/.changeset/clean-lemons-jump.md b/.changeset/clean-lemons-jump.md
new file mode 100644
index 0000000000..ab6f22136a
--- /dev/null
+++ b/.changeset/clean-lemons-jump.md
@@ -0,0 +1,7 @@
+---
+'@backstage/core-components': patch
+---
+
+Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations.
+For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc.
+This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar.
diff --git a/.changeset/clever-dogs-cheat.md b/.changeset/clever-dogs-cheat.md
new file mode 100644
index 0000000000..56fcf3d30c
--- /dev/null
+++ b/.changeset/clever-dogs-cheat.md
@@ -0,0 +1,21 @@
+---
+'@backstage/plugin-search-backend-module-elasticsearch': patch
+'@backstage/plugin-tech-insights-backend-module-jsonfc': patch
+'@backstage/plugin-catalog-backend-module-github': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-scaffolder-react': patch
+'@backstage/plugin-splunk-on-call': patch
+'@backstage/plugin-techdocs-react': patch
+'@backstage/plugin-catalog-react': patch
+'@backstage/plugin-tech-insights': patch
+'@backstage/plugin-techdocs-node': patch
+'@backstage/plugin-search-react': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-auth-node': patch
+'@backstage/plugin-sonarqube': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-explore': patch
+'@backstage/plugin-search': patch
+---
+
+Minor API report tweaks
diff --git a/.changeset/cool-feet-speak.md b/.changeset/cool-feet-speak.md
new file mode 100644
index 0000000000..9240c5bb52
--- /dev/null
+++ b/.changeset/cool-feet-speak.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-scaffolder-react': patch
+'@backstage/plugin-scaffolder': patch
+---
+
+Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
diff --git a/.changeset/create-app-1678209629.md b/.changeset/create-app-1678209629.md
new file mode 100644
index 0000000000..b50d431d4b
--- /dev/null
+++ b/.changeset/create-app-1678209629.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+Bumped create-app version.
diff --git a/.changeset/eighty-chairs-roll.md b/.changeset/eighty-chairs-roll.md
new file mode 100644
index 0000000000..c981229378
--- /dev/null
+++ b/.changeset/eighty-chairs-roll.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': minor
+---
+
+Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version.
diff --git a/.changeset/empty-books-occur.md b/.changeset/empty-books-occur.md
new file mode 100644
index 0000000000..69218c5cfa
--- /dev/null
+++ b/.changeset/empty-books-occur.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-react': patch
+---
+
+Correctly disable next button in `SearchPagination` on last page
diff --git a/.changeset/famous-sloths-tie.md b/.changeset/famous-sloths-tie.md
new file mode 100644
index 0000000000..53932afab6
--- /dev/null
+++ b/.changeset/famous-sloths-tie.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Getting credentials in the RepoUrlPicker now also works for targets without owner (e.g. Bitbucket Server).
diff --git a/.changeset/fifty-beds-dress.md b/.changeset/fifty-beds-dress.md
new file mode 100644
index 0000000000..19049732cc
--- /dev/null
+++ b/.changeset/fifty-beds-dress.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-puppetdb': minor
+---
+
+Initial version of the plugin.
diff --git a/.changeset/fresh-hairs-switch.md b/.changeset/fresh-hairs-switch.md
new file mode 100644
index 0000000000..16d3b119e5
--- /dev/null
+++ b/.changeset/fresh-hairs-switch.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-tasks': minor
+---
+
+add functionality to get descriptions from the scheduler for triggering
diff --git a/.changeset/gentle-bears-love.md b/.changeset/gentle-bears-love.md
new file mode 100644
index 0000000000..b6f6e3cfcf
--- /dev/null
+++ b/.changeset/gentle-bears-love.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+---
+
+Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD
diff --git a/.changeset/gorgeous-pumas-speak.md b/.changeset/gorgeous-pumas-speak.md
new file mode 100644
index 0000000000..60f40c6748
--- /dev/null
+++ b/.changeset/gorgeous-pumas-speak.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+fix entity switch rendering when there is no default case
diff --git a/.changeset/honest-clouds-shout.md b/.changeset/honest-clouds-shout.md
new file mode 100644
index 0000000000..0a7249d9ad
--- /dev/null
+++ b/.changeset/honest-clouds-shout.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+catalog write action should allow any shape of object
diff --git a/.changeset/light-bees-end.md b/.changeset/light-bees-end.md
new file mode 100644
index 0000000000..9fbbc44da0
--- /dev/null
+++ b/.changeset/light-bees-end.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kubernetes': patch
+---
+
+GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters
diff --git a/.changeset/lovely-tigers-look.md b/.changeset/lovely-tigers-look.md
new file mode 100644
index 0000000000..5e7d230e6d
--- /dev/null
+++ b/.changeset/lovely-tigers-look.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-adr-backend': patch
+---
+
+Support MADR v3 format
diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md
new file mode 100644
index 0000000000..75252b3482
--- /dev/null
+++ b/.changeset/mean-toys-itch.md
@@ -0,0 +1,19 @@
+---
+'@backstage/backend-common': patch
+---
+
+Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres
+
+The example config below connects to the database as user `v-backstage-123` but sets the ownership of
+the create schemas and tables to `backstage`
+
+```yaml
+backend:
+ database:
+ client: pg
+ pluginDivisionMode: schema
+ role: backstage
+ connection:
+ user: v-backstage-123
+ ...
+```
diff --git a/.changeset/mighty-games-turn.md b/.changeset/mighty-games-turn.md
new file mode 100644
index 0000000000..38c2487835
--- /dev/null
+++ b/.changeset/mighty-games-turn.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-tech-radar': patch
+---
+
+Update colors to match Zalando's tech radar, also add coloring on title and legend to match ring color.
diff --git a/.changeset/mighty-years-own.md b/.changeset/mighty-years-own.md
new file mode 100644
index 0000000000..b14b974bc4
--- /dev/null
+++ b/.changeset/mighty-years-own.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-react': patch
+---
+
+scaffolder/next: Move the `uiSchema` to its own property in the validation `context` to align with component development and access of `ui:options`
diff --git a/.changeset/nine-bikes-applaud.md b/.changeset/nine-bikes-applaud.md
new file mode 100644
index 0000000000..77a1c0e4be
--- /dev/null
+++ b/.changeset/nine-bikes-applaud.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
+---
+
+allow container runner to be undefined in cookiecutter plugin
diff --git a/.changeset/odd-oranges-tease.md b/.changeset/odd-oranges-tease.md
new file mode 100644
index 0000000000..f9d5e60d19
--- /dev/null
+++ b/.changeset/odd-oranges-tease.md
@@ -0,0 +1,21 @@
+---
+'@backstage/plugin-git-release-manager': patch
+'@backstage/plugin-microsoft-calendar': patch
+'@backstage/plugin-newrelic-dashboard': patch
+'@backstage/core-components': patch
+'@backstage/plugin-code-coverage': patch
+'@backstage/plugin-code-climate': patch
+'@backstage/plugin-azure-sites': patch
+'@backstage/plugin-firehydrant': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-tech-radar': patch
+'@backstage/plugin-gcalendar': patch
+'@backstage/plugin-shortcuts': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-explore': patch
+'@backstage/plugin-ilert': patch
+'@backstage/plugin-org': patch
+---
+
+Change black & white colors to be theme aware
diff --git a/.changeset/olive-berries-poke.md b/.changeset/olive-berries-poke.md
new file mode 100644
index 0000000000..48bde329c8
--- /dev/null
+++ b/.changeset/olive-berries-poke.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-react': patch
+---
+
+scaffolder/next: Fix for steps without properties
diff --git a/.changeset/orange-experts-hug.md b/.changeset/orange-experts-hug.md
new file mode 100644
index 0000000000..1bf8b4a7d7
--- /dev/null
+++ b/.changeset/orange-experts-hug.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-api-docs': patch
+---
+
+Fix dark theme Swagger's clear button font color.
diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md
new file mode 100644
index 0000000000..418edfd92b
--- /dev/null
+++ b/.changeset/pink-dolls-unite.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-linguist-backend': patch
+---
+
+Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API).
diff --git a/.changeset/pre.json b/.changeset/pre.json
index d3d0c1d42d..8514b7fa26 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -210,45 +210,118 @@
"@backstage/plugin-vault-backend": "0.2.8",
"@backstage/plugin-xcmetrics": "0.2.35",
"@backstage/plugin-octopus-deploy": "0.0.0",
- "@backstage/plugin-stackstorm": "0.0.0"
+ "@backstage/plugin-stackstorm": "0.0.0",
+ "@backstage/plugin-catalog-backend-module-puppetdb": "0.0.1"
},
"changesets": [
+ "afraid-trees-stare",
+ "backend-token-authentication",
"breezy-bees-care",
"bright-kids-raise",
+ "clean-lemons-jump",
+ "clean-planes-join",
+ "clever-dogs-cheat",
+ "cool-clocks-prove",
+ "cool-feet-speak",
"create-app-1676993958",
+ "create-app-1678209629",
"curvy-pets-hang",
"eight-radios-bake",
+ "eighty-chairs-roll",
"eighty-geese-return",
+ "empty-books-occur",
+ "famous-sloths-tie",
+ "fifty-beds-dress",
+ "flat-kids-occur",
+ "flat-peaches-act",
+ "forty-snails-clap",
"four-lizards-grin",
+ "fresh-hairs-switch",
+ "fuzzy-trains-search",
+ "gentle-bears-love",
"gentle-pears-clean",
+ "great-trains-jam",
"grumpy-bikes-begin",
"happy-boxes-arrive",
+ "honest-clouds-shout",
"honest-nails-bake",
+ "khaki-poems-run",
+ "light-bees-end",
+ "light-sheep-trade",
"long-nails-pump",
+ "long-wolves-drive",
+ "lovely-tigers-look",
+ "mean-toys-itch",
+ "metal-suns-rhyme",
+ "mighty-games-turn",
+ "mighty-years-own",
"new-jobs-deny",
"nice-planets-wave",
+ "nine-bikes-applaud",
"ninety-turtles-wait",
"odd-fireants-bathe",
+ "odd-oranges-tease",
+ "odd-waves-rescue",
"old-foxes-shave",
+ "olive-berries-poke",
+ "orange-experts-hug",
"perfect-mayflies-greet",
+ "pink-dolls-unite",
"polite-chicken-do",
"polite-falcons-jump",
+ "polite-wombats-smash",
+ "purple-days-film",
+ "quick-coats-sneeze",
"quick-schools-dress",
"quick-tables-listen",
+ "quiet-ghosts-float",
"rare-buses-swim",
"rare-grapes-count",
"rare-pandas-hope",
+ "rename-for-the-win",
+ "renovate-3672e5e",
+ "renovate-4775edd",
+ "renovate-488b7e7",
+ "renovate-80f8787",
+ "renovate-fb85ae7",
+ "rich-clocks-approve",
+ "rich-wombats-rescue",
+ "rotten-cats-matter",
+ "rotten-panthers-share",
+ "selfish-hats-wait",
+ "short-mayflies-fix",
+ "silent-dryers-end",
"silly-suits-run",
+ "silver-bikes-breathe",
+ "silver-lies-rest",
"six-melons-rhyme",
"slimy-lobsters-kneel",
"slow-insects-cheat",
+ "slow-pens-compare",
"slow-suits-grab",
"spotty-bees-tell",
+ "spotty-turtles-reply",
"spotty-wasps-complain",
"swift-bags-wave",
+ "tall-hats-talk",
"ten-tigers-marry",
"thin-candles-wait",
+ "tiny-llamas-jump",
+ "tricky-jars-film",
+ "twelve-cars-push",
"twenty-jeans-speak",
- "yellow-bananas-yawn"
+ "unlucky-sloths-explain",
+ "warm-vans-fail",
+ "weak-coats-allow",
+ "what-is-going-on-babe",
+ "wicked-lions-repeat",
+ "wicked-spoons-call",
+ "wild-ads-pull",
+ "wild-bulldogs-suffer",
+ "witty-geckos-design",
+ "yellow-bananas-yawn",
+ "young-schools-double",
+ "young-scissors-cough",
+ "young-walls-prove"
]
}
diff --git a/.changeset/rename-for-the-win.md b/.changeset/rename-for-the-win.md
new file mode 100644
index 0000000000..8b3dc6df58
--- /dev/null
+++ b/.changeset/rename-for-the-win.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-permission-node': patch
+---
+
+Update the service-to-service auth docs URL in error message.
+``
diff --git a/.changeset/rotten-cats-matter.md b/.changeset/rotten-cats-matter.md
new file mode 100644
index 0000000000..2515db9991
--- /dev/null
+++ b/.changeset/rotten-cats-matter.md
@@ -0,0 +1,19 @@
+---
+'@backstage/core-app-api': minor
+---
+
+`OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
+requested.
+
+This should not be considered a breaking change, because spec-compliant OIDC
+providers will already be returning ID tokens if and only if the `openid` scope
+is granted.
+
+This change makes the dependence explicit, and removes the burden on
+OAuth2-based providers which require an ID token (e.g. this is done by various
+default [auth
+handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
+`openid` to their default scopes. _That_ could carry another indirect benefit:
+by removing `openid` from the default scopes for a provider, grants for
+resource-specific access tokens can avoid requesting excess ID token-related
+scopes.
diff --git a/.changeset/rotten-panthers-share.md b/.changeset/rotten-panthers-share.md
new file mode 100644
index 0000000000..b9f0dd6691
--- /dev/null
+++ b/.changeset/rotten-panthers-share.md
@@ -0,0 +1,6 @@
+---
+'@backstage/backend-common': patch
+'@backstage/plugin-catalog-backend-module-aws': patch
+---
+
+AwsS3UrlReader upgraded to use aws-sdk v3
diff --git a/.changeset/selfish-hats-wait.md b/.changeset/selfish-hats-wait.md
new file mode 100644
index 0000000000..d706d42e8e
--- /dev/null
+++ b/.changeset/selfish-hats-wait.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-org': patch
+---
+
+Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text.
diff --git a/.changeset/silent-dryers-end.md b/.changeset/silent-dryers-end.md
new file mode 100644
index 0000000000..d15ea602ae
--- /dev/null
+++ b/.changeset/silent-dryers-end.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Fix the scaffolder validator for arrays when the item is a field in the object
diff --git a/.changeset/silver-bikes-breathe.md b/.changeset/silver-bikes-breathe.md
new file mode 100644
index 0000000000..0288580bba
--- /dev/null
+++ b/.changeset/silver-bikes-breathe.md
@@ -0,0 +1,24 @@
+---
+'@backstage/plugin-catalog': minor
+---
+
+Allow `EntitySwitch` to render all cases that match the condition.
+
+This change introduces a new parameter for the `EntitySwitch` component
+`renderMultipleMatches`. In case the parameter value is `all`, the `EntitySwitch`
+will render all `EntitySwitch.Case` that contain `if` parameter, and it
+evaluates to true. In case none of the cases match, the default case will be
+rendered, if any.
+
+This means for example in the CI/CD page you can now do the following:
+
+```tsx
+
+ Jenkins
+ CodeBuild
+ No CI/CD
+
+```
+
+This allows the component to have multiple CI/CD systems and all of those are
+rendered on the same page.
diff --git a/.changeset/tall-hats-talk.md b/.changeset/tall-hats-talk.md
new file mode 100644
index 0000000000..b10af002f6
--- /dev/null
+++ b/.changeset/tall-hats-talk.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Keep custom exports entry points in package.json
diff --git a/.changeset/tiny-llamas-jump.md b/.changeset/tiny-llamas-jump.md
new file mode 100644
index 0000000000..ccf42cd514
--- /dev/null
+++ b/.changeset/tiny-llamas-jump.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component
diff --git a/.changeset/twenty-insects-live.md b/.changeset/twenty-insects-live.md
new file mode 100644
index 0000000000..d3f8cdfc25
--- /dev/null
+++ b/.changeset/twenty-insects-live.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-proxy-backend': patch
+---
+
+Ensure that `@backstage/plugin-proxy-backend` logs the requests that it proxies when log level is set to `debug`.
diff --git a/.changeset/warm-vans-fail.md b/.changeset/warm-vans-fail.md
new file mode 100644
index 0000000000..6cbd3a4e8f
--- /dev/null
+++ b/.changeset/warm-vans-fail.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': minor
+---
+
+Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
diff --git a/.changeset/wild-ads-pull.md b/.changeset/wild-ads-pull.md
new file mode 100644
index 0000000000..5a40787358
--- /dev/null
+++ b/.changeset/wild-ads-pull.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-api-docs': patch
+---
+
+Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
diff --git a/.changeset/wild-bulldogs-suffer.md b/.changeset/wild-bulldogs-suffer.md
new file mode 100644
index 0000000000..02f50927e9
--- /dev/null
+++ b/.changeset/wild-bulldogs-suffer.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+---
+
+filter gitlab groups by prefix
diff --git a/.changeset/young-walls-prove.md b/.changeset/young-walls-prove.md
new file mode 100644
index 0000000000..33fafa1548
--- /dev/null
+++ b/.changeset/young-walls-prove.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-plugin-api': minor
+---
+
+The GitLab auth provider can now be used to get OpenID tokens.
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 10f1ac188c..010af451af 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -30,6 +30,7 @@ yarn.lock @backstage/maintainers @back
/plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-core @pjungermann
/plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-core @pjungermann
/plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-core @pjungermann
+/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-core @tdabasinskas
/plugins/catalog-graph @backstage/maintainers @backstage/catalog-core @backstage/sda-se-reviewers
/plugins/circleci @backstage/maintainers @adamdmharvey
/plugins/cloudbuild @backstage/maintainers @trivago/ebarrios
diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml
index f96a9fbb39..f02ecc3525 100644
--- a/.github/workflows/automate_changeset_feedback.yml
+++ b/.github/workflows/automate_changeset_feedback.yml
@@ -29,7 +29,7 @@ jobs:
ref: 'refs/pull/${{ github.event.pull_request.number }}/merge'
- name: fetch base
run: git fetch --depth 1 origin ${{ github.base_ref }}
- - uses: backstage/actions/changeset-feedback@v0.6.2
+ - uses: backstage/actions/changeset-feedback@v0.6.3
name: Generate feedback
with:
diff-ref: 'origin/master'
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 18af36c8c2..cd67d2742a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -33,7 +33,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -63,7 +63,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -181,7 +181,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml
index be27a732d6..3164fd138e 100644
--- a/.github/workflows/cron.yml
+++ b/.github/workflows/cron.yml
@@ -8,7 +8,7 @@ jobs:
cron:
runs-on: ubuntu-latest
steps:
- - uses: backstage/actions/cron@v0.6.2
+ - uses: backstage/actions/cron@v0.6.3
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml
index 60affcb328..4cd296827d 100644
--- a/.github/workflows/deploy_docker-image.yml
+++ b/.github/workflows/deploy_docker-image.yml
@@ -26,7 +26,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -55,6 +55,7 @@ jobs:
context: './example-app'
file: ./example-app/packages/backend/Dockerfile
push: true
+ platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/${{ github.repository_owner }}/backstage:latest
ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }}
diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml
index ec7124ed35..b25dd90b84 100644
--- a/.github/workflows/deploy_microsite.yml
+++ b/.github/workflows/deploy_microsite.yml
@@ -14,7 +14,7 @@ jobs:
env:
CI: true
- NODE_OPTIONS: --max-old-space-size=7168
+ NODE_OPTIONS: --max-old-space-size=8192
DOCUSAURUS_SSR_CONCURRENCY: 5
steps:
diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml
index 49907042b5..1bb6b67839 100644
--- a/.github/workflows/deploy_nightly.yml
+++ b/.github/workflows/deploy_nightly.yml
@@ -26,7 +26,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml
index 058f4f6089..836d33398f 100644
--- a/.github/workflows/deploy_packages.yml
+++ b/.github/workflows/deploy_packages.yml
@@ -68,7 +68,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -145,7 +145,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml
index e64f919bdb..4d7f345391 100644
--- a/.github/workflows/issue.yaml
+++ b/.github/workflows/issue.yaml
@@ -10,4 +10,4 @@ jobs:
if: github.repository == 'backstage/backstage'
steps:
- name: Issue sync
- uses: backstage/actions/issue-sync@v0.6.2
+ uses: backstage/actions/issue-sync@v0.6.3
diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml
index 52db29c699..73c4b64dca 100644
--- a/.github/workflows/pr-review-comment.yaml
+++ b/.github/workflows/pr-review-comment.yaml
@@ -35,7 +35,7 @@ jobs:
const prNumber = artifact.name.slice('pr_number-'.length)
core.setOutput('pr-number', prNumber);
- - uses: backstage/actions/re-review@v0.6.2
+ - uses: backstage/actions/re-review@v0.6.3
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index db7d141abd..72393b1c28 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -18,7 +18,7 @@ jobs:
if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request )
steps:
- name: PR sync
- uses: backstage/actions/pr-sync@v0.6.2
+ uses: backstage/actions/pr-sync@v0.6.3
with:
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml
index b299f314a7..412fbfe59d 100644
--- a/.github/workflows/sync_code-formatting.yml
+++ b/.github/workflows/sync_code-formatting.yml
@@ -20,7 +20,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml
index a89b7c8e65..ec2f11e267 100644
--- a/.github/workflows/sync_snyk-github-issues.yml
+++ b/.github/workflows/sync_snyk-github-issues.yml
@@ -23,7 +23,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml
index d8776d74c7..ee629bbafe 100644
--- a/.github/workflows/uffizzi-build.yml
+++ b/.github/workflows/uffizzi-build.yml
@@ -27,7 +27,7 @@ jobs:
registry-url: https://registry.npmjs.org/
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: linux-v16
diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml
index 4fda0749c0..46c2bf371d 100644
--- a/.github/workflows/verify_e2e-linux.yml
+++ b/.github/workflows/verify_e2e-linux.yml
@@ -52,7 +52,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/verify_kubernetes.yml b/.github/workflows/verify_kubernetes.yml
index 83280f8e85..8dff6d9cc2 100644
--- a/.github/workflows/verify_kubernetes.yml
+++ b/.github/workflows/verify_kubernetes.yml
@@ -28,7 +28,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/verify_microsite-next.yml b/.github/workflows/verify_microsite-next.yml
index 6c9edf2031..7db5f102a9 100644
--- a/.github/workflows/verify_microsite-next.yml
+++ b/.github/workflows/verify_microsite-next.yml
@@ -16,7 +16,7 @@ jobs:
env:
CI: true
- NODE_OPTIONS: --max-old-space-size=4096
+ NODE_OPTIONS: --max-old-space-size=8192
DOCUSAURUS_SSR_CONCURRENCY: 5
steps:
diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml
index 8cde5b6e9b..3a366d6734 100644
--- a/.github/workflows/verify_storybook.yml
+++ b/.github/workflows/verify_storybook.yml
@@ -35,7 +35,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.6.2
+ uses: backstage/actions/yarn-install@v0.6.3
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: storybook yarn install
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 068928260d..70b2992cf9 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -21,7 +21,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
-| [Expedia Group](https://www.expediagroup.com) | [@gman0922](https://github.com/gman0922), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door |
+| [Expedia Group](https://www.expediagroup.com) | [Guillermo Manzo](mailto:gmanzo@expediagroup.com), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door |
| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
| [Lunar](https://lunar.app) | [Bjørn Hald Sørensen](https://github.com/crevil) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
@@ -230,3 +230,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [OVO Energy](https://www.ovoenergy.com/) | [Michael Wizner](https://github.com/mwz), [Dan Laird](https://github.com/dlaird-ovo), [Samantha Betts](https://github.com/sammbetts) | Developer Experience Tool with an aim to to improve processes, boost productivity, finding of information/docs and building tech engagement throughout the business.
| [MusicTribe](https://careers.musictribe.com/) | [Alex Ford](mailto:alex.j.ford@gmail.com), [Tiago Barbosa](https://github.com/t1agob) | We are starting to use Backstage as a developer portal to share API specifications and documentation, to quickly onboard new projects with the software templates, and to help developers discover software through the catalog.
| [Cazoo](https://www.cazoo.co.uk/) | [Abz Mungul](https://www.linkedin.com/in/abzmungul/), [Scott Edwards](https://www.linkedin.com/in/scott-edwards-tech/) | We're assessing Backstage as our developer platform at Cazoo with a focus on reducing cognitive load for our engineers. We're currently aiming for 3 outcomes: creating visibility into service ownership across teams, improving the discoverability of event schemas and relationships, and improving the discoverability of technical documentation and best practices. |
+| [Gumtree](https://www.gumtree.com.au) | [Kumar Gaurav](https://www.linkedin.com/in/kumargaurav517) | We are starting to use it as a single place to find all component information in a distributed architecture. |
+| [N26](https://n26.com) | [Alexei Timofti](https://www.linkedin.com/in/alexeitimofti) | We use Backstage for our service catalog and are actively looking into adopting other plugins like TechDocs, TechInsights and Software Templates. |
+| [The LEGO Group](https://www.lego.com) | [Waqas Ali](https://www.linkedin.com/in/waqasali47) | We are building our internal develper portal on top of Backstage. |
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c2df005a1c..7828791080 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -8,65 +8,7 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he
Backstage is released under the Apache 2.0 License, and original creations contributed to this repo are accepted under the same license.
-## Types of Contributions
-
-### Report bugs
-
-No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md).
-
-### Fix bugs or build new features
-
-Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted).
-
-### Build a plugin
-
-The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help.
-
-A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!)
-
-What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin).
-
-### Suggesting a plugin
-
-If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development.
-
-You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.
-
-### Adding Non-code Contributions
-
-Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more.
-
-### Write Documentation or improve the website
-
-The current documentation is very limited. Help us make the `/docs` folder come alive.
-
-Docs are published to [backstage.io/docs](https://backstage.io/docs). If you
-contribute to the documentation, you might want to preview your changes before
-submitting them. You'll find the website sources under [/microsite](/microsite)
-with instructions for building and locally serving the website in the
-[README](/microsite#readme).
-
-### Contribute to Storybook
-
-We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook).
-
-Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`).
-
-### Submit Feedback
-
-The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues).
-
-If you are proposing a feature:
-
-- Explain in detail how it would work.
-- Keep the scope as narrow as possible, to make it easier to implement.
-- Use appropriate labels
-- Remember that this is a volunteer-driven project, and that contributions
- are welcome :)
-
-### Add your company to `ADOPTERS`
-
-Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB).
+You can find out more about the types of contributions over at [getting involved](https://backstage.io/docs/getting-started/getting-involved)!
## Get Started!
diff --git a/README.md b/README.md
index 60324a7789..86e3b64ec5 100644
--- a/README.md
+++ b/README.md
@@ -16,13 +16,13 @@
Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.
-
+
Out of the box, Backstage includes:
-- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.)
-- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices
-- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
+- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.)
+- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices
+- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
- Plus, a growing ecosystem of [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) that further expand Backstage’s customizability and functionality
Backstage was created by Spotify but is now hosted by the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io) as an Incubation level project. Read the announcement [here](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation).
@@ -38,8 +38,8 @@ Check out [the documentation](https://backstage.io/docs/getting-started) on how
## Documentation
- [Main documentation](https://backstage.io/docs)
-- [Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview)
-- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/adrs-overview))
+- [Software Catalog](https://backstage.io/docs/features/software-catalog/)
+- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/))
- [Designing for Backstage](https://backstage.io/docs/dls/design)
- [Storybook - UI components](https://backstage.io/storybook)
diff --git a/app-config.yaml b/app-config.yaml
index 22f3f4c9c5..385c9c2e0e 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -22,7 +22,7 @@ app:
backend:
# Used for enabling authentication, secret is shared by all backend plugins
- # See https://backstage.io/docs/tutorials/backend-to-backend-auth for
+ # See https://backstage.io/docs/auth/service-to-service-auth for
# information on the format
# auth:
# keys:
diff --git a/contrib/catalog/README.md b/contrib/catalog/README.md
index e02760cdb0..2898969c4c 100644
--- a/contrib/catalog/README.md
+++ b/contrib/catalog/README.md
@@ -1,6 +1,6 @@
# Catalog Contrib
-This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview).
+This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/).
There is no guarantee of correctness or fitness of purpose of these
contributions, but we hope that they are helpful to someone!
diff --git a/docs/FAQ.md b/docs/FAQ.md
index 5b93f07d78..6f24786102 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -176,7 +176,7 @@ By far, our most-used plugin is our TechDocs plugin, which we use for creating
technical documentation. Our philosophy at Spotify is to treat "docs like code",
where you write documentation using the same workflow as you write your code.
This makes it easier to create, find, and update documentation.
-[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/techdocs-overview)
+[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/)
(See also:
"[Will Spotify's internal plugins be open sourced, too?](#will-spotifys-internal-plugins-be-open-sourced-too)"
above)
diff --git a/docs/auth/gitlab/provider.md b/docs/auth/gitlab/provider.md
index 5041e161c5..dc41617812 100644
--- a/docs/auth/gitlab/provider.md
+++ b/docs/auth/gitlab/provider.md
@@ -18,7 +18,11 @@ Settings for local development:
- Name: Backstage (or your custom app name)
- Redirect URI: `http://localhost:7007/api/auth/gitlab/handler/frame`
-- Scopes: `read_api` and `read_user`
+- Scopes: `read_user` for sign-in. If you also need ID tokens (e.g. if you are
+ using the Kubernetes plugin and have clusters with `authProvider: oidc` and
+ [`oidcTokenProvider:
+gitlab`](https://backstage.io/docs/features/kubernetes/configuration/#clustersoidctokenprovider-optional)),
+ add the `openid` scope.
## Configuration
diff --git a/docs/auth/service-to-service-auth.md b/docs/auth/service-to-service-auth.md
index a667f391f5..aac61be563 100644
--- a/docs/auth/service-to-service-auth.md
+++ b/docs/auth/service-to-service-auth.md
@@ -5,7 +5,7 @@ title: Service to Service Auth
description: This section describes how to use service to service authentication, both internally within Backstage plugins and towards external services.
---
-This article describes the steps needed to introduce _backend-to-backend auth_.
+This article describes the steps needed to introduce _service-to-service auth_ (formerly _backend-to-backend_ auth).
This allows plugin backends to determine whether a given request originates from
a legitimate Backstage plugin (or other external caller), by requiring a special
type of service-to-service token which is signed with a shared secret.
@@ -60,7 +60,7 @@ backend:
**NOTE**: For ease of development, we auto-generate a key for you if you haven't
configured a secret in dev mode. You _must set your own secret_ in order for
-backend-to-backend auth to work in production; the `ServiceTokenManager` will
+service-to-service auth to work in production; the `ServiceTokenManager` will
throw an exception in production if it has no keys to work with, which will lead
to the backend failing to start up.
diff --git a/docs/backend-system/building-plugins-and-modules/01-index.md b/docs/backend-system/building-plugins-and-modules/01-index.md
index 1556b6b377..644816b053 100644
--- a/docs/backend-system/building-plugins-and-modules/01-index.md
+++ b/docs/backend-system/building-plugins-and-modules/01-index.md
@@ -168,7 +168,61 @@ Whenever you want to allow modules to configure your plugin dynamically, for
example in the way that the catalog backend lets catalog modules inject
additional entity providers, you can use the extension points mechanism. This is
described in detail with code examples in [the extension points architecture
-article](../architecture/05-extension-points.md).
+article](../architecture/05-extension-points.md), while the following is a more
+slim example of how to implement an extension point for a plugin:
+
+```ts
+import { createExtensionPoint } from '@backstage/backend-plugin-api';
+
+// This is the extension point interface, which is how modules interact with your plugin.
+export interface ExamplesExtensionPoint {
+ addExample(example: Example): void;
+}
+
+// This is the extension point reference that encapsulates the above interface.
+export const examplesExtensionPoint =
+ createExtensionPoint({
+ id: 'example.examples',
+ });
+
+// This is the implementation of the extension point, which is internal to your plugin.
+class ExamplesExtension implements ExamplesExtensionPoint {
+ #examples: Example[] = [];
+
+ addExample(example: Example): void {
+ this.#examples.push(example);
+ }
+
+ // Note that this method is internal to this implementation
+ getRegisteredExamples() {
+ return this.#examples;
+ }
+}
+
+// The following shows how your plugin would register the extension point
+// and use the features that other modules have registered.
+export const examplePlugin = createBackendPlugin({
+ pluginId: 'example',
+ register(env) {
+ const examplesExtensions = new ExamplesExtension();
+ env.registerExtensionPoint(examplesExtensionPoint, examplesExtensions);
+
+ env.registerInit({
+ deps: { logger: coreServices.logger },
+ async init({ logger }) {
+ // We can access `examplesExtension` directly, giving us access to the internal interface.
+ const examples = examplesExtension.getRegisteredExamples();
+
+ logger.info(`The following examples have been registered: ${examples}`);
+ },
+ });
+ },
+});
+```
+
+This is a very common type of extension point, one where modules are given the opportunity to register features to be used by the plugin. In this case modules are able to register examples that are then used by our examples plugin.
+
+Note that the public extension point interface only needs to expose the `addExample` method, while the `getRegisteredExamples()` method is kept internal to the plugin.
### Configuration
diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md
index 837574aa9e..458637f316 100644
--- a/docs/features/kubernetes/configuration.md
+++ b/docs/features/kubernetes/configuration.md
@@ -160,8 +160,9 @@ auth:
audience: ${AUTH_OKTA_AUDIENCE}
```
-The following values are supported out-of-the-box by the frontend: `google`, `microsoft`,
-`okta`, `onelogin`.
+The following values are supported out-of-the-box by the frontend: `gitlab` (the
+application whose `clientId` is used by the auth provider should be granted the
+`openid` scope), `google`, `microsoft`, `okta`, `onelogin`.
Take note that `oidcTokenProvider` is just the issuer for the token, you can use any
of these with an OIDC enabled cluster, like using `microsoft` as the issuer for a EKS
diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md
index 383fd698f9..52ba540430 100644
--- a/docs/features/software-catalog/descriptor-format.md
+++ b/docs/features/software-catalog/descriptor-format.md
@@ -255,7 +255,7 @@ i.e. not Backstage specific but the same as in Kubernetes.
Each entity gets an automatically generated globally unique ID when it first
enters the database. This field is not meant to be specified as input data, but
-is rater created by the database engine itself when producing the output entity.
+is rather created by the database engine itself when producing the output entity.
Note that `uid` values are _not_ to be seen as stable, and should _not_ be used
as external references to an entity. The `uid` can change over time even when a
diff --git a/docs/features/software-catalog/index.md b/docs/features/software-catalog/index.md
index 0326292e41..0e61b83af6 100644
--- a/docs/features/software-catalog/index.md
+++ b/docs/features/software-catalog/index.md
@@ -14,7 +14,7 @@ websites, libraries, data pipelines, etc). The catalog is built around the
concept of [metadata YAML files](descriptor-format.md) stored together with the
code, which are then harvested and visualized in Backstage.
-
+
## How it works
diff --git a/docs/features/software-templates/testing-scaffolder-alpha.md b/docs/features/software-templates/testing-scaffolder-alpha.md
index df89e0f1b1..1791ab0822 100644
--- a/docs/features/software-templates/testing-scaffolder-alpha.md
+++ b/docs/features/software-templates/testing-scaffolder-alpha.md
@@ -103,7 +103,7 @@ References for `createScaffolderFieldExtension` have an `/alpha` version of `cre
/* highlight-remove-next-line */
import { createScaffolderFieldExtension } from '@backstage/plugin-scaffolder';
/* highlight-add-next-line */
-import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder/alpha';
+import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder-react/alpha';
export const EntityNamePickerFieldExtension = scaffolderPlugin.provide(
/* highlight-remove-next-line */
diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md
index ffe3312501..3e89e89582 100644
--- a/docs/features/software-templates/writing-custom-actions.md
+++ b/docs/features/software-templates/writing-custom-actions.md
@@ -24,8 +24,53 @@ passed as `input` to the function.
In `packages/backend/src/plugins/scaffolder/actions/custom.ts` we can create a
new action.
-```ts
-import { createTemplateAction } from '@backstage/plugin-scaffolder-backend';
+```ts title="With Zod"
+import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import fs from 'fs-extra';
+import { z } from 'zod';
+
+export const createNewFileAction = () => {
+ return createTemplateAction({
+ id: 'mycompany:create-file',
+ schema: {
+ input: z.object({
+ contents: z.string().describe('The contents of the file'),
+ filename: z
+ .string()
+ .describe('The filename of the file that will be created'),
+ }),
+ },
+
+ async handler(ctx) {
+ await fs.outputFile(
+ `${ctx.workspacePath}/${ctx.input.filename}`,
+ ctx.input.contents,
+ );
+ },
+ });
+};
+```
+
+So let's break this down. The `createNewFileAction` is a function that returns a
+`createTemplateAction`, and it's a good place to pass in dependencies which
+close over the `TemplateAction`. Take a look at our
+[built-in actions](https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/src/scaffolder/actions/builtin)
+for reference.
+
+The `createTemplateAction` takes an object which specifies the following:
+
+- `id` - a unique ID for your custom action. We encourage you to namespace these
+ in some way so that they won't collide with future built-in actions that we
+ may ship with the `scaffolder-backend` plugin.
+- `schema.input` - A `zod` or JSON schema object for input values to your function
+- `schema.output` - A `zod` or JSON schema object for values which are output from the
+ function using `ctx.output`
+- `handler` - the actual code which is run part of the action, with a context
+
+You can also choose to define your custom action using JSON schema instead of `zod`:
+
+```ts title="With JSON Schema"
+import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import fs from 'fs-extra';
export const createNewFileAction = () => {
@@ -59,27 +104,6 @@ export const createNewFileAction = () => {
};
```
-So let's break this down. The `createNewFileAction` is a function that returns a
-`createTemplateAction`, and it's a good place to pass in dependencies which
-close over the `TemplateAction`. Take a look at our
-[built-in actions](https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/src/scaffolder/actions/builtin)
-for reference.
-
-We set the type generic to `{ contents: string, filename: string }` which is
-there to set the type on the handler `ctx` `inputs` property so we get good type
-checking. This could be generated from the next part of this guide, the `input`
-schema, but it's not supported right now. Feel free to contribute 🚀 👍.
-
-The `createTemplateAction` takes an object which specifies the following:
-
-- `id` - a unique ID for your custom action. We encourage you to namespace these
- in some way so that they won't collide with future built-in actions that we
- may ship with the `scaffolder-backend` plugin.
-- `schema.input` - A JSON schema for input values to your function
-- `schema.output` - A JSON schema for values which are outputted from the
- function using `ctx.output`
-- `handler` - the actual code which is run part of the action, with a context
-
### The context object
When the action `handler` is called, we provide you a `context` as the only
@@ -89,10 +113,10 @@ argument. It looks like the following:
- `ctx.logger` - a Winston logger for additional logging inside your action
- `ctx.logStream` - a stream version of the logger if needed
- `ctx.workspacePath` - a string of the working directory of the template run
-- `ctx.input` - an object which should match the JSON schema provided in the
+- `ctx.input` - an object which should match the `zod` or JSON schema provided in the
`schema.input` part of the action definition
- `ctx.output` - a function which you can call to set outputs that match the
- JSON schema in `schema.output` for ex. `ctx.output('downloadUrl', something)`
+ JSON schema or `zod` in `schema.output` for ex. `ctx.output('downloadUrl', myDownloadUrl)`
- `createTemporaryDirectory` a function to call to give you a temporary
directory somewhere on the runner so you can store some files there rather
than polluting the `workspacePath`
diff --git a/docs/features/techdocs/cli.md b/docs/features/techdocs/cli.md
index 6b2e4383b8..b174896d6a 100644
--- a/docs/features/techdocs/cli.md
+++ b/docs/features/techdocs/cli.md
@@ -8,7 +8,7 @@ description: TechDocs CLI - a utility command line interface for managing TechDo
Utility command line interface for managing TechDocs sites in
[Backstage](https://github.com/backstage/backstage).
-https://backstage.io/docs/features/techdocs/techdocs-overview
+https://backstage.io/docs/features/techdocs/
## Features
diff --git a/docs/features/techdocs/how-to-guides.md b/docs/features/techdocs/how-to-guides.md
index cfca7c6a7f..64f7335335 100644
--- a/docs/features/techdocs/how-to-guides.md
+++ b/docs/features/techdocs/how-to-guides.md
@@ -433,7 +433,7 @@ const app = createApp({
## How to add the documentation setup to your software templates
-[Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index)
+[Software Templates](https://backstage.io/docs/features/software-templates/)
in Backstage is a tool that can help your users to create new components out of
already configured templates. It comes with a set of default templates to use,
but you can also
diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md
index 535bc848fc..ba5050a73b 100644
--- a/docs/getting-started/create-an-app.md
+++ b/docs/getting-started/create-an-app.md
@@ -71,9 +71,9 @@ app
good starting point for you to get to know Backstage.
- **packages/backend/**: We include a backend that helps power features such as
[Authentication](https://backstage.io/docs/auth/),
- [Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview),
- [Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index)
- and [TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview)
+ [Software Catalog](https://backstage.io/docs/features/software-catalog/),
+ [Software Templates](https://backstage.io/docs/features/software-templates/)
+ and [TechDocs](https://backstage.io/docs/features/techdocs/)
amongst other things.
### Troubleshooting
diff --git a/docs/getting-started/getting-involved.md b/docs/getting-started/getting-involved.md
new file mode 100644
index 0000000000..7c0be46273
--- /dev/null
+++ b/docs/getting-started/getting-involved.md
@@ -0,0 +1,66 @@
+---
+id: getting-involved
+title: Getting Involved
+# prettier-ignore
+description: How can you help us build Backstage? We welcome contributions of all kinds, from documentation to code to design.
+---
+
+We encourage contributions of all kinds, from documentation to code to design, here's some ideas on how you can help us build and improve Backstage!
+
+### Report bugs
+
+No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md).
+
+### Fix bugs or build new features
+
+Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted).
+
+### Build a plugin
+
+The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help.
+
+A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!)
+
+What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin).
+
+### Suggesting a plugin
+
+If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development.
+
+You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.
+
+### Adding non-code Contributions
+
+Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more.
+
+### Write documentation or improve the website
+
+The current documentation is very limited. Help us make the `/docs` folder come alive.
+
+Docs are published to [backstage.io/docs](https://backstage.io/docs). If you
+contribute to the documentation, you might want to preview your changes before
+submitting them. You'll find the website sources under [/microsite](https://github.com/backstage/backstage/tree/master/microsite)
+with instructions for building and locally serving the website in the
+[README](/microsite#readme).
+
+### Contribute to Storybook
+
+We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook).
+
+Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`).
+
+### Submit feedback
+
+The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues).
+
+If you are proposing a feature:
+
+- Explain in detail how it would work.
+- Keep the scope as narrow as possible, to make it easier to implement.
+- Use appropriate labels
+- Remember that this is a volunteer-driven project, and that contributions
+ are welcome :)
+
+### Add your company to `ADOPTERS`
+
+Have you started using Backstage? Adding your company to [ADOPTERS](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB).
diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md
index 2ab72b4bd6..7ddc5202b5 100644
--- a/docs/integrations/gitlab/org.md
+++ b/docs/integrations/gitlab/org.md
@@ -31,4 +31,10 @@ catalog:
yourProviderId:
host: gitlab.com
orgEnabled: true
+ group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (which will be stripped)
+ groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided pattern. Defaults to `[\s\S]*`, which means to not filter anything
```
+
+When the `group` parameter is provided, the corresponding path prefix will be stripped out from each matching group
+when computing the unique entity name. e.g. If `group` is `org/teams`, the name for `org/teams/avengers/gotg` will
+be `avengers-gotg`.
diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md
index 2eb695e3a3..a86c0eaa35 100644
--- a/docs/local-dev/cli-build-system.md
+++ b/docs/local-dev/cli-build-system.md
@@ -671,7 +671,7 @@ TypeScript support is currently handled though the `typesVersions` field, as the
To add subpath exports to an existing package, simply add the desired `"exports"` fields and then run the following command:
```bash
-yarn backstage-cli package migrate package-exports
+yarn backstage-cli migrate package-exports
```
## Experimental Type Build
diff --git a/docs/permissions/getting-started.md b/docs/permissions/getting-started.md
index 76cccbdf38..bb6c9a558e 100644
--- a/docs/permissions/getting-started.md
+++ b/docs/permissions/getting-started.md
@@ -20,11 +20,11 @@ The permissions framework depends on a few other Backstage systems, which must b
The permissions framework itself is new to Backstage and still evolving quickly. To ensure your version of Backstage has all the latest permission-related functionality, it’s important to upgrade to the latest version. The [Backstage upgrade helper](https://backstage.github.io/upgrade-helper/) is a great tool to help ensure that you’ve made all the necessary changes during the upgrade!
-### Enable backend-to-backend authentication
+### Enable service-to-service authentication
-Backend-to-backend authentication allows Backstage backend code to verify that a given request originates from elsewhere in the Backstage backend. This is useful for tasks like collation of catalog entities in the search index. This type of request shouldn’t be permissioned, so it’s important to configure this feature before trying to use the permissions framework.
+Service-to-service authentication allows Backstage backend code to verify that a given request originates from elsewhere in the Backstage backend. This is useful for tasks like collation of catalog entities in the search index. This type of request shouldn’t be permissioned, so it’s important to configure this feature before trying to use the permissions framework.
-To set up backend-to-backend authentication, follow the [backend-to-backend authentication docs](../tutorials/backend-to-backend-auth.md).
+To set up service-to-service authentication, follow the [service-to-service authentication docs](../auth/service-to-service-auth.md).
### Supply an identity resolver to populate group membership on sign in
diff --git a/docs/plugins/integrating-search-into-plugins.md b/docs/plugins/integrating-search-into-plugins.md
index 524daf18cd..4e829b6ae9 100644
--- a/docs/plugins/integrating-search-into-plugins.md
+++ b/docs/plugins/integrating-search-into-plugins.md
@@ -146,7 +146,7 @@ Look at [DefaultTechDocsCollatorFactory test](https://github.com/backstage/backs
#### 6. Make your plugins collator discoverable for others
-If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/search-overview#plugins-integrated-with-backstage-search).
+If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/#plugins-integrated-with-backstage-search).
## Building a search experience into your plugin
diff --git a/docs/releases/v1.12.0-next.1-changelog.md b/docs/releases/v1.12.0-next.1-changelog.md
new file mode 100644
index 0000000000..36d69ee241
--- /dev/null
+++ b/docs/releases/v1.12.0-next.1-changelog.md
@@ -0,0 +1,2591 @@
+# Release v1.12.0-next.1
+
+## @techdocs/cli@1.4.0-next.1
+
+### Minor Changes
+
+- 8e465ce52e2: Running `@techdocs/cli generate` with the `--verbose` flag will now print the mkdocs output.
+- ea2bbef1b16: Added support for an HTTPS proxy for techdocs AWS S3 requests
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.6.0-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-catalog@1.9.0-next.1
+
+### Minor Changes
+
+- c9a9f3c834f: Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
+
+### Patch Changes
+
+- 7e8930ae1c6: Fix icon alignment in `CatalogSearchResultListItem`
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.0-next.1
+
+### Minor Changes
+
+- a811bd246c4: Added endpoint to get a list of known incremental entity providers
+
+### Patch Changes
+
+- 6e612b58577: Move `@backstage/backend-defaults` to `devDependencies`
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-scaffolder@1.12.0-next.1
+
+### Minor Changes
+
+- 8f4d13f21cf: Move `useTaskStream`, `TaskBorder`, `TaskLogStream` and `TaskSteps` into `scaffolder-react`.
+
+### Patch Changes
+
+- be3cddaab5f: Getting credentials in the RepoUrlPicker now also works for targets without owner (e.g. Bitbucket Server).
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- eb877bad736: Create an "Other Templates" group when groups are given to scaffolder/next.
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-react@1.2.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
+## @backstage/plugin-scaffolder-backend@1.12.0-next.1
+
+### Minor Changes
+
+- 7d724d8ef56: Added the ability to be able to define an actions `input` and `output` schema using `zod` instead of hand writing types and `jsonschema`
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+## @backstage/plugin-scaffolder-react@1.2.0-next.1
+
+### Minor Changes
+
+- 8f4d13f21cf: Move `useTaskStream`, `TaskBorder`, `TaskLogStream` and `TaskSteps` into `scaffolder-react`.
+
+### Patch Changes
+
+- 44941fc97eb: scaffolder/next: Move the `uiSchema` to its own property in the validation `context` to align with component development and access of `ui:options`
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
+## @backstage/plugin-techdocs-node@1.6.0-next.1
+
+### Minor Changes
+
+- ea2bbef1b16: Added support for an HTTPS proxy for techdocs AWS S3 requests
+
+### Patch Changes
+
+- bfe350ef4ce: Fixed bug that prevented deletion of stale files when non-empty directories where tried to be deleted as well.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/integration-aws-node@0.1.2-next.0
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/app-defaults@1.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
+## @backstage/backend-app-api@0.4.1-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- 915e46622cf: Add support for `NotImplementedError`, properly returning 501 as status code.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/backend-common@0.18.3-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-dev-utils@0.1.1-next.0
+ - @backstage/backend-app-api@0.4.1-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/backend-defaults@0.1.8-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- 5d0693edc09: Added a workaround for the cyclic dependency bug across `@backstage/backend-common` and `@backstage/backend-app-api`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-app-api@0.4.1-next.1
+
+## @backstage/backend-dev-utils@0.1.1-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
+## @backstage/backend-plugin-api@0.4.1-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/backend-tasks@0.4.4-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/backend-test-utils@0.1.35-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-app-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/catalog-client@1.4.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/catalog-model@1.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/cli@0.22.4-next.1
+
+### Patch Changes
+
+- 1ad8d885d30: Fixed a bug where additional backend package entry points where not properly marked as internal during local development.
+- 867f4752ca1: Updated the ESLint plugin configuration that is enabled through `yarn start --check` to only pick up valid source files.
+- 9bf50a36674: Bumped the `msw` version in templates to 1.0.0
+- 4b4998466b4: Updated dependency `del` to `^7.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- a11b9a23f5a: Keep custom exports entry points in package.json
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/release-manifests@0.0.9-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/eslint-plugin@0.1.2-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/cli-common@0.1.12-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
+## @backstage/codemods@0.1.44-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12-next.0
+
+## @backstage/config@1.0.7-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/types@1.0.2
+
+## @backstage/config-loader@1.1.9-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/core-app-api@1.5.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## @backstage/core-components@0.12.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- e1aae2f5a0c: Updated the `aria-label` of the `HeaderTabs` component.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/version-bridge@1.0.3
+
+## @backstage/core-plugin-api@1.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## @backstage/create-app@0.4.38-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12-next.0
+
+## @backstage/dev-utils@1.0.13-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/errors@1.1.5-next.0
+
+### Patch Changes
+
+- 3bf83a2aabf: Added `NotImplementedError`, which can be used when the server does not recognize the request method and is incapable of supporting it for any resource.
+- Updated dependencies
+ - @backstage/types@1.0.2
+
+## @backstage/integration@1.4.3-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/integration-aws-node@0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/integration-react@1.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/release-manifests@0.0.9-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+
+## @backstage/repo-tools@0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+
+## @backstage/test-utils@1.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
+## @backstage/theme@0.2.18-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
+## @backstage/plugin-adr@0.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-adr-common@0.2.7-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-adr-backend@0.3.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-adr-common@0.2.7-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-adr-common@0.2.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-airbrake@0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/dev-utils@1.0.13-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-airbrake-backend@0.2.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-allure@0.1.32-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-analytics-module-ga@0.1.27-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-apache-airflow@0.2.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+
+## @backstage/plugin-api-docs@0.9.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 9820eb5d24f: Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
+- Updated dependencies
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-apollo-explorer@0.1.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-app-backend@0.3.43-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-auth-backend@0.18.1-next.1
+
+### Patch Changes
+
+- 86cece2c1fb: Updated dependency `@types/passport-microsoft` to `^1.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-auth-node@0.2.12-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-azure-devops@0.2.7-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-azure-devops-common@0.3.0
+
+## @backstage/plugin-azure-devops-backend@0.3.22-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-azure-devops-common@0.3.0
+
+## @backstage/plugin-azure-sites@0.1.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-azure-sites-common@0.1.0
+
+## @backstage/plugin-azure-sites-backend@0.1.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-azure-sites-common@0.1.0
+
+## @backstage/plugin-badges@0.2.40-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-badges-backend@0.1.37-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-bazaar@0.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-bazaar-backend@0.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-bitrise@0.1.43-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-catalog-backend@1.8.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- f093ce83d58: Fix a bug where the batch fetch by ref endpoint did not work in conjunction with filtering (e.g. if authorization was enabled).
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-catalog-backend-module-aws@0.1.17-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-kubernetes-common@0.6.1-next.1
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.8-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-backend-module-github@0.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- af1095f1e11: The configuration key `branch` of the `GitlabDiscoveryEntityProvider` has been deprecated in favor of the configuration key `fallbackBranch`.
+ It will be reused in future release to enforce a concrete branch to be used in catalog file discovery.
+ To migrate to the new configuration value, rename `branch` to `fallbackBranch`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.5.2-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-catalog-common@1.0.12-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-catalog-graph@0.2.28-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-catalog-graphql@0.3.19-next.1
+
+### Patch Changes
+
+- b990021ddeb: Updated dependency `@graphql-codegen/cli` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/graphql-modules-preset` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/typescript` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/typescript-resolvers` to `^3.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-catalog-import@0.9.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
+## @backstage/plugin-catalog-node@1.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
+## @backstage/plugin-catalog-react@1.4.0-next.1
+
+### Patch Changes
+
+- 24916d23494: Do not close `Autocomplete` powered multiple-selection filters when checking boxes
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
+## @backstage/plugin-cicd-statistics@0.1.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.12-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-cicd-statistics@0.1.18-next.1
+
+## @backstage/plugin-circleci@0.3.16-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-cloudbuild@0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-code-climate@0.1.16-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-code-coverage@0.2.9-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-code-coverage-backend@0.2.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-codescene@0.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-config-schema@0.1.39-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-cost-insights@0.12.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-cost-insights-common@0.1.1
+
+## @backstage/plugin-dynatrace@3.0.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-entity-feedback@0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.0
+
+## @backstage/plugin-entity-feedback-backend@0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.0
+
+## @backstage/plugin-entity-validation@0.1.1-next.1
+
+### Patch Changes
+
+- 47d246691ac: Fixed bug in EntityVaidation plugin where string in text box was unable to be updated.
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
+## @backstage/plugin-events-backend@0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-aws-sqs@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-azure@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-gerrit@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-github@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-module-gitlab@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-backend-test-utils@0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.4-next.1
+
+## @backstage/plugin-events-node@0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+
+## @backstage/plugin-explore@0.4.1-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-explore-react@0.0.27-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-explore-backend@0.0.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-explore-react@0.0.27-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-explore-common@0.0.1
+
+## @backstage/plugin-firehydrant@0.1.33-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+
+## @backstage/plugin-fossa@0.2.48-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-gcalendar@0.3.12-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-gcp-projects@0.3.35-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-git-release-manager@0.3.29-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-github-actions@0.5.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-github-deployments@0.1.47-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-github-issues@0.2.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-github-pull-requests-board@0.1.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-gitops-profiles@0.3.34-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-gocd@0.1.22-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-graphiql@0.2.48-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-graphql-backend@0.1.33-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-catalog-graphql@0.3.19-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-graphql-voyager@0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-home@0.4.32-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-ilert@0.2.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-jenkins@0.7.15-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-jenkins-common@0.1.14-next.1
+
+## @backstage/plugin-jenkins-backend@0.1.33-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-jenkins-common@0.1.14-next.1
+
+## @backstage/plugin-jenkins-common@0.1.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
+## @backstage/plugin-kafka@0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-kafka-backend@0.2.36-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-kubernetes@0.7.9-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-kubernetes-common@0.6.1-next.1
+
+## @backstage/plugin-kubernetes-backend@0.9.4-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-kubernetes-common@0.6.1-next.1
+
+## @backstage/plugin-kubernetes-common@0.6.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-lighthouse@0.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-lighthouse-common@0.1.1-next.0
+
+## @backstage/plugin-lighthouse-backend@0.1.1-next.1
+
+### Patch Changes
+
+- 46829bc2f0e: Update README.md; typo with plugin name & removed unneeded "import { Router } from 'express';"
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-lighthouse-common@0.1.1-next.0
+
+## @backstage/plugin-lighthouse-common@0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-linguist@0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- ab997ce243f: Updated `README.md` to removed images with refresh button as this feature was not implemented in the current version
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-linguist-common@0.1.0
+
+## @backstage/plugin-linguist-backend@0.2.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+
+- b271d5ca052: Allow kind to be configurable
+
+ ```ts
+ return createRouter({ schedule: schedule, kind: ['Component'] }, { ...env });
+ ```
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-linguist-common@0.1.0
+
+## @backstage/plugin-microsoft-calendar@0.1.1-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-newrelic@0.3.34-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 66fdf05a1ef: Updated installation instructions
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-newrelic-dashboard@0.2.9-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-octopus-deploy@0.1.0-next.1
+
+### Patch Changes
+
+- cb0fc15a992: Added Octopus Deploy logo
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-org@0.6.6-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-org-react@0.1.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-pagerduty@0.5.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 9c08ecbaa4b: Update readme link for discord channel
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-periskop@0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-periskop-backend@0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-backend@0.5.18-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-common@0.7.4-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-permission-node@0.7.6-next.1
+
+### Patch Changes
+
+- 27a103ca07b: Changed the `createPermissionIntegrationRouter` API to allow `getResources`, `resourceType` and `rules` to be optional
+- 37e9215c793: Update the service-to-service auth docs URL in error message.
+ \`\`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-react@0.4.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-playlist@0.1.7-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-playlist-common@0.1.5-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-playlist-backend@0.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-playlist-common@0.1.5-next.0
+
+## @backstage/plugin-playlist-common@0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+
+## @backstage/plugin-proxy-backend@0.2.37-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-rollbar@0.4.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-rollbar-backend@0.1.40-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.18-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+## @backstage/plugin-scaffolder-backend-module-sentry@0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+## @backstage/plugin-scaffolder-common@1.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-scaffolder-node@0.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
+## @backstage/plugin-search@1.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-search-backend@1.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-search-backend-module-pg@0.5.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-search-backend-node@1.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-search-common@1.2.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-search-react@1.5.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-sentry@0.5.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-shortcuts@0.3.8-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-sonarqube@0.6.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-sonarqube-react@0.1.4-next.1
+
+## @backstage/plugin-sonarqube-backend@0.1.8-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-sonarqube-react@0.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-splunk-on-call@0.4.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-stack-overflow@0.1.12-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-home@0.4.32-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-stack-overflow-backend@0.1.12-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-stackstorm@0.1.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-tech-insights@0.3.8-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-insights-backend@0.5.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+ - @backstage/plugin-tech-insights-node@0.4.1-next.1
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-tech-insights-common@0.2.10
+ - @backstage/plugin-tech-insights-node@0.4.1-next.1
+
+## @backstage/plugin-tech-insights-node@0.4.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-tech-insights-common@0.2.10
+
+## @backstage/plugin-tech-radar@0.6.2-next.1
+
+### Patch Changes
+
+- e14dcfa4994: Update colors to match Zalando's tech radar, also add coloring on title and legend to match ring color.
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-techdocs@1.6.0-next.1
+
+### Patch Changes
+
+- 54a1e133b56: Fix bug that caused next and previous links not to work with certain versions of mkdocs-material
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 8adfda60ae1: Updated dependency `jss` to `~10.10.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 238cf657c09: Copy to clipboard now works in a not secure context.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/plugin-techdocs@1.6.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
+## @backstage/plugin-techdocs-backend@1.5.4-next.1
+
+### Patch Changes
+
+- 40298b02778: Techdocs backend explains a bit more about what might have caused the docs not being found when building techdocs.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/plugin-techdocs-node@1.6.0-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 37cf85fb85c: Fixed bug in IssueLink component where the URL was not generated properly when the repository was located inside a Gitlab subgroup
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+
+## @backstage/plugin-techdocs-react@1.1.4-next.1
+
+### Patch Changes
+
+- 8adfda60ae1: Updated dependency `jss` to `~10.10.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/version-bridge@1.0.3
+
+## @backstage/plugin-todo@0.2.18-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-todo-backend@0.1.40-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
+## @backstage/plugin-user-settings@0.7.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-user-settings-backend@0.1.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
+## @backstage/plugin-vault@0.1.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @backstage/plugin-vault-backend@0.2.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-xcmetrics@0.2.36-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## example-app@0.2.81-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/plugin-scaffolder@1.12.0-next.1
+ - @backstage/plugin-scaffolder-react@1.2.0-next.1
+ - @backstage/plugin-techdocs@1.6.0-next.1
+ - @backstage/plugin-tech-radar@0.6.2-next.1
+ - @backstage/plugin-microsoft-calendar@0.1.1-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.9-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-code-coverage@0.2.9-next.1
+ - @backstage/plugin-azure-sites@0.1.5-next.1
+ - @backstage/plugin-gcalendar@0.3.12-next.1
+ - @backstage/plugin-shortcuts@0.3.8-next.1
+ - @backstage/plugin-explore@0.4.1-next.1
+ - @backstage/plugin-org@0.6.6-next.1
+ - @backstage/plugin-kubernetes@0.7.9-next.1
+ - @backstage/plugin-circleci@0.3.16-next.1
+ - @backstage/plugin-playlist@0.1.7-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/plugin-airbrake@0.3.16-next.1
+ - @backstage/plugin-apache-airflow@0.2.9-next.1
+ - @backstage/plugin-api-docs@0.9.1-next.1
+ - @backstage/plugin-azure-devops@0.2.7-next.1
+ - @backstage/plugin-badges@0.2.40-next.1
+ - @backstage/plugin-catalog-import@0.9.6-next.1
+ - @backstage/plugin-cloudbuild@0.3.16-next.1
+ - @backstage/plugin-cost-insights@0.12.5-next.1
+ - @backstage/plugin-dynatrace@3.0.0-next.1
+ - @backstage/plugin-entity-feedback@0.1.1-next.1
+ - @backstage/plugin-gcp-projects@0.3.35-next.1
+ - @backstage/plugin-github-actions@0.5.16-next.1
+ - @backstage/plugin-gocd@0.1.22-next.1
+ - @backstage/plugin-graphiql@0.2.48-next.1
+ - @backstage/plugin-home@0.4.32-next.1
+ - @backstage/plugin-jenkins@0.7.15-next.1
+ - @backstage/plugin-kafka@0.3.16-next.1
+ - @backstage/plugin-lighthouse@0.4.1-next.1
+ - @backstage/plugin-linguist@0.1.1-next.1
+ - @backstage/plugin-newrelic@0.3.34-next.1
+ - @backstage/plugin-pagerduty@0.5.9-next.1
+ - @backstage/plugin-rollbar@0.4.16-next.1
+ - @backstage/plugin-search@1.1.1-next.1
+ - @backstage/plugin-sentry@0.5.1-next.1
+ - @backstage/plugin-stack-overflow@0.1.12-next.1
+ - @backstage/plugin-stackstorm@0.1.0-next.1
+ - @backstage/plugin-tech-insights@0.3.8-next.1
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.1
+ - @backstage/plugin-todo@0.2.18-next.1
+ - @backstage/plugin-user-settings@0.7.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-graph@0.2.28-next.1
+ - @backstage/plugin-linguist-common@0.1.0
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+ - @internal/plugin-catalog-customized@0.0.8-next.1
+
+## example-backend@0.2.81-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/plugin-techdocs-backend@1.5.4-next.1
+ - @backstage/plugin-auth-backend@0.18.1-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-adr-backend@0.3.1-next.1
+ - @backstage/plugin-app-backend@0.3.43-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.22-next.1
+ - @backstage/plugin-azure-sites-backend@0.1.5-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-code-coverage-backend@0.2.9-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.1-next.1
+ - @backstage/plugin-explore-backend@0.0.5-next.1
+ - @backstage/plugin-graphql-backend@0.1.33-next.1
+ - @backstage/plugin-jenkins-backend@0.1.33-next.1
+ - @backstage/plugin-kubernetes-backend@0.9.4-next.1
+ - @backstage/plugin-linguist-backend@0.2.0-next.1
+ - @backstage/plugin-permission-backend@0.5.18-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/plugin-playlist-backend@0.2.6-next.1
+ - @backstage/plugin-proxy-backend@0.2.37-next.1
+ - @backstage/plugin-rollbar-backend@0.1.40-next.1
+ - @backstage/plugin-todo-backend@0.1.40-next.1
+ - @backstage/plugin-lighthouse-backend@0.1.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.1
+ - @backstage/plugin-search-backend@1.2.4-next.1
+ - example-app@0.2.81-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-badges-backend@0.1.37-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-backend@0.2.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+ - @backstage/plugin-kafka-backend@0.2.36-next.1
+ - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.1
+ - @backstage/plugin-search-backend-module-pg@0.5.4-next.1
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-tech-insights-backend@0.5.9-next.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.1
+ - @backstage/plugin-tech-insights-node@0.4.1-next.1
+
+## example-backend-next@0.0.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/plugin-app-backend@0.3.43-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-todo-backend@0.1.40-next.1
+ - @backstage/backend-defaults@0.1.8-next.1
+
+## e2e-test@0.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/create-app@0.4.38-next.1
+
+## techdocs-cli-embedded-app@0.2.80-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/plugin-techdocs@1.6.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
+## @internal/plugin-catalog-customized@0.0.8-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+
+## @internal/plugin-todo-list@1.0.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
+## @internal/plugin-todo-list-backend@1.0.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
+## @internal/plugin-todo-list-common@1.0.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
diff --git a/docs/releases/v1.12.0-next.2-changelog.md b/docs/releases/v1.12.0-next.2-changelog.md
new file mode 100644
index 0000000000..7a64ec5f84
--- /dev/null
+++ b/docs/releases/v1.12.0-next.2-changelog.md
@@ -0,0 +1,1833 @@
+# Release v1.12.0-next.2
+
+## @backstage/backend-tasks@0.5.0-next.2
+
+### Minor Changes
+
+- 1578276708a: add functionality to get descriptions from the scheduler for triggering
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/core-app-api@1.6.0-next.2
+
+### Minor Changes
+
+- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
+ requested.
+
+ This should not be considered a breaking change, because spec-compliant OIDC
+ providers will already be returning ID tokens if and only if the `openid` scope
+ is granted.
+
+ This change makes the dependence explicit, and removes the burden on
+ OAuth2-based providers which require an ID token (e.g. this is done by various
+ default [auth
+ handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
+ `openid` to their default scopes. _That_ could carry another indirect benefit:
+ by removing `openid` from the default scopes for a provider, grants for
+ resource-specific access tokens can avoid requesting excess ID token-related
+ scopes.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/core-plugin-api@1.5.0-next.2
+
+### Minor Changes
+
+- ab750ddc4f2: The GitLab auth provider can now be used to get OpenID tokens.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-catalog@1.9.0-next.2
+
+### Minor Changes
+
+- 23cc40039c0: allow entity switch to render all cases that match the condition
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+
+## @backstage/plugin-catalog-backend-module-puppetdb@0.1.0-next.0
+
+### Minor Changes
+
+- a1efcf9a658: Initial version of the plugin.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-scaffolder@1.12.0-next.2
+
+### Minor Changes
+
+- 0d61fcca9c3: Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version.
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
+- 0aae4596296: Fix the scaffolder validator for arrays when the item is a field in the object
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-scaffolder-react@1.2.0-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/app-defaults@1.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+
+## @backstage/backend-app-api@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/backend-common@0.18.3-next.2
+
+### Patch Changes
+
+- f75097868a7: Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres
+
+ The example config below connects to the database as user `v-backstage-123` but sets the ownership of
+ the create schemas and tables to `backstage`
+
+ ```yaml
+ backend:
+ database:
+ client: pg
+ pluginDivisionMode: schema
+ role: backstage
+ connection:
+ user: v-backstage-123
+ ...
+ ```
+
+- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/integration-aws-node@0.1.2-next.0
+
+## @backstage/backend-defaults@0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## @backstage/backend-plugin-api@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/backend-test-utils@0.1.35-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/core-components@0.12.5-next.2
+
+### Patch Changes
+
+- 8bbf95b5507: Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations.
+ For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc.
+ This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar.
+- fa004f66871: Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/create-app@0.4.38-next.2
+
+### Patch Changes
+
+- Bumped create-app version.
+
+## @backstage/dev-utils@1.0.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/test-utils@1.2.6-next.2
+
+## @backstage/integration-react@1.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @techdocs/cli@1.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.6.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/test-utils@1.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-adr@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+
+## @backstage/plugin-adr-backend@0.3.1-next.2
+
+### Patch Changes
+
+- 2a73ded3861: Support MADR v3 format
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-airbrake@0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/dev-utils@1.0.13-next.2
+ - @backstage/test-utils@1.2.6-next.2
+
+## @backstage/plugin-airbrake-backend@0.2.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-allure@0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-analytics-module-ga@0.1.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-apache-airflow@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-api-docs@0.9.1-next.2
+
+### Patch Changes
+
+- 8bc7dcec820: Fix dark theme Swagger's clear button font color.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-apollo-explorer@0.1.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-app-backend@0.3.43-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-auth-backend@0.18.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-auth-node@0.2.12-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-azure-devops@0.2.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-azure-devops-backend@0.3.22-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-azure-sites@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-azure-sites-backend@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-badges@0.2.40-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-badges-backend@0.1.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-bazaar@0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/cli@0.22.4-next.1
+
+## @backstage/plugin-bazaar-backend@0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-bitrise@0.1.43-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-catalog-backend@1.8.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-aws@0.1.17-next.2
+
+### Patch Changes
+
+- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-github@0.2.6-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.1.14-next.2
+
+### Patch Changes
+
+- be129f8f3cd: filter gitlab groups by prefix
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.5.2-next.2
+
+### Patch Changes
+
+- 26eef93c547: Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-graph@0.2.28-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-catalog-import@0.9.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-catalog-node@1.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## @backstage/plugin-catalog-react@1.4.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-cicd-statistics@0.1.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-cicd-statistics@0.1.18-next.2
+
+## @backstage/plugin-circleci@0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-cloudbuild@0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-code-climate@0.1.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-code-coverage@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-code-coverage-backend@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-codescene@0.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-config-schema@0.1.39-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-cost-insights@0.12.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-dynatrace@3.0.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-entity-feedback@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-entity-feedback-backend@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-entity-validation@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-events-backend@0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-events-backend-module-aws-sqs@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-events-backend-module-azure@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## @backstage/plugin-events-backend-module-gerrit@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## @backstage/plugin-events-backend-module-github@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-events-backend-module-gitlab@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-events-backend-test-utils@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## @backstage/plugin-events-node@0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## @backstage/plugin-explore@0.4.1-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-explore-react@0.0.27-next.2
+
+## @backstage/plugin-explore-backend@0.0.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-explore-react@0.0.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-firehydrant@0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-fossa@0.2.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-gcalendar@0.3.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-gcp-projects@0.3.35-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-git-release-manager@0.3.29-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-github-actions@0.5.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-github-deployments@0.1.47-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-github-issues@0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-github-pull-requests-board@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-gitops-profiles@0.3.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-gocd@0.1.22-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-graphiql@0.2.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-graphql-backend@0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-catalog-graphql@0.3.19-next.1
+
+## @backstage/plugin-graphql-voyager@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-home@0.4.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-ilert@0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-jenkins@0.7.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-jenkins-backend@0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-kafka@0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-kafka-backend@0.2.36-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-kubernetes@0.7.9-next.2
+
+### Patch Changes
+
+- 8adeb19b37d: GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-kubernetes-backend@0.9.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-lighthouse@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-lighthouse-backend@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-linguist@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-linguist-backend@0.2.0-next.2
+
+### Patch Changes
+
+- 8a298b47240: Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API).
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-microsoft-calendar@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-newrelic@0.3.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-newrelic-dashboard@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-octopus-deploy@0.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-org@0.6.6-next.2
+
+### Patch Changes
+
+- a06fcac4040: Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-org-react@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-pagerduty@0.5.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-periskop@0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-periskop-backend@0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-backend@0.5.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-node@0.7.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-permission-react@0.4.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-playlist@0.1.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+
+## @backstage/plugin-playlist-backend@0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-proxy-backend@0.2.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-rollbar@0.4.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-rollbar-backend@0.1.40-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-scaffolder-backend@1.12.0-next.2
+
+### Patch Changes
+
+- 860de10fa67: Make identity valid if subject of token is a backstage server-2-server auth token
+- 65454876fb2: Minor API report tweaks
+- 9968f455921: catalog write action should allow any shape of object
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.18-next.2
+
+### Patch Changes
+
+- 62414770ead: allow container runner to be undefined in cookiecutter plugin
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-scaffolder-backend-module-sentry@0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-scaffolder-node@0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## @backstage/plugin-scaffolder-react@1.2.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
+- d9893263ba9: scaffolder/next: Fix for steps without properties
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-search@1.1.1-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-search-backend@1.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-search-backend-module-pg@0.5.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-search-backend-node@1.1.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-search-react@1.5.1-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 553f3c95011: Correctly disable next button in `SearchPagination` on last page
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-sentry@0.5.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-shortcuts@0.3.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-sonarqube@0.6.5-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-sonarqube-react@0.1.4-next.2
+
+## @backstage/plugin-sonarqube-backend@0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-sonarqube-react@0.1.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-splunk-on-call@0.4.5-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-stack-overflow@0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-home@0.4.32-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-stack-overflow-backend@0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-stackstorm@0.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-tech-insights@0.3.8-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-tech-insights-backend@0.5.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-tech-insights-node@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-tech-insights-node@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-tech-insights-node@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-tech-radar@0.6.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-techdocs@1.6.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/plugin-techdocs@1.6.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/test-utils@1.2.6-next.2
+
+## @backstage/plugin-techdocs-backend@1.5.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.6.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-techdocs-node@1.6.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/integration-aws-node@0.1.2-next.0
+
+## @backstage/plugin-techdocs-react@1.1.4-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-todo@0.2.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-todo-backend@0.1.40-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## @backstage/plugin-user-settings@0.7.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-user-settings-backend@0.1.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## @backstage/plugin-vault@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @backstage/plugin-vault-backend@0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @backstage/plugin-xcmetrics@0.2.36-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## example-app@0.2.81-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-scaffolder-react@1.2.0-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-tech-insights@0.3.8-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/plugin-scaffolder@1.12.0-next.2
+ - @backstage/plugin-techdocs@1.6.0-next.2
+ - @backstage/plugin-explore@0.4.1-next.2
+ - @backstage/plugin-search@1.1.1-next.2
+ - @backstage/plugin-kubernetes@0.7.9-next.2
+ - @backstage/plugin-api-docs@0.9.1-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/plugin-org@0.6.6-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/plugin-airbrake@0.3.16-next.2
+ - @backstage/plugin-apache-airflow@0.2.9-next.2
+ - @backstage/plugin-azure-devops@0.2.7-next.2
+ - @backstage/plugin-azure-sites@0.1.5-next.2
+ - @backstage/plugin-badges@0.2.40-next.2
+ - @backstage/plugin-catalog-graph@0.2.28-next.2
+ - @backstage/plugin-catalog-import@0.9.6-next.2
+ - @backstage/plugin-circleci@0.3.16-next.2
+ - @backstage/plugin-cloudbuild@0.3.16-next.2
+ - @backstage/plugin-code-coverage@0.2.9-next.2
+ - @backstage/plugin-cost-insights@0.12.5-next.2
+ - @backstage/plugin-dynatrace@3.0.0-next.2
+ - @backstage/plugin-entity-feedback@0.1.1-next.2
+ - @backstage/plugin-gcalendar@0.3.12-next.2
+ - @backstage/plugin-gcp-projects@0.3.35-next.2
+ - @backstage/plugin-github-actions@0.5.16-next.2
+ - @backstage/plugin-gocd@0.1.22-next.2
+ - @backstage/plugin-graphiql@0.2.48-next.2
+ - @backstage/plugin-home@0.4.32-next.2
+ - @backstage/plugin-jenkins@0.7.15-next.2
+ - @backstage/plugin-kafka@0.3.16-next.2
+ - @backstage/plugin-lighthouse@0.4.1-next.2
+ - @backstage/plugin-linguist@0.1.1-next.2
+ - @backstage/plugin-microsoft-calendar@0.1.1-next.2
+ - @backstage/plugin-newrelic@0.3.34-next.2
+ - @backstage/plugin-newrelic-dashboard@0.2.9-next.2
+ - @backstage/plugin-pagerduty@0.5.9-next.2
+ - @backstage/plugin-playlist@0.1.7-next.2
+ - @backstage/plugin-rollbar@0.4.16-next.2
+ - @backstage/plugin-sentry@0.5.1-next.2
+ - @backstage/plugin-shortcuts@0.3.8-next.2
+ - @backstage/plugin-stack-overflow@0.1.12-next.2
+ - @backstage/plugin-stackstorm@0.1.0-next.2
+ - @backstage/plugin-tech-radar@0.6.2-next.2
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2
+ - @backstage/plugin-todo@0.2.18-next.2
+ - @backstage/plugin-user-settings@0.7.1-next.2
+ - @internal/plugin-catalog-customized@0.0.8-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+
+## example-backend@0.2.81-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/plugin-adr-backend@0.3.1-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-linguist-backend@0.2.0-next.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2
+ - example-app@0.2.81-next.2
+ - @backstage/plugin-techdocs-backend@1.5.4-next.2
+ - @backstage/plugin-auth-backend@0.18.1-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.1-next.2
+ - @backstage/plugin-jenkins-backend@0.1.33-next.2
+ - @backstage/plugin-kubernetes-backend@0.9.4-next.2
+ - @backstage/plugin-permission-backend@0.5.18-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-playlist-backend@0.2.6-next.2
+ - @backstage/plugin-search-backend@1.2.4-next.2
+ - @backstage/plugin-lighthouse-backend@0.1.1-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/plugin-tech-insights-backend@0.5.9-next.2
+ - @backstage/plugin-tech-insights-node@0.4.1-next.2
+ - @backstage/plugin-app-backend@0.3.43-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.22-next.2
+ - @backstage/plugin-azure-sites-backend@0.1.5-next.2
+ - @backstage/plugin-badges-backend@0.1.37-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-code-coverage-backend@0.2.9-next.2
+ - @backstage/plugin-events-backend@0.2.4-next.2
+ - @backstage/plugin-explore-backend@0.0.5-next.2
+ - @backstage/plugin-graphql-backend@0.1.33-next.2
+ - @backstage/plugin-kafka-backend@0.2.36-next.2
+ - @backstage/plugin-proxy-backend@0.2.37-next.2
+ - @backstage/plugin-rollbar-backend@0.1.40-next.2
+ - @backstage/plugin-search-backend-module-pg@0.5.4-next.2
+ - @backstage/plugin-todo-backend@0.1.40-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## example-backend-next@0.0.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-defaults@0.1.8-next.2
+ - @backstage/plugin-app-backend@0.3.43-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-todo-backend@0.1.40-next.2
+
+## e2e-test@0.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.4.38-next.2
+
+## techdocs-cli-embedded-app@0.2.80-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-techdocs@1.6.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/test-utils@1.2.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## @internal/plugin-catalog-customized@0.0.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+
+## @internal/plugin-todo-list@1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## @internal/plugin-todo-list-backend@1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
diff --git a/microsite-next/docusaurus.config.js b/microsite-next/docusaurus.config.js
index b07700fb0e..4f7a46cb8d 100644
--- a/microsite-next/docusaurus.config.js
+++ b/microsite-next/docusaurus.config.js
@@ -104,6 +104,22 @@ module.exports = {
from: '/docs',
to: '/docs/overview/what-is-backstage',
},
+ {
+ from: '/docs/features/software-catalog/software-catalog-overview',
+ to: '/docs/features/software-catalog/',
+ },
+ {
+ from: '/docs/features/software-templates/software-templates-index',
+ to: '/docs/features/software-templates/',
+ },
+ {
+ from: '/docs/features/techdocs/techdocs-overview',
+ to: '/docs/features/techdocs/',
+ },
+ {
+ from: '/docs/features/search/search-overview',
+ to: '/docs/features/search/',
+ },
],
},
],
@@ -181,7 +197,7 @@ module.exports = {
},
{
label: 'Software Catalog',
- to: 'docs/features/software-catalog/software-catalog-overview',
+ to: 'docs/features/software-catalog/',
},
{
label: 'Create a Plugin',
diff --git a/microsite-next/sidebars.json b/microsite-next/sidebars.json
index f489771fa0..ebb387f81c 100644
--- a/microsite-next/sidebars.json
+++ b/microsite-next/sidebars.json
@@ -46,6 +46,7 @@
"getting-started/keeping-backstage-updated",
"getting-started/concepts",
"getting-started/contributors",
+ "getting-started/getting-involved",
"getting-started/project-structure"
],
"Local Development": [
diff --git a/microsite-next/src/pages/home/_home.tsx b/microsite-next/src/pages/home/_home.tsx
index 4ba5539348..ea22062d28 100644
--- a/microsite-next/src/pages/home/_home.tsx
+++ b/microsite-next/src/pages/home/_home.tsx
@@ -188,7 +188,7 @@ const HomePage = () => {
Learn more about the software catalog
READ
@@ -312,7 +312,7 @@ const HomePage = () => {
Learn more about TechDocs
DOCS
@@ -373,7 +373,7 @@ const HomePage = () => {
Learn more about Backstage Search
READ
diff --git a/microsite-next/src/pages/nominate/index.tsx b/microsite-next/src/pages/nominate/index.tsx
new file mode 100644
index 0000000000..58ff1dcef4
--- /dev/null
+++ b/microsite-next/src/pages/nominate/index.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+
+import nominateStyles from './nominate.module.scss';
+import Layout from '@theme/Layout';
+import clsx from 'clsx';
+import { BannerSection } from '@site/src/components/bannerSection/bannerSection';
+import { BannerSectionGrid } from '../../components/bannerSection/bannerSectionGrid';
+import { ContentBlock } from '@site/src/components/contentBlock/contentBlock';
+
+const Nominate = () => {
+ return (
+
+
+
+ Contributor Spotlight nomination}>
+
+
+
+
+
+ );
+};
+
+export default Nominate;
diff --git a/microsite-next/src/pages/nominate/nominate.module.scss b/microsite-next/src/pages/nominate/nominate.module.scss
new file mode 100644
index 0000000000..cdec103a8a
--- /dev/null
+++ b/microsite-next/src/pages/nominate/nominate.module.scss
@@ -0,0 +1,32 @@
+.nominatePage {
+ font-size: 1.25rem;
+
+ &,
+ & > section,
+ & > section > div {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ }
+
+ & > section > div > div {
+ flex: 1;
+ grid-template-rows: auto 1fr;
+ }
+
+ h1 {
+ font-size: 54px;
+ line-height: 56px;
+ word-break: break-word;
+ }
+
+ p {
+ text-align: justify;
+ }
+
+ iframe {
+ width: 100%;
+ height: 100%;
+ min-height: 400px;
+ }
+}
diff --git a/microsite-next/yarn.lock b/microsite-next/yarn.lock
index 517e3c2280..a9db81ead4 100644
--- a/microsite-next/yarn.lock
+++ b/microsite-next/yarn.lock
@@ -2623,90 +2623,90 @@ __metadata:
languageName: node
linkType: hard
-"@swc/core-darwin-arm64@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-darwin-arm64@npm:1.3.36"
+"@swc/core-darwin-arm64@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-darwin-arm64@npm:1.3.38"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-darwin-x64@npm:1.3.36"
+"@swc/core-darwin-x64@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-darwin-x64@npm:1.3.38"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.36"
+"@swc/core-linux-arm-gnueabihf@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.38"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-linux-arm64-gnu@npm:1.3.36"
+"@swc/core-linux-arm64-gnu@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.3.38"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-linux-arm64-musl@npm:1.3.36"
+"@swc/core-linux-arm64-musl@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-linux-arm64-musl@npm:1.3.38"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-linux-x64-gnu@npm:1.3.36"
+"@swc/core-linux-x64-gnu@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-linux-x64-gnu@npm:1.3.38"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-linux-x64-musl@npm:1.3.36"
+"@swc/core-linux-x64-musl@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-linux-x64-musl@npm:1.3.38"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-win32-arm64-msvc@npm:1.3.36"
+"@swc/core-win32-arm64-msvc@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.3.38"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-win32-ia32-msvc@npm:1.3.36"
+"@swc/core-win32-ia32-msvc@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.3.38"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.3.36":
- version: 1.3.36
- resolution: "@swc/core-win32-x64-msvc@npm:1.3.36"
+"@swc/core-win32-x64-msvc@npm:1.3.38":
+ version: 1.3.38
+ resolution: "@swc/core-win32-x64-msvc@npm:1.3.38"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.36":
- version: 1.3.36
- resolution: "@swc/core@npm:1.3.36"
+ version: 1.3.38
+ resolution: "@swc/core@npm:1.3.38"
dependencies:
- "@swc/core-darwin-arm64": 1.3.36
- "@swc/core-darwin-x64": 1.3.36
- "@swc/core-linux-arm-gnueabihf": 1.3.36
- "@swc/core-linux-arm64-gnu": 1.3.36
- "@swc/core-linux-arm64-musl": 1.3.36
- "@swc/core-linux-x64-gnu": 1.3.36
- "@swc/core-linux-x64-musl": 1.3.36
- "@swc/core-win32-arm64-msvc": 1.3.36
- "@swc/core-win32-ia32-msvc": 1.3.36
- "@swc/core-win32-x64-msvc": 1.3.36
+ "@swc/core-darwin-arm64": 1.3.38
+ "@swc/core-darwin-x64": 1.3.38
+ "@swc/core-linux-arm-gnueabihf": 1.3.38
+ "@swc/core-linux-arm64-gnu": 1.3.38
+ "@swc/core-linux-arm64-musl": 1.3.38
+ "@swc/core-linux-x64-gnu": 1.3.38
+ "@swc/core-linux-x64-musl": 1.3.38
+ "@swc/core-win32-arm64-msvc": 1.3.38
+ "@swc/core-win32-ia32-msvc": 1.3.38
+ "@swc/core-win32-x64-msvc": 1.3.38
dependenciesMeta:
"@swc/core-darwin-arm64":
optional: true
@@ -2728,7 +2728,7 @@ __metadata:
optional: true
"@swc/core-win32-x64-msvc":
optional: true
- checksum: 36e96e86d1ab8fd84eb51e7264a7ae781ee7e507d36b9ccc028d7f31a2ccf2949f074656e34139c970196774d24d55a54c3aa5c53d04eb6e3569c71cbfed0c0d
+ checksum: c55d30e57638bcd21f788add8490c3f3e71bfe027aa5a8b153e1b1b9686ecddd6deeaaa6a6b17717c7eab4c1e2a232b465b6755b6c891506fc0d03139badfbf7
languageName: node
linkType: hard
diff --git a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
index 6acefa571c..f9db71d3c4 100644
--- a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
+++ b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
@@ -69,7 +69,7 @@ New components, of course, get added automatically to the Backstage Service Cata
## Define your standards
-Backstage ships with four example templates, but since these are likely not the (only) ones you want to promote inside your company, the next step is to add [your own templates](https://backstage.io/docs/features/software-templates/software-templates-index). Using Backstage’s Software Templates feature, it’s easy to help your engineers get started building software with your organization’s best practices built-in.
+Backstage ships with four example templates, but since these are likely not the (only) ones you want to promote inside your company, the next step is to add [your own templates](https://backstage.io/docs/features/software-templates/). Using Backstage’s Software Templates feature, it’s easy to help your engineers get started building software with your organization’s best practices built-in.
We have learned that one of the keys to getting these standards adopted is to keep an open process. Templates are code. By making it clear to your engineers that you are open to pull requests, and that teams with different needs can add their own templates, you are on the path of striking a good balance between autonomy and standardization.
diff --git a/microsite/blog/2020-09-08-announcing-tech-docs.md b/microsite/blog/2020-09-08-announcing-tech-docs.md
index 578f03a54f..d83a9d0dbc 100644
--- a/microsite/blog/2020-09-08-announcing-tech-docs.md
+++ b/microsite/blog/2020-09-08-announcing-tech-docs.md
@@ -40,7 +40,7 @@ More specifically, with this first iteration, you can:
- Choose your own storage solution for the documentation.
- Define your own API to interface with your documentation solution.
-For a full overview, including getting started instructions, check out our [TechDocs Documentation](https://backstage.io/docs/features/techdocs/techdocs-overview).
+For a full overview, including getting started instructions, check out our [TechDocs Documentation](https://backstage.io/docs/features/techdocs/).
But before you go there, let me tell you a bit about the TechDocs story — and why we believe TechDocs is such a powerful yet simple solution for great documentation.
diff --git a/microsite/blog/2021-06-24-announcing-backstage-search-platform.md b/microsite/blog/2021-06-24-announcing-backstage-search-platform.md
index 118ac1f43c..d96b5153ad 100644
--- a/microsite/blog/2021-06-24-announcing-backstage-search-platform.md
+++ b/microsite/blog/2021-06-24-announcing-backstage-search-platform.md
@@ -97,6 +97,6 @@ Whichever situation you’re in, we have you covered.
We’ve built the foundation for the Backstage Search platform, and we can't wait to see the exciting engines, collators, and components the community builds on the platform.
-You can check out our [project roadmap](https://backstage.io/docs/features/search/search-overview#project-roadmap) in our search documentation or track the progress of our [Beta milestone](https://github.com/backstage/backstage/milestone/27) and [GA milestone](https://github.com/backstage/backstage/milestone/28).
+You can check out our [project roadmap](https://backstage.io/docs/features/search/#project-roadmap) in our search documentation or track the progress of our [Beta milestone](https://github.com/backstage/backstage/milestone/27) and [GA milestone](https://github.com/backstage/backstage/milestone/28).
For any questions, feedback or ideas about the Backstage Search platform, join us in the #search channel on [Discord](https://discord.gg/backstage-687207715902193673)!
diff --git a/microsite/blog/2022-03-17-backstage-1.0.md b/microsite/blog/2022-03-17-backstage-1.0.md
index 8cc627c127..5afbc3d1ee 100644
--- a/microsite/blog/2022-03-17-backstage-1.0.md
+++ b/microsite/blog/2022-03-17-backstage-1.0.md
@@ -25,11 +25,11 @@ To start, let’s define Backstage: it’s an open platform for building develop
Our definition of Backstage 1.0 includes:
- Backstage Core 1.0 libraries as the set of libraries to make the platform work
-- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) 1.0
-- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) 1.0
-- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) 1.0
+- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) 1.0
+- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) 1.0
+- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) 1.0
-Coming soon: [Backstage Search](https://backstage.io/docs/features/search/search-overview) 1.0 will be included in the near future as part of the regular releases to the Backstage platform.
+Coming soon: [Backstage Search](https://backstage.io/docs/features/search/) 1.0 will be included in the near future as part of the regular releases to the Backstage platform.
In terms of features, the maintainers will not be shipping new stuff as part of the major release but instead:
diff --git a/microsite/blog/2022-05-13-techdocs-addon-framework.md b/microsite/blog/2022-05-13-techdocs-addon-framework.md
index 7169d45d23..1c88989dd6 100644
--- a/microsite/blog/2022-05-13-techdocs-addon-framework.md
+++ b/microsite/blog/2022-05-13-techdocs-addon-framework.md
@@ -14,7 +14,7 @@ _TL;DR:_ Introducing the TechDocs Addon Framework — a way for us all to contri
-[TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) is a centralized platform for publishing, viewing, and discovering technical documentation across an entire organization. It's a solid foundation! But TechDocs doesn't solve higher order documentation needs on its own such as: How do you create and reinforce a culture of documentation? How do you build trust in the quality of technical documentation?
+[TechDocs](https://backstage.io/docs/features/techdocs/) is a centralized platform for publishing, viewing, and discovering technical documentation across an entire organization. It's a solid foundation! But TechDocs doesn't solve higher order documentation needs on its own such as: How do you create and reinforce a culture of documentation? How do you build trust in the quality of technical documentation?
To address this need, we’re proud to introduce the [TechDocs Addon Framework](https://github.com/backstage/backstage/issues/9636) — a way for us all to contribute and share additional features, TechDocs Addons, on top of the base docs-like-code experience. Using TechDocs Addons, you can customize the TechDocs experience to address some of these higher order needs.
diff --git a/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md
index d1bff97a53..4c63e21f21 100644
--- a/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md
+++ b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md
@@ -1,11 +1,11 @@
---
# prettier-ignore
-title: Releasing Backstage Search 1.0
+title: Releasing Backstage Search 1.0
author: Emma Indal, Spotify
authorURL: https://www.linkedin.com/in/emma-indal
---
-**TL;DR** If you’ve been waiting for Backstage Search to come out of beta, we’re excited to announce that [Backstage Search 1.0](https://backstage.io/docs/features/search/search-overview#backstage-search-10) is here!
+**TL;DR** If you’ve been waiting for Backstage Search to come out of beta, we’re excited to announce that [Backstage Search 1.0](https://backstage.io/docs/features/search/#backstage-search-10) is here!
We first released the Backstage Search Platform over a year ago. Backstage Search Platform is a search experience built for you, by you.
diff --git a/microsite/blog/2023-01-31-incremental-entity-provider.md b/microsite/blog/2023-01-31-incremental-entity-provider.md
index fd273af208..b878c66871 100644
--- a/microsite/blog/2023-01-31-incremental-entity-provider.md
+++ b/microsite/blog/2023-01-31-incremental-entity-provider.md
@@ -4,13 +4,13 @@ author: Paul Cowan & Taras Mankovski
authorURL: https://frontside.com/
---
-At the heart of [Backstage](https://backstage.io/) is the [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview), which is a data store that allows an organization to centralize and visualize its many software services and components. Backstage inspects and transforms an organization's disparate software services and parts into a centralized data store. This blog post introduces the concept of incremental entity providers, which allow Backstage to scale ingestion to even larger datasets.
+At the heart of [Backstage](https://backstage.io/) is the [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/), which is a data store that allows an organization to centralize and visualize its many software services and components. Backstage inspects and transforms an organization's disparate software services and parts into a centralized data store. This blog post introduces the concept of incremental entity providers, which allow Backstage to scale ingestion to even larger datasets.

-A common use case is for an organization to want to surface ownership and metadata about repositories. Backstage provides a mechanism for discovering and transforming repository information into a standard data structure and persisting it into the Backstage [Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview). This process is known as ingestion, where all data is transformed into a standard Backstage data structure known as an entity. Entities in the Catalog’s data store are accessible to the Backstage App via the REST API.
+A common use case is for an organization to want to surface ownership and metadata about repositories. Backstage provides a mechanism for discovering and transforming repository information into a standard data structure and persisting it into the Backstage [Catalog](https://backstage.io/docs/features/software-catalog/). This process is known as ingestion, where all data is transformed into a standard Backstage data structure known as an entity. Entities in the Catalog’s data store are accessible to the Backstage App via the REST API.
Data is transformed into entities via what is known as the ingestion and processing loop, which can be thought of as an [extract, transform and load (ETL) pipeline](https://en.wikipedia.org/wiki/Extract,_transform,_load), where raw data such as GitHub repositories are loaded from GitHub, transformed into entities and outputted to the Catalog.
diff --git a/microsite/data/plugins/catalog-backend-module-puppetdb.yaml b/microsite/data/plugins/catalog-backend-module-puppetdb.yaml
new file mode 100644
index 0000000000..3eac117e19
--- /dev/null
+++ b/microsite/data/plugins/catalog-backend-module-puppetdb.yaml
@@ -0,0 +1,13 @@
+---
+title: PuppetDB Entity Provider
+author: TDabasinskas
+authorUrl: https://github.com/tdabasinskas
+category: Configuration Management
+description: Import nodes from PuppetDB into Backstage as Resource Entities
+documentation: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-puppetdb/README.md
+iconUrl: https://avatars.githubusercontent.com/u/234268?s=200&v=4
+npmPackageName: '@backstage/plugin-catalog-backend-module-puppetdb'
+tags:
+ - puppet
+ - puppetdb
+addedDate: '2023-02-06'
diff --git a/microsite/data/plugins/harness-feature-flags.yaml b/microsite/data/plugins/harness-feature-flags.yaml
new file mode 100644
index 0000000000..ac085d901a
--- /dev/null
+++ b/microsite/data/plugins/harness-feature-flags.yaml
@@ -0,0 +1,12 @@
+---
+title: Harness Feature Flags
+author: harness.io
+authorUrl: https://github.com/harness/backstage-plugins
+category: Feature Flags
+description: This plugin lets you view Harness Feature Flags created in your project inside Backstage.
+documentation: https://github.com/harness/backstage-plugins/tree/main/plugins/harness-feature-flags
+iconUrl: https://static.harness.io/ng-static/images/favicon.png
+npmPackageName: '@harnessio/backstage-plugin-feature-flags'
+tags:
+ - feature-flags
+addedDate: '2023-03-01'
diff --git a/microsite/data/plugins/newrelic-dashboard.yaml b/microsite/data/plugins/newrelic-dashboard.yaml
index bbb1c4be7e..cd68a63165 100644
--- a/microsite/data/plugins/newrelic-dashboard.yaml
+++ b/microsite/data/plugins/newrelic-dashboard.yaml
@@ -5,7 +5,7 @@ authorUrl: https://github.com/mufaddal7
category: Monitoring
description: Easily view your New Relic Dashboards in Backstage, via real-time snapshots of your dashboards
documentation: https://github.com/backstage/backstage/tree/master/plugins/newrelic-dashboard
-iconUrl: https://newrelic.com/themes/custom/curio/assets/mediakit/NR_logo_Horizontal_Rev.svg
+iconUrl: https://newrelic.com/themes/custom/erno/assets/mediakit/new_relic_logo_vertical_white.svg
npmPackageName: '@backstage/plugin-newrelic-dashboard'
tags:
- performance
diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js
index 237161b98a..6e2e1c09ad 100644
--- a/microsite/pages/en/plugins.js
+++ b/microsite/pages/en/plugins.js
@@ -24,7 +24,7 @@ const truncate = text =>
const newForDays = 100;
const addPluginDocsLink = '/docs/plugins/add-to-marketplace';
-const defaultIconUrl = 'img/logo-gradient-on-dark.svg';
+const defaultIconUrl = '/img/logo-gradient-on-dark.svg';
const Plugins = () => (
diff --git a/microsite/static/img/octopus-deploy.svg b/microsite/static/img/octopus-deploy.svg
index a3f7927617..45d8447277 100644
--- a/microsite/static/img/octopus-deploy.svg
+++ b/microsite/static/img/octopus-deploy.svg
@@ -1 +1,13 @@
-
\ No newline at end of file
+
+
+
diff --git a/package.json b/package.json
index 9a60fb9d4a..43a146e0a1 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"@types/react": "^17",
"@types/react-dom": "^17"
},
- "version": "1.12.0-next.0",
+ "version": "1.12.0-next.2",
"dependencies": {
"@backstage/errors": "workspace:^",
"@manypkg/get-packages": "^1.1.3"
diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md
index fe9c1ac9ba..0b2b813d14 100644
--- a/packages/app-defaults/CHANGELOG.md
+++ b/packages/app-defaults/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/app-defaults
+## 1.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+
+## 1.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
## 1.2.1-next.0
### Patch Changes
diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json
index b9116c21ae..873a2fa28f 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.2.1-next.0",
+ "version": "1.2.1-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md
index 78633bc1d9..ac21cbad07 100644
--- a/packages/app/CHANGELOG.md
+++ b/packages/app/CHANGELOG.md
@@ -1,5 +1,138 @@
# example-app
+## 0.2.81-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-scaffolder-react@1.2.0-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-tech-insights@0.3.8-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/plugin-scaffolder@1.12.0-next.2
+ - @backstage/plugin-techdocs@1.6.0-next.2
+ - @backstage/plugin-explore@0.4.1-next.2
+ - @backstage/plugin-search@1.1.1-next.2
+ - @backstage/plugin-kubernetes@0.7.9-next.2
+ - @backstage/plugin-api-docs@0.9.1-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/plugin-org@0.6.6-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/plugin-airbrake@0.3.16-next.2
+ - @backstage/plugin-apache-airflow@0.2.9-next.2
+ - @backstage/plugin-azure-devops@0.2.7-next.2
+ - @backstage/plugin-azure-sites@0.1.5-next.2
+ - @backstage/plugin-badges@0.2.40-next.2
+ - @backstage/plugin-catalog-graph@0.2.28-next.2
+ - @backstage/plugin-catalog-import@0.9.6-next.2
+ - @backstage/plugin-circleci@0.3.16-next.2
+ - @backstage/plugin-cloudbuild@0.3.16-next.2
+ - @backstage/plugin-code-coverage@0.2.9-next.2
+ - @backstage/plugin-cost-insights@0.12.5-next.2
+ - @backstage/plugin-dynatrace@3.0.0-next.2
+ - @backstage/plugin-entity-feedback@0.1.1-next.2
+ - @backstage/plugin-gcalendar@0.3.12-next.2
+ - @backstage/plugin-gcp-projects@0.3.35-next.2
+ - @backstage/plugin-github-actions@0.5.16-next.2
+ - @backstage/plugin-gocd@0.1.22-next.2
+ - @backstage/plugin-graphiql@0.2.48-next.2
+ - @backstage/plugin-home@0.4.32-next.2
+ - @backstage/plugin-jenkins@0.7.15-next.2
+ - @backstage/plugin-kafka@0.3.16-next.2
+ - @backstage/plugin-lighthouse@0.4.1-next.2
+ - @backstage/plugin-linguist@0.1.1-next.2
+ - @backstage/plugin-microsoft-calendar@0.1.1-next.2
+ - @backstage/plugin-newrelic@0.3.34-next.2
+ - @backstage/plugin-newrelic-dashboard@0.2.9-next.2
+ - @backstage/plugin-pagerduty@0.5.9-next.2
+ - @backstage/plugin-playlist@0.1.7-next.2
+ - @backstage/plugin-rollbar@0.4.16-next.2
+ - @backstage/plugin-sentry@0.5.1-next.2
+ - @backstage/plugin-shortcuts@0.3.8-next.2
+ - @backstage/plugin-stack-overflow@0.1.12-next.2
+ - @backstage/plugin-stackstorm@0.1.0-next.2
+ - @backstage/plugin-tech-radar@0.6.2-next.2
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2
+ - @backstage/plugin-todo@0.2.18-next.2
+ - @backstage/plugin-user-settings@0.7.1-next.2
+ - @internal/plugin-catalog-customized@0.0.8-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.81-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/plugin-scaffolder@1.12.0-next.1
+ - @backstage/plugin-scaffolder-react@1.2.0-next.1
+ - @backstage/plugin-techdocs@1.6.0-next.1
+ - @backstage/plugin-tech-radar@0.6.2-next.1
+ - @backstage/plugin-microsoft-calendar@0.1.1-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.9-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-code-coverage@0.2.9-next.1
+ - @backstage/plugin-azure-sites@0.1.5-next.1
+ - @backstage/plugin-gcalendar@0.3.12-next.1
+ - @backstage/plugin-shortcuts@0.3.8-next.1
+ - @backstage/plugin-explore@0.4.1-next.1
+ - @backstage/plugin-org@0.6.6-next.1
+ - @backstage/plugin-kubernetes@0.7.9-next.1
+ - @backstage/plugin-circleci@0.3.16-next.1
+ - @backstage/plugin-playlist@0.1.7-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/plugin-airbrake@0.3.16-next.1
+ - @backstage/plugin-apache-airflow@0.2.9-next.1
+ - @backstage/plugin-api-docs@0.9.1-next.1
+ - @backstage/plugin-azure-devops@0.2.7-next.1
+ - @backstage/plugin-badges@0.2.40-next.1
+ - @backstage/plugin-catalog-import@0.9.6-next.1
+ - @backstage/plugin-cloudbuild@0.3.16-next.1
+ - @backstage/plugin-cost-insights@0.12.5-next.1
+ - @backstage/plugin-dynatrace@3.0.0-next.1
+ - @backstage/plugin-entity-feedback@0.1.1-next.1
+ - @backstage/plugin-gcp-projects@0.3.35-next.1
+ - @backstage/plugin-github-actions@0.5.16-next.1
+ - @backstage/plugin-gocd@0.1.22-next.1
+ - @backstage/plugin-graphiql@0.2.48-next.1
+ - @backstage/plugin-home@0.4.32-next.1
+ - @backstage/plugin-jenkins@0.7.15-next.1
+ - @backstage/plugin-kafka@0.3.16-next.1
+ - @backstage/plugin-lighthouse@0.4.1-next.1
+ - @backstage/plugin-linguist@0.1.1-next.1
+ - @backstage/plugin-newrelic@0.3.34-next.1
+ - @backstage/plugin-pagerduty@0.5.9-next.1
+ - @backstage/plugin-rollbar@0.4.16-next.1
+ - @backstage/plugin-search@1.1.1-next.1
+ - @backstage/plugin-sentry@0.5.1-next.1
+ - @backstage/plugin-stack-overflow@0.1.12-next.1
+ - @backstage/plugin-stackstorm@0.1.0-next.1
+ - @backstage/plugin-tech-insights@0.3.8-next.1
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.1
+ - @backstage/plugin-todo@0.2.18-next.1
+ - @backstage/plugin-user-settings@0.7.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-graph@0.2.28-next.1
+ - @backstage/plugin-linguist-common@0.1.0
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+ - @internal/plugin-catalog-customized@0.0.8-next.1
+
## 0.2.81-next.0
### Patch Changes
diff --git a/packages/app/package.json b/packages/app/package.json
index 7aba203895..c51f8be911 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,6 +1,6 @@
{
"name": "example-app",
- "version": "0.2.81-next.0",
+ "version": "0.2.81-next.2",
"private": true,
"backstage": {
"role": "frontend"
diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md
index af7828daac..6ea78e983f 100644
--- a/packages/backend-app-api/CHANGELOG.md
+++ b/packages/backend-app-api/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/backend-app-api
+## 0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- 915e46622cf: Add support for `NotImplementedError`, properly returning 501 as status code.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.4.1-next.0
### Patch Changes
diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json
index 099466aef7..f59e39ef09 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.4.1-next.0",
+ "version": "0.4.1-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 dc07ac0614..06968a3c8a 100644
--- a/packages/backend-common/CHANGELOG.md
+++ b/packages/backend-common/CHANGELOG.md
@@ -1,5 +1,50 @@
# @backstage/backend-common
+## 0.18.3-next.2
+
+### Patch Changes
+
+- f75097868a7: Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres
+
+ The example config below connects to the database as user `v-backstage-123` but sets the ownership of
+ the create schemas and tables to `backstage`
+
+ ```yaml
+ backend:
+ database:
+ client: pg
+ pluginDivisionMode: schema
+ role: backstage
+ connection:
+ user: v-backstage-123
+ ...
+ ```
+
+- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3
+- Updated dependencies
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/integration-aws-node@0.1.2-next.0
+
+## 0.18.3-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-dev-utils@0.1.1-next.0
+ - @backstage/backend-app-api@0.4.1-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.18.3-next.0
### Patch Changes
diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md
index 1cde27877b..ebdd7315c9 100644
--- a/packages/backend-common/api-report.md
+++ b/packages/backend-common/api-report.md
@@ -6,7 +6,7 @@
///
///
-import aws from 'aws-sdk';
+import { AwsCredentialsManager } from '@backstage/integration-aws-node';
import { AwsS3Integration } from '@backstage/integration';
import { AzureIntegration } from '@backstage/integration';
import { BackendFeature } from '@backstage/backend-plugin-api';
@@ -67,9 +67,9 @@ import { Writable } from 'stream';
// @public
export class AwsS3UrlReader implements UrlReader {
constructor(
+ credsManager: AwsCredentialsManager,
integration: AwsS3Integration,
deps: {
- s3: aws.S3;
treeResponseFactory: ReadTreeResponseFactory;
},
);
diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts
index 6c473af3c0..8dd2c2db84 100644
--- a/packages/backend-common/config.d.ts
+++ b/packages/backend-common/config.d.ts
@@ -96,6 +96,8 @@ export interface Config {
* @default database
*/
pluginDivisionMode?: 'database' | 'schema';
+ /** Configures the ownership of newly created schemas in pg databases. */
+ role?: string;
/**
* Arbitrary config object to pass to knex when initializing
* (https://knexjs.org/#Installation-client). Most notable is the debug
@@ -125,6 +127,8 @@ export interface Config {
* This is merged recursively into the base knexConfig
*/
knexConfig?: object;
+ /** Configures the ownership of newly created schemas in pg databases. */
+ role?: string;
};
};
};
diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json
index 28c11e39e0..beee72c860 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.18.3-next.0",
+ "version": "0.18.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
@@ -46,6 +46,10 @@
"test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch"
},
"dependencies": {
+ "@aws-sdk/abort-controller": "^3.208.0",
+ "@aws-sdk/client-s3": "^3.208.0",
+ "@aws-sdk/credential-providers": "^3.208.0",
+ "@aws-sdk/types": "^3.208.0",
"@backstage/backend-app-api": "workspace:^",
"@backstage/backend-dev-utils": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
@@ -54,6 +58,7 @@
"@backstage/config-loader": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
+ "@backstage/integration-aws-node": "workspace:^",
"@backstage/types": "workspace:^",
"@google-cloud/storage": "^6.0.0",
"@keyv/memcache": "^1.3.5",
@@ -67,7 +72,6 @@
"@types/luxon": "^3.0.0",
"@types/webpack-env": "^1.15.2",
"archiver": "^5.0.2",
- "aws-sdk": "^2.840.0",
"base64-stream": "^1.0.0",
"compression": "^1.7.4",
"concat-stream": "^2.0.0",
@@ -90,6 +94,7 @@
"morgan": "^1.10.0",
"node-fetch": "^2.6.7",
"node-forge": "^1.3.1",
+ "pg": "^8.3.0",
"raw-body": "^2.4.1",
"request": "^2.88.2",
"selfsigned": "^2.0.0",
@@ -110,6 +115,7 @@
}
},
"devDependencies": {
+ "@aws-sdk/util-stream-node": "^3.208.0",
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/archiver": "^5.1.0",
@@ -122,12 +128,14 @@
"@types/mock-fs": "^4.13.0",
"@types/morgan": "^1.9.0",
"@types/node-forge": "^1.3.0",
+ "@types/pg": "^8.6.6",
"@types/recursive-readdir": "^2.2.0",
"@types/stoppable": "^1.1.0",
"@types/supertest": "^2.0.8",
"@types/tar": "^6.1.1",
"@types/webpack-env": "^1.15.2",
"@types/yauzl": "^2.10.0",
+ "aws-sdk-client-mock": "^2.0.0",
"aws-sdk-mock": "^5.2.1",
"better-sqlite3": "^8.0.0",
"http-errors": "^2.0.0",
diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts
index 95511d5aba..336e5d499c 100644
--- a/packages/backend-common/src/database/DatabaseManager.test.ts
+++ b/packages/backend-common/src/database/DatabaseManager.test.ts
@@ -687,5 +687,59 @@ describe('DatabaseManager', () => {
}),
);
});
+
+ it('sets the owner config for plugin using default config', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'pg',
+ connection: {
+ host: 'localhost',
+ database: 'foodb',
+ },
+ role: 'backstage',
+ plugin: {
+ testowner: {},
+ },
+ },
+ },
+ }),
+ );
+ await testManager.forPlugin('testowner').getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig] = mockCalls[0];
+
+ expect(baseConfig.data.role).toEqual('backstage');
+ });
+
+ it('sets the owner config for plugin using plugin config', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'pg',
+ connection: {
+ host: 'localhost',
+ database: 'foodb',
+ },
+ role: 'backstage',
+ plugin: {
+ testowner: {
+ role: 'backstage-plugin',
+ },
+ },
+ },
+ },
+ }),
+ );
+ await testManager.forPlugin('testowner').getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig] = mockCalls[0];
+
+ expect(baseConfig.data.role).toEqual('backstage-plugin');
+ });
});
});
diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts
index 08979a92f8..02f2c6b172 100644
--- a/packages/backend-common/src/database/DatabaseManager.ts
+++ b/packages/backend-common/src/database/DatabaseManager.ts
@@ -186,6 +186,13 @@ export class DatabaseManager {
};
}
+ private getRoleConfig(pluginId: string): string | undefined {
+ return (
+ this.config.getOptionalString(`${pluginPath(pluginId)}.role`) ??
+ this.config.getOptionalString('role')
+ );
+ }
+
/**
* Provides the knexConfig which should be used for a given plugin.
*
@@ -278,11 +285,13 @@ export class DatabaseManager {
*/
private getConfigForPlugin(pluginId: string): Knex.Config {
const { client } = this.getClientType(pluginId);
+ const role = this.getRoleConfig(pluginId);
return {
...this.getAdditionalKnexConfig(pluginId),
client,
connection: this.getConnectionConfig(pluginId),
+ ...(role && { role }),
};
}
diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts
index c780fb829b..afc8c207be 100644
--- a/packages/backend-common/src/database/connectors/postgres.ts
+++ b/packages/backend-common/src/database/connectors/postgres.ts
@@ -22,6 +22,7 @@ import { mergeDatabaseConfig } from '../config';
import { DatabaseConnector } from '../types';
import defaultNameOverride from './defaultNameOverride';
import defaultSchemaOverride from './defaultSchemaOverride';
+import { Client } from 'pg';
/**
* Creates a knex postgres database connection
@@ -35,6 +36,17 @@ export function createPgDatabaseClient(
) {
const knexConfig = buildPgDatabaseConfig(dbConfig, overrides);
const database = knexFactory(knexConfig);
+
+ const role = dbConfig.getOptionalString('role');
+
+ if (role) {
+ database.client.pool.on(
+ 'createSuccess',
+ async (_event: number, pgClient: Client) => {
+ await pgClient.query(`SET ROLE ${role}`);
+ },
+ );
+ }
return database;
}
@@ -147,10 +159,18 @@ export async function ensurePgSchemaExists(
...schemas: Array
): Promise {
const admin = createPgDatabaseClient(dbConfig);
+ const role = dbConfig.getOptionalString('role');
try {
const ensureSchema = async (database: string) => {
- await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]);
+ if (role) {
+ await admin.raw(`CREATE SCHEMA IF NOT EXISTS ?? AUTHORIZATION ??`, [
+ database,
+ role,
+ ]);
+ } else {
+ await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]);
+ }
};
await Promise.all(schemas.map(ensureSchema));
diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts
index dd4cd23de4..0bd4d2636f 100644
--- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts
+++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts
@@ -18,19 +18,25 @@ import { ConfigReader } from '@backstage/config';
import { JsonObject } from '@backstage/types';
import { getVoidLogger } from '../logging';
import { DefaultReadTreeResponseFactory } from './tree';
-import { rest } from 'msw';
-import { setupServer } from 'msw/node';
-import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
-import { AwsS3UrlReader, parseUrl } from './AwsS3UrlReader';
+import { DEFAULT_REGION, AwsS3UrlReader, parseUrl } from './AwsS3UrlReader';
import {
AwsS3Integration,
readAwsS3IntegrationConfig,
} from '@backstage/integration';
+import { DefaultAwsCredentialsManager } from '@backstage/integration-aws-node';
import { UrlReaderPredicateTuple } from './types';
-import AWSMock from 'aws-sdk-mock';
-import aws from 'aws-sdk';
import path from 'path';
import { NotModifiedError } from '@backstage/errors';
+import { mockClient } from 'aws-sdk-client-mock';
+import {
+ S3Client,
+ ListObjectsV2Command,
+ ListObjectsV2Output,
+ GetObjectCommand,
+ S3ServiceException,
+} from '@aws-sdk/client-s3';
+import { sdkStreamMixin } from '@aws-sdk/util-stream-node';
+import fs from 'fs';
const treeResponseFactory = DefaultReadTreeResponseFactory.create({
config: new ConfigReader({}),
@@ -97,7 +103,7 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
- region: '',
+ region: DEFAULT_REGION,
});
expect(
parseUrl('https://my.bucket-3.my-host.com/a/puppy.jpg', {
@@ -106,7 +112,7 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
- region: '',
+ region: DEFAULT_REGION,
});
expect(
parseUrl('https://ignored.my-host.com/my.bucket-3/a/puppy.jpg', {
@@ -116,14 +122,13 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
- region: '',
+ region: DEFAULT_REGION,
});
});
});
describe('AwsS3UrlReader', () => {
- const worker = setupServer();
- setupRequestMockHandlers(worker);
+ const s3Client = mockClient(S3Client);
const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => {
return AwsS3UrlReader.factory({
@@ -232,17 +237,19 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
- worker.use(
- rest.get(
- 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
- (_, res, ctx) =>
- res(
- ctx.status(200),
- ctx.set('ETag', '123abc'),
- ctx.body('site_name: Test'),
+ s3Client.reset();
+
+ s3Client.on(GetObjectCommand).resolves({
+ Body: sdkStreamMixin(
+ fs.createReadStream(
+ path.resolve(
+ __dirname,
+ '__fixtures__/awsS3/awsS3-mock-object.yaml',
),
+ ),
),
- );
+ ETag: '123abc',
+ });
});
it('returns contents of an object in a bucket', async () => {
@@ -258,10 +265,8 @@ describe('AwsS3UrlReader', () => {
reader.readUrl(
'https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml',
),
- ).rejects.toThrow(
- Error(
- `Could not retrieve file from S3; caused by Error: Invalid AWS S3 URL https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml`,
- ),
+ ).rejects.toMatchInlineSnapshot(
+ `[Error: Could not retrieve file from S3; caused by Error: Invalid AWS S3 URL https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml]`,
);
});
});
@@ -280,17 +285,19 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
- worker.use(
- rest.get(
- 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
- (_, res, ctx) =>
- res(
- ctx.status(200),
- ctx.set('ETag', '123abc'),
- ctx.body('site_name: Test'),
+ s3Client.reset();
+
+ s3Client.on(GetObjectCommand).resolves({
+ Body: sdkStreamMixin(
+ fs.createReadStream(
+ path.resolve(
+ __dirname,
+ '__fixtures__/awsS3/awsS3-mock-object.yaml',
),
+ ),
),
- );
+ ETag: '123abc',
+ });
});
it('returns contents of an object in a bucket via buffer', async () => {
@@ -316,10 +323,8 @@ describe('AwsS3UrlReader', () => {
reader.readUrl!(
'https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml',
),
- ).rejects.toThrow(
- Error(
- `Could not retrieve file from S3; caused by Error: Invalid AWS S3 URL https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml`,
- ),
+ ).rejects.toMatchInlineSnapshot(
+ `[Error: Could not retrieve file from S3; caused by Error: Invalid AWS S3 URL https://test-bucket.s3.us-east-2.NOTamazonaws.com/file.yaml]`,
);
});
});
@@ -340,17 +345,17 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
- worker.use(
- rest.get(
- 'http://localhost:4566/test-bucket/awsS3-mock-object.yaml',
- (_, res, ctx) =>
- res(
- ctx.status(200),
- ctx.set('ETag', '123abc'),
- ctx.body('site_name: Test'),
+ s3Client.on(GetObjectCommand).resolves({
+ Body: sdkStreamMixin(
+ fs.createReadStream(
+ path.resolve(
+ __dirname,
+ '__fixtures__/awsS3/awsS3-mock-object.yaml',
),
+ ),
),
- );
+ ETag: '123abc',
+ });
});
it('returns contents of an object in a bucket via buffer', async () => {
@@ -377,12 +382,13 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
- worker.use(
- rest.get(
- 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
- (_, res, ctx) => res(ctx.status(304)),
- ),
- );
+ s3Client.reset();
+ const t = new S3ServiceException({
+ name: '304',
+ $fault: 'client',
+ $metadata: { httpStatusCode: 304 },
+ });
+ s3Client.on(GetObjectCommand).rejects(t);
});
it('returns contents of an object in a bucket', async () => {
@@ -400,44 +406,43 @@ describe('AwsS3UrlReader', () => {
describe('readTree', () => {
let awsS3UrlReader: AwsS3UrlReader;
- beforeAll(() => {
- const object: aws.S3.Types.Object = {
+ beforeEach(() => {
+ s3Client.reset();
+
+ const object: Object = {
Key: 'awsS3-mock-object.yaml',
};
- const objectList: aws.S3.ObjectList = [object];
- const output: aws.S3.Types.ListObjectsV2Output = {
+ const objectList: Object[] = [object];
+ const output: ListObjectsV2Output = {
Contents: objectList,
};
- AWSMock.setSDKInstance(aws);
- AWSMock.mock('S3', 'listObjectsV2', output);
+ s3Client.on(ListObjectsV2Command).resolves(output);
- AWSMock.mock(
- 'S3',
- 'getObject',
- Buffer.from(
- require('fs').readFileSync(
+ s3Client.on(GetObjectCommand).resolves({
+ Body: sdkStreamMixin(
+ fs.createReadStream(
path.resolve(
__dirname,
'__fixtures__/awsS3/awsS3-mock-object.yaml',
),
),
),
- );
+ });
+
+ const config = new ConfigReader({
+ host: '.amazonaws.com',
+ accessKeyId: 'fake-access-key',
+ secretAccessKey: 'fake-secret-key',
+ });
+
+ const credsManager = DefaultAwsCredentialsManager.fromConfig(config);
- const s3 = new aws.S3();
awsS3UrlReader = new AwsS3UrlReader(
- new AwsS3Integration(
- readAwsS3IntegrationConfig(
- new ConfigReader({
- host: '.amazonaws.com',
- accessKeyId: 'fake-access-key',
- secretAccessKey: 'fake-secret-key',
- }),
- ),
- ),
- { s3, treeResponseFactory },
+ credsManager,
+ new AwsS3Integration(readAwsS3IntegrationConfig(config)),
+ { treeResponseFactory },
);
});
diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts
index dd7a3da3d4..d06e2d0ad6 100644
--- a/packages/backend-common/src/reading/AwsS3UrlReader.ts
+++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts
@@ -14,10 +14,6 @@
* limitations under the License.
*/
-// note: We do the import like this so that we don't get issues destructuring
-// and it not being mocked by the aws-sdk-mock package which is unfortunate.
-import aws from 'aws-sdk';
-import { CredentialsOptions } from 'aws-sdk/lib/credentials';
import {
ReaderFactory,
ReadTreeOptions,
@@ -28,16 +24,29 @@ import {
SearchResponse,
UrlReader,
} from './types';
+import {
+ AwsCredentialsManager,
+ DefaultAwsCredentialsManager,
+} from '@backstage/integration-aws-node';
import {
AwsS3Integration,
ScmIntegrations,
AwsS3IntegrationConfig,
} from '@backstage/integration';
import { ForwardedError, NotModifiedError } from '@backstage/errors';
-import { ListObjectsV2Output, ObjectList } from 'aws-sdk/clients/s3';
+import { fromTemporaryCredentials } from '@aws-sdk/credential-providers';
+import { AwsCredentialIdentityProvider } from '@aws-sdk/types';
+import {
+ S3Client,
+ ListObjectsV2Command,
+ ListObjectsV2CommandOutput,
+ GetObjectCommand,
+} from '@aws-sdk/client-s3';
+import { AbortController } from '@aws-sdk/abort-controller';
import { ReadUrlResponseFactory } from './ReadUrlResponseFactory';
+import { Readable } from 'stream';
-const DEFAULT_REGION = 'us-east-1';
+export const DEFAULT_REGION = 'us-east-1';
/**
* Path style URLs: https://s3.(region).amazonaws.com/(bucket)/(key)
@@ -105,14 +114,14 @@ export function parseUrl(
return {
path: pathname.substring(slashIndex + 1),
bucket: pathname.substring(0, slashIndex),
- region: '',
+ region: DEFAULT_REGION,
};
}
return {
path: pathname,
bucket: host.substring(0, host.length - config.host.length - 1),
- region: '',
+ region: DEFAULT_REGION,
};
}
@@ -124,18 +133,10 @@ export function parseUrl(
export class AwsS3UrlReader implements UrlReader {
static factory: ReaderFactory = ({ config, treeResponseFactory }) => {
const integrations = ScmIntegrations.fromConfig(config);
+ const credsManager = DefaultAwsCredentialsManager.fromConfig(config);
return integrations.awsS3.list().map(integration => {
- const credentials = AwsS3UrlReader.buildCredentials(integration);
-
- const s3 = new aws.S3({
- apiVersion: '2006-03-01',
- credentials,
- endpoint: integration.config.endpoint,
- s3ForcePathStyle: integration.config.s3ForcePathStyle,
- });
- const reader = new AwsS3UrlReader(integration, {
- s3,
+ const reader = new AwsS3UrlReader(credsManager, integration, {
treeResponseFactory,
});
const predicate = (url: URL) =>
@@ -145,9 +146,9 @@ export class AwsS3UrlReader implements UrlReader {
};
constructor(
+ private readonly credsManager: AwsCredentialsManager,
private readonly integration: AwsS3Integration,
private readonly deps: {
- s3: aws.S3;
treeResponseFactory: ReadTreeResponseFactory;
},
) {}
@@ -156,39 +157,93 @@ export class AwsS3UrlReader implements UrlReader {
* If accessKeyId and secretAccessKey are missing, the standard credentials provider chain will be used:
* https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html
*/
- private static buildCredentials(
+ private static buildStaticCredentials(
+ accessKeyId: string,
+ secretAccessKey: string,
+ ): AwsCredentialIdentityProvider {
+ return async () => {
+ return {
+ accessKeyId,
+ secretAccessKey,
+ };
+ };
+ }
+
+ private static async buildCredentials(
+ credsManager: AwsCredentialsManager,
+ region: string,
integration?: AwsS3Integration,
- ): aws.Credentials | CredentialsOptions | undefined {
+ ): Promise {
+ // Fall back to the default credential chain if neither account ID
+ // nor explicit credentials are provided
if (!integration) {
- return undefined;
+ return (await credsManager.getCredentialProvider()).sdkCredentialProvider;
}
const accessKeyId = integration.config.accessKeyId;
const secretAccessKey = integration.config.secretAccessKey;
- let explicitCredentials: aws.Credentials | undefined;
-
+ let explicitCredentials: AwsCredentialIdentityProvider;
if (accessKeyId && secretAccessKey) {
- explicitCredentials = new aws.Credentials({
+ explicitCredentials = AwsS3UrlReader.buildStaticCredentials(
accessKeyId,
secretAccessKey,
- });
+ );
+ } else {
+ explicitCredentials = (await credsManager.getCredentialProvider())
+ .sdkCredentialProvider;
}
const roleArn = integration.config.roleArn;
if (roleArn) {
- return new aws.ChainableTemporaryCredentials({
+ return fromTemporaryCredentials({
masterCredentials: explicitCredentials,
params: {
RoleSessionName: 'backstage-aws-s3-url-reader',
RoleArn: roleArn,
ExternalId: integration.config.externalId,
},
+ clientConfig: { region },
});
}
return explicitCredentials;
}
+ private async buildS3Client(
+ credsManager: AwsCredentialsManager,
+ region: string,
+ integration: AwsS3Integration,
+ ): Promise {
+ const credentials = await AwsS3UrlReader.buildCredentials(
+ credsManager,
+ region,
+ integration,
+ );
+
+ const s3 = new S3Client({
+ region: region,
+ credentials: credentials,
+ endpoint: integration.config.endpoint,
+ forcePathStyle: integration.config.s3ForcePathStyle,
+ });
+ return s3;
+ }
+
+ private async retrieveS3ObjectData(stream: Readable): Promise {
+ return new Promise((resolve, reject) => {
+ try {
+ const chunks: any[] = [];
+ stream.on('data', chunk => chunks.push(chunk));
+ stream.on('error', (e: Error) =>
+ reject(new ForwardedError('Unable to read stream', e)),
+ );
+ stream.on('end', () => resolve(Readable.from(Buffer.concat(chunks))));
+ } catch (e) {
+ throw new ForwardedError('Unable to parse the response data', e);
+ }
+ });
+ }
+
async read(url: string): Promise {
const response = await this.readUrl(url);
return response.buffer();
@@ -200,7 +255,12 @@ export class AwsS3UrlReader implements UrlReader {
): Promise {
try {
const { path, bucket, region } = parseUrl(url, this.integration.config);
- aws.config.update({ region: region });
+ const s3Client = await this.buildS3Client(
+ this.credsManager,
+ region,
+ this.integration,
+ );
+ const abortController = new AbortController();
let params;
if (options?.etag) {
@@ -215,44 +275,22 @@ export class AwsS3UrlReader implements UrlReader {
Key: path,
};
}
-
- const request = this.deps.s3.getObject(params);
- options?.signal?.addEventListener('abort', () => request.abort());
-
- // Since we're consuming the read stream we need to consume headers and errors via events.
- const etagPromise = new Promise((resolve, reject) => {
- request.on('httpHeaders', (status, headers) => {
- if (status < 400) {
- if (status === 200) {
- resolve(headers.etag);
- } else if (status !== 304 /* not modified */) {
- reject(
- new Error(
- `S3 readUrl request received unexpected status '${status}' in response`,
- ),
- );
- }
- }
- });
- request.on('error', error => reject(error));
- request.on('complete', () =>
- reject(
- new Error('S3 readUrl request completed without receiving headers'),
- ),
- );
+ options?.signal?.addEventListener('abort', () => abortController.abort());
+ const getObjectCommand = new GetObjectCommand(params);
+ const response = await s3Client.send(getObjectCommand, {
+ abortSignal: abortController.signal,
});
- const stream = request.createReadStream();
- stream.on('error', () => {
- // The AWS SDK forwards request errors to the stream, so we need to
- // ignore those errors here or the process will crash.
- });
+ const s3ObjectData = await this.retrieveS3ObjectData(
+ response.Body as Readable,
+ );
+ const etag = response.ETag;
- return ReadUrlResponseFactory.fromReadable(stream, {
- etag: await etagPromise,
+ return ReadUrlResponseFactory.fromReadable(s3ObjectData, {
+ etag: etag,
});
} catch (e) {
- if (e.statusCode === 304) {
+ if (e.$metadata && e.$metadata.httpStatusCode === 304) {
throw new NotModifiedError();
}
@@ -266,35 +304,49 @@ export class AwsS3UrlReader implements UrlReader {
): Promise {
try {
const { path, bucket, region } = parseUrl(url, this.integration.config);
- const allObjects: ObjectList = [];
+ const s3Client = await this.buildS3Client(
+ this.credsManager,
+ region,
+ this.integration,
+ );
+ const abortController = new AbortController();
+ const allObjects: String[] = [];
const responses = [];
let continuationToken: string | undefined;
- let output: ListObjectsV2Output;
+ let output: ListObjectsV2CommandOutput;
do {
- aws.config.update({ region: region });
- const request = this.deps.s3.listObjectsV2({
+ const listObjectsV2Command = new ListObjectsV2Command({
Bucket: bucket,
ContinuationToken: continuationToken,
Prefix: path,
});
- options?.signal?.addEventListener('abort', () => request.abort());
- output = await request.promise();
+ options?.signal?.addEventListener('abort', () =>
+ abortController.abort(),
+ );
+ output = await s3Client.send(listObjectsV2Command, {
+ abortSignal: abortController.signal,
+ });
if (output.Contents) {
output.Contents.forEach(contents => {
- allObjects.push(contents);
+ allObjects.push(contents.Key!);
});
}
continuationToken = output.NextContinuationToken;
} while (continuationToken);
for (let i = 0; i < allObjects.length; i++) {
- const object = this.deps.s3.getObject({
+ const getObjectCommand = new GetObjectCommand({
Bucket: bucket,
- Key: String(allObjects[i].Key),
+ Key: String(allObjects[i]),
});
+ const response = await s3Client.send(getObjectCommand);
+ const s3ObjectData = await this.retrieveS3ObjectData(
+ response.Body as Readable,
+ );
+
responses.push({
- data: object.createReadStream(),
- path: String(allObjects[i].Key),
+ data: s3ObjectData,
+ path: String(allObjects[i]),
});
}
diff --git a/packages/backend-common/src/tokens/ServerTokenManager.ts b/packages/backend-common/src/tokens/ServerTokenManager.ts
index a603e37635..cec6ff068f 100644
--- a/packages/backend-common/src/tokens/ServerTokenManager.ts
+++ b/packages/backend-common/src/tokens/ServerTokenManager.ts
@@ -53,7 +53,7 @@ export interface ServerTokenManagerOptions {
}
/**
- * Creates and validates tokens for use during backend-to-backend
+ * Creates and validates tokens for use during service-to-service
* authentication.
*
* @public
@@ -90,7 +90,7 @@ export class ServerTokenManager implements TokenManager {
// For development, if a secret has not been configured, we auto generate a secret instead of throwing.
options.logger.warn(
- 'Generated a secret for backend-to-backend authentication: DEVELOPMENT USE ONLY.',
+ 'Generated a secret for service-to-service authentication: DEVELOPMENT USE ONLY.',
);
return new ServerTokenManager([], options);
}
diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md
index e56a19d04a..7283ae89e2 100644
--- a/packages/backend-defaults/CHANGELOG.md
+++ b/packages/backend-defaults/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/backend-defaults
+## 0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## 0.1.8-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- 5d0693edc09: Added a workaround for the cyclic dependency bug across `@backstage/backend-common` and `@backstage/backend-app-api`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-app-api@0.4.1-next.1
+
## 0.1.8-next.0
### Patch Changes
diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json
index b5f6018d64..2ae0074849 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.1.8-next.0",
+ "version": "0.1.8-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 44238676af..84a1cbc3f1 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.1-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
## 0.1.0
### Minor Changes
diff --git a/packages/backend-dev-utils/package.json b/packages/backend-dev-utils/package.json
index cb1654d499..9fea6a34cf 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.0",
+ "version": "0.1.1-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md
index 2c40502783..91ded2391f 100644
--- a/packages/backend-next/CHANGELOG.md
+++ b/packages/backend-next/CHANGELOG.md
@@ -1,5 +1,27 @@
# example-backend-next
+## 0.0.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-defaults@0.1.8-next.2
+ - @backstage/plugin-app-backend@0.3.43-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-todo-backend@0.1.40-next.2
+
+## 0.0.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/plugin-app-backend@0.3.43-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-todo-backend@0.1.40-next.1
+ - @backstage/backend-defaults@0.1.8-next.1
+
## 0.0.9-next.0
### Patch Changes
diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json
index 21ba3550b4..9f7ec8306a 100644
--- a/packages/backend-next/package.json
+++ b/packages/backend-next/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend-next",
- "version": "0.0.9-next.0",
+ "version": "0.0.9-next.2",
"main": "dist/index.cjs.js",
"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 4dc19db6fc..5125411eb6 100644
--- a/packages/backend-plugin-api/CHANGELOG.md
+++ b/packages/backend-plugin-api/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/backend-plugin-api
+## 0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.4.1-next.0
### Patch Changes
diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json
index 06acbce628..4d97fdcd74 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.4.1-next.0",
+ "version": "0.4.1-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 e70ff6146d..7eb43c4677 100644
--- a/packages/backend-tasks/CHANGELOG.md
+++ b/packages/backend-tasks/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/backend-tasks
+## 0.5.0-next.2
+
+### Minor Changes
+
+- 1578276708a: add functionality to get descriptions from the scheduler for triggering
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.4-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.4.4-next.0
### Patch Changes
diff --git a/packages/backend-tasks/api-report.md b/packages/backend-tasks/api-report.md
index 44ec4addbe..1d978068b3 100644
--- a/packages/backend-tasks/api-report.md
+++ b/packages/backend-tasks/api-report.md
@@ -7,6 +7,7 @@ import { Config } from '@backstage/config';
import { DatabaseManager } from '@backstage/backend-common';
import { Duration } from 'luxon';
import { HumanDuration as HumanDuration_2 } from '@backstage/types';
+import { JsonObject } from '@backstage/types';
import { Logger } from 'winston';
import { PluginDatabaseManager } from '@backstage/backend-common';
@@ -16,6 +17,7 @@ export type HumanDuration = HumanDuration_2;
// @public
export interface PluginTaskScheduler {
createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner;
+ getScheduledTasks(): Promise;
scheduleTask(
task: TaskScheduleDefinition & TaskInvocationDefinition,
): Promise;
@@ -27,6 +29,15 @@ export function readTaskScheduleDefinitionFromConfig(
config: Config,
): TaskScheduleDefinition;
+// @public
+export type TaskDescriptor = {
+ id: string;
+ scope: 'global' | 'local';
+ settings: {
+ version: number;
+ } & JsonObject;
+};
+
// @public
export type TaskFunction =
| ((abortSignal: AbortSignal) => void | Promise)
diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json
index 42d0f35374..fa826067c8 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.4.4-next.0",
+ "version": "0.5.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-tasks/src/migrations.test.ts b/packages/backend-tasks/src/migrations.test.ts
new file mode 100644
index 0000000000..74503ab9a7
--- /dev/null
+++ b/packages/backend-tasks/src/migrations.test.ts
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Knex } from 'knex';
+import { TestDatabases } from '@backstage/backend-test-utils';
+import fs from 'fs';
+
+const migrationsDir = `${__dirname}/../migrations`;
+const migrationsFiles = fs.readdirSync(migrationsDir).sort();
+
+async function migrateUpOnce(knex: Knex): Promise {
+ await knex.migrate.up({ directory: migrationsDir });
+}
+
+async function migrateDownOnce(knex: Knex): Promise {
+ await knex.migrate.down({ directory: migrationsDir });
+}
+
+async function migrateUntilBefore(knex: Knex, target: string): Promise {
+ const index = migrationsFiles.indexOf(target);
+ if (index === -1) {
+ throw new Error(`Migration ${target} not found`);
+ }
+ for (let i = 0; i < index; i++) {
+ await migrateUpOnce(knex);
+ }
+}
+
+describe('migrations', () => {
+ const databases = TestDatabases.create({
+ ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'],
+ });
+
+ it.each(databases.eachSupportedId())(
+ '20210928160613_init.js, %p',
+ async databaseId => {
+ const knex = await databases.init(databaseId);
+
+ await migrateUntilBefore(knex, '20210928160613_init.js');
+ await migrateUpOnce(knex);
+
+ await knex('backstage_backend_tasks__tasks').insert({
+ id: 'test',
+ settings_json: '{}',
+ next_run_start_at: knex.fn.now(),
+ });
+
+ await expect(knex('backstage_backend_tasks__tasks')).resolves.toEqual([
+ {
+ id: 'test',
+ settings_json: '{}',
+ next_run_start_at: expect.anything(),
+ current_run_ticket: null,
+ current_run_started_at: null,
+ current_run_expires_at: null,
+ },
+ ]);
+
+ await migrateDownOnce(knex);
+
+ // This looks odd - you might expect a .toThrow at the end but that
+ // actually is flaky for some reason specifically on sqlite when
+ // performing multiple runs in sequence
+ await expect(knex('backstage_backend_tasks__tasks')).rejects.toEqual(
+ expect.anything(),
+ );
+
+ await knex.destroy();
+ },
+ 60_000,
+ );
+});
diff --git a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts
index 0edec5e84e..347d22e48e 100644
--- a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts
+++ b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts
@@ -39,8 +39,9 @@ export class LocalTaskWorker {
this.logger.info(
`Task worker starting: ${this.taskId}, ${JSON.stringify(settings)}`,
);
- let attemptNum = 1;
+
(async () => {
+ let attemptNum = 1;
for (;;) {
try {
if (settings.initialDelayDuration) {
@@ -60,6 +61,7 @@ export class LocalTaskWorker {
options?.signal,
);
}
+
this.logger.info(`Task worker finished: ${this.taskId}`);
attemptNum = 0;
break;
diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts
index 1847370d2b..9a29810683 100644
--- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts
+++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts
@@ -304,6 +304,46 @@ describe('PluginTaskManagerImpl', () => {
);
});
+ describe('can fetch task ids', () => {
+ it.each(databases.eachSupportedId())(
+ 'can fetch both global and local task ids, %p',
+ async databaseId => {
+ const { manager } = await init(databaseId);
+ const fn = jest.fn();
+
+ await manager.scheduleTask({
+ id: 'task1',
+ timeout: Duration.fromMillis(5000),
+ frequency: Duration.fromMillis(5000),
+ fn,
+ scope: 'global',
+ });
+
+ await manager.scheduleTask({
+ id: 'task2',
+ timeout: Duration.fromMillis(5000),
+ frequency: Duration.fromMillis(5000),
+ fn,
+ scope: 'local',
+ });
+
+ await expect(manager.getScheduledTasks()).resolves.toEqual([
+ {
+ id: 'task1',
+ scope: 'global',
+ settings: expect.objectContaining({ cadence: 'PT5S' }),
+ },
+ {
+ id: 'task2',
+ scope: 'local',
+ settings: expect.objectContaining({ cadence: 'PT5S' }),
+ },
+ ]);
+ },
+ 60_000,
+ );
+ });
+
describe('parseDuration', () => {
it('should parse durations', () => {
expect(parseDuration({ milliseconds: 5000 })).toEqual('PT5S');
diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts
index e57ec93c1c..253d7869df 100644
--- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts
+++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts
@@ -21,9 +21,11 @@ import { LocalTaskWorker } from './LocalTaskWorker';
import { TaskWorker } from './TaskWorker';
import {
PluginTaskScheduler,
+ TaskDescriptor,
TaskInvocationDefinition,
TaskRunner,
TaskScheduleDefinition,
+ TaskSettingsV2,
} from './types';
import { validateId } from './util';
@@ -32,6 +34,7 @@ import { validateId } from './util';
*/
export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
private readonly localTasksById = new Map();
+ private readonly allScheduledTasks: TaskDescriptor[] = [];
constructor(
private readonly databaseFactory: () => Promise,
@@ -55,6 +58,14 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
validateId(task.id);
const scope = task.scope ?? 'global';
+ const settings: TaskSettingsV2 = {
+ version: 2,
+ cadence: parseDuration(task.frequency),
+ initialDelayDuration:
+ task.initialDelay && parseDuration(task.initialDelay),
+ timeoutAfterDuration: parseDuration(task.timeout),
+ };
+
if (scope === 'global') {
const knex = await this.databaseFactory();
const worker = new TaskWorker(
@@ -63,37 +74,22 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
knex,
this.logger.child({ task: task.id }),
);
-
- await worker.start(
- {
- version: 2,
- cadence: parseDuration(task.frequency),
- initialDelayDuration:
- task.initialDelay && parseDuration(task.initialDelay),
- timeoutAfterDuration: parseDuration(task.timeout),
- },
- {
- signal: task.signal,
- },
- );
+ await worker.start(settings, { signal: task.signal });
} else {
- const worker = new LocalTaskWorker(task.id, task.fn, this.logger);
-
- worker.start(
- {
- version: 2,
- cadence: parseDuration(task.frequency),
- initialDelayDuration:
- task.initialDelay && parseDuration(task.initialDelay),
- timeoutAfterDuration: parseDuration(task.timeout),
- },
- {
- signal: task.signal,
- },
+ const worker = new LocalTaskWorker(
+ task.id,
+ task.fn,
+ this.logger.child({ task: task.id }),
);
-
+ worker.start(settings, { signal: task.signal });
this.localTasksById.set(task.id, worker);
}
+
+ this.allScheduledTasks.push({
+ id: task.id,
+ scope: scope,
+ settings: settings,
+ });
}
createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner {
@@ -103,6 +99,10 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
},
};
}
+
+ async getScheduledTasks(): Promise {
+ return this.allScheduledTasks;
+ }
}
export function parseDuration(
diff --git a/packages/backend-tasks/src/tasks/index.ts b/packages/backend-tasks/src/tasks/index.ts
index f2037ac9dd..6f9ac6d859 100644
--- a/packages/backend-tasks/src/tasks/index.ts
+++ b/packages/backend-tasks/src/tasks/index.ts
@@ -19,6 +19,7 @@ export { TaskScheduler } from './TaskScheduler';
export type {
PluginTaskScheduler,
TaskFunction,
+ TaskDescriptor,
TaskInvocationDefinition,
TaskRunner,
TaskScheduleDefinition,
diff --git a/packages/backend-tasks/src/tasks/types.ts b/packages/backend-tasks/src/tasks/types.ts
index 6ec5165aec..14339dda0e 100644
--- a/packages/backend-tasks/src/tasks/types.ts
+++ b/packages/backend-tasks/src/tasks/types.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { HumanDuration } from '@backstage/types';
+import { HumanDuration, JsonObject } from '@backstage/types';
import { CronTime } from 'cron';
import { Duration } from 'luxon';
import { z } from 'zod';
@@ -31,6 +31,28 @@ export type TaskFunction =
| ((abortSignal: AbortSignal) => void | Promise)
| (() => void | Promise);
+/**
+ * A semi-opaque type to describe an actively scheduled task.
+ *
+ * @public
+ */
+export type TaskDescriptor = {
+ /**
+ * The unique identifier of the task.
+ */
+ id: string;
+ /**
+ * The scope of the task.
+ */
+ scope: 'global' | 'local';
+ /**
+ * The settings that control the task flow. This is a semi-opaque structure
+ * that is mainly there for debugging purposes. Do not make any assumptions
+ * about the contents of this field.
+ */
+ settings: { version: number } & JsonObject;
+};
+
/**
* Options that control the scheduling of a task.
*
@@ -307,6 +329,19 @@ export interface PluginTaskScheduler {
* @param schedule - The task schedule
*/
createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner;
+
+ /**
+ * Returns all scheduled tasks registered to this scheduler.
+ *
+ * @remarks
+ *
+ * This method is useful for triggering tasks manually using the triggerTask
+ * functionality. Note that the returned tasks contain only tasks that have
+ * been initialized in this instance of the scheduler.
+ *
+ * @returns Scheduled tasks
+ */
+ getScheduledTasks(): Promise;
}
function isValidOptionalDurationString(d: string | undefined): boolean {
diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md
index 8129bb3c0a..3b20fe92d5 100644
--- a/packages/backend-test-utils/CHANGELOG.md
+++ b/packages/backend-test-utils/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/backend-test-utils
+## 0.1.35-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-app-api@0.4.1-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.35-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-app-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.1.35-next.0
### Patch Changes
diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json
index 73f0e9762d..e797e346ff 100644
--- a/packages/backend-test-utils/package.json
+++ b/packages/backend-test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-test-utils",
"description": "Test helpers library for Backstage backends",
- "version": "0.1.35-next.0",
+ "version": "0.1.35-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md
index a9551d3c47..933d9688b9 100644
--- a/packages/backend/CHANGELOG.md
+++ b/packages/backend/CHANGELOG.md
@@ -1,5 +1,103 @@
# example-backend
+## 0.2.81-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/plugin-adr-backend@0.3.1-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-linguist-backend@0.2.0-next.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2
+ - example-app@0.2.81-next.2
+ - @backstage/plugin-techdocs-backend@1.5.4-next.2
+ - @backstage/plugin-auth-backend@0.18.1-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.1-next.2
+ - @backstage/plugin-jenkins-backend@0.1.33-next.2
+ - @backstage/plugin-kubernetes-backend@0.9.4-next.2
+ - @backstage/plugin-permission-backend@0.5.18-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-playlist-backend@0.2.6-next.2
+ - @backstage/plugin-search-backend@1.2.4-next.2
+ - @backstage/plugin-lighthouse-backend@0.1.1-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/plugin-tech-insights-backend@0.5.9-next.2
+ - @backstage/plugin-tech-insights-node@0.4.1-next.2
+ - @backstage/plugin-app-backend@0.3.43-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.22-next.2
+ - @backstage/plugin-azure-sites-backend@0.1.5-next.2
+ - @backstage/plugin-badges-backend@0.1.37-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-code-coverage-backend@0.2.9-next.2
+ - @backstage/plugin-events-backend@0.2.4-next.2
+ - @backstage/plugin-explore-backend@0.0.5-next.2
+ - @backstage/plugin-graphql-backend@0.1.33-next.2
+ - @backstage/plugin-kafka-backend@0.2.36-next.2
+ - @backstage/plugin-proxy-backend@0.2.37-next.2
+ - @backstage/plugin-rollbar-backend@0.1.40-next.2
+ - @backstage/plugin-search-backend-module-pg@0.5.4-next.2
+ - @backstage/plugin-todo-backend@0.1.40-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.81-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/plugin-techdocs-backend@1.5.4-next.1
+ - @backstage/plugin-auth-backend@0.18.1-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-adr-backend@0.3.1-next.1
+ - @backstage/plugin-app-backend@0.3.43-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.22-next.1
+ - @backstage/plugin-azure-sites-backend@0.1.5-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-code-coverage-backend@0.2.9-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.1-next.1
+ - @backstage/plugin-explore-backend@0.0.5-next.1
+ - @backstage/plugin-graphql-backend@0.1.33-next.1
+ - @backstage/plugin-jenkins-backend@0.1.33-next.1
+ - @backstage/plugin-kubernetes-backend@0.9.4-next.1
+ - @backstage/plugin-linguist-backend@0.2.0-next.1
+ - @backstage/plugin-permission-backend@0.5.18-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/plugin-playlist-backend@0.2.6-next.1
+ - @backstage/plugin-proxy-backend@0.2.37-next.1
+ - @backstage/plugin-rollbar-backend@0.1.40-next.1
+ - @backstage/plugin-todo-backend@0.1.40-next.1
+ - @backstage/plugin-lighthouse-backend@0.1.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.1
+ - @backstage/plugin-search-backend@1.2.4-next.1
+ - example-app@0.2.81-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-badges-backend@0.1.37-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-backend@0.2.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+ - @backstage/plugin-kafka-backend@0.2.36-next.1
+ - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.1
+ - @backstage/plugin-search-backend-module-pg@0.5.4-next.1
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-tech-insights-backend@0.5.9-next.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.1
+ - @backstage/plugin-tech-insights-node@0.4.1-next.1
+
## 0.2.81-next.0
### Patch Changes
diff --git a/packages/backend/README.md b/packages/backend/README.md
index f86d09842a..f71fc9f9d8 100644
--- a/packages/backend/README.md
+++ b/packages/backend/README.md
@@ -44,7 +44,7 @@ To debug the backend in [Visual Studio Code](https://code.visualstudio.com/):
If you want to use the catalog functionality, you need to add so called
locations to the backend. These are places where the backend can find some
entity descriptor data to consume and serve. For more information, see
-[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog).
+[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog).
For convenience we already include some statically configured example locations
in `app-config.yaml` under `catalog.locations`. For local development you can override these in your own `app-config.local.yaml`.
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 2e742b365d..107a1147f1 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend",
- "version": "0.2.81-next.0",
+ "version": "0.2.81-next.2",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md
index 99b07f3c5c..52eef0291e 100644
--- a/packages/catalog-client/CHANGELOG.md
+++ b/packages/catalog-client/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/catalog-client
+## 1.4.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
## 1.4.0-next.0
### Minor Changes
diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json
index 91e852c3b0..f72ce4464a 100644
--- a/packages/catalog-client/package.json
+++ b/packages/catalog-client/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/catalog-client",
"description": "An isomorphic client for the catalog backend",
- "version": "1.4.0-next.0",
+ "version": "1.4.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md
index 8d6659c20b..08560cbec7 100644
--- a/packages/catalog-model/CHANGELOG.md
+++ b/packages/catalog-model/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/catalog-model
+## 1.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 1.2.1-next.0
### Patch Changes
diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json
index c75984643b..f6355bd74b 100644
--- a/packages/catalog-model/package.json
+++ b/packages/catalog-model/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/catalog-model",
"description": "Types and validators that help describe the model of a Backstage Catalog",
- "version": "1.2.1-next.0",
+ "version": "1.2.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/cli-common/CHANGELOG.md b/packages/cli-common/CHANGELOG.md
index 7e1db800de..030b743fca 100644
--- a/packages/cli-common/CHANGELOG.md
+++ b/packages/cli-common/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/cli-common
+## 0.1.12-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
## 0.1.11
### Patch Changes
diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json
index eead41c946..ad7ed92e98 100644
--- a/packages/cli-common/package.json
+++ b/packages/cli-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/cli-common",
"description": "Common functionality used by cli, backend, and create-app",
- "version": "0.1.11",
+ "version": "0.1.12-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index c42f76c774..4db4e1afa1 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/cli
+## 0.22.4-next.1
+
+### Patch Changes
+
+- 1ad8d885d30: Fixed a bug where additional backend package entry points where not properly marked as internal during local development.
+- 867f4752ca1: Updated the ESLint plugin configuration that is enabled through `yarn start --check` to only pick up valid source files.
+- 9bf50a36674: Bumped the `msw` version in templates to 1.0.0
+- 4b4998466b4: Updated dependency `del` to `^7.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- a11b9a23f5a: Keep custom exports entry points in package.json
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/release-manifests@0.0.9-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/eslint-plugin@0.1.2-next.0
+ - @backstage/types@1.0.2
+
## 0.22.4-next.0
### Patch Changes
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 0260a1c59b..8c76c7888b 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.22.4-next.0",
+ "version": "0.22.4-next.1",
"publishConfig": {
"access": "public"
},
diff --git a/packages/cli/src/lib/packager/productionPack.ts b/packages/cli/src/lib/packager/productionPack.ts
index b91112216a..a26f4893d0 100644
--- a/packages/cli/src/lib/packager/productionPack.ts
+++ b/packages/cli/src/lib/packager/productionPack.ts
@@ -186,7 +186,7 @@ async function prepareExportsEntryPoints(
return undefined;
}
const distFiles = await fs.readdir(distPath);
- const outputExports = {} as Record>;
+ const outputExports = {} as Record>;
const compatibilityWriters = new Array<
(targetDir: string) => Promise
@@ -195,6 +195,7 @@ async function prepareExportsEntryPoints(
const entryPoints = readEntryPoints(pkg);
for (const entryPoint of entryPoints) {
if (!SCRIPT_EXTS.includes(entryPoint.ext)) {
+ outputExports[entryPoint.mount] = entryPoint.path;
continue;
}
const exp = {} as Record;
diff --git a/packages/codemods/CHANGELOG.md b/packages/codemods/CHANGELOG.md
index c3387fce64..7104ce9cf4 100644
--- a/packages/codemods/CHANGELOG.md
+++ b/packages/codemods/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/codemods
+## 0.1.44-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12-next.0
+
## 0.1.43
### Patch Changes
diff --git a/packages/codemods/package.json b/packages/codemods/package.json
index 17649d49cf..8f4ab51a98 100644
--- a/packages/codemods/package.json
+++ b/packages/codemods/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/codemods",
"description": "A collection of codemods for Backstage projects",
- "version": "0.1.43",
+ "version": "0.1.44-next.0",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js"
diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md
index 9daa451e82..5dbed6c46d 100644
--- a/packages/config-loader/CHANGELOG.md
+++ b/packages/config-loader/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/config-loader
+## 1.1.9-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 1.1.8
### Patch Changes
diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json
index 657c6630eb..f842f77809 100644
--- a/packages/config-loader/package.json
+++ b/packages/config-loader/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/config-loader",
"description": "Config loading functionality used by Backstage backend, and CLI",
- "version": "1.1.8",
+ "version": "1.1.9-next.0",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/packages/config/CHANGELOG.md b/packages/config/CHANGELOG.md
index ac91318cb5..c809e158b7 100644
--- a/packages/config/CHANGELOG.md
+++ b/packages/config/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/config
+## 1.0.7-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/types@1.0.2
+
## 1.0.6
### Patch Changes
diff --git a/packages/config/package.json b/packages/config/package.json
index 380b52454e..5b8ac4279b 100644
--- a/packages/config/package.json
+++ b/packages/config/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/config",
"description": "Config API used by Backstage core, backend, and CLI",
- "version": "1.0.6",
+ "version": "1.0.7-next.0",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md
index 4575040798..d91fa44f05 100644
--- a/packages/core-app-api/CHANGELOG.md
+++ b/packages/core-app-api/CHANGELOG.md
@@ -1,5 +1,42 @@
# @backstage/core-app-api
+## 1.6.0-next.2
+
+### Minor Changes
+
+- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
+ requested.
+
+ This should not be considered a breaking change, because spec-compliant OIDC
+ providers will already be returning ID tokens if and only if the `openid` scope
+ is granted.
+
+ This change makes the dependence explicit, and removes the burden on
+ OAuth2-based providers which require an ID token (e.g. this is done by various
+ default [auth
+ handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
+ `openid` to their default scopes. _That_ could carry another indirect benefit:
+ by removing `openid` from the default scopes for a provider, grants for
+ resource-specific access tokens can avoid requesting excess ID token-related
+ scopes.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.5.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
## 1.5.1-next.0
### Patch Changes
diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json
index c43b27009b..073a5a22b2 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.5.1-next.0",
+ "version": "1.6.0-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
index 0bb40c23fc..63070120ef 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
@@ -48,9 +48,8 @@ describe('OAuth2', () => {
expect(await oauth2.getAccessToken('my-scope my-scope2')).toBe(
'access-token',
);
- expect(getSession).toHaveBeenCalledTimes(1);
- expect(getSession.mock.calls[0][0].scopes).toEqual(
- new Set(['my-scope', 'my-scope2']),
+ expect(getSession).toHaveBeenCalledWith(
+ expect.objectContaining({ scopes: new Set(['my-scope', 'my-scope2']) }),
);
});
@@ -65,9 +64,10 @@ describe('OAuth2', () => {
});
expect(await oauth2.getAccessToken('my-scope')).toBe('access-token');
- expect(getSession).toHaveBeenCalledTimes(1);
- expect(getSession.mock.calls[0][0].scopes).toEqual(
- new Set(['my-prefix/my-scope']),
+ expect(getSession).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scopes: new Set(['my-prefix/my-scope']),
+ }),
);
});
@@ -82,7 +82,11 @@ describe('OAuth2', () => {
});
expect(await oauth2.getIdToken()).toBe('id-token');
- expect(getSession).toHaveBeenCalledTimes(1);
+ expect(getSession).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scopes: new Set(['openid']),
+ }),
+ );
});
it('should get optional id token', async () => {
@@ -96,7 +100,11 @@ describe('OAuth2', () => {
});
expect(await oauth2.getIdToken({ optional: true })).toBe('id-token');
- expect(getSession).toHaveBeenCalledTimes(1);
+ expect(getSession).toHaveBeenCalledWith(
+ expect.objectContaining({
+ scopes: new Set(['openid']),
+ }),
+ );
});
it('should share popup closed errors', async () => {
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
index ad2d04cb56..6f88178415 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
@@ -153,7 +153,10 @@ export default class OAuth2
}
async getIdToken(options: AuthRequestOptions = {}) {
- const session = await this.sessionManager.getSession(options);
+ const session = await this.sessionManager.getSession({
+ ...options,
+ scopes: new Set(['openid']),
+ });
return session?.providerInfo.idToken ?? '';
}
diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md
index 5ad035fbfd..0eac19716d 100644
--- a/packages/core-components/CHANGELOG.md
+++ b/packages/core-components/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/core-components
+## 0.12.5-next.2
+
+### Patch Changes
+
+- 8bbf95b5507: Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations.
+ For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc.
+ This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar.
+- fa004f66871: Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.12.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- e1aae2f5a0c: Updated the `aria-label` of the `HeaderTabs` component.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/version-bridge@1.0.3
+
## 0.12.5-next.0
### Patch Changes
diff --git a/packages/core-components/package.json b/packages/core-components/package.json
index aa47734d8b..9630d7d706 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.12.5-next.0",
+ "version": "0.12.5-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/core-components/src/components/Avatar/Avatar.tsx b/packages/core-components/src/components/Avatar/Avatar.tsx
index 950f57668e..3727c892f9 100644
--- a/packages/core-components/src/components/Avatar/Avatar.tsx
+++ b/packages/core-components/src/components/Avatar/Avatar.tsx
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import MaterialAvatar from '@material-ui/core/Avatar';
-import { createStyles, makeStyles, Theme } from '@material-ui/core/styles';
+import { makeStyles, Theme } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import React, { CSSProperties } from 'react';
@@ -24,19 +24,18 @@ import { extractInitials, stringToColor } from './utils';
export type AvatarClassKey = 'avatar';
const useStyles = makeStyles(
- (theme: Theme) =>
- createStyles({
- avatar: {
- width: '4rem',
- height: '4rem',
- color: '#fff',
- },
- avatarText: {
- fontWeight: theme.typography.fontWeightBold,
- letterSpacing: '1px',
- textTransform: 'uppercase',
- },
- }),
+ (theme: Theme) => ({
+ avatar: {
+ width: '4rem',
+ height: '4rem',
+ color: theme.palette.common.white,
+ },
+ avatarText: {
+ fontWeight: theme.typography.fontWeightBold,
+ letterSpacing: '1px',
+ textTransform: 'uppercase',
+ },
+ }),
{ name: 'BackstageAvatar' },
);
diff --git a/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx b/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
index 1910d6e7fd..6b336f5489 100644
--- a/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
+++ b/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
@@ -54,7 +54,8 @@ const useStyles = makeStyles(
code: {
borderRadius: 6,
margin: `${theme.spacing(2)}px 0px`,
- background: theme.palette.type === 'dark' ? '#444' : '#fff',
+ background:
+ theme.palette.type === 'dark' ? '#444' : theme.palette.common.white,
},
}),
{ name: 'BackstageMissingAnnotationEmptyState' },
diff --git a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
index b967ee0a9f..92c10497f4 100644
--- a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
+++ b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
@@ -41,7 +41,7 @@ export type FeatureCalloutCircleClassKey =
| 'text';
const useStyles = makeStyles(
- {
+ theme => ({
'@keyframes pulsateSlightly': {
'0%': { transform: 'scale(1.0)' },
'100%': { transform: 'scale(1.1)' },
@@ -78,7 +78,7 @@ const useStyles = makeStyles(
height: '100%',
backgroundColor: 'transparent',
borderRadius: '100%',
- border: '2px solid white',
+ border: `2px solid ${theme.palette.common.white}`,
zIndex: 2001,
transformOrigin: 'center center',
animation:
@@ -86,10 +86,10 @@ const useStyles = makeStyles(
},
text: {
position: 'absolute',
- color: 'white',
+ color: theme.palette.common.white,
zIndex: 2003,
},
- },
+ }),
{ name: 'BackstageFeatureCalloutCircular' },
);
diff --git a/packages/core-components/src/components/Lifecycle/Lifecycle.tsx b/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
index f0bbeaa7bd..f6f4c3cd3e 100644
--- a/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
+++ b/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
@@ -26,9 +26,9 @@ type Props = CSS.Properties & {
export type LifecycleClassKey = 'alpha' | 'beta';
const useStyles = makeStyles(
- {
+ theme => ({
alpha: {
- color: '#ffffff',
+ color: theme.palette.common.white,
fontFamily: 'serif',
fontWeight: 'normal',
fontStyle: 'italic',
@@ -39,7 +39,7 @@ const useStyles = makeStyles(
fontWeight: 'normal',
fontStyle: 'italic',
},
- },
+ }),
{ name: 'BackstageLifecycle' },
);
diff --git a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
index be6c0c6531..d2b11f9a3b 100644
--- a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
+++ b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
@@ -24,6 +24,7 @@ import ListItemText, {
} from '@material-ui/core/ListItemText';
import Popover from '@material-ui/core/Popover';
import MoreVert from '@material-ui/icons/MoreVert';
+import { useTheme } from '@material-ui/core/styles';
/**
* @public
@@ -73,6 +74,11 @@ export type HeaderActionMenuProps = {
* @public
*/
export function HeaderActionMenu(props: HeaderActionMenuProps) {
+ const {
+ palette: {
+ common: { white },
+ },
+ } = useTheme();
const { actionItems } = props;
const [open, setOpen] = React.useState(false);
const anchorElRef = React.useRef(null);
@@ -84,7 +90,7 @@ export function HeaderActionMenu(props: HeaderActionMenuProps) {
data-testid="header-action-menu"
ref={anchorElRef}
style={{
- color: 'white',
+ color: white,
height: 56,
width: 56,
marginRight: -4,
diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx
index 1abb8da93b..00988c475b 100644
--- a/packages/core-components/src/layout/Page/Page.tsx
+++ b/packages/core-components/src/layout/Page/Page.tsx
@@ -17,21 +17,23 @@
import React from 'react';
import { BackstageTheme } from '@backstage/theme';
import { makeStyles, ThemeProvider } from '@material-ui/core/styles';
-import { useSidebarPinState } from '../Sidebar/SidebarPinStateContext';
export type PageClassKey = 'root';
-const useStyles = makeStyles(
- () => ({
- root: ({ isMobile }) => ({
+const useStyles = makeStyles(
+ theme => ({
+ root: {
display: 'grid',
gridTemplateAreas:
"'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'",
gridTemplateRows: 'max-content auto 1fr',
gridTemplateColumns: 'auto 1fr auto',
- height: isMobile ? '100%' : '100vh',
overflowY: 'auto',
- }),
+ height: '100vh',
+ [theme.breakpoints.down('xs')]: {
+ height: '100%',
+ },
+ },
}),
{ name: 'BackstagePage' },
);
@@ -43,8 +45,7 @@ type Props = {
export function Page(props: Props) {
const { themeId, children } = props;
- const { isMobile } = useSidebarPinState();
- const classes = useStyles({ isMobile });
+ const classes = useStyles();
return (
({
diff --git a/packages/core-components/src/layout/Sidebar/Bar.tsx b/packages/core-components/src/layout/Sidebar/Bar.tsx
index 95ed88b1ec..69b77dd5e1 100644
--- a/packages/core-components/src/layout/Sidebar/Bar.tsx
+++ b/packages/core-components/src/layout/Sidebar/Bar.tsx
@@ -63,9 +63,6 @@ const useStyles = makeStyles(
'&::-webkit-scrollbar': {
display: 'none',
},
- '& .MuiButtonBase-root': {
- textTransform: 'none',
- },
}),
drawerOpen: props => ({
width: props.sidebarConfig.drawerWidthOpen,
diff --git a/packages/core-components/src/layout/Sidebar/Items.tsx b/packages/core-components/src/layout/Sidebar/Items.tsx
index 823320403e..00d1871947 100644
--- a/packages/core-components/src/layout/Sidebar/Items.tsx
+++ b/packages/core-components/src/layout/Sidebar/Items.tsx
@@ -103,6 +103,7 @@ const makeSidebarStyles = (sidebarConfig: SidebarConfig) =>
padding: 0,
textAlign: 'inherit',
font: 'inherit',
+ textTransform: 'none',
},
closed: {
width: sidebarConfig.drawerWidthClosed,
diff --git a/packages/core-components/src/layout/Sidebar/SidebarSubmenu.tsx b/packages/core-components/src/layout/Sidebar/SidebarSubmenu.tsx
index cc61a6a063..949148d7a1 100644
--- a/packages/core-components/src/layout/Sidebar/SidebarSubmenu.tsx
+++ b/packages/core-components/src/layout/Sidebar/SidebarSubmenu.tsx
@@ -80,7 +80,7 @@ const useStyles = makeStyles<
title: {
fontSize: theme.typography.h5.fontSize,
fontWeight: theme.typography.fontWeightMedium,
- color: '#FFF',
+ color: theme.palette.common.white,
padding: theme.spacing(2.5),
[theme.breakpoints.down('xs')]: {
display: 'none',
diff --git a/packages/core-components/src/layout/Sidebar/SidebarSubmenuItem.tsx b/packages/core-components/src/layout/Sidebar/SidebarSubmenuItem.tsx
index 5fdd29f203..b08647d335 100644
--- a/packages/core-components/src/layout/Sidebar/SidebarSubmenuItem.tsx
+++ b/packages/core-components/src/layout/Sidebar/SidebarSubmenuItem.tsx
@@ -35,7 +35,8 @@ const useStyles = makeStyles(
height: 48,
width: '100%',
'&:hover': {
- background: '#6f6f6f',
+ background:
+ theme.palette.navigation.navItem?.hoverBackground || '#6f6f6f',
color: theme.palette.navigation.selectedColor,
},
display: 'flex',
@@ -52,7 +53,7 @@ const useStyles = makeStyles(
},
selected: {
background: '#6f6f6f',
- color: '#FFF',
+ color: theme.palette.common.white,
},
label: {
margin: theme.spacing(1.75),
@@ -82,7 +83,8 @@ const useStyles = makeStyles(
width: '100%',
padding: '10px 0 10px 0',
'&:hover': {
- background: '#6f6f6f',
+ background:
+ theme.palette.navigation.navItem?.hoverBackground || '#6f6f6f',
color: theme.palette.navigation.selectedColor,
},
},
diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md
index e2da5bc048..1001c01e52 100644
--- a/packages/core-plugin-api/CHANGELOG.md
+++ b/packages/core-plugin-api/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/core-plugin-api
+## 1.5.0-next.2
+
+### Minor Changes
+
+- ab750ddc4f2: The GitLab auth provider can now be used to get OpenID tokens.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+
+## 1.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
## 1.4.1-next.0
### Patch Changes
diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md
index 4887f0b7f2..eabd300fc6 100644
--- a/packages/core-plugin-api/api-report.md
+++ b/packages/core-plugin-api/api-report.md
@@ -482,7 +482,11 @@ export const githubAuthApiRef: ApiRef<
// @public
export const gitlabAuthApiRef: ApiRef<
- OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi
+ OAuthApi &
+ OpenIdConnectApi &
+ ProfileInfoApi &
+ BackstageIdentityApi &
+ SessionApi
>;
// @public
diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json
index 1da87fa457..335f0f0efd 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.4.1-next.0",
+ "version": "1.5.0-next.2",
"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 43597639b6..62d0d5c810 100644
--- a/packages/core-plugin-api/src/apis/definitions/auth.ts
+++ b/packages/core-plugin-api/src/apis/definitions/auth.ts
@@ -357,7 +357,11 @@ export const oktaAuthApiRef: ApiRef<
* for a full list of supported scopes.
*/
export const gitlabAuthApiRef: ApiRef<
- OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi
+ OAuthApi &
+ OpenIdConnectApi &
+ ProfileInfoApi &
+ BackstageIdentityApi &
+ SessionApi
> = createApiRef({
id: 'core.auth.gitlab',
});
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 149c474022..b17da7ba7b 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/create-app
+## 0.4.38-next.2
+
+### Patch Changes
+
+- Bumped create-app version.
+
+## 0.4.38-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12-next.0
+
## 0.4.38-next.0
### Patch Changes
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index 6ca80a519c..4097e3bd57 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "A CLI that helps you create your own Backstage app",
- "version": "0.4.38-next.0",
+ "version": "0.4.38-next.2",
"publishConfig": {
"access": "public"
},
diff --git a/packages/create-app/templates/default-app/app-config.production.yaml b/packages/create-app/templates/default-app/app-config.production.yaml
index df09dac50a..8f0751cd31 100644
--- a/packages/create-app/templates/default-app/app-config.production.yaml
+++ b/packages/create-app/templates/default-app/app-config.production.yaml
@@ -30,6 +30,6 @@ backend:
catalog:
# Overrides the default list locations from app-config.yaml as these contain example data.
- # See https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog for more details
+ # See https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog for more details
# on how to get entities into the catalog.
locations: []
diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs
index 3b5de8baa3..3d216ec894 100644
--- a/packages/create-app/templates/default-app/app-config.yaml.hbs
+++ b/packages/create-app/templates/default-app/app-config.yaml.hbs
@@ -7,7 +7,7 @@ organization:
backend:
# Used for enabling authentication, secret is shared by all backend plugins
- # See https://backstage.io/docs/tutorials/backend-to-backend-auth for
+ # See https://backstage.io/docs/auth/service-to-service-auth for
# information on the format
# auth:
# keys:
diff --git a/packages/create-app/templates/default-app/packages/backend/README.md b/packages/create-app/templates/default-app/packages/backend/README.md
index 867487ba0a..3607b0a092 100644
--- a/packages/create-app/templates/default-app/packages/backend/README.md
+++ b/packages/create-app/templates/default-app/packages/backend/README.md
@@ -36,7 +36,7 @@ The backend starts up on port 7007 per default.
If you want to use the catalog functionality, you need to add so called
locations to the backend. These are places where the backend can find some
entity descriptor data to consume and serve. For more information, see
-[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog).
+[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog).
To get started quickly, this template already includes some statically configured example locations
in `app-config.yaml` under `catalog.locations`. You can remove and replace these locations as you
diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md
index ae7c5a3282..85a0c81ee7 100644
--- a/packages/dev-utils/CHANGELOG.md
+++ b/packages/dev-utils/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/dev-utils
+## 1.0.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/test-utils@1.2.6-next.2
+
+## 1.0.13-next.1
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 1.0.13-next.0
### Patch Changes
diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json
index 2680401145..d4f120b359 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.13-next.0",
+ "version": "1.0.13-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 c3345a5815..7c3dcdbc36 100644
--- a/packages/e2e-test/CHANGELOG.md
+++ b/packages/e2e-test/CHANGELOG.md
@@ -1,5 +1,21 @@
# e2e-test
+## 0.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.4.38-next.2
+
+## 0.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/create-app@0.4.38-next.1
+
## 0.2.1-next.0
### Patch Changes
diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json
index 969c68feb3..f8c6f815e8 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.1-next.0",
+ "version": "0.2.1-next.2",
"private": true,
"backstage": {
"role": "cli"
diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md
index e7803e2fb4..88b0c4b8d1 100644
--- a/packages/errors/CHANGELOG.md
+++ b/packages/errors/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/errors
+## 1.1.5-next.0
+
+### Patch Changes
+
+- 3bf83a2aabf: Added `NotImplementedError`, which can be used when the server does not recognize the request method and is incapable of supporting it for any resource.
+- Updated dependencies
+ - @backstage/types@1.0.2
+
## 1.1.4
### Patch Changes
diff --git a/packages/errors/package.json b/packages/errors/package.json
index 1b9b865b74..7eeacb0e81 100644
--- a/packages/errors/package.json
+++ b/packages/errors/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/errors",
"description": "Common utilities for error handling within Backstage",
- "version": "1.1.4",
+ "version": "1.1.5-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/integration-aws-node/CHANGELOG.md b/packages/integration-aws-node/CHANGELOG.md
index d092eb5829..e5ac2a8532 100644
--- a/packages/integration-aws-node/CHANGELOG.md
+++ b/packages/integration-aws-node/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/integration-aws-node
+## 0.1.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+
## 0.1.1
### Patch Changes
diff --git a/packages/integration-aws-node/package.json b/packages/integration-aws-node/package.json
index 9816afb7c8..a45cb03e14 100644
--- a/packages/integration-aws-node/package.json
+++ b/packages/integration-aws-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-aws-node",
"description": "Helpers for fetching AWS account credentials",
- "version": "0.1.1",
+ "version": "0.1.2-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md
index 700b410bf6..028c939822 100644
--- a/packages/integration-react/CHANGELOG.md
+++ b/packages/integration-react/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/integration-react
+## 1.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 1.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
## 1.1.11-next.0
### Patch Changes
diff --git a/packages/integration-react/api-report.md b/packages/integration-react/api-report.md
index 5b0c9d6174..3af0704990 100644
--- a/packages/integration-react/api-report.md
+++ b/packages/integration-react/api-report.md
@@ -23,7 +23,11 @@ export class ScmAuth implements ScmAuthApi {
ScmAuthApi,
{
github: OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi;
- gitlab: OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi;
+ gitlab: OAuthApi &
+ OpenIdConnectApi &
+ ProfileInfoApi &
+ BackstageIdentityApi &
+ SessionApi;
azure: OAuthApi &
OpenIdConnectApi &
ProfileInfoApi &
diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json
index ab163f9b1a..119a8683d6 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.11-next.0",
+ "version": "1.1.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md
index 0a7442afe2..3a84452505 100644
--- a/packages/integration/CHANGELOG.md
+++ b/packages/integration/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/integration
+## 1.4.3-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+
## 1.4.2
### Patch Changes
diff --git a/packages/integration/package.json b/packages/integration/package.json
index 3ad53b1e08..02c19e1b1d 100644
--- a/packages/integration/package.json
+++ b/packages/integration/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration",
"description": "Helpers for managing integrations towards external systems",
- "version": "1.4.2",
+ "version": "1.4.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md
index 538de23e43..fa15839a35 100644
--- a/packages/release-manifests/CHANGELOG.md
+++ b/packages/release-manifests/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/release-manifests
+## 0.0.9-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+
## 0.0.8
### Patch Changes
diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json
index 96c5aec484..65d1026ca6 100644
--- a/packages/release-manifests/package.json
+++ b/packages/release-manifests/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/release-manifests",
"description": "Helper library for receiving release manifests",
- "version": "0.0.8",
+ "version": "0.0.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md
index d4d300f450..996377c198 100644
--- a/packages/repo-tools/CHANGELOG.md
+++ b/packages/repo-tools/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/repo-tools
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/cli-common@0.1.12-next.0
+
## 0.1.3-next.0
### Patch Changes
diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json
index 2ceeeb0dd8..9d24bfad2c 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.1.3-next.0",
+ "version": "0.1.3-next.1",
"publishConfig": {
"access": "public"
},
diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md
index e3b49ff2f2..2d2b669e38 100644
--- a/packages/techdocs-cli-embedded-app/CHANGELOG.md
+++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md
@@ -1,5 +1,41 @@
# techdocs-cli-embedded-app
+## 0.2.80-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-techdocs-react@1.1.4-next.2
+ - @backstage/plugin-techdocs@1.6.0-next.2
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/app-defaults@1.2.1-next.2
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/test-utils@1.2.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.80-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli@0.22.4-next.1
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/plugin-techdocs@1.6.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/plugin-techdocs-react@1.1.4-next.1
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/app-defaults@1.2.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.80-next.0
### Patch Changes
diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json
index 2d8c47c1f0..2cbb1aabc8 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.80-next.0",
+ "version": "0.2.80-next.2",
"private": true,
"backstage": {
"role": "frontend"
diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md
index 1e995b5f23..facd967e90 100644
--- a/packages/techdocs-cli/CHANGELOG.md
+++ b/packages/techdocs-cli/CHANGELOG.md
@@ -1,5 +1,30 @@
# @techdocs/cli
+## 1.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.6.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.4.0-next.1
+
+### Minor Changes
+
+- 8e465ce52e2: Running `@techdocs/cli generate` with the `--verbose` flag will now print the mkdocs output.
+- ea2bbef1b16: Added support for an HTTPS proxy for techdocs AWS S3 requests
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.6.0-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/cli-common@0.1.12-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
## 1.3.3-next.0
### Patch Changes
diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json
index 0a3bbed06f..e8d9277871 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.3.3-next.0",
+ "version": "1.4.0-next.2",
"publishConfig": {
"access": "public"
},
diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md
index 2a2ff57694..e521e9af91 100644
--- a/packages/test-utils/CHANGELOG.md
+++ b/packages/test-utils/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/test-utils
+## 1.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-app-api@1.6.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 482dae5de1c: Updated link to docs.
+- Updated dependencies
+ - @backstage/core-app-api@1.5.1-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
## 1.2.6-next.0
### Patch Changes
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index ef57be6a57..59ec2ce989 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.2.6-next.0",
+ "version": "1.2.6-next.2",
"publishConfig": {
"access": "public"
},
diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md
index a0ad669076..2950839e68 100644
--- a/packages/theme/CHANGELOG.md
+++ b/packages/theme/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/theme
+## 0.2.18-next.0
+
+### Patch Changes
+
+- 482dae5de1c: Updated link to docs.
+
## 0.2.17
### Patch Changes
diff --git a/packages/theme/package.json b/packages/theme/package.json
index 70f7cb2277..d24a43abdb 100644
--- a/packages/theme/package.json
+++ b/packages/theme/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/theme",
"description": "material-ui theme for use with Backstage.",
- "version": "0.2.17",
+ "version": "0.2.18-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 9bd8a9576a..58b37f1731 100644
--- a/plugins/adr-backend/CHANGELOG.md
+++ b/plugins/adr-backend/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-adr-backend
+## 0.3.1-next.2
+
+### Patch Changes
+
+- 2a73ded3861: Support MADR v3 format
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.3.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-adr-common@0.2.7-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 0.3.1-next.0
### Patch Changes
diff --git a/plugins/adr-backend/README.md b/plugins/adr-backend/README.md
index 29fead7c84..4ffa9c63eb 100644
--- a/plugins/adr-backend/README.md
+++ b/plugins/adr-backend/README.md
@@ -89,7 +89,7 @@ indexBuilder.addCollator({
### Parsing custom ADR document formats
-By default, the `DefaultAdrCollatorFactory` will parse and index documents that follow the [MADR v2.x standard file name and template format](https://github.com/adr/madr/tree/2.1.2). If you use a different ADR format and file name convention, you can configure `DefaultAdrCollatorFactory` with custom `adrFilePathFilterFn` and `parser` options (see type definitions for details):
+By default, the `DefaultAdrCollatorFactory` will parse and index documents that follow [MADR v3.0.0](https://github.com/adr/madr/tree/3.0.0) and [MADR v2.x](https://github.com/adr/madr/tree/2.1.2) standard file name and template format. If you use a different ADR format and file name convention, you can configure `DefaultAdrCollatorFactory` with custom `adrFilePathFilterFn` and `parser` options (see type definitions for details):
```ts
DefaultAdrCollatorFactory.fromConfig({
diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json
index 719b3808a7..f73bf159b0 100644
--- a/plugins/adr-backend/package.json
+++ b/plugins/adr-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr-backend",
- "version": "0.3.1-next.0",
+ "version": "0.3.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/adr-backend/src/search/madrParser.ts b/plugins/adr-backend/src/search/madrParser.ts
index 30672028fe..c992ef125e 100644
--- a/plugins/adr-backend/src/search/madrParser.ts
+++ b/plugins/adr-backend/src/search/madrParser.ts
@@ -18,28 +18,71 @@ import { DateTime } from 'luxon';
import { marked } from 'marked';
import { MADR_DATE_FORMAT } from '@backstage/plugin-adr-common';
-export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => {
- const tokens = marked.lexer(content);
- if (!tokens.length) {
- throw new Error('ADR has no content');
- }
-
- // First h1 header should contain ADR title
- const adrTitle = (
+const getTitle = (tokens: marked.TokensList): string | undefined => {
+ return (
tokens.find(
t => t.type === 'heading' && t.depth === 1,
) as marked.Tokens.Heading
)?.text;
+};
- // First list should contain status & date metadata (if defined)
- const listTokens = (tokens.find(t => t.type === 'list') as marked.Tokens.List)
- ?.items;
- const adrStatus = listTokens
+const getStatusForV3Format = (tokens: marked.TokensList): string | undefined =>
+ (
+ tokens.find(
+ t =>
+ t.type === 'heading' &&
+ t.depth === 2 &&
+ t.text.toLowerCase().includes('status:'),
+ ) as marked.Tokens.Text
+ )?.text
+ .toLowerCase()
+ .split('\n')
+ .find(l => /^status:/.test(l))
+ ?.replace(/^status:/i, '')
+ .trim()
+ .toLocaleLowerCase('en-US');
+
+const getStatusForV2Format = (tokens: marked.TokensList): string | undefined =>
+ (tokens.find(t => t.type === 'list') as marked.Tokens.List)?.items
?.find(t => /^status:/i.test(t.text))
?.text.replace(/^status:/i, '')
.trim()
.toLocaleLowerCase('en-US');
+const getDateForV3Format = (
+ tokens: marked.TokensList,
+ dateFormat: string,
+): string | undefined => {
+ let adrDateTime: DateTime | undefined;
+ const dateLine = (
+ tokens.find(
+ t =>
+ t.type === 'heading' &&
+ t.depth === 2 &&
+ t.text.toLowerCase().includes('date:'),
+ ) as marked.Tokens.Text
+ )?.text
+ .toLowerCase()
+ .split('\n')
+ .find(l => /^date:/.test(l));
+
+ if (dateLine) {
+ adrDateTime = DateTime.fromFormat(
+ dateLine.replace(/^date:/i, '').trim(),
+ dateFormat,
+ );
+ }
+ return adrDateTime?.isValid
+ ? adrDateTime.toFormat(MADR_DATE_FORMAT)
+ : undefined;
+};
+
+const getDateForV2Format = (
+ tokens: marked.TokensList,
+ dateFormat: string,
+): string | undefined => {
+ const listTokens = (tokens.find(t => t.type === 'list') as marked.Tokens.List)
+ ?.items;
const adrDateTime = DateTime.fromFormat(
listTokens
?.find(t => /^date:/i.test(t.text))
@@ -47,13 +90,30 @@ export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => {
.trim() ?? '',
dateFormat,
);
- const adrDate = adrDateTime?.isValid
+ return adrDateTime?.isValid
? adrDateTime.toFormat(MADR_DATE_FORMAT)
: undefined;
+};
+
+const getStatus = (tokens: marked.TokensList): string | undefined => {
+ return getStatusForV3Format(tokens) ?? getStatusForV2Format(tokens);
+};
+const getDate = (
+ tokens: marked.TokensList,
+ dateFormat: string,
+): string | undefined =>
+ getDateForV3Format(tokens, dateFormat) ??
+ getDateForV2Format(tokens, dateFormat);
+
+export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => {
+ const tokens = marked.lexer(content);
+ if (!tokens.length) {
+ throw new Error('ADR has no content');
+ }
return {
- title: adrTitle,
- status: adrStatus,
- date: adrDate,
+ title: getTitle(tokens),
+ status: getStatus(tokens),
+ date: getDate(tokens, dateFormat),
};
};
diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md
index b04b7a0c64..5040e0955c 100644
--- a/plugins/adr-common/CHANGELOG.md
+++ b/plugins/adr-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-adr-common
+## 0.2.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 0.2.7-next.0
### Patch Changes
diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json
index b2557c5407..9eeeeb2803 100644
--- a/plugins/adr-common/package.json
+++ b/plugins/adr-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-adr-common",
"description": "Common functionalities for the adr plugin",
- "version": "0.2.7-next.0",
+ "version": "0.2.7-next.1",
"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 c22c566b6c..a50f1a60d3 100644
--- a/plugins/adr/CHANGELOG.md
+++ b/plugins/adr/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/plugin-adr
+## 0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-adr-common@0.2.7-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
## 0.4.1-next.0
### Patch Changes
diff --git a/plugins/adr/package.json b/plugins/adr/package.json
index 3910fbdef9..5e56c39638 100644
--- a/plugins/adr/package.json
+++ b/plugins/adr/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr",
- "version": "0.4.1-next.0",
+ "version": "0.4.1-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 821f2df769..bcbd88a755 100644
--- a/plugins/airbrake-backend/CHANGELOG.md
+++ b/plugins/airbrake-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-airbrake-backend
+## 0.2.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.2.16-next.0
### Patch Changes
diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json
index 6f79200b0e..52bd89e909 100644
--- a/plugins/airbrake-backend/package.json
+++ b/plugins/airbrake-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake-backend",
- "version": "0.2.16-next.0",
+ "version": "0.2.16-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 493a4ecd34..088bfbdcf9 100644
--- a/plugins/airbrake/CHANGELOG.md
+++ b/plugins/airbrake/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-airbrake
+## 0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/dev-utils@1.0.13-next.2
+ - @backstage/test-utils@1.2.6-next.2
+
+## 0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/test-utils@1.2.6-next.1
+ - @backstage/dev-utils@1.0.13-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.3.16-next.0
### Patch Changes
diff --git a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx
index da3bbb1e46..7c79dc8363 100644
--- a/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx
+++ b/plugins/airbrake/dev/components/ApiBar/ApiBar.tsx
@@ -17,20 +17,20 @@ import React from 'react';
import { makeStyles, TextField } from '@material-ui/core';
import { Context } from '../ContextProvider';
-const useStyles = makeStyles({
+const useStyles = makeStyles(theme => ({
root: {
display: 'flex',
gap: '1em',
flexWrap: 'wrap',
},
label: {
- color: '#fff !important',
+ color: `${theme.palette.common.white} !important`,
},
outline: {
- color: '#fff !important',
- borderColor: '#fff !important',
+ color: `${theme.palette.common.white} !important`,
+ borderColor: `${theme.palette.common.white} !important`,
},
-});
+}));
export const ApiBar = () => {
const classes = useStyles();
diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json
index 22d961419c..e577ee8862 100644
--- a/plugins/airbrake/package.json
+++ b/plugins/airbrake/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
- "version": "0.3.16-next.0",
+ "version": "0.3.16-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 d3629f0406..efde01c0b5 100644
--- a/plugins/allure/CHANGELOG.md
+++ b/plugins/allure/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-allure
+## 0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.32-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.32-next.0
### Patch Changes
diff --git a/plugins/allure/package.json b/plugins/allure/package.json
index 98296190b7..18bf52feab 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.32-next.0",
+ "version": "0.1.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md
index 02bed18551..e457b76bf8 100644
--- a/plugins/analytics-module-ga/CHANGELOG.md
+++ b/plugins/analytics-module-ga/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-analytics-module-ga
+## 0.1.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.27-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
## 0.1.27-next.0
### Patch Changes
diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json
index 2cf706b25e..b7152b1f69 100644
--- a/plugins/analytics-module-ga/package.json
+++ b/plugins/analytics-module-ga/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
- "version": "0.1.27-next.0",
+ "version": "0.1.27-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md
index 50ceff31ac..acc474e6e3 100644
--- a/plugins/apache-airflow/CHANGELOG.md
+++ b/plugins/apache-airflow/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-apache-airflow
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json
index b249948e90..070cbc4136 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.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index 8f6878bb97..56644c2322 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-api-docs
+## 0.9.1-next.2
+
+### Patch Changes
+
+- 8bc7dcec820: Fix dark theme Swagger's clear button font color.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.9.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 9820eb5d24f: Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
+- Updated dependencies
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.9.1-next.0
### Patch Changes
diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md
index c00f9f8e00..a9b21664c3 100644
--- a/plugins/api-docs/api-report.md
+++ b/plugins/api-docs/api-report.md
@@ -85,6 +85,7 @@ export type AsyncApiDefinitionWidgetProps = {
// @public (undocumented)
export const ConsumedApisCard: (props: {
variant?: InfoCardVariants;
+ columns?: TableColumn[];
}) => JSX.Element;
// @public (undocumented)
@@ -113,6 +114,7 @@ export const EntityApiDefinitionCard: () => JSX.Element;
// @public (undocumented)
export const EntityConsumedApisCard: (props: {
variant?: InfoCardVariants | undefined;
+ columns?: TableColumn[] | undefined;
}) => JSX.Element;
// @public (undocumented)
@@ -123,11 +125,13 @@ export const EntityConsumingComponentsCard: (props: {
// @public (undocumented)
export const EntityHasApisCard: (props: {
variant?: InfoCardVariants | undefined;
+ columns?: TableColumn[] | undefined;
}) => JSX.Element;
// @public (undocumented)
export const EntityProvidedApisCard: (props: {
variant?: InfoCardVariants | undefined;
+ columns?: TableColumn[] | undefined;
}) => JSX.Element;
// @public (undocumented)
@@ -148,6 +152,7 @@ export type GraphQlDefinitionWidgetProps = {
// @public (undocumented)
export const HasApisCard: (props: {
variant?: InfoCardVariants;
+ columns?: TableColumn[];
}) => JSX.Element;
// @public (undocumented)
@@ -174,6 +179,7 @@ export type PlainApiDefinitionWidgetProps = {
// @public (undocumented)
export const ProvidedApisCard: (props: {
variant?: InfoCardVariants;
+ columns?: TableColumn[];
}) => JSX.Element;
// @public (undocumented)
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index 7660e62320..d7db6566f9 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.9.1-next.0",
+ "version": "0.9.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
index 588e62ceb7..f56bd3e1a7 100644
--- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
@@ -29,14 +29,18 @@ import {
InfoCardVariants,
Link,
Progress,
+ TableColumn,
WarningPanel,
} from '@backstage/core-components';
/**
* @public
*/
-export const ConsumedApisCard = (props: { variant?: InfoCardVariants }) => {
- const { variant = 'gridItem' } = props;
+export const ConsumedApisCard = (props: {
+ variant?: InfoCardVariants;
+ columns?: TableColumn[];
+}) => {
+ const { variant = 'gridItem', columns = apiEntityColumns } = props;
const { entity } = useEntity();
const { entities, loading, error } = useRelatedEntities(entity, {
type: RELATION_CONSUMES_API,
@@ -79,7 +83,7 @@ export const ConsumedApisCard = (props: { variant?: InfoCardVariants }) => {
}
- columns={apiEntityColumns}
+ columns={columns}
entities={entities as ApiEntity[]}
/>
);
diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
index b09cafacda..b8aef1bca4 100644
--- a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
@@ -33,7 +33,7 @@ import {
WarningPanel,
} from '@backstage/core-components';
-const columns: TableColumn[] = [
+const presetColumns: TableColumn[] = [
EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }),
EntityTable.columns.createOwnerColumn(),
createSpecApiTypeColumn(),
@@ -44,8 +44,11 @@ const columns: TableColumn[] = [
/**
* @public
*/
-export const HasApisCard = (props: { variant?: InfoCardVariants }) => {
- const { variant = 'gridItem' } = props;
+export const HasApisCard = (props: {
+ variant?: InfoCardVariants;
+ columns?: TableColumn[];
+}) => {
+ const { variant = 'gridItem', columns = presetColumns } = props;
const { entity } = useEntity();
const { entities, loading, error } = useRelatedEntities(entity, {
type: RELATION_HAS_PART,
diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
index e9c63d9956..886ba17ba5 100644
--- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
@@ -29,14 +29,18 @@ import {
InfoCardVariants,
Link,
Progress,
+ TableColumn,
WarningPanel,
} from '@backstage/core-components';
/**
* @public
*/
-export const ProvidedApisCard = (props: { variant?: InfoCardVariants }) => {
- const { variant = 'gridItem' } = props;
+export const ProvidedApisCard = (props: {
+ variant?: InfoCardVariants;
+ columns?: TableColumn[];
+}) => {
+ const { variant = 'gridItem', columns = apiEntityColumns } = props;
const { entity } = useEntity();
const { entities, loading, error } = useRelatedEntities(entity, {
type: RELATION_PROVIDES_API,
@@ -79,7 +83,7 @@ export const ProvidedApisCard = (props: { variant?: InfoCardVariants }) => {
}
- columns={apiEntityColumns}
+ columns={columns}
entities={entities as ApiEntity[]}
/>
);
diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx
index cff21dcf78..c67088476b 100644
--- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx
+++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx
@@ -25,6 +25,9 @@ const useStyles = makeStyles(theme => ({
fontFamily: theme.typography.fontFamily,
color: theme.palette.text.primary,
+ ['& .btn-clear']: {
+ color: theme.palette.text.primary,
+ },
[`& .scheme-container`]: {
backgroundColor: theme.palette.background.default,
},
diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md
index b3d1d90f53..8e48be2ab8 100644
--- a/plugins/apollo-explorer/CHANGELOG.md
+++ b/plugins/apollo-explorer/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-apollo-explorer
+## 0.1.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.1.9-next.0
### Patch Changes
diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json
index 8251dac9b9..0fcc315797 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.9-next.0",
+ "version": "0.1.9-next.2",
"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 ef9392a626..79c8276eeb 100644
--- a/plugins/app-backend/CHANGELOG.md
+++ b/plugins/app-backend/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-app-backend
+## 0.3.43-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.3.43-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config-loader@1.1.9-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.3.43-next.0
### Patch Changes
diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json
index 203faaa517..77804372d1 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.43-next.0",
+ "version": "0.3.43-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 5e2b975fc1..a22b2e40ee 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-auth-backend
+## 0.18.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.18.1-next.1
+
+### Patch Changes
+
+- 86cece2c1fb: Updated dependency `@types/passport-microsoft` to `^1.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
## 0.18.1-next.0
### Patch Changes
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index a65377276e..bcc62814ed 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.18.1-next.0",
+ "version": "0.18.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/auth-backend/src/providers/bitbucketServer/provider.ts b/plugins/auth-backend/src/providers/bitbucketServer/provider.ts
index fb8dd3d5b8..220f6db5cd 100644
--- a/plugins/auth-backend/src/providers/bitbucketServer/provider.ts
+++ b/plugins/auth-backend/src/providers/bitbucketServer/provider.ts
@@ -216,7 +216,7 @@ export class BitbucketServerAuthProvider implements OAuthHandlers {
throw new Error(`Failed to retrieve the user '${username}'`);
}
- const user = (await userResponse.json()) as any;
+ const user = await userResponse.json();
const passportProfile = {
provider: 'bitbucketServer',
diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md
index 9f0609bd7a..0e7bcefae2 100644
--- a/plugins/auth-node/CHANGELOG.md
+++ b/plugins/auth-node/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-auth-node
+## 0.2.12-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.12-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.2.12-next.0
### Patch Changes
diff --git a/plugins/auth-node/api-report.md b/plugins/auth-node/api-report.md
index c6d4b4e3f8..bc9e392929 100644
--- a/plugins/auth-node/api-report.md
+++ b/plugins/auth-node/api-report.md
@@ -29,11 +29,9 @@ export class DefaultIdentityClient implements IdentityApi {
authenticate(token: string | undefined): Promise;
static create(options: IdentityClientOptions): DefaultIdentityClient;
// (undocumented)
- getIdentity({
- request,
- }: IdentityApiGetIdentityRequest): Promise<
- BackstageIdentityResponse | undefined
- >;
+ getIdentity(
+ options: IdentityApiGetIdentityRequest,
+ ): Promise;
}
// @public
diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json
index fcb0ed8e48..093b23add9 100644
--- a/plugins/auth-node/package.json
+++ b/plugins/auth-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-node",
- "version": "0.2.12-next.0",
+ "version": "0.2.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/auth-node/src/DefaultIdentityClient.ts b/plugins/auth-node/src/DefaultIdentityClient.ts
index b8f6b73865..8af8bf09e1 100644
--- a/plugins/auth-node/src/DefaultIdentityClient.ts
+++ b/plugins/auth-node/src/DefaultIdentityClient.ts
@@ -78,13 +78,16 @@ export class DefaultIdentityClient implements IdentityApi {
: ['ES256'];
}
- async getIdentity({ request }: IdentityApiGetIdentityRequest) {
- if (!request.headers.authorization) {
+ async getIdentity(options: IdentityApiGetIdentityRequest) {
+ const {
+ request: { headers },
+ } = options;
+ if (!headers.authorization) {
return undefined;
}
try {
return await this.authenticate(
- getBearerTokenFromAuthorizationHeader(request.headers.authorization),
+ getBearerTokenFromAuthorizationHeader(headers.authorization),
);
} catch (e) {
throw new AuthenticationError(e.message);
diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md
index 2f28ddd584..a4a7492ffc 100644
--- a/plugins/azure-devops-backend/CHANGELOG.md
+++ b/plugins/azure-devops-backend/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-azure-devops-backend
+## 0.3.22-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.3.22-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-azure-devops-common@0.3.0
+
## 0.3.22-next.0
### Patch Changes
diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json
index a8baac3673..1d921a468a 100644
--- a/plugins/azure-devops-backend/package.json
+++ b/plugins/azure-devops-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-backend",
- "version": "0.3.22-next.0",
+ "version": "0.3.22-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 3df7331474..b9fcc646b7 100644
--- a/plugins/azure-devops/CHANGELOG.md
+++ b/plugins/azure-devops/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-azure-devops
+## 0.2.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.7-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-azure-devops-common@0.3.0
+
## 0.2.7-next.0
### Patch Changes
diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json
index 4174675f03..f8bc46f422 100644
--- a/plugins/azure-devops/package.json
+++ b/plugins/azure-devops/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops",
- "version": "0.2.7-next.0",
+ "version": "0.2.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md
index 32fba35d47..9bc9b99388 100644
--- a/plugins/azure-sites-backend/CHANGELOG.md
+++ b/plugins/azure-sites-backend/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-azure-sites-backend
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-azure-sites-common@0.1.0
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json
index 50618bb0ad..3cb7023933 100644
--- a/plugins/azure-sites-backend/package.json
+++ b/plugins/azure-sites-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-sites-backend",
- "version": "0.1.5-next.0",
+ "version": "0.1.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md
index e755c154ce..1de9e7a804 100644
--- a/plugins/azure-sites/CHANGELOG.md
+++ b/plugins/azure-sites/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-azure-sites
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-azure-sites-common@0.1.0
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json
index 7d37bf287a..6daadf199a 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.5-next.0",
+ "version": "0.1.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
index a4d833fa15..5d1a5ee73b 100644
--- a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
+++ b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
@@ -15,7 +15,6 @@
*/
import React from 'react';
-import { render } from '@testing-library/react';
import {
AnyApiRef,
configApiRef,
@@ -24,6 +23,7 @@ import {
} from '@backstage/core-plugin-api';
import { rest } from 'msw';
import {
+ renderInTestApp,
setupRequestMockHandlers,
TestApiProvider,
} from '@backstage/test-utils';
@@ -65,7 +65,7 @@ describe('AzureSitesOverviewWidget', () => {
});
it('should display an overview table with the data from the requests', async () => {
- const rendered = render(
+ const rendered = await renderInTestApp(
,
diff --git a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.tsx b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.tsx
index 5b67fe844a..16321cd464 100644
--- a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.tsx
+++ b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.tsx
@@ -28,6 +28,7 @@ import {
import { default as MuiAlert } from '@material-ui/lab/Alert';
import { AzureSite } from '@backstage/plugin-azure-sites-common';
import { Table, TableColumn, Link } from '@backstage/core-components';
+import { useTheme } from '@material-ui/core/styles';
import FlashOnIcon from '@material-ui/icons/FlashOn';
import PublicIcon from '@material-ui/icons/Public';
import MoreVertIcon from '@material-ui/icons/MoreVert';
@@ -38,18 +39,27 @@ import OpenInNewIcon from '@material-ui/icons/OpenInNew';
import { DateTime } from 'luxon';
import { useApi } from '@backstage/core-plugin-api';
import { azureSiteApiRef } from '../../api';
+import { BackstageTheme } from '@backstage/theme';
type States = 'Waiting' | 'Running' | 'Paused' | 'Failed' | 'Stopped';
type Kinds = 'app' | 'functionapp';
const State = ({ value }: { value: States }) => {
+ const {
+ palette: {
+ common: { black },
+ status: { ok, error },
+ },
+ } = useTheme();
+
const colorMap = {
Waiting: '#dcbc21',
- Running: 'green',
- Paused: 'black',
- Failed: 'red',
- Stopped: 'black',
+ Running: ok,
+ Paused: black,
+ Failed: error,
+ Stopped: black,
};
+
return (
{
target: 'https://testbucket.s3.us-east-2.amazonaws.com',
};
+ beforeEach(() => {
+ s3Client.reset();
+ s3Client.on(ListObjectsV2Command).resolves(output);
+ s3Client.on(GetObjectCommand).resolves({
+ Body: sdkStreamMixin(
+ fs.createReadStream(
+ path.resolve(__dirname, '__fixtures__/awsS3-mock-object.txt'),
+ ),
+ ),
+ });
+ });
+
it('should load from url', async () => {
const generated = (await new Promise(emit =>
processor.readLocation(
diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md
index 3dbd990f57..86566d383f 100644
--- a/plugins/catalog-backend-module-azure/CHANGELOG.md
+++ b/plugins/catalog-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/plugin-catalog-backend-module-azure
+## 0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json
index 1594e88955..ab68d31c0e 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.14-next.0",
+ "version": "0.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
index c506ddc588..b1de810710 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-catalog-backend-module-bitbucket-cloud
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json
index 470ab9b813..dcee7f5811 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.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
index 938f731df3..00341a3870 100644
--- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-backend-module-bitbucket-server
+## 0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.8-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.1.8-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json
index d96e7c91f9..057153a9c3 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.8-next.0",
+ "version": "0.1.8-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 d082563115..eef6da4c0e 100644
--- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-catalog-backend-module-bitbucket
+## 0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
## 0.2.10-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json
index 4f10b4c567..b77d74c59d 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.10-next.0",
+ "version": "0.2.10-next.2",
"deprecated": true,
"main": "src/index.ts",
"types": "src/index.ts",
diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
index 80a5989141..07ab61c8c4 100644
--- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-backend-module-gerrit
+## 0.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.1.11-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json
index b5482affb1..3cf873aecd 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.11-next.0",
+ "version": "0.1.11-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 e4b14ca727..1e0c455391 100644
--- a/plugins/catalog-backend-module-github/CHANGELOG.md
+++ b/plugins/catalog-backend-module-github/CHANGELOG.md
@@ -1,5 +1,40 @@
# @backstage/plugin-catalog-backend-module-github
+## 0.2.6-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.2.6-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-github/api-report.md b/plugins/catalog-backend-module-github/api-report.md
index e2b73d267b..c732740997 100644
--- a/plugins/catalog-backend-module-github/api-report.md
+++ b/plugins/catalog-backend-module-github/api-report.md
@@ -103,7 +103,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
export class GithubLocationAnalyzer implements ScmLocationAnalyzer {
constructor(options: GithubLocationAnalyzerOptions);
// (undocumented)
- analyze({ url, catalogFilename }: AnalyzeOptions): Promise<{
+ analyze(options: AnalyzeOptions): Promise<{
existing: {
location: {
type: string;
diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json
index 5a528a8e05..fe9183917e 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.2.6-next.0",
+ "version": "0.2.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts
index 139a92ee83..9341743413 100644
--- a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts
+++ b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts
@@ -63,7 +63,8 @@ export class GithubLocationAnalyzer implements ScmLocationAnalyzer {
return integration?.type === 'github';
}
- async analyze({ url, catalogFilename }: AnalyzeOptions) {
+ async analyze(options: AnalyzeOptions) {
+ const { url, catalogFilename } = options;
const { owner, name: repo } = parseGitUrl(url);
const catalogFile = catalogFilename || 'catalog-info.yaml';
diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
index 67bb23d79e..491d972754 100644
--- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,39 @@
# @backstage/plugin-catalog-backend-module-gitlab
+## 0.1.14-next.2
+
+### Patch Changes
+
+- be129f8f3cd: filter gitlab groups by prefix
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- af1095f1e11: The configuration key `branch` of the `GitlabDiscoveryEntityProvider` has been deprecated in favor of the configuration key `fallbackBranch`.
+ It will be reused in future release to enforce a concrete branch to be used in catalog file discovery.
+ To migrate to the new configuration value, rename `branch` to `fallbackBranch`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json
index be78589199..2535be8fea 100644
--- a/plugins/catalog-backend-module-gitlab/package.json
+++ b/plugins/catalog-backend-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-gitlab",
"description": "A Backstage catalog backend module that helps integrate towards GitLab",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts
index 74649f41da..cff215acd3 100644
--- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts
@@ -184,7 +184,6 @@ describe('GitlabOrgDiscoveryEntityProvider', () => {
gitlab: {
'test-id': {
host: 'test-gitlab',
- group: 'test-group',
orgEnabled: true,
},
},
@@ -350,9 +349,10 @@ describe('GitlabOrgDiscoveryEntityProvider', () => {
kind: 'User',
metadata: {
annotations: {
- 'backstage.io/managed-by-location': 'url:test-gitlab/test1',
+ 'backstage.io/managed-by-location':
+ 'url:https://test-gitlab/test1',
'backstage.io/managed-by-origin-location':
- 'url:test-gitlab/test1',
+ 'url:https://test-gitlab/test1',
'test-gitlab/user-login': 'https://gitlab.example/test1',
},
name: 'test1',
@@ -375,9 +375,9 @@ describe('GitlabOrgDiscoveryEntityProvider', () => {
metadata: {
annotations: {
'backstage.io/managed-by-location':
- 'url:test-gitlab/teams/group1-group2',
+ 'url:https://test-gitlab/group1/group2',
'backstage.io/managed-by-origin-location':
- 'url:test-gitlab/teams/group1-group2',
+ 'url:https://test-gitlab/group1/group2',
'test-gitlab/team-path': 'group1/group2',
},
description: 'Group2',
diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts
index ad9d9dae79..db1efac86d 100644
--- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts
+++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts
@@ -202,6 +202,13 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
continue;
}
+ if (
+ this.config.group &&
+ !group.full_path.startsWith(`${this.config.group}/`)
+ ) {
+ continue;
+ }
+
groupRes.scanned++;
groupRes.matches.push(group);
@@ -256,7 +263,11 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
type: 'full',
entities: [...userEntities, ...groupEntities].map(entity => ({
locationKey: this.getProviderName(),
- entity: this.withLocations(this.integration.config.host, entity),
+ entity: this.withLocations(
+ this.integration.config.host,
+ this.integration.config.baseUrl,
+ entity,
+ ),
})),
});
}
@@ -276,7 +287,9 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
const entity = this.createGroupEntity(group, host);
if (group.parent_id && idMapped.hasOwnProperty(group.parent_id)) {
- entity.spec.parent = idMapped[group.parent_id].full_path;
+ entity.spec.parent = this.groupName(
+ idMapped[group.parent_id].full_path,
+ );
}
entities.push(entity);
@@ -285,11 +298,11 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
return entities;
}
- private withLocations(host: string, entity: Entity): Entity {
+ private withLocations(host: string, baseUrl: string, entity: Entity): Entity {
const location =
entity.kind === 'Group'
- ? `url:${host}/teams/${entity.metadata.name}`
- : `url:${host}/${entity.metadata.name}`;
+ ? `url:${baseUrl}/${entity.metadata.annotations?.[`${host}/team-path`]}`
+ : `url:${baseUrl}/${entity.metadata.name}`;
return merge(
{
metadata: {
@@ -341,13 +354,22 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
if (!entity.spec.memberOf) {
entity.spec.memberOf = [];
}
- entity.spec.memberOf.push(group.full_path.replace('/', '-'));
+ entity.spec.memberOf.push(this.groupName(group.full_path));
}
}
return entity;
}
+ private groupName(full_path: string): string {
+ if (this.config.group && full_path.startsWith(`${this.config.group}/`)) {
+ return full_path
+ .replace(`${this.config.group}/`, '')
+ .replaceAll('/', '-');
+ }
+ return full_path.replaceAll('/', '-');
+ }
+
private createGroupEntity(group: GitLabGroup, host: string): GroupEntity {
const annotations: { [annotationName: string]: string } = {};
@@ -357,7 +379,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
apiVersion: 'backstage.io/v1alpha1',
kind: 'Group',
metadata: {
- name: group.full_path.replace('/', '-'),
+ name: this.groupName(group.full_path),
annotations: annotations,
},
spec: {
diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
index 88ae72e1a8..11393c6db2 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
+++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
@@ -1,5 +1,39 @@
# @backstage/plugin-catalog-backend-module-incremental-ingestion
+## 0.3.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.3.0-next.1
+
+### Minor Changes
+
+- a811bd246c4: Added endpoint to get a list of known incremental entity providers
+
+### Patch Changes
+
+- 6e612b58577: Move `@backstage/backend-defaults` to `devDependencies`
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.2.2-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json
index e3f6be3a88..0d0b84cd88 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.2.2-next.0",
+ "version": "0.3.0-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 e2c358d1a4..5e176f09ba 100644
--- a/plugins/catalog-backend-module-ldap/CHANGELOG.md
+++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-catalog-backend-module-ldap
+## 0.5.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.5.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
## 0.5.10-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json
index dfca9332c0..2cf1135693 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.10-next.0",
+ "version": "0.5.10-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 c7c64da5a0..dc1a32f25a 100644
--- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md
+++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/plugin-catalog-backend-module-msgraph
+## 0.5.2-next.2
+
+### Patch Changes
+
+- 26eef93c547: Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.5.2-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.5.2-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json
index 29909d4c50..22c2a422d2 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.2-next.0",
+ "version": "0.5.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
index 003448a3e8..ccf4c51556 100644
--- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
@@ -46,8 +46,8 @@ export async function readMicrosoftGraphUsers(
client: MicrosoftGraphClient,
options: {
queryMode?: 'basic' | 'advanced';
- userFilter?: string;
userExpand?: string;
+ userFilter?: string;
userSelect?: string[];
transformer?: UserTransformer;
logger: Logger;
@@ -80,6 +80,7 @@ export async function readMicrosoftGraphUsersInGroups(
options: {
queryMode?: 'basic' | 'advanced';
userExpand?: string;
+ userFilter?: string;
userSelect?: string[];
userGroupMemberSearch?: string;
userGroupMemberFilter?: string;
@@ -98,8 +99,8 @@ export async function readMicrosoftGraphUsersInGroups(
for await (const group of client.getGroups(
{
expand: options.groupExpand,
- search: options.userGroupMemberSearch,
filter: options.userGroupMemberFilter,
+ search: options.userGroupMemberSearch,
select: ['id', 'displayName'],
top: PAGE_SIZE,
},
@@ -113,6 +114,8 @@ export async function readMicrosoftGraphUsersInGroups(
group.id!,
{
expand: options.userExpand,
+ filter: options.userFilter,
+ select: options.userSelect,
top: PAGE_SIZE,
},
options.queryMode,
@@ -199,8 +202,8 @@ export async function readMicrosoftGraphGroups(
for await (const group of client.getGroups(
{
expand: options?.groupExpand,
- search: options?.groupSearch,
filter: options?.groupFilter,
+ search: options?.groupSearch,
select: options?.groupSelect,
top: PAGE_SIZE,
},
@@ -383,6 +386,9 @@ export async function readMicrosoftGraphOrg(
client,
{
queryMode: options.queryMode,
+ userExpand: options.userExpand,
+ userFilter: options.userFilter,
+ userSelect: options.userSelect,
userGroupMemberFilter: options.userGroupMemberFilter,
userGroupMemberSearch: options.userGroupMemberSearch,
transformer: options.userTransformer,
@@ -393,9 +399,9 @@ export async function readMicrosoftGraphOrg(
} else {
const { users: usersWithFilter } = await readMicrosoftGraphUsers(client, {
queryMode: options.queryMode,
+ userExpand: options.userExpand,
userFilter: options.userFilter,
userSelect: options.userSelect,
- userExpand: options.userExpand,
transformer: options.userTransformer,
logger: options.logger,
});
@@ -404,8 +410,9 @@ export async function readMicrosoftGraphOrg(
const { groups, rootGroup, groupMember, groupMemberOf } =
await readMicrosoftGraphGroups(client, tenantId, {
queryMode: options.queryMode,
- groupSearch: options.groupSearch,
+ groupExpand: options.groupExpand,
groupFilter: options.groupFilter,
+ groupSearch: options.groupSearch,
groupSelect: options.groupSelect,
groupTransformer: options.groupTransformer,
organizationTransformer: options.organizationTransformer,
diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts
index 5c1a7f9e1c..071fa7f266 100644
--- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts
+++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts
@@ -308,10 +308,11 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
provider.tenantId,
{
userExpand: provider.userExpand,
- groupExpand: provider.groupExpand,
userFilter: provider.userFilter,
+ userSelect: provider.userSelect,
userGroupMemberFilter: provider.userGroupMemberFilter,
userGroupMemberSearch: provider.userGroupMemberSearch,
+ groupExpand: provider.groupExpand,
groupFilter: provider.groupFilter,
groupSearch: provider.groupSearch,
groupSelect: provider.groupSelect,
diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md
index a1d43e6954..8bf478947a 100644
--- a/plugins/catalog-backend-module-openapi/CHANGELOG.md
+++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-catalog-backend-module-openapi
+## 0.1.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+
## 0.1.9-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json
index 3407eeb0e6..fee080d1bf 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.9-next.0",
+ "version": "0.1.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-puppetdb/.eslintrc.js b/plugins/catalog-backend-module-puppetdb/.eslintrc.js
new file mode 100644
index 0000000000..e2a53a6ad2
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
new file mode 100644
index 0000000000..5bc50ae148
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
@@ -0,0 +1,15 @@
+# @backstage/plugin-catalog-backend-module-puppetdb
+
+## 0.1.0-next.0
+
+### Minor Changes
+
+- a1efcf9a658: Initial version of the plugin.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/config@1.0.7-next.0
diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md
new file mode 100644
index 0000000000..d4782c6d18
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/README.md
@@ -0,0 +1,90 @@
+# Catalog Backend Module for Puppet
+
+This is an extension module to the `plugin-catalog-backend` plugin, providing an `PuppetDbEntityProvider` that can be used to ingest
+[Resource entities](https://backstage.io/docs/features/software-catalog/descriptor-format#kind-resource) from a
+[PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html) instance(s). This provider is useful if you want to import nodes
+from your PuppetDB into Backstage.
+
+## Installation
+
+The provider is not installed by default, therefore you have to add a dependency to `@backstage/plugin-catalog-backend-module-puppetdb`
+to your backend package:
+
+```bash
+# From your Backstage root directory
+yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-puppetdb
+```
+
+Update the catalog plugin initialization in your backend to add the provider and schedule it:
+
+```diff
++ import { PuppetDbEntityProvider } from '@backstage/plugin-catalog-backend-module-puppetdb';
+
+ export default async function createPlugin(
+ env: PluginEnvironment,
+ ): Promise {
+ const builder = await CatalogBuilder.create(env);
+
++ builder.addEntityProvider(
++ PuppetDbEntityProvider.fromConfig(env.config, {
++ logger: env.logger,
++ schedule: env.scheduler.createScheduledTaskRunner({
++ frequency: { minutes: 10 },
++ timeout: { minutes: 50 },
++ initialDelay: { seconds: 15}
++ }),
++ });
++ );
+```
+
+After this, you also have to add some configuration in your app-config that describes what you want to import for that target.
+
+## Configuration
+
+The following configuration is an example of how a setup could look for importing nodes from an internal PuppetDB instance:
+
+```yaml
+catalog:
+ providers:
+ puppetdb:
+ default:
+ # (Required) The base URL of PuppetDB API instance:
+ baseUrl: https://puppetdb.example.com
+
+ # (Optional) Query to filter PuppetDB nodes:
+ #query: '["=","certname","example.com"]'
+```
+
+## Customize the Provider
+
+The default ingestion behaviour will likely not work for all use cases - you will want to set proper `Owner`, `System` and other fields for the
+ingested resources. In case you want to customize the ingested entities, the provider allows to pass a transformer for resources. Here we will show an example
+of overriding the default transformer.
+
+1. Create a transformer:
+
+```ts
+export const customResourceTransformer: ResourceTransformer = async (
+ node,
+ config,
+): Promise => {
+ // Transformations may change namespace, owner, change entity naming pattern, add labels, annotations, etc.
+
+ // Create the Resource Entity on your own, or wrap the default transformer
+ return await defaultResourceTransformer(node, config);
+};
+```
+
+2. Configure the provider with the transformer:
+
+```ts
+const puppetDbEntityProvider = PuppetDbEntityProvider.fromConfig(env.config, {
+ logger: env.logger,
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { minutes: 10 },
+ timeout: { minutes: 50 },
+ initialDelay: { seconds: 15 },
+ }),
+ transformer: customResourceTransformer,
+});
+```
diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md
new file mode 100644
index 0000000000..8764ac1e7c
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/api-report.md
@@ -0,0 +1,79 @@
+## API Report File for "@backstage/plugin-catalog-backend-module-puppetdb"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+import { Config } from '@backstage/config';
+import { EntityProvider } from '@backstage/plugin-catalog-backend';
+import { EntityProviderConnection } from '@backstage/plugin-catalog-backend';
+import { JsonValue } from '@backstage/types';
+import { Logger } from 'winston';
+import { PluginTaskScheduler } from '@backstage/backend-tasks';
+import { ResourceEntity } from '@backstage/catalog-model';
+import { TaskRunner } from '@backstage/backend-tasks';
+import { TaskScheduleDefinition } from '@backstage/backend-tasks';
+
+// @public
+export const ANNOTATION_PUPPET_CERTNAME = 'puppet.com/certname';
+
+// @public
+export const DEFAULT_PROVIDER_ID = 'default';
+
+// @public
+export const defaultResourceTransformer: ResourceTransformer;
+
+// @public
+export class PuppetDbEntityProvider implements EntityProvider {
+ // (undocumented)
+ connect(connection: EntityProviderConnection): Promise;
+ static fromConfig(
+ config: Config,
+ deps: {
+ logger: Logger;
+ schedule?: TaskRunner;
+ scheduler?: PluginTaskScheduler;
+ transformer?: ResourceTransformer;
+ },
+ ): PuppetDbEntityProvider[];
+ // (undocumented)
+ getProviderName(): string;
+ refresh(logger: Logger): Promise;
+}
+
+// @public
+export type PuppetDbEntityProviderConfig = {
+ id: string;
+ baseUrl: string;
+ query?: string;
+ schedule?: TaskScheduleDefinition;
+};
+
+// @public
+export type PuppetFact = {
+ name: string;
+ value: JsonValue;
+};
+
+// @public
+export type PuppetFactSet = {
+ data: PuppetFact[];
+ href: string;
+};
+
+// @public
+export type PuppetNode = {
+ timestamp: string;
+ certname: string;
+ hash: string;
+ producer_timestamp: string;
+ producer: string;
+ environment: string;
+ facts: PuppetFactSet;
+};
+
+// @public
+export type ResourceTransformer = (
+ node: PuppetNode,
+ config: PuppetDbEntityProviderConfig,
+) => Promise;
+```
diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts
new file mode 100644
index 0000000000..edd7ab3889
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/config.d.ts
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { TaskScheduleDefinition } from '@backstage/backend-tasks';
+
+/**
+ * Represents the configuration for the Backstage.
+ */
+export interface Config {
+ /**
+ * Configuration for the catalog.
+ */
+ catalog?: {
+ /**
+ * Configuration for the providers.
+ */
+ providers?: {
+ /**
+ * PuppetDB Entity Provider configuration. Uses "default" as default ID for the single config variant.
+ */
+ puppetdb?:
+ | {
+ /**
+ * (Required) The base URL of PuppetDB API instance.
+ */
+ baseUrl: string;
+ /**
+ * (Optional) PQL query to filter PuppetDB nodes.
+ */
+ query?: string;
+ /**
+ * (Optional) Task schedule definition for the refresh.
+ */
+ schedule?: TaskScheduleDefinition;
+ }
+ | Record<
+ string,
+ {
+ /**
+ * (Required) The base URL of PuppetDB API instance.
+ */
+ baseUrl: string;
+ /**
+ * (Optional) PQL query to filter PuppetDB nodes.
+ */
+ query?: string;
+ /**
+ * (Optional) Task schedule definition for the refresh.
+ */
+ schedule?: TaskScheduleDefinition;
+ }
+ >;
+ };
+ };
+}
diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json
new file mode 100644
index 0000000000..861b535f4d
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/package.json
@@ -0,0 +1,61 @@
+{
+ "name": "@backstage/plugin-catalog-backend-module-puppetdb",
+ "description": "A Backstage catalog backend module that helps integrate towards PuppetDB",
+ "version": "0.1.0-next.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.cjs.js",
+ "types": "dist/index.d.ts"
+ },
+ "backstage": {
+ "role": "backend-plugin-module"
+ },
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-backend-module-puppetdb"
+ },
+ "keywords": [
+ "backstage",
+ "puppetdb",
+ "puppet"
+ ],
+ "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-tasks": "workspace:^",
+ "@backstage/catalog-model": "workspace:^",
+ "@backstage/config": "workspace:^",
+ "@backstage/errors": "workspace:^",
+ "@backstage/plugin-catalog-backend": "workspace:^",
+ "@backstage/types": "workspace:^",
+ "lodash": "^4.17.21",
+ "luxon": "^3.0.0",
+ "node-fetch": "^2.6.7",
+ "uuid": "^8.0.0",
+ "winston": "^3.2.1"
+ },
+ "devDependencies": {
+ "@backstage/backend-test-utils": "workspace:^",
+ "@backstage/cli": "workspace:^",
+ "@types/lodash": "^4.14.151",
+ "msw": "^0.49.0"
+ },
+ "files": [
+ "dist",
+ "config.d.ts"
+ ],
+ "configSchema": "config.d.ts"
+}
diff --git a/plugins/catalog-backend-module-puppetdb/src/index.ts b/plugins/catalog-backend-module-puppetdb/src/index.ts
new file mode 100644
index 0000000000..b5c5f9d209
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/index.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A Backstage catalog backend module that helps integrate towards PuppetDB
+ *
+ * @packageDocumentation
+ */
+
+export * from './providers';
+export * from './puppet';
diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts
new file mode 100644
index 0000000000..0ab6fb35b7
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts
@@ -0,0 +1,219 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks';
+import { ConfigReader } from '@backstage/config';
+import { getVoidLogger } from '@backstage/backend-common';
+import { PuppetDbEntityProvider } from './PuppetDbEntityProvider';
+import {
+ DeferredEntity,
+ EntityProviderConnection,
+} from '@backstage/plugin-catalog-backend';
+import * as puppetFunctions from '../puppet/read';
+import { ANNOTATION_PUPPET_CERTNAME } from '../puppet';
+import {
+ ANNOTATION_LOCATION,
+ ANNOTATION_ORIGIN_LOCATION,
+ ResourceEntity,
+} from '@backstage/catalog-model/';
+import { DEFAULT_ENTITY_OWNER, ENDPOINT_NODES } from '../puppet/constants';
+
+jest.mock('../puppet/read', () => {
+ return {
+ readPuppetNodes: jest.fn(),
+ };
+});
+
+const logger = getVoidLogger();
+
+class PersistingTaskRunner implements TaskRunner {
+ private tasks: TaskInvocationDefinition[] = [];
+
+ getTasks() {
+ return this.tasks;
+ }
+
+ run(task: TaskInvocationDefinition): Promise {
+ this.tasks.push(task);
+ return Promise.resolve(undefined);
+ }
+}
+
+describe('PuppetEntityProvider', () => {
+ const config = new ConfigReader({
+ catalog: {
+ providers: {
+ puppetdb: {
+ baseUrl: 'http://puppetdb:8080',
+ schedule: {
+ frequency: {
+ minutes: 10,
+ },
+ timeout: {
+ minutes: 10,
+ },
+ },
+ },
+ },
+ },
+ });
+
+ describe('where there are no nodes', () => {
+ beforeEach(() => {
+ jest.spyOn(puppetFunctions, 'readPuppetNodes').mockResolvedValueOnce([]);
+ });
+
+ it('creates no entities', async () => {
+ const connection: EntityProviderConnection = {
+ applyMutation: jest.fn(),
+ refresh: jest.fn(),
+ };
+ const providers = PuppetDbEntityProvider.fromConfig(config, {
+ logger,
+ schedule: new PersistingTaskRunner(),
+ });
+
+ await providers[0].connect(connection);
+ await providers[0].refresh(logger);
+
+ expect(connection.applyMutation).toHaveBeenCalledWith({
+ type: 'full',
+ entities: [],
+ });
+ });
+ });
+
+ describe('where there are nodes', () => {
+ beforeEach(() => {
+ jest.spyOn(puppetFunctions, 'readPuppetNodes').mockResolvedValueOnce([
+ {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'node1',
+ namespace: 'default',
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: 'node1',
+ },
+ tags: ['windows'],
+ description: 'Description 1',
+ },
+ spec: {
+ type: 'virtual-machine',
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ },
+ {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'node2',
+ namespace: 'default',
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: 'node2',
+ },
+ tags: ['linux'],
+ description: 'Description 2',
+ },
+ spec: {
+ type: 'physical-server',
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ },
+ ] as ResourceEntity[]);
+ });
+
+ it('creates entities', async () => {
+ const connection: EntityProviderConnection = {
+ applyMutation: jest.fn(),
+ refresh: jest.fn(),
+ };
+ const providers = PuppetDbEntityProvider.fromConfig(config, {
+ logger,
+ schedule: new PersistingTaskRunner(),
+ });
+
+ await providers[0].connect(connection);
+ await providers[0].refresh(logger);
+
+ expect(connection.applyMutation).toHaveBeenCalledWith({
+ type: 'full',
+ entities: [
+ {
+ locationKey: providers[0].getProviderName(),
+ entity: {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'node1',
+ namespace: 'default',
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: 'node1',
+ [ANNOTATION_LOCATION]: `url:${config.getString(
+ 'catalog.providers.puppetdb.baseUrl',
+ )}/${ENDPOINT_NODES}/node1`,
+ [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString(
+ 'catalog.providers.puppetdb.baseUrl',
+ )}/${ENDPOINT_NODES}/node1`,
+ },
+ tags: ['windows'],
+ description: 'Description 1',
+ },
+ spec: {
+ type: 'virtual-machine',
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ },
+ },
+ {
+ locationKey: providers[0].getProviderName(),
+ entity: {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'node2',
+ namespace: 'default',
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: 'node2',
+ [ANNOTATION_LOCATION]: `url:${config.getString(
+ 'catalog.providers.puppetdb.baseUrl',
+ )}/${ENDPOINT_NODES}/node2`,
+ [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString(
+ 'catalog.providers.puppetdb.baseUrl',
+ )}/${ENDPOINT_NODES}/node2`,
+ },
+ tags: ['linux'],
+ description: 'Description 2',
+ },
+ spec: {
+ type: 'physical-server',
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ },
+ },
+ ] as DeferredEntity[],
+ });
+ });
+ });
+});
diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts
new file mode 100644
index 0000000000..b2d2738fd3
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {
+ EntityProvider,
+ EntityProviderConnection,
+} from '@backstage/plugin-catalog-backend';
+import { Logger } from 'winston';
+import {
+ PuppetDbEntityProviderConfig,
+ readProviderConfigs,
+} from './PuppetDbEntityProviderConfig';
+import { Config } from '@backstage/config';
+import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks';
+import * as uuid from 'uuid';
+import { ResourceTransformer, defaultResourceTransformer } from '../puppet';
+import {
+ ANNOTATION_LOCATION,
+ ANNOTATION_ORIGIN_LOCATION,
+ Entity,
+} from '@backstage/catalog-model/';
+import { merge } from 'lodash';
+import { readPuppetNodes } from '../puppet/read';
+import { ENDPOINT_NODES } from '../puppet/constants';
+
+/**
+ * Reads nodes from [PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html)
+ * based on the provided query and registers them as Resource entities in the catalog.
+ *
+ * @public
+ */
+export class PuppetDbEntityProvider implements EntityProvider {
+ private readonly config: PuppetDbEntityProviderConfig;
+ private readonly logger: Logger;
+ private readonly scheduleFn: () => Promise;
+ private readonly transformer: ResourceTransformer;
+ private connection?: EntityProviderConnection;
+
+ /**
+ * Creates instances of {@link PuppetDbEntityProvider} from a configuration.
+ *
+ * @param config - The configuration to read provider information from.
+ * @param deps - The dependencies for {@link PuppetDbEntityProvider}.
+ *
+ * @returns A list of {@link PuppetDbEntityProvider} instances.
+ */
+ static fromConfig(
+ config: Config,
+ deps: {
+ logger: Logger;
+ schedule?: TaskRunner;
+ scheduler?: PluginTaskScheduler;
+ transformer?: ResourceTransformer;
+ },
+ ): PuppetDbEntityProvider[] {
+ if (!deps.schedule && !deps.scheduler) {
+ throw new Error('Either schedule or scheduler must be provided.');
+ }
+
+ return readProviderConfigs(config).map(providerConfig => {
+ if (!deps.schedule && !providerConfig.schedule) {
+ throw new Error(
+ `No schedule provided neither via code nor config for puppet-provider:${providerConfig.id}.`,
+ );
+ }
+
+ const taskRunner =
+ deps.schedule ??
+ deps.scheduler!.createScheduledTaskRunner(providerConfig.schedule!);
+
+ const transformer = deps.transformer ?? defaultResourceTransformer;
+
+ return new PuppetDbEntityProvider(
+ providerConfig,
+ deps.logger,
+ taskRunner,
+ transformer,
+ );
+ });
+ }
+
+ /**
+ * Creates an instance of {@link PuppetDbEntityProvider}.
+ *
+ * @param config - Configuration of the provider.
+ * @param logger - The instance of a {@link Logger}.
+ * @param taskRunner - The instance of {@link TaskRunner}.
+ * @param transformer - A {@link ResourceTransformer} function.
+ *
+ * @private
+ */
+ private constructor(
+ config: PuppetDbEntityProviderConfig,
+ logger: Logger,
+ taskRunner: TaskRunner,
+ transformer: ResourceTransformer,
+ ) {
+ this.config = config;
+ this.logger = logger.child({
+ target: this.getProviderName(),
+ });
+ this.scheduleFn = this.createScheduleFn(taskRunner);
+ this.transformer = transformer;
+ }
+
+ /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.connect} */
+ async connect(connection: EntityProviderConnection): Promise {
+ this.connection = connection;
+ await this.scheduleFn();
+ }
+
+ /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.getProviderName} */
+ getProviderName(): string {
+ return `puppetdb-provider:${this.config.id}`;
+ }
+
+ /**
+ * Creates a function that can be used to schedule a refresh of the catalog.
+ *
+ * @param taskRunner - The instance of {@link TaskRunner}.
+ *
+ * @private
+ */
+ private createScheduleFn(taskRunner: TaskRunner): () => Promise {
+ return async () => {
+ const taskId = `${this.getProviderName()}:refresh`;
+ return taskRunner.run({
+ id: taskId,
+ fn: async () => {
+ const logger = this.logger.child({
+ class: PuppetDbEntityProvider.prototype.constructor.name,
+ taskId,
+ taskInstanceId: uuid.v4(),
+ });
+ try {
+ await this.refresh(logger);
+ } catch (error) {
+ logger.error(`${this.getProviderName()} refresh failed`, error);
+ }
+ },
+ });
+ };
+ }
+
+ /**
+ * Refreshes the catalog by reading nodes from PuppetDB and registering them as Resource Entities.
+ *
+ * @param logger - The instance of a Logger.
+ */
+ async refresh(logger: Logger) {
+ if (!this.connection) {
+ throw new Error('Not initialized');
+ }
+
+ const { markReadComplete } = trackProgress(logger);
+ const entities = await readPuppetNodes(this.config, {
+ logger,
+ transformer: this.transformer,
+ });
+ const { markCommitComplete } = markReadComplete(entities);
+
+ await this.connection.applyMutation({
+ type: 'full',
+ entities: [...entities].map(entity => ({
+ locationKey: this.getProviderName(),
+ entity: withLocations(this.config.baseUrl, entity),
+ })),
+ });
+ markCommitComplete(entities);
+ }
+}
+
+/**
+ * Ensures the entities have required annotation data.
+ *
+ * @param baseUrl - The base URL of the PuppetDB instance.
+ * @param entity - The entity to add the annotations to.
+ *
+ * @returns Entity with @{@link ANNOTATION_LOCATION} and @{@link ANNOTATION_ORIGIN_LOCATION} annotations.
+ */
+function withLocations(baseUrl: string, entity: Entity): Entity {
+ const location = `${baseUrl}/${ENDPOINT_NODES}/${entity.metadata?.name}`;
+
+ return merge(
+ {
+ metadata: {
+ annotations: {
+ [ANNOTATION_LOCATION]: `url:${location}`,
+ [ANNOTATION_ORIGIN_LOCATION]: `url:${location}`,
+ },
+ },
+ },
+ entity,
+ ) as Entity;
+}
+
+/**
+ * Tracks the progress of the PuppetDB read and commit operations.
+ *
+ * @param logger - The instance of a {@link Logger}.
+ */
+function trackProgress(logger: Logger) {
+ let timestamp = Date.now();
+
+ function markReadComplete(entities: Entity[]) {
+ const readDuration = ((Date.now() - timestamp) / 1000).toFixed(1);
+ timestamp = Date.now();
+ logger.info(
+ `Read ${entities?.length ?? 0} in ${readDuration} seconds. Committing...`,
+ );
+ return { markCommitComplete };
+ }
+
+ function markCommitComplete(entities: Entity[]) {
+ const commitDuration = ((Date.now() - timestamp) / 1000).toFixed(1);
+ logger.info(
+ `Committed ${entities?.length ?? 0} in ${commitDuration} seconds.`,
+ );
+ }
+
+ return { markReadComplete };
+}
diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts
new file mode 100644
index 0000000000..8da0fb4150
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { ConfigReader } from '@backstage/config';
+import { readProviderConfigs } from './PuppetDbEntityProviderConfig';
+import { Duration } from 'luxon';
+
+describe('readProviderConfigs', () => {
+ afterEach(() => jest.resetAllMocks());
+
+ it('no provider config', () => {
+ const config = new ConfigReader({});
+ const providerConfigs = readProviderConfigs(config);
+
+ expect(providerConfigs).toHaveLength(0);
+ });
+
+ it('single simple provider config', () => {
+ const config = new ConfigReader({
+ catalog: {
+ providers: {
+ puppetdb: {
+ baseUrl: 'https://puppetdb',
+ },
+ },
+ },
+ });
+
+ const providerConfigs = readProviderConfigs(config);
+
+ expect(providerConfigs).toHaveLength(1);
+ expect(providerConfigs[0].id).toEqual('default');
+ expect(providerConfigs[0].baseUrl).toEqual('https://puppetdb');
+ });
+
+ it('single specific provider config', () => {
+ const config = new ConfigReader({
+ catalog: {
+ providers: {
+ puppetdb: {
+ 'my-provider': {
+ baseUrl: 'https://puppetdb',
+ },
+ },
+ },
+ },
+ });
+
+ const providerConfigs = readProviderConfigs(config);
+
+ expect(providerConfigs).toHaveLength(1);
+ expect(providerConfigs[0].id).toEqual('my-provider');
+ expect(providerConfigs[0].baseUrl).toEqual('https://puppetdb');
+ });
+
+ it('multiple provider configs', () => {
+ const config = new ConfigReader({
+ catalog: {
+ providers: {
+ puppetdb: {
+ 'my-provider': {
+ baseUrl: 'https://my-puppet/',
+ query: 'my-query',
+ },
+ 'your-provider': {
+ baseUrl: 'https://your-puppet',
+ query: 'your-query',
+ },
+ },
+ },
+ },
+ });
+
+ const providerConfigs = readProviderConfigs(config);
+
+ expect(providerConfigs).toHaveLength(2);
+ expect(providerConfigs[0]).toEqual({
+ id: 'my-provider',
+ baseUrl: 'https://my-puppet',
+ query: 'my-query',
+ });
+ expect(providerConfigs[1]).toEqual({
+ id: 'your-provider',
+ baseUrl: 'https://your-puppet',
+ query: 'your-query',
+ });
+ });
+
+ it('provider config with schedule', () => {
+ const config = new ConfigReader({
+ catalog: {
+ providers: {
+ puppetdb: {
+ baseUrl: 'https://puppetdb',
+ schedule: {
+ frequency: 'PT30M',
+ timeout: {
+ minutes: 10,
+ },
+ },
+ },
+ },
+ },
+ });
+
+ const providerConfigs = readProviderConfigs(config);
+
+ expect(providerConfigs).toHaveLength(1);
+ expect(providerConfigs[0].schedule).toEqual({
+ frequency: Duration.fromISO('PT30M'),
+ timeout: {
+ minutes: 10,
+ },
+ });
+ });
+});
diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts
new file mode 100644
index 0000000000..7b95b7f387
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {
+ readTaskScheduleDefinitionFromConfig,
+ TaskScheduleDefinition,
+} from '@backstage/backend-tasks';
+import { Config } from '@backstage/config';
+import { DEFAULT_PROVIDER_ID } from './constants';
+
+/**
+ * Configuration of {@link PuppetDbEntityProvider}.
+ *
+ * @public
+ */
+export type PuppetDbEntityProviderConfig = {
+ /**
+ * ID of the provider.
+ */
+ id: string;
+ /**
+ * (Required) The base URL of PuppetDB API instance.
+ */
+ baseUrl: string;
+ /**
+ * (Optional) PQL query to filter PuppetDB nodes.
+ */
+ query?: string;
+ /**
+ * (Optional) Task schedule definition for the refresh.
+ */
+ schedule?: TaskScheduleDefinition;
+};
+
+/**
+ * Reads the configuration of the PuppetDB Entity Providers.
+ *
+ * @param config - The application configuration.
+ *
+ * @returns PuppetDB Entity Provider configurations list.
+ */
+export function readProviderConfigs(
+ config: Config,
+): PuppetDbEntityProviderConfig[] {
+ const providersConfig = config.getOptionalConfig(
+ 'catalog.providers.puppetdb',
+ );
+ if (!providersConfig) {
+ return [];
+ }
+
+ if (providersConfig.has('baseUrl')) {
+ return [readProviderConfig(DEFAULT_PROVIDER_ID, providersConfig)];
+ }
+
+ return providersConfig.keys().map(id => {
+ return readProviderConfig(id, providersConfig.getConfig(id));
+ });
+}
+
+/**
+ * Reads the configuration for the PuppetDB Entity Provider.
+ *
+ * @param id - ID of the provider.
+ * @param config - The application configuration.
+ *
+ * @returns The PuppetDB Entity Provider configuration.
+ */
+function readProviderConfig(
+ id: string,
+ config: Config,
+): PuppetDbEntityProviderConfig {
+ const baseUrl = config.getString('baseUrl').replace(/\/+$/, '');
+ const query = config.getOptionalString('query');
+
+ const schedule = config.has('schedule')
+ ? readTaskScheduleDefinitionFromConfig(config.getConfig('schedule'))
+ : undefined;
+
+ return {
+ id,
+ baseUrl,
+ query,
+ schedule,
+ };
+}
diff --git a/plugins/scaffolder-react/src/components/index.ts b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts
similarity index 74%
rename from plugins/scaffolder-react/src/components/index.ts
rename to plugins/catalog-backend-module-puppetdb/src/providers/constants.ts
index b724ed32b5..ca8a48b374 100644
--- a/plugins/scaffolder-react/src/components/index.ts
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 The Backstage Authors
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,6 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-export { TaskSteps, type StepperProps } from './TaskSteps';
-export { TaskBorder } from './TaskBorder';
-export { TaskLogStream } from './TaskLogStream';
+
+/**
+ * Name of the default provider when a using a simple configuration.
+ *
+ * @public
+ */
+export const DEFAULT_PROVIDER_ID = 'default';
diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts
new file mode 100644
index 0000000000..43d673c30c
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { PuppetDbEntityProvider } from './PuppetDbEntityProvider';
+export type { PuppetDbEntityProviderConfig } from './PuppetDbEntityProviderConfig';
+export { DEFAULT_PROVIDER_ID } from './constants';
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts
new file mode 100644
index 0000000000..730f21ec16
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Annotation for specifying the certificate name of a node in PuppetDB.
+ *
+ * @public
+ */
+export const ANNOTATION_PUPPET_CERTNAME = 'puppet.com/certname';
+
+/**
+ * Path of PuppetDB FactSets endpoint.
+ */
+export const ENDPOINT_FACTSETS = 'pdb/query/v4/factsets';
+
+/**
+ * Path of PuppetDB Nodes endpoint.
+ */
+export const ENDPOINT_NODES = 'pdb/query/v4/nodes';
+
+/**
+ * Default owner for entities created by the PuppetDB provider.
+ *
+ * @public
+ */
+export const DEFAULT_ENTITY_OWNER = 'unknown';
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts
new file mode 100644
index 0000000000..644d111ac1
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { ANNOTATION_PUPPET_CERTNAME } from './constants';
+export { defaultResourceTransformer } from './transformers';
+export type {
+ PuppetNode,
+ PuppetFactSet,
+ PuppetFact,
+ ResourceTransformer,
+} from './types';
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts
new file mode 100644
index 0000000000..c3b750a417
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { readPuppetNodes } from './read';
+import {
+ DEFAULT_PROVIDER_ID,
+ PuppetDbEntityProviderConfig,
+} from '../providers';
+import { DEFAULT_NAMESPACE } from '@backstage/catalog-model';
+import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
+import { rest } from 'msw';
+import { setupServer } from 'msw/node';
+import { ANNOTATION_PUPPET_CERTNAME, ENDPOINT_FACTSETS } from './constants';
+
+describe('readPuppetNodes', () => {
+ const worker = setupServer();
+ setupRequestMockHandlers(worker);
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe('where no query is specified', () => {
+ const config: PuppetDbEntityProviderConfig = {
+ baseUrl: 'https://puppetdb',
+ id: DEFAULT_PROVIDER_ID,
+ };
+
+ beforeEach(async () => {
+ worker.use(
+ rest.get(`${config.baseUrl}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.set('Content-Type', 'application/json'),
+ ctx.json([
+ {
+ certname: 'node1',
+ timestamp: 'time1',
+ hash: 'hash1',
+ producer_timestamp: 'producer_time1',
+ producer: 'producer1',
+ environment: 'environment1',
+ facts: {
+ data: [
+ {
+ name: 'is_virtual',
+ value: true,
+ },
+ {
+ name: 'kernel',
+ value: 'Linux',
+ },
+ {
+ name: 'ipaddress',
+ value: 'ipaddress1',
+ },
+ {
+ name: 'clientnoop',
+ value: true,
+ },
+ {
+ name: 'clientversion',
+ value: 'clientversion1',
+ },
+ ],
+ },
+ },
+ {
+ certname: 'node2',
+ timestamp: 'time2',
+ hash: 'hash2',
+ producer_timestamp: 'producer_time2',
+ producer: 'producer2',
+ environment: 'environment2',
+ facts: {
+ data: [
+ {
+ name: 'is_virtual',
+ value: false,
+ },
+ {
+ name: 'kernel',
+ value: 'Windows',
+ },
+ {
+ name: 'ipaddress',
+ value: 'ipaddress2',
+ },
+ {
+ name: 'clientnoop',
+ value: false,
+ },
+ {
+ name: 'clientversion',
+ value: 'clientversion2',
+ },
+ ],
+ },
+ },
+ ]),
+ );
+ }),
+ );
+ });
+
+ describe('where custom transformer is used', () => {
+ it('should use it for transforming puppet nodes', async () => {
+ const entities = await readPuppetNodes(config, {
+ transformer: async (node, _config) => {
+ return {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: `custom-${node.certname}`,
+ namespace: DEFAULT_NAMESPACE,
+ },
+ spec: {
+ type: 'Custom',
+ owner: 'Custom',
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ };
+ },
+ });
+
+ expect(entities).toHaveLength(2);
+ expect(entities[0]).toEqual({
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'custom-node1',
+ namespace: DEFAULT_NAMESPACE,
+ },
+ spec: {
+ type: 'Custom',
+ owner: 'Custom',
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ });
+ expect(entities[1]).toEqual({
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'custom-node2',
+ namespace: DEFAULT_NAMESPACE,
+ },
+ spec: {
+ type: 'Custom',
+ owner: 'Custom',
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ });
+ });
+ });
+
+ describe('where default transformer is used', () => {
+ it('should use it for transforming puppet nodes', async () => {
+ const entities = await readPuppetNodes(config);
+
+ expect(entities).toHaveLength(2);
+ expect(entities[0].metadata.annotations).toEqual({
+ [ANNOTATION_PUPPET_CERTNAME]: 'node1',
+ });
+ expect(entities[1].metadata.annotations).toEqual({
+ [ANNOTATION_PUPPET_CERTNAME]: 'node2',
+ });
+ });
+ });
+ });
+
+ describe('where query is specified', () => {
+ const config: PuppetDbEntityProviderConfig = {
+ baseUrl: 'https://puppetdb',
+ id: DEFAULT_PROVIDER_ID,
+ query: '["=", "certname", "node1"]',
+ };
+
+ describe('where no results are matched', () => {
+ beforeEach(async () => {
+ worker.use(
+ rest.get(
+ `${config.baseUrl}/${ENDPOINT_FACTSETS}`,
+ (_req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.set('Content-Type', 'application/json'),
+ ctx.json([]),
+ );
+ },
+ ),
+ );
+ });
+
+ it('should return empty array', async () => {
+ const entities = await readPuppetNodes(config);
+ expect(entities).toHaveLength(0);
+ });
+ });
+
+ describe('where results are matched', () => {
+ beforeEach(async () => {
+ worker.use(
+ rest.get(
+ `${config.baseUrl}/${ENDPOINT_FACTSETS}`,
+ (_req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.set('Content-Type', 'application/json'),
+ ctx.json([
+ {
+ certname: 'node1',
+ timestamp: 'time1',
+ hash: 'hash1',
+ producer_timestamp: 'producer_time1',
+ producer: 'producer1',
+ environment: 'environment1',
+ },
+ ]),
+ );
+ },
+ ),
+ );
+ });
+
+ it('should return matched results', async () => {
+ const entities = await readPuppetNodes(config);
+ expect(entities).toHaveLength(1);
+ });
+ });
+ });
+});
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts
new file mode 100644
index 0000000000..568ea7224e
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { PuppetDbEntityProviderConfig } from '../providers';
+import { PuppetNode, ResourceTransformer } from './types';
+import { ResourceEntity } from '@backstage/catalog-model/';
+import { defaultResourceTransformer } from './transformers';
+import fetch from 'node-fetch';
+import { ResponseError } from '@backstage/errors';
+import { ENDPOINT_FACTSETS } from './constants';
+import { Logger } from 'winston';
+
+/**
+ * Reads nodes and their facts from PuppetDB.
+ *
+ * @param config - The provider configuration.
+ * @param opts - Additional options.
+ */
+export async function readPuppetNodes(
+ config: PuppetDbEntityProviderConfig,
+ opts?: {
+ transformer?: ResourceTransformer;
+ logger?: Logger;
+ },
+): Promise {
+ const transformFn = opts?.transformer ?? defaultResourceTransformer;
+ const url = new URL(ENDPOINT_FACTSETS, config.baseUrl);
+
+ if (config.query) {
+ url.searchParams.set('query', config.query);
+ }
+
+ if (opts?.logger) {
+ opts.logger.debug('Reading nodes from PuppetDB', { url: url.toString() });
+ }
+
+ const response = await fetch(url.toString(), {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ });
+
+ if (!response.ok) {
+ throw await ResponseError.fromResponse(response);
+ }
+
+ const nodes = (await response.json()) as PuppetNode[];
+ const entities: ResourceEntity[] = [];
+
+ for (const node of nodes) {
+ const entity = await transformFn(node, config);
+ if (entity) {
+ entities.push(entity);
+ }
+ }
+
+ return entities;
+}
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts
new file mode 100644
index 0000000000..a56f7b549b
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { PuppetDbEntityProviderConfig } from '../providers';
+import { PuppetNode } from './types';
+import { defaultResourceTransformer } from './transformers';
+import { DEFAULT_NAMESPACE } from '@backstage/catalog-model';
+import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants';
+
+describe('defaultResourceTransformer', () => {
+ it('should transform a puppet node to a resource entity', async () => {
+ const config: PuppetDbEntityProviderConfig = {
+ baseUrl: '',
+ id: '',
+ };
+ const node: PuppetNode = {
+ certname: 'node1',
+ timestamp: 'time1',
+ hash: 'hash1',
+ producer_timestamp: 'producer_time1',
+ producer: 'producer1',
+ environment: 'environment1',
+ facts: {
+ href: 'facts1',
+ data: [
+ {
+ name: 'kernel',
+ value: 'Linux',
+ },
+ {
+ name: 'ipaddress',
+ value: 'ipaddress1',
+ },
+ {
+ name: 'is_virtual',
+ value: true,
+ },
+ {
+ name: 'clientnoop',
+ value: true,
+ },
+ {
+ name: 'clientversion',
+ value: 'clientversion1',
+ },
+ ],
+ },
+ };
+
+ const entity = await defaultResourceTransformer(node, config);
+ expect(entity).toEqual({
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: 'node1',
+ namespace: DEFAULT_NAMESPACE,
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: 'node1',
+ },
+ description: 'ipaddress1',
+ tags: ['linux'],
+ },
+ spec: {
+ type: 'virtual-machine',
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ });
+ });
+});
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts
new file mode 100644
index 0000000000..9ec607b83e
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { ResourceTransformer } from './types';
+import { DEFAULT_NAMESPACE, ResourceEntity } from '@backstage/catalog-model';
+import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants';
+
+/**
+ * A default implementation of the {@link ResourceTransformer}.
+ *
+ * @param node - The found PuppetDB node entry in its source format. This is the entry that you want to transform.
+ * @param _config - The configuration for the entity provider.
+ *
+ * @returns A `ResourceEntity`.
+ *
+ * @public
+ */
+export const defaultResourceTransformer: ResourceTransformer = async (
+ node,
+ _config,
+): Promise => {
+ const certName = node.certname.toLocaleLowerCase('en-US');
+ const type = node.facts?.data?.find(e => e.name === 'is_virtual')?.value
+ ? 'virtual-machine'
+ : 'physical-server';
+ const kernel = node.facts?.data?.find(e => e.name === 'kernel')?.value;
+
+ return {
+ apiVersion: 'backstage.io/v1beta1',
+ kind: 'Resource',
+ metadata: {
+ name: certName,
+ annotations: {
+ [ANNOTATION_PUPPET_CERTNAME]: certName,
+ },
+ namespace: DEFAULT_NAMESPACE,
+ description: node.facts?.data
+ ?.find(e => e.name === 'ipaddress')
+ ?.value?.toString(),
+ tags: kernel ? [kernel.toString().toLocaleLowerCase('en-US')] : [],
+ },
+ spec: {
+ type: type,
+ owner: DEFAULT_ENTITY_OWNER,
+ dependsOn: [],
+ dependencyOf: [],
+ },
+ };
+};
diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts
new file mode 100644
index 0000000000..5bfac5c998
--- /dev/null
+++ b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { ResourceEntity } from '@backstage/catalog-model';
+import { JsonValue } from '@backstage/types';
+import { PuppetDbEntityProviderConfig } from '../providers/PuppetDbEntityProviderConfig';
+
+/**
+ * Customize the ingested Resource entity.
+ *
+ * @param node - The found PuppetDB node entry in its source format. This is the entry that you want to transform.
+ * @param config - The configuration for the entity provider.
+ *
+ * @returns A `ResourceEntity` or `undefined` if you want to ignore the found group for being ingested by the catalog.
+ *
+ * @public
+ */
+export type ResourceTransformer = (
+ node: PuppetNode,
+ config: PuppetDbEntityProviderConfig,
+) => Promise;
+
+/**
+ * A node in PuppetDB.
+ *
+ * @public
+ */
+export type PuppetNode = {
+ /**
+ * The most recent time of fact submission from the associated certname.
+ */
+ timestamp: string;
+ /**
+ * The certname associated with the factset.
+ */
+ certname: string;
+ /**
+ * A hash of the factset's certname, environment, timestamp, facts, and producer_timestamp.
+ */
+ hash: string;
+ /**
+ * The most recent time of fact submission for the relevant certname from the Puppet Server.
+ */
+ producer_timestamp: string;
+ /**
+ * The certname of the Puppet Server that sent the factset to PuppetDB.
+ */
+ producer: string;
+ /**
+ * The environment associated with the fact.
+ */
+ environment: string;
+ /**
+ * The facts associated with the factset.
+ */
+ facts: PuppetFactSet;
+};
+
+/**
+ * The set of all facts for a single certname in PuppetDB.
+ *
+ * @public
+ */
+export type PuppetFactSet = {
+ /**
+ * The array of facts.
+ */
+ data: PuppetFact[];
+ /**
+ * The URL to retrieve more information about the facts.
+ */
+ href: string;
+};
+
+/**
+ * A fact in PuppetDB.
+ *
+ * @public
+ */
+export type PuppetFact = {
+ /**
+ * The name of the fact.
+ */
+ name: string;
+ /**
+ * The value of the fact.
+ */
+ value: JsonValue;
+};
diff --git a/plugins/scaffolder-react/src/components/TaskBorder/index.ts b/plugins/catalog-backend-module-puppetdb/src/setupTests.ts
similarity index 93%
rename from plugins/scaffolder-react/src/components/TaskBorder/index.ts
rename to plugins/catalog-backend-module-puppetdb/src/setupTests.ts
index e1559957d1..4b9026cde5 100644
--- a/plugins/scaffolder-react/src/components/TaskBorder/index.ts
+++ b/plugins/catalog-backend-module-puppetdb/src/setupTests.ts
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-export { TaskBorder } from './TaskBorder';
+export {};
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index 0b55db0239..1cc3b3620a 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,39 @@
# @backstage/plugin-catalog-backend
+## 1.8.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 1.8.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- f093ce83d58: Fix a bug where the batch fetch by ref endpoint did not work in conjunction with filtering (e.g. if authorization was enabled).
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.8.0-next.0
### Minor Changes
diff --git a/plugins/catalog-backend/README.md b/plugins/catalog-backend/README.md
index fbd0fd4a91..1e2bce3142 100644
--- a/plugins/catalog-backend/README.md
+++ b/plugins/catalog-backend/README.md
@@ -1,7 +1,7 @@
# Catalog Backend
This is the backend for the default Backstage [software
-catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview).
+catalog](http://backstage.io/docs/features/software-catalog/).
This provides an API for consumers such as the frontend [catalog
plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog).
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index 5d1be38754..35eac97cc1 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.8.0-next.0",
+ "version": "1.8.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md
index 753af21e7e..813d888be2 100644
--- a/plugins/catalog-common/CHANGELOG.md
+++ b/plugins/catalog-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-catalog-common
+## 1.0.12-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.0.12-next.0
### Patch Changes
diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json
index 033ee10f3d..e2423f834b 100644
--- a/plugins/catalog-common/package.json
+++ b/plugins/catalog-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-common",
"description": "Common functionalities for the catalog plugin",
- "version": "1.0.12-next.0",
+ "version": "1.0.12-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-common/src/permissions.ts b/plugins/catalog-common/src/permissions.ts
index 615f02a7fb..3082c0da70 100644
--- a/plugins/catalog-common/src/permissions.ts
+++ b/plugins/catalog-common/src/permissions.ts
@@ -22,7 +22,7 @@ import {
/**
* Permission resource type which corresponds to catalog entities.
*
- * {@link https://backstage.io/docs/features/software-catalog/software-catalog-overview}
+ * {@link https://backstage.io/docs/features/software-catalog/}
* @alpha
*/
export const RESOURCE_TYPE_CATALOG_ENTITY = 'catalog-entity';
diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md
index dbcbd10520..654672a156 100644
--- a/plugins/catalog-customized/CHANGELOG.md
+++ b/plugins/catalog-customized/CHANGELOG.md
@@ -1,5 +1,21 @@
# @internal/plugin-catalog-customized
+## 0.0.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-catalog@1.9.0-next.2
+
+## 0.0.8-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.9.0-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+
## 0.0.8-next.0
### Patch Changes
diff --git a/plugins/catalog-customized/README.md b/plugins/catalog-customized/README.md
index 129d70ad58..b7323d7430 100644
--- a/plugins/catalog-customized/README.md
+++ b/plugins/catalog-customized/README.md
@@ -1,7 +1,7 @@
# Backstage Catalog Frontend
This is the React frontend to customize Backstage [software
-catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview).
+catalog](http://backstage.io/docs/features/software-catalog/).
This package supplies the example how it can be achieved.
## Installation
diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json
index 3cacddf58a..20ef38355b 100644
--- a/plugins/catalog-customized/package.json
+++ b/plugins/catalog-customized/package.json
@@ -1,7 +1,7 @@
{
"name": "@internal/plugin-catalog-customized",
"description": "The internal Backstage Customizable plugin for browsing the Backstage catalog",
- "version": "0.0.8-next.0",
+ "version": "0.0.8-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md
index ec21c0aa66..bd0a9d7c76 100644
--- a/plugins/catalog-graph/CHANGELOG.md
+++ b/plugins/catalog-graph/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-catalog-graph
+## 0.2.28-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.28-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.28-next.0
### Patch Changes
diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json
index 0e093a3ab1..ab7e7e78a9 100644
--- a/plugins/catalog-graph/package.json
+++ b/plugins/catalog-graph/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-graph",
- "version": "0.2.28-next.0",
+ "version": "0.2.28-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md
index ede51b17fb..64721ef98e 100644
--- a/plugins/catalog-graphql/CHANGELOG.md
+++ b/plugins/catalog-graphql/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-catalog-graphql
+## 0.3.19-next.1
+
+### Patch Changes
+
+- b990021ddeb: Updated dependency `@graphql-codegen/cli` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/graphql-modules-preset` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/typescript` to `^3.0.0`.
+ Updated dependency `@graphql-codegen/typescript-resolvers` to `^3.0.0`.
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
## 0.3.19-next.0
### Patch Changes
diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json
index 8fd4221a56..0c6fc28c09 100644
--- a/plugins/catalog-graphql/package.json
+++ b/plugins/catalog-graphql/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-graphql",
"description": "An experimental Backstage catalog GraphQL module",
- "version": "0.3.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/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index cf6e3068cc..0451769b82 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-import
+## 0.9.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.9.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
## 0.9.6-next.0
### Patch Changes
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index 57633f7b22..baddab4656 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.9.6-next.0",
+ "version": "0.9.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-import/src/api/CatalogImportClient.test.ts b/plugins/catalog-import/src/api/CatalogImportClient.test.ts
index e77abc8a85..646a3b7bf9 100644
--- a/plugins/catalog-import/src/api/CatalogImportClient.test.ts
+++ b/plugins/catalog-import/src/api/CatalogImportClient.test.ts
@@ -121,7 +121,6 @@ describe('CatalogImportClient', () => {
});
afterEach(() => {
- jest.restoreAllMocks();
jest.clearAllMocks();
});
diff --git a/plugins/catalog-import/src/api/CatalogImportClient.ts b/plugins/catalog-import/src/api/CatalogImportClient.ts
index 4981331c89..7b582c90fa 100644
--- a/plugins/catalog-import/src/api/CatalogImportClient.ts
+++ b/plugins/catalog-import/src/api/CatalogImportClient.ts
@@ -164,7 +164,7 @@ export class CatalogImportClient implements CatalogImportApi {
to this repository so that the component can be added to the \
[${appTitle} software catalog](${appBaseUrl}).\n\nAfter this pull request is merged, \
the component will become available.\n\nFor more information, read an \
-[overview of the Backstage software catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview).`,
+[overview of the Backstage software catalog](https://backstage.io/docs/features/software-catalog/).`,
};
}
diff --git a/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx b/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx
index 4779e2d64b..f7086fce19 100644
--- a/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx
+++ b/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx
@@ -56,7 +56,7 @@ export const ImportInfoCard = (props: ImportInfoCardProps) => {
titleTypographyProps={{ component: 'h3' }}
deepLink={{
title: 'Learn more about the Software Catalog',
- link: 'https://backstage.io/docs/features/software-catalog/software-catalog-overview',
+ link: 'https://backstage.io/docs/features/software-catalog/',
}}
>
diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md
index 6f4098a158..8ed02981ca 100644
--- a/plugins/catalog-node/CHANGELOG.md
+++ b/plugins/catalog-node/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-catalog-node
+## 1.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## 1.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
## 1.3.4-next.0
### Patch Changes
diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json
index 4f122ec465..d5ad3b86ea 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.3.4-next.0",
+ "version": "1.3.4-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 db92d850ed..4d8acf0936 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/plugin-catalog-react
+## 1.4.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 1.4.0-next.1
+
+### Patch Changes
+
+- 24916d23494: Do not close `Autocomplete` powered multiple-selection filters when checking boxes
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+
## 1.4.0-next.0
### Minor Changes
diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md
index 55c72122f5..77f439018f 100644
--- a/plugins/catalog-react/api-report.md
+++ b/plugins/catalog-react/api-report.md
@@ -27,13 +27,9 @@ import { SystemEntity } from '@backstage/catalog-model';
import { TableColumn } from '@backstage/core-components';
// @public
-export const AsyncEntityProvider: ({
- children,
- entity,
- loading,
- error,
- refresh,
-}: AsyncEntityProviderProps) => JSX.Element;
+export const AsyncEntityProvider: (
+ props: AsyncEntityProviderProps,
+) => JSX.Element;
// @public
export interface AsyncEntityProviderProps {
@@ -220,9 +216,9 @@ export type EntityListContextProps<
};
// @public
-export const EntityListProvider: ({
- children,
-}: PropsWithChildren<{}>) => JSX.Element;
+export const EntityListProvider: (
+ props: PropsWithChildren<{}>,
+) => JSX.Element;
// @public (undocumented)
export type EntityLoadingStatus = {
@@ -476,12 +472,11 @@ export function InspectEntityDialog(props: {
// @public (undocumented)
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
->({
- children,
- value,
-}: PropsWithChildren<{
- value?: Partial>;
-}>): JSX.Element;
+>(
+ props: PropsWithChildren<{
+ value?: Partial>;
+ }>,
+): JSX.Element;
// @public
export class MockStarredEntitiesApi implements StarredEntitiesApi {
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index 7a707240ca..8f0b9627c7 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.4.0-next.0",
+ "version": "1.4.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-react/src/hooks/useEntity.tsx b/plugins/catalog-react/src/hooks/useEntity.tsx
index 84b7883c8a..63e7c7b6d8 100644
--- a/plugins/catalog-react/src/hooks/useEntity.tsx
+++ b/plugins/catalog-react/src/hooks/useEntity.tsx
@@ -55,13 +55,8 @@ export interface AsyncEntityProviderProps {
*
* @public
*/
-export const AsyncEntityProvider = ({
- children,
- entity,
- loading,
- error,
- refresh,
-}: AsyncEntityProviderProps) => {
+export const AsyncEntityProvider = (props: AsyncEntityProviderProps) => {
+ const { children, entity, loading, error, refresh } = props;
const value = { entity, loading, error, refresh };
// We provide both the old and the new context, since
// consumers might be doing things like `useContext(EntityContext)`
diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
index b5dfb4d8f7..a2b680c02e 100644
--- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
@@ -115,9 +115,9 @@ type OutputState = {
* Provides entities and filters for a catalog listing.
* @public
*/
-export const EntityListProvider = ({
- children,
-}: PropsWithChildren<{}>) => {
+export const EntityListProvider = (
+ props: PropsWithChildren<{}>,
+) => {
const isMounted = useMountedState();
const catalogApi = useApi(catalogApiRef);
const [requestedFilters, setRequestedFilters] = useState(
@@ -248,7 +248,7 @@ export const EntityListProvider = ({
return (
- {children}
+ {props.children}
);
};
diff --git a/plugins/catalog-react/src/testUtils/providers.tsx b/plugins/catalog-react/src/testUtils/providers.tsx
index 9bf5b21f94..8ab6d118a9 100644
--- a/plugins/catalog-react/src/testUtils/providers.tsx
+++ b/plugins/catalog-react/src/testUtils/providers.tsx
@@ -29,12 +29,13 @@ import {
/** @public */
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
->({
- children,
- value,
-}: PropsWithChildren<{
- value?: Partial>;
-}>) {
+>(
+ props: PropsWithChildren<{
+ value?: Partial>;
+ }>,
+) {
+ const { children, value } = props;
+
// Provides a default implementation that stores filter state, for testing components that
// reflect filter state.
const [filters, setFilters] = useState(value?.filters ?? ({} as T));
diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md
index 5a4fee935a..873c90de07 100644
--- a/plugins/catalog/CHANGELOG.md
+++ b/plugins/catalog/CHANGELOG.md
@@ -1,5 +1,44 @@
# @backstage/plugin-catalog
+## 1.9.0-next.2
+
+### Minor Changes
+
+- 23cc40039c0: allow entity switch to render all cases that match the condition
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+
+## 1.9.0-next.1
+
+### Minor Changes
+
+- c9a9f3c834f: Add a `columns` prop to certain components that use the `EntityTable` for easier extensibility.
+
+### Patch Changes
+
+- 7e8930ae1c6: Fix icon alignment in `CatalogSearchResultListItem`
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
## 1.9.0-next.0
### Minor Changes
diff --git a/plugins/catalog/README.md b/plugins/catalog/README.md
index 74d0f9e901..b35110053e 100644
--- a/plugins/catalog/README.md
+++ b/plugins/catalog/README.md
@@ -1,7 +1,7 @@
# Backstage Catalog Frontend
This is the React frontend for the default Backstage [software
-catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview).
+catalog](http://backstage.io/docs/features/software-catalog/).
This package supplies interfaces related to listing catalog entities or showing
more information about them on entity pages.
diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md
index ee0ca180f4..d891ebb7c8 100644
--- a/plugins/catalog/api-report.md
+++ b/plugins/catalog/api-report.md
@@ -7,6 +7,7 @@
import { ApiHolder } from '@backstage/core-plugin-api';
import { BackstagePlugin } from '@backstage/core-plugin-api';
+import { ComponentEntity } from '@backstage/catalog-model';
import { CompoundEntityRef } from '@backstage/catalog-model';
import { Entity } from '@backstage/catalog-model';
import { ExternalRouteRef } from '@backstage/core-plugin-api';
@@ -17,6 +18,7 @@ import { Observable } from '@backstage/types';
import { Overrides } from '@material-ui/core/styles/overrides';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
+import { ResourceEntity } from '@backstage/catalog-model';
import { ResultHighlight } from '@backstage/plugin-search-common';
import { RouteRef } from '@backstage/core-plugin-api';
import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
@@ -227,6 +229,8 @@ export interface DependencyOfComponentsCardProps {
// @public (undocumented)
export interface DependsOnComponentsCardProps {
+ // (undocumented)
+ columns?: TableColumn[];
// (undocumented)
title?: string;
// (undocumented)
@@ -235,6 +239,10 @@ export interface DependsOnComponentsCardProps {
// @public (undocumented)
export interface DependsOnResourcesCardProps {
+ // (undocumented)
+ columns?: TableColumn[];
+ // (undocumented)
+ title?: string;
// (undocumented)
variant?: InfoCardVariants;
}
@@ -352,7 +360,7 @@ export function EntityProcessingErrorsPanel(): JSX.Element | null;
// @public (undocumented)
export const EntitySwitch: {
- (props: EntitySwitchProps): JSX.Element | null;
+ (props: EntitySwitchProps): JSX.Element;
Case: (_props: EntitySwitchCaseProps) => null;
};
@@ -373,6 +381,8 @@ export interface EntitySwitchCaseProps {
export interface EntitySwitchProps {
// (undocumented)
children: ReactNode;
+ // (undocumented)
+ renderMultipleMatches?: 'first' | 'all';
}
// @public @deprecated (undocumented)
diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json
index 212f4044b4..c66ae8fb5e 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.9.0-next.0",
+ "version": "1.9.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
index 4f30c17a84..a7ff97ec73 100644
--- a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
+++ b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-import { RELATION_DEPENDS_ON } from '@backstage/catalog-model';
-import { InfoCardVariants } from '@backstage/core-components';
+import { RELATION_DEPENDS_ON, ComponentEntity } from '@backstage/catalog-model';
+import { InfoCardVariants, TableColumn } from '@backstage/core-components';
import React from 'react';
import {
asComponentEntities,
@@ -28,17 +28,22 @@ import {
export interface DependsOnComponentsCardProps {
variant?: InfoCardVariants;
title?: string;
+ columns?: TableColumn[];
}
export function DependsOnComponentsCard(props: DependsOnComponentsCardProps) {
- const { variant = 'gridItem', title = 'Depends on components' } = props;
+ const {
+ variant = 'gridItem',
+ title = 'Depends on components',
+ columns = componentEntityColumns,
+ } = props;
return (
[];
}
export function DependsOnResourcesCard(props: DependsOnResourcesCardProps) {
- const { variant = 'gridItem' } = props;
+ const {
+ variant = 'gridItem',
+ title = 'Depends on resources',
+ columns = resourceEntityColumns,
+ } = props;
return (
(
code: {
borderRadius: 6,
margin: `${theme.spacing(2)}px 0px`,
- background: theme.palette.type === 'dark' ? '#444' : '#fff',
+ background:
+ theme.palette.type === 'dark' ? '#444' : theme.palette.common.white,
},
}),
{ name: 'PluginCatalogEntityLabelsEmptyState' },
diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
index 7f95a66700..c1d502dc78 100644
--- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
@@ -34,7 +34,8 @@ const useStyles = makeStyles(
code: {
borderRadius: 6,
margin: `${theme.spacing(2)}px 0px`,
- background: theme.palette.type === 'dark' ? '#444' : '#fff',
+ background:
+ theme.palette.type === 'dark' ? '#444' : theme.palette.common.white,
},
}),
{ name: 'PluginCatalogEntityLinksEmptyState' },
diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
index 164c7e60fd..13e214d823 100644
--- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
+++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
@@ -131,6 +131,84 @@ describe('EntitySwitch', () => {
expect(screen.getByText('B')).toBeInTheDocument();
});
+ it('should render all elements that match the condition', () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ render(
+
+
+
+ A
} />
+ B} />
+ C} />
+ D} />
+
+
+ ,
+ );
+
+ expect(screen.getByText('A')).toBeInTheDocument();
+ expect(screen.getByText('B')).toBeInTheDocument();
+ expect(screen.queryByText('C')).not.toBeInTheDocument();
+ expect(screen.queryByText('D')).not.toBeInTheDocument();
+ });
+
+ it('should render default element if none of the cases match', () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ render(
+
+
+
+ A} />
+ B} />
+ C} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('A')).not.toBeInTheDocument();
+ expect(screen.queryByText('B')).not.toBeInTheDocument();
+ expect(screen.getByText('C')).toBeInTheDocument();
+ });
+
+ it('should render nothing if no default case is set for multiple matches', () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ render(
+
+
+
+ A} />
+ B} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('A')).not.toBeInTheDocument();
+ expect(screen.queryByText('B')).not.toBeInTheDocument();
+ });
+
+ it('should render nothing if no default case is set for default', () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ render(
+
+
+
+ A} />
+ B} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('A')).not.toBeInTheDocument();
+ expect(screen.queryByText('B')).not.toBeInTheDocument();
+ });
+
it('should switch with async condition that is true', async () => {
const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
@@ -150,6 +228,51 @@ describe('EntitySwitch', () => {
expect(screen.queryByText('B')).not.toBeInTheDocument();
});
+ it('should render all elements with async result as true', async () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ const shouldRender = () => Promise.resolve(true);
+ const shouldNotRender = () => Promise.resolve(false);
+ render(
+
+
+
+ A} />
+ B} />
+ C} />
+ D} />
+
+
+ ,
+ );
+
+ await expect(screen.findByText('A')).resolves.toBeInTheDocument();
+ await expect(screen.findByText('B')).resolves.toBeInTheDocument();
+ expect(screen.queryByText('C')).not.toBeInTheDocument();
+ expect(screen.queryByText('D')).not.toBeInTheDocument();
+ });
+
+ it('should render default element if none of the async cases match', async () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ const shouldNotRender = () => Promise.resolve(false);
+ render(
+
+
+
+ A} />
+ B} />
+ C} />
+
+
+ ,
+ );
+
+ await expect(screen.findByText('C')).resolves.toBeInTheDocument();
+ expect(screen.queryByText('A')).not.toBeInTheDocument();
+ expect(screen.queryByText('B')).not.toBeInTheDocument();
+ });
+
it('should switch with sync condition that is false', async () => {
const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
index 993e7daa80..3cd806faa5 100644
--- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
+++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
@@ -49,7 +49,7 @@ interface EntitySwitchCase {
}
type SwitchCaseResult = {
- if: boolean | Promise;
+ if?: boolean | Promise;
children: JSX.Element;
};
@@ -59,6 +59,7 @@ type SwitchCaseResult = {
*/
export interface EntitySwitchProps {
children: ReactNode;
+ renderMultipleMatches?: 'first' | 'all';
}
/** @public */
@@ -94,25 +95,45 @@ export const EntitySwitch = (props: EntitySwitchProps) => {
}
return [
{
- if: condition?.(entity, { apis }) ?? true,
+ if: condition?.(entity, { apis }),
children: elementsChildren,
},
];
}),
[apis, entity, loading],
);
+
const hasAsyncCases = results.some(
r => typeof r.if === 'object' && 'then' in r.if,
);
if (hasAsyncCases) {
- return ;
+ return (
+
+ );
}
- return results.find(r => r.if)?.children ?? null;
+ if (props.renderMultipleMatches === 'all') {
+ const children = results.filter(r => r.if).map(r => r.children);
+ if (children.length === 0) {
+ return getDefaultChildren(results);
+ }
+ return <>{children}>;
+ }
+
+ return results.find(r => r.if)?.children ?? getDefaultChildren(results);
};
-function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) {
+function AsyncEntitySwitch({
+ results,
+ renderMultipleMatches,
+}: {
+ results: SwitchCaseResult[];
+ renderMultipleMatches?: 'first' | 'all';
+}) {
const { loading, value } = useAsync(async () => {
const promises = results.map(
async ({ if: condition, children: output }) => {
@@ -123,11 +144,21 @@ function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) {
} catch {
/* ignored */
}
-
return null;
},
);
- return (await Promise.all(promises)).find(Boolean) ?? null;
+
+ if (renderMultipleMatches === 'all') {
+ const children = (await Promise.all(promises)).filter(Boolean);
+ if (children.length === 0) {
+ return getDefaultChildren(results);
+ }
+ return <>{children}>;
+ }
+
+ return (
+ (await Promise.all(promises)).find(Boolean) ?? getDefaultChildren(results)
+ );
}, [results]);
if (loading || !value) {
@@ -137,4 +168,8 @@ function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) {
return value;
}
+function getDefaultChildren(results: SwitchCaseResult[]) {
+ return results.filter(r => r.if === undefined)[0]?.children ?? null;
+}
+
EntitySwitch.Case = EntitySwitchCaseComponent;
diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
index bd49967ff4..55ec192258 100644
--- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
+++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-cicd-statistics-module-gitlab
+## 0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-cicd-statistics@0.1.18-next.2
+
+## 0.1.12-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-cicd-statistics@0.1.18-next.1
+
## 0.1.12-next.0
### Patch Changes
diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json
index 7db1fa63f5..38de7c6799 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.12-next.0",
+ "version": "0.1.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md
index e60210b30b..97434f99c7 100644
--- a/plugins/cicd-statistics/CHANGELOG.md
+++ b/plugins/cicd-statistics/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-cicd-statistics
+## 0.1.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.18-next.0
### Patch Changes
diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json
index 79469a7ce8..8262235489 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.18-next.0",
+ "version": "0.1.18-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index 43d0b72410..c43162fe14 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-circleci
+## 0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.16-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.3.16-next.0
### Patch Changes
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index b657d07f28..55d02ce8bd 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.16-next.0",
+ "version": "0.3.16-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 7939ee1ad4..bc5f71d8e1 100644
--- a/plugins/cloudbuild/CHANGELOG.md
+++ b/plugins/cloudbuild/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-cloudbuild
+## 0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.3.16-next.0
### Patch Changes
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index 7604fdaf63..04fa511cb6 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cloudbuild",
"description": "A Backstage plugin that integrates towards Google Cloud Build",
- "version": "0.3.16-next.0",
+ "version": "0.3.16-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 5d4e998846..e98be293b8 100644
--- a/plugins/code-climate/CHANGELOG.md
+++ b/plugins/code-climate/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-code-climate
+## 0.1.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.16-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.16-next.0
### Patch Changes
diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json
index 0f99afff6a..9890f8b95e 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.16-next.0",
+ "version": "0.1.16-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx
index e8e204ff9a..5aae7d4194 100644
--- a/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx
+++ b/plugins/code-climate/src/components/CodeClimateTable/CodeClimateTable.tsx
@@ -20,32 +20,32 @@ import { Link } from '@backstage/core-components';
import { Box, makeStyles, Typography } from '@material-ui/core';
import { BackstageTheme } from '@backstage/theme';
-const letterStyle = {
- color: 'white',
+const letterStyle = (theme: BackstageTheme) => ({
+ color: theme.palette.common.white,
border: 0,
borderRadius: '3px',
fontSize: '40px',
padding: '5px 20px',
-};
+});
const fontSize = {
fontSize: '25px',
};
-const letterColor = (letter: string) => {
+const letterColor = (letter: string, theme: BackstageTheme) => {
if (letter === 'A') {
- return '#45d298';
+ return theme.palette.success.main || '#45d298';
} else if (letter === 'B') {
- return '#a5d86e';
+ return theme.palette.success.light || '#a5d86e';
} else if (letter === 'C') {
- return '#f1ce0c';
+ return theme.palette.warning.light || '#f1ce0c';
} else if (letter === 'D') {
- return '#f29141';
+ return theme.palette.warning.main || '#f29141';
} else if (letter === 'F') {
- return '#df5869';
+ return theme.palette.error.light || '#df5869';
}
- return '#45d298';
+ return theme.palette.success.main || '#45d298';
};
const useStyles = makeStyles<
@@ -54,7 +54,7 @@ const useStyles = makeStyles<
maintainabilityLetter: string;
testCoverageLetter: string;
}
->({
+>(theme => ({
spaceAround: {
display: 'flex',
justifyContent: 'space-around',
@@ -65,12 +65,12 @@ const useStyles = makeStyles<
alignItems: 'center',
},
maintainabilityLetterColor: {
- ...letterStyle,
- backgroundColor: props => letterColor(props.maintainabilityLetter),
+ ...letterStyle(theme),
+ backgroundColor: props => letterColor(props.maintainabilityLetter, theme),
},
testCoverageLetterColor: {
- ...letterStyle,
- backgroundColor: props => letterColor(props.testCoverageLetter),
+ ...letterStyle(theme),
+ backgroundColor: props => letterColor(props.testCoverageLetter, theme),
},
fontSize: {
...fontSize,
@@ -82,7 +82,7 @@ const useStyles = makeStyles<
paddingSides20: {
padding: '0px 20px',
},
-});
+}));
export const CodeClimateTable = ({
codeClimateData,
diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md
index e6606e3eea..74336f32c8 100644
--- a/plugins/code-coverage-backend/CHANGELOG.md
+++ b/plugins/code-coverage-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-code-coverage-backend
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json
index bb0c7df590..fca52bdebc 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.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md
index 36c7617431..914768f638 100644
--- a/plugins/code-coverage/CHANGELOG.md
+++ b/plugins/code-coverage/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-code-coverage
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index 3a2de06c7f..cfdddfc6af 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.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx b/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
index 7eb8ce0f29..c7dee55f2b 100644
--- a/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
+++ b/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
@@ -29,7 +29,7 @@ const useStyles = makeStyles(theme => ({
width: '50px',
borderRight: `1px solid ${theme.palette.grey[500]}`,
textAlign: 'center',
- color: 'white', // need to enforce this color since it needs to stand out against colored background
+ color: theme.palette.common.white, // need to enforce this color since it needs to stand out against colored background
paddingLeft: theme.spacing(1),
paddingRight: theme.spacing(1),
},
diff --git a/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx b/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
index ac132c5a56..2ca6987be7 100644
--- a/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
+++ b/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
@@ -37,7 +37,7 @@ const useStyles = makeStyles(theme => ({
margin: 'auto',
top: '2em',
width: '80%',
- border: '2px solid #000',
+ border: `2px solid ${theme.palette.common.black}`,
boxShadow: theme.shadows[5],
padding: theme.spacing(2, 4, 3),
overflow: 'scroll',
diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md
index e8ab4d63cf..7390729c48 100644
--- a/plugins/codescene/CHANGELOG.md
+++ b/plugins/codescene/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-codescene
+## 0.1.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.11-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+
## 0.1.11-next.0
### Patch Changes
diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json
index 23af32e94a..49cedd3bc4 100644
--- a/plugins/codescene/package.json
+++ b/plugins/codescene/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-codescene",
- "version": "0.1.11-next.0",
+ "version": "0.1.11-next.2",
"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 5a52322ec0..5e0de80621 100644
--- a/plugins/config-schema/CHANGELOG.md
+++ b/plugins/config-schema/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-config-schema
+## 0.1.39-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.39-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+
## 0.1.39-next.0
### Patch Changes
diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json
index 07773496c0..730265cbea 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.39-next.0",
+ "version": "0.1.39-next.2",
"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 e94efa2602..f108804cb6 100644
--- a/plugins/cost-insights/CHANGELOG.md
+++ b/plugins/cost-insights/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-cost-insights
+## 0.12.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.12.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-cost-insights-common@0.1.1
+
## 0.12.5-next.0
### Patch Changes
diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json
index bce00a354f..aabd4d340d 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.5-next.0",
+ "version": "0.12.5-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 1daec214f0..402ee43c1e 100644
--- a/plugins/dynatrace/CHANGELOG.md
+++ b/plugins/dynatrace/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-dynatrace
+## 3.0.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 3.0.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 3.0.0-next.0
### Patch Changes
diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json
index ef8c2bb22b..c66ef32c7b 100644
--- a/plugins/dynatrace/package.json
+++ b/plugins/dynatrace/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-dynatrace",
- "version": "3.0.0-next.0",
+ "version": "3.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 86f7debc5c..cac724d7ef 100644
--- a/plugins/entity-feedback-backend/CHANGELOG.md
+++ b/plugins/entity-feedback-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-entity-feedback-backend
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json
index b7951e1db9..b482fdb212 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.1.1-next.0",
+ "version": "0.1.1-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 4fc3561a07..72cb7b272a 100644
--- a/plugins/entity-feedback/CHANGELOG.md
+++ b/plugins/entity-feedback/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-entity-feedback
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json
index bcf3895d7b..760b192440 100644
--- a/plugins/entity-feedback/package.json
+++ b/plugins/entity-feedback/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-feedback",
- "version": "0.1.1-next.0",
+ "version": "0.1.1-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 6b80724f92..43ecb6527d 100644
--- a/plugins/entity-validation/CHANGELOG.md
+++ b/plugins/entity-validation/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-entity-validation
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 47d246691ac: Fixed bug in EntityVaidation plugin where string in text box was unable to be updated.
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json
index 5d509f1eea..81c13cc46b 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.1-next.0",
+ "version": "0.1.1-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 af976da894..0e5659c538 100644
--- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md
+++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-events-backend-module-aws-sqs
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json
index 53901e5038..9278099801 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.1.5-next.0",
+ "version": "0.1.5-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 54c0f53713..159603d965 100644
--- a/plugins/events-backend-module-azure/CHANGELOG.md
+++ b/plugins/events-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-events-backend-module-azure
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json
index bdfa37d36f..ef00f0f3b9 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.5-next.0",
+ "version": "0.1.5-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 2310a2eb44..9cf0d0a70e 100644
--- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-events-backend-module-bitbucket-cloud
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json
index 0b1c5d08a7..fa7dba892e 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.5-next.0",
+ "version": "0.1.5-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 f74060b9bd..accd659217 100644
--- a/plugins/events-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/events-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-events-backend-module-gerrit
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json
index ec9f9358ab..de5d104781 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.5-next.0",
+ "version": "0.1.5-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 ff885d1dbf..b531c5db52 100644
--- a/plugins/events-backend-module-github/CHANGELOG.md
+++ b/plugins/events-backend-module-github/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-events-backend-module-github
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json
index ac7599b11f..4a010f5841 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.5-next.0",
+ "version": "0.1.5-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 f3b2ac8594..f992585219 100644
--- a/plugins/events-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/events-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-events-backend-module-gitlab
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json
index 09c924394b..917f9fdb89 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.5-next.0",
+ "version": "0.1.5-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 2394b67a48..aaf14aa68b 100644
--- a/plugins/events-backend-test-utils/CHANGELOG.md
+++ b/plugins/events-backend-test-utils/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-events-backend-test-utils
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.4-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json
index 2a4f45aa73..67d6671497 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.5-next.0",
+ "version": "0.1.5-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 0e04c52691..82fb0c6fc1 100644
--- a/plugins/events-backend/CHANGELOG.md
+++ b/plugins/events-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-events-backend
+## 0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-events-node@0.2.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-events-node@0.2.4-next.1
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json
index fa3594528c..4a51e56b6a 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.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md
index 3c999d18d6..a19d9badc2 100644
--- a/plugins/events-node/CHANGELOG.md
+++ b/plugins/events-node/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-events-node
+## 0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json
index 5d6327980e..76eb1b2bf3 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.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md
index e0356edf92..edde9b9d54 100644
--- a/plugins/example-todo-list-backend/CHANGELOG.md
+++ b/plugins/example-todo-list-backend/CHANGELOG.md
@@ -1,5 +1,26 @@
# @internal/plugin-todo-list-backend
+## 1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.0.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
## 1.0.11-next.0
### Patch Changes
diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json
index 963bf847ac..5579f748b2 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.11-next.0",
+ "version": "1.0.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/example-todo-list-common/CHANGELOG.md b/plugins/example-todo-list-common/CHANGELOG.md
index 01850d2122..2596387d2d 100644
--- a/plugins/example-todo-list-common/CHANGELOG.md
+++ b/plugins/example-todo-list-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @internal/plugin-todo-list-common
+## 1.0.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+
## 1.0.8
### Patch Changes
diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json
index 3d7a66e012..5463a19348 100644
--- a/plugins/example-todo-list-common/package.json
+++ b/plugins/example-todo-list-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list-common",
- "version": "1.0.8",
+ "version": "1.0.9-next.0",
"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 715a9bfc12..4739ab303e 100644
--- a/plugins/example-todo-list/CHANGELOG.md
+++ b/plugins/example-todo-list/CHANGELOG.md
@@ -1,5 +1,22 @@
# @internal/plugin-todo-list
+## 1.0.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 1.0.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 1.0.11-next.0
### Patch Changes
diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json
index 4eb7d3357f..a7366ce36f 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.11-next.0",
+ "version": "1.0.11-next.2",
"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 42a632ec7f..7874062954 100644
--- a/plugins/explore-backend/CHANGELOG.md
+++ b/plugins/explore-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-explore-backend
+## 0.0.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.0.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 0.0.5-next.0
### Patch Changes
diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json
index 0a6de1ab85..dbdab19329 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.5-next.0",
+ "version": "0.0.5-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 cb3adf2f5d..1f68752e6e 100644
--- a/plugins/explore-react/CHANGELOG.md
+++ b/plugins/explore-react/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-explore-react
+## 0.0.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.0.27-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-explore-common@0.0.1
+
## 0.0.27-next.0
### Patch Changes
diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json
index 2aa8f1b6fc..6bb7ad5f0a 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.27-next.0",
+ "version": "0.0.27-next.2",
"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 501f4dd10c..72d93cf927 100644
--- a/plugins/explore/CHANGELOG.md
+++ b/plugins/explore/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-explore
+## 0.4.1-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-explore-react@0.0.27-next.2
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-explore-react@0.0.27-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
## 0.4.1-next.0
### Patch Changes
diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md
index 8820411392..db89db6503 100644
--- a/plugins/explore/api-report.md
+++ b/plugins/explore/api-report.md
@@ -50,11 +50,7 @@ export const exploreApiRef: ApiRef;
// @public
export class ExploreClient implements ExploreApi {
- constructor({
- discoveryApi,
- fetchApi,
- exploreToolsConfig,
- }: {
+ constructor(options: {
discoveryApi: DiscoveryApi;
fetchApi: FetchApi;
exploreToolsConfig?: ExploreToolsConfig;
diff --git a/plugins/explore/package.json b/plugins/explore/package.json
index c53f00ff6a..c91671c816 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.1-next.0",
+ "version": "0.4.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/explore/src/api/ExploreClient.ts b/plugins/explore/src/api/ExploreClient.ts
index e913aeb041..9dca2755fe 100644
--- a/plugins/explore/src/api/ExploreClient.ts
+++ b/plugins/explore/src/api/ExploreClient.ts
@@ -24,7 +24,7 @@ import { ExploreToolsConfig } from '@backstage/plugin-explore-react';
import { ExploreApi } from './ExploreApi';
/**
- * Default implementation of the ExploreApi.
+ * Default implementation of the {@link ExploreApi}.
*
* @public
*/
@@ -35,21 +35,19 @@ export class ExploreClient implements ExploreApi {
private readonly exploreToolsConfig: ExploreToolsConfig | undefined;
/**
- * @remarks The exploreToolsConfig is for backwards compatibility with the exporeToolsConfigRef
+ * @remarks
+ *
+ * The `exploreToolsConfig` is for backwards compatibility with the `exploreToolsConfigRef`•
* and will be removed in the future.
*/
- constructor({
- discoveryApi,
- fetchApi,
- exploreToolsConfig = undefined,
- }: {
+ constructor(options: {
discoveryApi: DiscoveryApi;
fetchApi: FetchApi;
exploreToolsConfig?: ExploreToolsConfig;
}) {
- this.discoveryApi = discoveryApi;
- this.fetchApi = fetchApi;
- this.exploreToolsConfig = exploreToolsConfig;
+ this.discoveryApi = options.discoveryApi;
+ this.fetchApi = options.fetchApi;
+ this.exploreToolsConfig = options.exploreToolsConfig;
}
async getTools(
diff --git a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx
index fd1d5ba5fb..127bd193bf 100644
--- a/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx
+++ b/plugins/explore/src/components/GroupsExplorerContent/GroupsDiagram.tsx
@@ -64,7 +64,7 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
- color: 'black',
+ color: theme.palette.common.black,
},
legend: {
position: 'absolute',
diff --git a/plugins/explore/src/components/ToolCard/ToolCard.tsx b/plugins/explore/src/components/ToolCard/ToolCard.tsx
index 27729ea085..f6137d9c01 100644
--- a/plugins/explore/src/components/ToolCard/ToolCard.tsx
+++ b/plugins/explore/src/components/ToolCard/ToolCard.tsx
@@ -41,7 +41,7 @@ const useStyles = makeStyles(theme => ({
},
lifecycle: {
lineHeight: '0.8em',
- color: 'white',
+ color: theme.palette.common.white,
},
ga: {
backgroundColor: theme.palette.status.ok,
diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md
index a83b8aa486..1fbf09d8d4 100644
--- a/plugins/firehydrant/CHANGELOG.md
+++ b/plugins/firehydrant/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-firehydrant
+## 0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.33-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+
## 0.1.33-next.0
### Patch Changes
diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json
index 06edc1cd38..293679c2ea 100644
--- a/plugins/firehydrant/package.json
+++ b/plugins/firehydrant/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-firehydrant",
"description": "A Backstage plugin that integrates towards FireHydrant",
- "version": "0.1.33-next.0",
+ "version": "0.1.33-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/firehydrant/src/components/ServiceDetailsCard/ServiceDetailsCard.tsx b/plugins/firehydrant/src/components/ServiceDetailsCard/ServiceDetailsCard.tsx
index ed8bbf6a81..bc2dd46fef 100644
--- a/plugins/firehydrant/src/components/ServiceDetailsCard/ServiceDetailsCard.tsx
+++ b/plugins/firehydrant/src/components/ServiceDetailsCard/ServiceDetailsCard.tsx
@@ -66,7 +66,7 @@ const useStyles = makeStyles(theme => ({
},
buttonLink: {
backgroundColor: '#3b2492',
- color: '#FFF',
+ color: theme.palette.common.white,
textTransform: 'none',
'&:hover': {
backgroundColor: '#614ab6',
diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md
index d7d62cc9fa..af439b6fd0 100644
--- a/plugins/fossa/CHANGELOG.md
+++ b/plugins/fossa/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-fossa
+## 0.2.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.48-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.48-next.0
### Patch Changes
diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json
index 5864780dca..1135c76bb1 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.48-next.0",
+ "version": "0.2.48-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 3878c11515..2460deb73c 100644
--- a/plugins/gcalendar/CHANGELOG.md
+++ b/plugins/gcalendar/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-gcalendar
+## 0.3.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.12-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.3.12-next.0
### Patch Changes
diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json
index 37df64f7f4..83471340b8 100644
--- a/plugins/gcalendar/package.json
+++ b/plugins/gcalendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-gcalendar",
- "version": "0.3.12-next.0",
+ "version": "0.3.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gcalendar/src/components/CalendarCard/AttendeeChip.tsx b/plugins/gcalendar/src/components/CalendarCard/AttendeeChip.tsx
index dd4d743572..4e36eff55a 100644
--- a/plugins/gcalendar/src/components/CalendarCard/AttendeeChip.tsx
+++ b/plugins/gcalendar/src/components/CalendarCard/AttendeeChip.tsx
@@ -44,7 +44,7 @@ const useStyles = makeStyles((theme: BackstageTheme) => {
'& svg': {
height: 16,
width: 16,
- background: '#fff',
+ background: theme.palette.common.white,
},
},
};
diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md
index 8b625586f9..ecb3ec60fc 100644
--- a/plugins/gcp-projects/CHANGELOG.md
+++ b/plugins/gcp-projects/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-gcp-projects
+## 0.3.35-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.35-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.3.35-next.0
### Patch Changes
diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json
index 2a382f97bb..1029b37cd0 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.35-next.0",
+ "version": "0.3.35-next.2",
"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 5180d95013..c97568b076 100644
--- a/plugins/git-release-manager/CHANGELOG.md
+++ b/plugins/git-release-manager/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-git-release-manager
+## 0.3.29-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 0.3.29-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+
## 0.3.29-next.0
### Patch Changes
diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json
index 63ebb36dfb..0c9507bc24 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.29-next.0",
+ "version": "0.3.29-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/git-release-manager/src/features/Stats/Info/InDepth/InDepth.tsx b/plugins/git-release-manager/src/features/Stats/Info/InDepth/InDepth.tsx
index b55b0a79b2..421b427470 100644
--- a/plugins/git-release-manager/src/features/Stats/Info/InDepth/InDepth.tsx
+++ b/plugins/git-release-manager/src/features/Stats/Info/InDepth/InDepth.tsx
@@ -21,6 +21,7 @@ import {
Tooltip as MaterialTooltip,
Typography,
} from '@material-ui/core';
+import { useTheme } from '@material-ui/core/styles';
import { BarChart, Bar, XAxis, YAxis, Legend, Tooltip } from 'recharts';
import { AverageReleaseTime } from './AverageReleaseTime';
@@ -30,6 +31,12 @@ import { useGetReleaseTimes } from '../hooks/useGetReleaseTimes';
import { useReleaseStatsContext } from '../../contexts/ReleaseStatsContext';
export function InDepth() {
+ const {
+ palette: {
+ success,
+ common: { black },
+ },
+ } = useTheme();
const { releaseStats } = useReleaseStatsContext();
const { averageReleaseTime, progress, releaseCommitPairs, run } =
useGetReleaseTimes();
@@ -112,9 +119,9 @@ export function InDepth() {
>
-
+
-
+
{progress > 0 && progress < 100 && (
diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md
index 03eaff830e..ffec353673 100644
--- a/plugins/github-actions/CHANGELOG.md
+++ b/plugins/github-actions/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-github-actions
+## 0.5.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 0.5.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.5.16-next.0
### Patch Changes
diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json
index 8a51def8c4..d26249218e 100644
--- a/plugins/github-actions/package.json
+++ b/plugins/github-actions/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-actions",
"description": "A Backstage plugin that integrates towards GitHub Actions",
- "version": "0.5.16-next.0",
+ "version": "0.5.16-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 d073a5eed9..cc8c6a838e 100644
--- a/plugins/github-deployments/CHANGELOG.md
+++ b/plugins/github-deployments/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-github-deployments
+## 0.1.47-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.47-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.47-next.0
### Patch Changes
diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json
index 9027c5f23a..f9019b5029 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.47-next.0",
+ "version": "0.1.47-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 9e4e64b628..5a440a28f3 100644
--- a/plugins/github-issues/CHANGELOG.md
+++ b/plugins/github-issues/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-github-issues
+## 0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json
index d891951537..83e457a606 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.5-next.0",
+ "version": "0.2.5-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 ec4da0406e..ae15428eed 100644
--- a/plugins/github-pull-requests-board/CHANGELOG.md
+++ b/plugins/github-pull-requests-board/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-github-pull-requests-board
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration@1.4.3-next.0
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json
index e837da56e9..ff5393988b 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.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md
index b6ef8bfede..8522e1e16c 100644
--- a/plugins/gitops-profiles/CHANGELOG.md
+++ b/plugins/gitops-profiles/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-gitops-profiles
+## 0.3.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.34-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.3.34-next.0
### Patch Changes
diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json
index 1f42adc3d9..291b73b308 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.34-next.0",
+ "version": "0.3.34-next.2",
"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 2d576fa79b..71d7aa3af0 100644
--- a/plugins/gocd/CHANGELOG.md
+++ b/plugins/gocd/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-gocd
+## 0.1.22-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.22-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.22-next.0
### Patch Changes
diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json
index 4567a6e59b..f9789ffde4 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.22-next.0",
+ "version": "0.1.22-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 0ee2c37177..f110d7b813 100644
--- a/plugins/graphiql/CHANGELOG.md
+++ b/plugins/graphiql/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-graphiql
+## 0.2.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.48-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.2.48-next.0
### Patch Changes
diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json
index 7f1bd12beb..a608ecb8db 100644
--- a/plugins/graphiql/package.json
+++ b/plugins/graphiql/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphiql",
"description": "Backstage plugin for browsing GraphQL APIs",
- "version": "0.2.48-next.0",
+ "version": "0.2.48-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md
index 3497d58b44..0ab0918031 100644
--- a/plugins/graphql-backend/CHANGELOG.md
+++ b/plugins/graphql-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-graphql-backend
+## 0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-catalog-graphql@0.3.19-next.1
+
+## 0.1.33-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-catalog-graphql@0.3.19-next.1
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.1.33-next.0
### Patch Changes
diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json
index 11e69c3eae..401119b052 100644
--- a/plugins/graphql-backend/package.json
+++ b/plugins/graphql-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphql-backend",
"description": "An experimental Backstage backend plugin for GraphQL",
- "version": "0.1.33-next.0",
+ "version": "0.1.33-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md
index 678cec72b2..982dfec9dc 100644
--- a/plugins/graphql-voyager/CHANGELOG.md
+++ b/plugins/graphql-voyager/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-graphql-voyager
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json
index 3f6d833f7f..5d2b809bb3 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.1-next.0",
+ "version": "0.1.1-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 c28cc9159a..51552a0135 100644
--- a/plugins/home/CHANGELOG.md
+++ b/plugins/home/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-home
+## 0.4.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.32-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.4.32-next.0
### Patch Changes
diff --git a/plugins/home/package.json b/plugins/home/package.json
index f7f98a26fd..2957625478 100644
--- a/plugins/home/package.json
+++ b/plugins/home/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-home",
"description": "A Backstage plugin that helps you build a home page",
- "version": "0.4.32-next.0",
+ "version": "0.4.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md
index 18025f037b..e3d63efd71 100644
--- a/plugins/ilert/CHANGELOG.md
+++ b/plugins/ilert/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-ilert
+## 0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.5-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json
index 1bf968218a..cc8183d6cb 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.5-next.0",
+ "version": "0.2.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/ilert/src/components/AlertsPage/StatusChip.tsx b/plugins/ilert/src/components/AlertsPage/StatusChip.tsx
index 55fe46d810..ac7147b3b2 100644
--- a/plugins/ilert/src/components/AlertsPage/StatusChip.tsx
+++ b/plugins/ilert/src/components/AlertsPage/StatusChip.tsx
@@ -17,28 +17,28 @@ import { Chip, withStyles } from '@material-ui/core';
import React from 'react';
import { ACCEPTED, Alert, PENDING, RESOLVED } from '../../types';
-const ResolvedChip = withStyles({
+const ResolvedChip = withStyles(theme => ({
root: {
backgroundColor: '#4caf50',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
-const AcceptedChip = withStyles({
+const AcceptedChip = withStyles(theme => ({
root: {
backgroundColor: '#ffb74d',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const PendingChip = withStyles({
+}))(Chip);
+const PendingChip = withStyles(theme => ({
root: {
backgroundColor: '#d32f2f',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
export const alertStatusLabels = {
[RESOLVED]: 'Resolved',
diff --git a/plugins/ilert/src/components/ILertCard/ILertCardEmptyState.tsx b/plugins/ilert/src/components/ILertCard/ILertCardEmptyState.tsx
index b386cb628b..966caea079 100644
--- a/plugins/ilert/src/components/ILertCard/ILertCardEmptyState.tsx
+++ b/plugins/ilert/src/components/ILertCard/ILertCardEmptyState.tsx
@@ -41,7 +41,8 @@ const useStyles = makeStyles(theme => ({
code: {
borderRadius: 6,
margin: theme.spacing(2, 0),
- background: theme.palette.type === 'dark' ? '#444' : '#fff',
+ background:
+ theme.palette.type === 'dark' ? '#444' : theme.palette.common.white,
},
header: {
display: 'inline-block',
diff --git a/plugins/ilert/src/components/ILertCard/ILertCardHeaderStatus.tsx b/plugins/ilert/src/components/ILertCard/ILertCardHeaderStatus.tsx
index eb6ab91fd2..77db28a831 100644
--- a/plugins/ilert/src/components/ILertCard/ILertCardHeaderStatus.tsx
+++ b/plugins/ilert/src/components/ILertCard/ILertCardHeaderStatus.tsx
@@ -18,13 +18,13 @@ import Chip from '@material-ui/core/Chip';
import { withStyles } from '@material-ui/core/styles';
import { AlertSource } from '../../types';
-const MaintenanceChip = withStyles({
+const MaintenanceChip = withStyles(theme => ({
root: {
backgroundColor: '#92949c',
- color: 'white',
+ color: theme.palette.common.white,
marginTop: 8,
},
-})(Chip);
+}))(Chip);
export const ILertCardHeaderStatus = ({
alertSource,
diff --git a/plugins/ilert/src/components/ServicesPage/StatusChip.tsx b/plugins/ilert/src/components/ServicesPage/StatusChip.tsx
index 873bfbfb28..1d2c89ec6c 100644
--- a/plugins/ilert/src/components/ServicesPage/StatusChip.tsx
+++ b/plugins/ilert/src/components/ServicesPage/StatusChip.tsx
@@ -24,42 +24,42 @@ import {
UNDER_MAINTENANCE,
} from '../../types';
-const OperationalChip = withStyles({
+const OperationalChip = withStyles(theme => ({
root: {
backgroundColor: '#388E3D',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
-const UnderMaintenanceChip = withStyles({
+const UnderMaintenanceChip = withStyles(theme => ({
root: {
backgroundColor: '#616161',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const DegradedChip = withStyles({
+}))(Chip);
+const DegradedChip = withStyles(theme => ({
root: {
backgroundColor: '#FBC02D',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const PartialOutageChip = withStyles({
+}))(Chip);
+const PartialOutageChip = withStyles(theme => ({
root: {
backgroundColor: '#F57C02',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const MajorOutageChip = withStyles({
+}))(Chip);
+const MajorOutageChip = withStyles(theme => ({
root: {
backgroundColor: '#D22F2E',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
const serviceStatusLabels = {
[OPERATIONAL]: 'Operational',
diff --git a/plugins/ilert/src/components/StatusPagePage/StatusChip.tsx b/plugins/ilert/src/components/StatusPagePage/StatusChip.tsx
index 5cd785c4cd..1eaffafd25 100644
--- a/plugins/ilert/src/components/StatusPagePage/StatusChip.tsx
+++ b/plugins/ilert/src/components/StatusPagePage/StatusChip.tsx
@@ -24,42 +24,42 @@ import {
UNDER_MAINTENANCE,
} from '../../types';
-const OperationalChip = withStyles({
+const OperationalChip = withStyles(theme => ({
root: {
backgroundColor: '#388E3D',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
-const UnderMaintenanceChip = withStyles({
+const UnderMaintenanceChip = withStyles(theme => ({
root: {
backgroundColor: '#616161',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const DegradedChip = withStyles({
+}))(Chip);
+const DegradedChip = withStyles(theme => ({
root: {
backgroundColor: '#FBC02D',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const PartialOutageChip = withStyles({
+}))(Chip);
+const PartialOutageChip = withStyles(theme => ({
root: {
backgroundColor: '#F57C02',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
-const MajorOutageChip = withStyles({
+}))(Chip);
+const MajorOutageChip = withStyles(theme => ({
root: {
backgroundColor: '#D22F2E',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
const statusPageStatusLabels = {
[OPERATIONAL]: 'Operational',
diff --git a/plugins/ilert/src/components/StatusPagePage/VisibilityChip.tsx b/plugins/ilert/src/components/StatusPagePage/VisibilityChip.tsx
index 04e8019d3d..90967e5483 100644
--- a/plugins/ilert/src/components/StatusPagePage/VisibilityChip.tsx
+++ b/plugins/ilert/src/components/StatusPagePage/VisibilityChip.tsx
@@ -17,21 +17,21 @@ import { Chip, withStyles } from '@material-ui/core';
import React from 'react';
import { PRIVATE, PUBLIC, StatusPage } from '../../types';
-const PrivateChip = withStyles({
+const PrivateChip = withStyles(theme => ({
root: {
backgroundColor: '#4caf50',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
-const PublicChip = withStyles({
+const PublicChip = withStyles(theme => ({
root: {
backgroundColor: '#ffb74d',
- color: 'white',
+ color: theme.palette.common.white,
margin: 0,
},
-})(Chip);
+}))(Chip);
const statusPageVisibilityLabels = {
[PUBLIC]: 'Public',
diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md
index e9405af8a1..f18f75d0a4 100644
--- a/plugins/jenkins-backend/CHANGELOG.md
+++ b/plugins/jenkins-backend/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-jenkins-backend
+## 0.1.33-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.33-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-jenkins-common@0.1.14-next.1
+
## 0.1.33-next.0
### Patch Changes
diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json
index b9a421d408..daf5073792 100644
--- a/plugins/jenkins-backend/package.json
+++ b/plugins/jenkins-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins-backend",
"description": "A Backstage backend plugin that integrates towards Jenkins",
- "version": "0.1.33-next.0",
+ "version": "0.1.33-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md
index dd692185f2..820a600fc1 100644
--- a/plugins/jenkins-common/CHANGELOG.md
+++ b/plugins/jenkins-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-jenkins-common
+## 0.1.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json
index b745c50fa2..8786afd22c 100644
--- a/plugins/jenkins-common/package.json
+++ b/plugins/jenkins-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-jenkins-common",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.1",
"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 58dfae66d4..fe8f1e2d13 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-jenkins
+## 0.7.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.7.15-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-jenkins-common@0.1.14-next.1
+
## 0.7.15-next.0
### Patch Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index f6eb791af0..204d88db60 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins",
"description": "A Backstage plugin that integrates towards Jenkins",
- "version": "0.7.15-next.0",
+ "version": "0.7.15-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 89e8babe2e..92bcf3de3f 100644
--- a/plugins/kafka-backend/CHANGELOG.md
+++ b/plugins/kafka-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-kafka-backend
+## 0.2.36-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.36-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.36-next.0
### Patch Changes
diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json
index 33f5b667c6..38b1f60fcb 100644
--- a/plugins/kafka-backend/package.json
+++ b/plugins/kafka-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka-backend",
"description": "A Backstage backend plugin that integrates towards Kafka",
- "version": "0.2.36-next.0",
+ "version": "0.2.36-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 8f0afda96d..1706f206e7 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-kafka
+## 0.3.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.3.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.3.16-next.0
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index 98f01102f3..017c14881a 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.16-next.0",
+ "version": "0.3.16-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 26ad74cc1e..ac1287f8aa 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-kubernetes-backend
+## 0.9.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.9.4-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-kubernetes-common@0.6.1-next.1
+
## 0.9.4-next.0
### Patch Changes
diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json
index e7e03ae93e..ee7844c76e 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.9.4-next.0",
+ "version": "0.9.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md
index 281d2a83af..35044f7576 100644
--- a/plugins/kubernetes-common/CHANGELOG.md
+++ b/plugins/kubernetes-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-kubernetes-common
+## 0.6.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.6.1-next.0
### Patch Changes
diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json
index 30c2e9befd..e100b64500 100644
--- a/plugins/kubernetes-common/package.json
+++ b/plugins/kubernetes-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes-common",
"description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin",
- "version": "0.6.1-next.0",
+ "version": "0.6.1-next.1",
"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 a6f5a90e65..05929a7d46 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-kubernetes
+## 0.7.9-next.2
+
+### Patch Changes
+
+- 8adeb19b37d: GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.7.9-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-kubernetes-common@0.6.1-next.1
+
## 0.7.9-next.0
### Patch Changes
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index b69efb0d65..ed806ee521 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes",
"description": "A Backstage plugin that integrates towards Kubernetes",
- "version": "0.7.9-next.0",
+ "version": "0.7.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kubernetes/src/plugin.ts b/plugins/kubernetes/src/plugin.ts
index 124bff831b..e2b13f43fe 100644
--- a/plugins/kubernetes/src/plugin.ts
+++ b/plugins/kubernetes/src/plugin.ts
@@ -23,6 +23,7 @@ import {
createRouteRef,
discoveryApiRef,
identityApiRef,
+ gitlabAuthApiRef,
googleAuthApiRef,
microsoftAuthApiRef,
oktaAuthApiRef,
@@ -49,18 +50,21 @@ export const kubernetesPlugin = createPlugin({
createApiFactory({
api: kubernetesAuthProvidersApiRef,
deps: {
+ gitlabAuthApi: gitlabAuthApiRef,
googleAuthApi: googleAuthApiRef,
microsoftAuthApi: microsoftAuthApiRef,
oktaAuthApi: oktaAuthApiRef,
oneloginAuthApi: oneloginAuthApiRef,
},
factory: ({
+ gitlabAuthApi,
googleAuthApi,
microsoftAuthApi,
oktaAuthApi,
oneloginAuthApi,
}) => {
const oidcProviders = {
+ gitlab: gitlabAuthApi,
google: googleAuthApi,
microsoft: microsoftAuthApi,
okta: oktaAuthApi,
diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md
index a7a8b26203..0caf949bd6 100644
--- a/plugins/lighthouse-backend/CHANGELOG.md
+++ b/plugins/lighthouse-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-lighthouse-backend
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 46829bc2f0e: Update README.md; typo with plugin name & removed unneeded "import { Router } from 'express';"
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-lighthouse-common@0.1.1-next.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json
index 0af3f7f5fb..7fa51b3446 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.1.1-next.0",
+ "version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/lighthouse-common/CHANGELOG.md b/plugins/lighthouse-common/CHANGELOG.md
index 6fb22efc9f..001182cf98 100644
--- a/plugins/lighthouse-common/CHANGELOG.md
+++ b/plugins/lighthouse-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-lighthouse-common
+## 0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+
## 0.1.0
### Minor Changes
diff --git a/plugins/lighthouse-common/package.json b/plugins/lighthouse-common/package.json
index 07061fae69..cf7a598ce8 100644
--- a/plugins/lighthouse-common/package.json
+++ b/plugins/lighthouse-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse-common",
"description": "Common functionalities for lighthouse, to be shared between lighthouse and lighthouse-backend plugin",
- "version": "0.1.0",
+ "version": "0.1.1-next.0",
"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 e2a035dabf..f326707dfa 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-lighthouse
+## 0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-lighthouse-common@0.1.1-next.0
+
## 0.4.1-next.0
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index 0d9d1365eb..3fcb24986d 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.1-next.0",
+ "version": "0.4.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md
index 102c42c4cc..ac922c735b 100644
--- a/plugins/linguist-backend/CHANGELOG.md
+++ b/plugins/linguist-backend/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-linguist-backend
+## 0.2.0-next.2
+
+### Patch Changes
+
+- 8a298b47240: Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API).
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.0-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- b271d5ca052: Allow kind to be configurable
+
+ ```ts
+ return createRouter({ schedule: schedule, kind: ['Component'] }, { ...env });
+ ```
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-linguist-common@0.1.0
+
## 0.2.0-next.0
### Minor Changes
diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md
index a7c89d23b3..46c067fb5a 100644
--- a/plugins/linguist-backend/README.md
+++ b/plugins/linguist-backend/README.md
@@ -85,6 +85,17 @@ return createRouter({ schedule: schedule, age: { days: 30 } }, { ...env });
With the `age` setup like this if the language breakdown is older than 15 days it will get regenerated. It's recommended that if you choose to use this configuration to set it to a large value - 30, 90, or 180 - as this data generally does not change drastically.
+## Linguist JS options
+
+The default setup will use the default [linguist-js](https://www.npmjs.com/package/linguist-js) options, a full list of the available options can be found [here](https://www.npmjs.com/package/linguist-js#API).
+
+```ts
+return createRouter(
+ { schedule: schedule, linguistJsOptions: { offline: true } },
+ { ...env },
+);
+```
+
## Use Source Location
You may wish to use the `backstage.io/source-location` annotation over using the `backstage.io/linguist` as you may not be able to quickly add that annotation to your Entities. To do this you'll just need to set the `useSourceLocation` boolean to `true` in your `packages/backend/src/plugins/linguist.ts` when you call `createRouter`:
diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md
index d3a77bc2d7..a47f123ac4 100644
--- a/plugins/linguist-backend/api-report.md
+++ b/plugins/linguist-backend/api-report.md
@@ -35,6 +35,7 @@ export class LinguistBackendApi {
batchSize?: number,
useSourceLocation?: boolean,
kind?: string[],
+ linguistJsOptions?: Record,
);
// (undocumented)
getEntityLanguages(entityRef: string): Promise;
@@ -82,6 +83,8 @@ export interface PluginOptions {
// (undocumented)
kind?: string[];
// (undocumented)
+ linguistJsOptions?: Record;
+ // (undocumented)
schedule?: TaskScheduleDefinition;
// (undocumented)
useSourceLocation?: boolean;
diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json
index 8a49f8dca2..01c4f12afa 100644
--- a/plugins/linguist-backend/package.json
+++ b/plugins/linguist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist-backend",
- "version": "0.2.0-next.0",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendApi.ts
index 6a4cc0ea56..df7e30a7b0 100644
--- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts
+++ b/plugins/linguist-backend/src/api/LinguistBackendApi.ts
@@ -57,6 +57,7 @@ export class LinguistBackendApi {
private readonly batchSize?: number;
private readonly useSourceLocation?: boolean;
private readonly kind: string[];
+ private readonly linguistJsOptions?: Record;
public constructor(
logger: Logger,
store: LinguistBackendStore,
@@ -67,6 +68,7 @@ export class LinguistBackendApi {
batchSize?: number,
useSourceLocation?: boolean,
kind?: string[],
+ linguistJsOptions?: Record,
) {
this.logger = logger;
this.store = store;
@@ -78,6 +80,7 @@ export class LinguistBackendApi {
this.age = age;
this.useSourceLocation = useSourceLocation;
this.kind = kindOrDefault(kind);
+ this.linguistJsOptions = linguistJsOptions;
}
public async getEntityLanguages(entityRef: string): Promise {
@@ -190,7 +193,7 @@ export class LinguistBackendApi {
const readTreeResponse = await this.urlReader.readTree(url);
const dir = await readTreeResponse.dir();
- const results = await linguist(dir);
+ const results = await linguist(dir, this.linguistJsOptions);
try {
const totalBytes = results.languages.bytes;
diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts
index 66138f5ed2..8d52a2e01d 100644
--- a/plugins/linguist-backend/src/service/router.ts
+++ b/plugins/linguist-backend/src/service/router.ts
@@ -38,6 +38,7 @@ export interface PluginOptions {
age?: HumanDuration;
batchSize?: number;
useSourceLocation?: boolean;
+ linguistJsOptions?: Record;
kind?: string[];
}
@@ -57,7 +58,14 @@ export async function createRouter(
pluginOptions: PluginOptions,
routerOptions: RouterOptions,
): Promise {
- const { schedule, age, batchSize, useSourceLocation, kind } = pluginOptions;
+ const {
+ schedule,
+ age,
+ batchSize,
+ useSourceLocation,
+ kind,
+ linguistJsOptions,
+ } = pluginOptions;
const { logger, reader, database, discovery, scheduler, tokenManager } =
routerOptions;
@@ -78,6 +86,7 @@ export async function createRouter(
batchSize,
useSourceLocation,
kind,
+ linguistJsOptions,
);
if (scheduler && schedule) {
diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md
index ee28cf7354..3d83855122 100644
--- a/plugins/linguist/CHANGELOG.md
+++ b/plugins/linguist/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-linguist
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- ab997ce243f: Updated `README.md` to removed images with refresh button as this feature was not implemented in the current version
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-linguist-common@0.1.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json
index 0b234878b1..276bb81574 100644
--- a/plugins/linguist/package.json
+++ b/plugins/linguist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist",
- "version": "0.1.1-next.0",
+ "version": "0.1.1-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 c9e1da8fb1..69a93bc320 100644
--- a/plugins/microsoft-calendar/CHANGELOG.md
+++ b/plugins/microsoft-calendar/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-microsoft-calendar
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json
index ce2f148d6c..8d20a5de70 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.1-next.0",
+ "version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/microsoft-calendar/src/components/AttendeeChip.tsx b/plugins/microsoft-calendar/src/components/AttendeeChip.tsx
index 67dd601da7..b3b5b98301 100644
--- a/plugins/microsoft-calendar/src/components/AttendeeChip.tsx
+++ b/plugins/microsoft-calendar/src/components/AttendeeChip.tsx
@@ -44,7 +44,7 @@ const useStyles = makeStyles((theme: BackstageTheme) => {
'& svg': {
height: 16,
width: 16,
- background: '#fff',
+ background: theme.palette.common.white,
},
},
};
diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md
index c3de323d2d..93b27ba385 100644
--- a/plugins/newrelic-dashboard/CHANGELOG.md
+++ b/plugins/newrelic-dashboard/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-newrelic-dashboard
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json
index 462352b69e..9958741b5f 100644
--- a/plugins/newrelic-dashboard/package.json
+++ b/plugins/newrelic-dashboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic-dashboard",
- "version": "0.2.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx
index dcbde9279a..cdac4196d4 100644
--- a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx
+++ b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx
@@ -16,6 +16,7 @@
import React from 'react';
import { Box, Grid, MenuItem, Select } from '@material-ui/core';
+import { useTheme } from '@material-ui/core/styles';
import { useApi, storageApiRef } from '@backstage/core-plugin-api';
import useAsync from 'react-use/lib/useAsync';
import {
@@ -36,6 +37,11 @@ export const DashboardSnapshot = (props: {
name: string;
permalink: string;
}) => {
+ const {
+ palette: {
+ common: { black },
+ },
+ } = useTheme();
const { guid, name, permalink } = props;
const newRelicDashboardAPI = useApi(newRelicDashboardApiRef);
const storageApi = useApi(storageApiRef).forBucket('newrelic-dashboard');
@@ -99,7 +105,7 @@ export const DashboardSnapshot = (props: {
{url ? (
) : (
diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md
index ba75aface5..bd0ef0d06f 100644
--- a/plugins/newrelic/CHANGELOG.md
+++ b/plugins/newrelic/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-newrelic
+## 0.3.34-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.3.34-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 66fdf05a1ef: Updated installation instructions
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+
## 0.3.34-next.0
### Patch Changes
diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json
index 9d183f34d6..3ad74b3949 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.34-next.0",
+ "version": "0.3.34-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md
index 15be227555..a3743722b8 100644
--- a/plugins/octopus-deploy/CHANGELOG.md
+++ b/plugins/octopus-deploy/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-octopus-deploy
+## 0.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.0-next.1
+
+### Patch Changes
+
+- cb0fc15a992: Added Octopus Deploy logo
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json
index c469b55c38..9ba86f1587 100644
--- a/plugins/octopus-deploy/package.json
+++ b/plugins/octopus-deploy/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-octopus-deploy",
- "version": "0.1.0-next.0",
+ "version": "0.1.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md
index 54fd9629ce..cb59276110 100644
--- a/plugins/org-react/CHANGELOG.md
+++ b/plugins/org-react/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-org-react
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json
index 42dd6c1f26..a2e6623523 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.5-next.0",
+ "version": "0.1.5-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 2fd85644ff..4728f8be20 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-org
+## 0.6.6-next.2
+
+### Patch Changes
+
+- a06fcac4040: Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.6.6-next.1
+
+### Patch Changes
+
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.6.6-next.0
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index c1a4e8b1e5..bd7ea9a344 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-org",
"description": "A Backstage plugin that helps you create entity pages for your organization",
- "version": "0.6.6-next.0",
+ "version": "0.6.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx
index c98cc3eb32..cc524b60a2 100644
--- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx
+++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx
@@ -28,6 +28,19 @@ import {
import React from 'react';
import { MembersListCard } from './MembersListCard';
+// Mock needed because jsdom doesn't correctly implement box-sizing
+// https://github.com/ShinyChang/React-Text-Truncate/issues/70
+// https://stackoverflow.com/questions/71916701/how-to-mock-a-react-function-component-that-takes-a-ref-prop
+jest.mock('react-text-truncate', () => {
+ const { forwardRef } = jest.requireActual('react');
+ return {
+ __esModule: true,
+ default: forwardRef((props: any, ref: any) => (
+ {props.text}
+ )),
+ };
+});
+
describe('MemberTab Test', () => {
const groupEntity: GroupEntity = {
apiVersion: 'backstage.io/v1alpha1',
@@ -95,7 +108,7 @@ describe('MemberTab Test', () => {
expect(
rendered.getByText('tara-macgovern@example.com'),
).toBeInTheDocument();
- expect(rendered.getByText('Tara MacGovern')).toHaveAttribute(
+ expect(rendered.getByText('Tara MacGovern').closest('a')).toHaveAttribute(
'href',
'/catalog/foo-bar/user/tara.macgovern',
);
diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
index c41a73ab9c..eb61989144 100644
--- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
+++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
@@ -44,6 +44,7 @@ import {
Progress,
ResponseErrorPanel,
Link,
+ OverflowTooltip,
} from '@backstage/core-components';
import { useApi } from '@backstage/core-plugin-api';
@@ -59,18 +60,6 @@ const useStyles = makeStyles((theme: Theme) =>
flex: '1',
minWidth: '0px',
},
- email: {
- overflow: 'hidden',
- whiteSpace: 'nowrap',
- textOverflow: 'ellipsis',
- display: 'inline-block',
- verticalAlign: 'middle',
- maxWidth: '100%',
- '&:hover': {
- overflow: 'visible',
- whiteSpace: 'normal',
- },
- },
}),
);
@@ -103,23 +92,23 @@ const MemberComponent = (props: { member: UserEntity }) => {
-
+
- {displayName}
+
{profile?.email && (
-
- {profile.email}
+
+
)}
{description && (
diff --git a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx
index 567c7ad3bc..dbd569abff 100644
--- a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx
+++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx
@@ -15,7 +15,12 @@
*/
import { Entity } from '@backstage/catalog-model';
-import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components';
+import {
+ Link,
+ OverflowTooltip,
+ Progress,
+ ResponseErrorPanel,
+} from '@backstage/core-components';
import { useRouteRef } from '@backstage/core-plugin-api';
import { BackstageTheme } from '@backstage/theme';
import {
@@ -37,7 +42,7 @@ const useStyles = makeStyles((theme: BackstageTheme) =>
boxShadow: theme.shadows[2],
borderRadius: '4px',
padding: theme.spacing(2),
- color: '#fff',
+ color: theme.palette.common.white,
transition: `${theme.transitions.duration.standard}ms`,
'&:hover': {
boxShadow: theme.shadows[4],
@@ -47,6 +52,9 @@ const useStyles = makeStyles((theme: BackstageTheme) =>
bold: {
fontWeight: theme.typography.fontWeightBold,
},
+ smallFont: {
+ fontSize: theme.typography.body2.fontSize,
+ },
entityTypeBox: {
background: (props: { type: string }) =>
theme.getPageTheme({ themeId: props.type }).backgroundImage,
@@ -68,6 +76,7 @@ const EntityCountTile = ({
const classes = useStyles({ type: type ?? kind });
const rawTitle = type ?? kind;
+ const isLongText = rawTitle.length > 10;
return (
@@ -80,9 +89,16 @@ const EntityCountTile = ({
{counter}
-
- {pluralize(rawTitle.toLocaleUpperCase('en-US'), counter)}
-
+
+
+
+
+
{type && {kind}}
diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx
index 84f27fa183..30b7dee2de 100644
--- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx
+++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx
@@ -120,6 +120,19 @@ const getEntitiesMock = (
} as GetEntitiesResponse);
};
+// Mock needed because jsdom doesn't correctly implement box-sizing
+// https://github.com/ShinyChang/React-Text-Truncate/issues/70
+// https://stackoverflow.com/questions/71916701/how-to-mock-a-react-function-component-that-takes-a-ref-prop
+jest.mock('react-text-truncate', () => {
+ const { forwardRef } = jest.requireActual('react');
+ return {
+ __esModule: true,
+ default: forwardRef((props: any, ref: any) => (
+ {props.text}
+ )),
+ };
+});
+
describe('OwnershipCard', () => {
const groupEntity: GroupEntity = {
apiVersion: 'backstage.io/v1alpha1',
@@ -177,19 +190,19 @@ describe('OwnershipCard', () => {
expect(getByText('OPENAPI')).toBeInTheDocument();
expect(
- queryByText(getByText('OPENAPI').parentElement!, '1'),
+ queryByText(getByText('OPENAPI').closest('a')!, '1'),
).toBeInTheDocument();
expect(getByText('SERVICE')).toBeInTheDocument();
expect(
- queryByText(getByText('SERVICE').parentElement!, '1'),
+ queryByText(getByText('SERVICE').closest('a')!, '1'),
).toBeInTheDocument();
expect(getByText('LIBRARY')).toBeInTheDocument();
expect(
- queryByText(getByText('LIBRARY').parentElement!, '1'),
+ queryByText(getByText('LIBRARY').closest('a')!, '1'),
).toBeInTheDocument();
expect(getByText('SYSTEM')).toBeInTheDocument();
expect(
- queryByText(getByText('SYSTEM').parentElement!, '1'),
+ queryByText(getByText('SYSTEM').closest('a')!, '1'),
).toBeInTheDocument();
});
@@ -215,17 +228,17 @@ describe('OwnershipCard', () => {
expect(getByText('SYSTEM')).toBeInTheDocument();
expect(
- queryByText(getByText('SYSTEM').parentElement!, '1'),
+ queryByText(getByText('SYSTEM').closest('a')!, '1'),
).toBeInTheDocument();
expect(
- queryByText(getByText('SYSTEM').parentElement!, 'System'),
+ queryByText(getByText('SYSTEM').closest('a')!, 'System'),
).not.toBeInTheDocument();
expect(getByText('OPENAPI')).toBeInTheDocument();
expect(
- queryByText(getByText('OPENAPI').parentElement!, '1'),
+ queryByText(getByText('OPENAPI').closest('a')!, '1'),
).toBeInTheDocument();
expect(
- queryByText(getByText('OPENAPI').parentElement!, 'API'),
+ queryByText(getByText('OPENAPI').closest('a')!, 'API'),
).toBeInTheDocument();
expect(() => getByText('LIBRARY')).toThrow();
});
diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md
index a69e2da666..37189de162 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-pagerduty
+## 0.5.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.5.9-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- 9c08ecbaa4b: Update readme link for discord channel
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.5.9-next.0
### Patch Changes
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index f248c6f31f..0ae7623240 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-pagerduty",
"description": "A Backstage plugin that integrates towards PagerDuty",
- "version": "0.5.9-next.0",
+ "version": "0.5.9-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 55769cb201..aa43870b1d 100644
--- a/plugins/periskop-backend/CHANGELOG.md
+++ b/plugins/periskop-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-periskop-backend
+## 0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json
index 0472be43b0..11e38bcd36 100644
--- a/plugins/periskop-backend/package.json
+++ b/plugins/periskop-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop-backend",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md
index 1a700f5aa0..d41640b55c 100644
--- a/plugins/periskop/CHANGELOG.md
+++ b/plugins/periskop/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-periskop
+## 0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.1.14-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json
index eba10dc41e..1e7ca292d1 100644
--- a/plugins/periskop/package.json
+++ b/plugins/periskop/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md
index 87be1e49e1..a55c711386 100644
--- a/plugins/permission-backend/CHANGELOG.md
+++ b/plugins/permission-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-permission-backend
+## 0.5.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.5.18-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
## 0.5.18-next.0
### Patch Changes
diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json
index eaa2f6ddd1..a7202c9672 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.18-next.0",
+ "version": "0.5.18-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/permission-common/CHANGELOG.md b/plugins/permission-common/CHANGELOG.md
index 57021a6a09..e193c4f8e6 100644
--- a/plugins/permission-common/CHANGELOG.md
+++ b/plugins/permission-common/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-permission-common
+## 0.7.4-next.0
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+
## 0.7.3
### Patch Changes
diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json
index 960ca249d3..5b1abb5d94 100644
--- a/plugins/permission-common/package.json
+++ b/plugins/permission-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-permission-common",
"description": "Isomorphic types and client for Backstage permissions and authorization",
- "version": "0.7.3",
+ "version": "0.7.4-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md
index 8d2789e615..59052c2184 100644
--- a/plugins/permission-node/CHANGELOG.md
+++ b/plugins/permission-node/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-permission-node
+## 0.7.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.7.6-next.1
+
+### Patch Changes
+
+- 27a103ca07b: Changed the `createPermissionIntegrationRouter` API to allow `getResources`, `resourceType` and `rules` to be optional
+- 37e9215c793: Update the service-to-service auth docs URL in error message.
+ ``
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
## 0.7.6-next.0
### Patch Changes
diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json
index 673250cd19..92c0a7685a 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.6-next.0",
+ "version": "0.7.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/permission-node/src/ServerPermissionClient.test.ts b/plugins/permission-node/src/ServerPermissionClient.test.ts
index 75177af328..eb8abefc95 100644
--- a/plugins/permission-node/src/ServerPermissionClient.test.ts
+++ b/plugins/permission-node/src/ServerPermissionClient.test.ts
@@ -70,7 +70,7 @@ describe('ServerPermissionClient', () => {
tokenManager: ServerTokenManager.noop(),
}),
).toThrow(
- 'Backend-to-backend authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/tutorials/backend-to-backend-auth',
+ 'Service-to-service authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/auth/service-to-service-auth',
);
});
diff --git a/plugins/permission-node/src/ServerPermissionClient.ts b/plugins/permission-node/src/ServerPermissionClient.ts
index 664e5a8309..6275fb835e 100644
--- a/plugins/permission-node/src/ServerPermissionClient.ts
+++ b/plugins/permission-node/src/ServerPermissionClient.ts
@@ -33,7 +33,7 @@ import {
/**
* A thin wrapper around
* {@link @backstage/plugin-permission-common#PermissionClient} that allows all
- * backend-to-backend requests.
+ * service-to-service requests.
* @public
*/
export class ServerPermissionClient implements PermissionEvaluator {
@@ -58,7 +58,7 @@ export class ServerPermissionClient implements PermissionEvaluator {
(tokenManager as any).isInsecureServerTokenManager
) {
throw new Error(
- 'Backend-to-backend authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/tutorials/backend-to-backend-auth',
+ 'Service-to-service authentication must be configured before enabling permissions. Read more here https://backstage.io/docs/auth/service-to-service-auth',
);
}
diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md
index 914552da32..31832e9a83 100644
--- a/plugins/permission-react/CHANGELOG.md
+++ b/plugins/permission-react/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-permission-react
+## 0.4.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.4.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+
## 0.4.11-next.0
### Patch Changes
diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json
index dcf45270f4..1d5d0713b7 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.11-next.0",
+ "version": "0.4.11-next.2",
"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 9dcf4493ea..da2697188a 100644
--- a/plugins/playlist-backend/CHANGELOG.md
+++ b/plugins/playlist-backend/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-playlist-backend
+## 0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.6-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-playlist-common@0.1.5-next.0
+
## 0.2.6-next.0
### Patch Changes
diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json
index b4232ff786..2d868b950a 100644
--- a/plugins/playlist-backend/package.json
+++ b/plugins/playlist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist-backend",
- "version": "0.2.6-next.0",
+ "version": "0.2.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/playlist-common/CHANGELOG.md b/plugins/playlist-common/CHANGELOG.md
index 963f5dca73..13e19e9204 100644
--- a/plugins/playlist-common/CHANGELOG.md
+++ b/plugins/playlist-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-playlist-common
+## 0.1.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+
## 0.1.4
### Patch Changes
diff --git a/plugins/playlist-common/package.json b/plugins/playlist-common/package.json
index f5e58ae51e..1bf0b8be27 100644
--- a/plugins/playlist-common/package.json
+++ b/plugins/playlist-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-playlist-common",
"description": "Common functionalities for the playlist plugin",
- "version": "0.1.4",
+ "version": "0.1.5-next.0",
"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 e6d1a1d809..bc0263fd00 100644
--- a/plugins/playlist/CHANGELOG.md
+++ b/plugins/playlist/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/plugin-playlist
+## 0.1.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/plugin-search-react@1.5.1-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+
+## 0.1.7-next.1
+
+### Patch Changes
+
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-playlist-common@0.1.5-next.0
+ - @backstage/plugin-search-react@1.5.1-next.1
+
## 0.1.7-next.0
### Patch Changes
diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json
index 0cf67652f3..445171f9b8 100644
--- a/plugins/playlist/package.json
+++ b/plugins/playlist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist",
- "version": "0.1.7-next.0",
+ "version": "0.1.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md
index 2f5c46445a..8b649c44de 100644
--- a/plugins/proxy-backend/CHANGELOG.md
+++ b/plugins/proxy-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-proxy-backend
+## 0.2.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.37-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.2.37-next.0
### Patch Changes
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index a08900fd83..a7d320c37c 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-proxy-backend",
"description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend",
- "version": "0.2.37-next.0",
+ "version": "0.2.37-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/proxy-backend/src/service/router.ts b/plugins/proxy-backend/src/service/router.ts
index b669e82f3f..6912965659 100644
--- a/plugins/proxy-backend/src/service/router.ts
+++ b/plugins/proxy-backend/src/service/router.ts
@@ -121,6 +121,11 @@ export function buildMiddleware(
// Attach the logger to the proxy config
fullConfig.logProvider = () => logger;
+ // http-proxy-middleware uses this log level to check if it should log the
+ // requests that it proxies. Setting this to the most verbose log level
+ // ensures that it always logs these requests. Our logger ends up deciding
+ // if the logs are displayed or not.
+ fullConfig.logLevel = 'debug';
// Only return the allowed HTTP headers to not forward unwanted secret headers
const requestHeaderAllowList = new Set(
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index 41a5df307f..edda54dcd1 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-rollbar-backend
+## 0.1.40-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.40-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+
## 0.1.40-next.0
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index 7a2f27cea0..31d802dece 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.40-next.0",
+ "version": "0.1.40-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 77235a2c74..943db21cce 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-rollbar
+## 0.4.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 0.4.16-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+
## 0.4.16-next.0
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index f95f2cb8c4..a3189c147d 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.16-next.0",
+ "version": "0.4.16-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 ed849b36f1..2dcb0eb279 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-scaffolder-backend-module-cookiecutter
+## 0.2.18-next.2
+
+### Patch Changes
+
+- 62414770ead: allow container runner to be undefined in cookiecutter plugin
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.2.18-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
## 0.2.18-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-cookiecutter/README.md b/plugins/scaffolder-backend-module-cookiecutter/README.md
index ae34e09c96..0e8e11ef7d 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/README.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/README.md
@@ -161,3 +161,5 @@ You can do so by including the following lines in the last step of your Dockerfi
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip3 install cookiecutter
```
+
+In this case, you don't have to include `containerRunner` in the action configuration.
diff --git a/plugins/scaffolder-backend-module-cookiecutter/api-report.md b/plugins/scaffolder-backend-module-cookiecutter/api-report.md
index 76f2ced66f..2944f5240e 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/api-report.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/api-report.md
@@ -15,7 +15,7 @@ import { UrlReader } from '@backstage/backend-common';
export function createFetchCookiecutterAction(options: {
reader: UrlReader;
integrations: ScmIntegrations;
- containerRunner: ContainerRunner;
+ containerRunner?: ContainerRunner;
}): TemplateAction<{
url: string;
targetPath?: string | undefined;
diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json
index de055be7e8..373320191a 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.18-next.0",
+ "version": "0.2.18-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
index f8b049f95f..9d7f06afc8 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
+++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
@@ -223,4 +223,16 @@ describe('fetch:cookiecutter', () => {
}),
);
});
+
+ it('should throw error if cookiecutter is not installed and containerRunner is undefined', async () => {
+ commandExists.mockResolvedValue(false);
+ const ccAction = createFetchCookiecutterAction({
+ integrations,
+ reader: mockReader,
+ });
+
+ await expect(ccAction.handler(mockContext)).rejects.toThrow(
+ /Invalid state: containerRunner cannot be undefined when cookiecutter is not installed/,
+ );
+ });
});
diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
index 5c69b9dce2..b63a044a20 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
+++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
@@ -33,9 +33,9 @@ import {
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
export class CookiecutterRunner {
- private readonly containerRunner: ContainerRunner;
+ private readonly containerRunner?: ContainerRunner;
- constructor({ containerRunner }: { containerRunner: ContainerRunner }) {
+ constructor({ containerRunner }: { containerRunner?: ContainerRunner }) {
this.containerRunner = containerRunner;
}
@@ -101,6 +101,11 @@ export class CookiecutterRunner {
logStream,
});
} else {
+ if (this.containerRunner === undefined) {
+ throw new Error(
+ 'Invalid state: containerRunner cannot be undefined when cookiecutter is not installed',
+ );
+ }
await this.containerRunner.runContainer({
imageName: imageName ?? 'spotify/backstage-cookiecutter',
command: 'cookiecutter',
@@ -139,7 +144,7 @@ export class CookiecutterRunner {
export function createFetchCookiecutterAction(options: {
reader: UrlReader;
integrations: ScmIntegrations;
- containerRunner: ContainerRunner;
+ containerRunner?: ContainerRunner;
}) {
const { reader, containerRunner, integrations } = options;
diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
index 65cc7fa77d..5c7fb1dc2d 100644
--- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-scaffolder-backend-module-rails
+## 0.4.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 0.4.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.12.0-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
## 0.4.11-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json
index 2ae2a6dd3f..be9d053340 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.11-next.0",
+ "version": "0.4.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
index 56f85d002e..37d0bcac4a 100644
--- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
+++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
@@ -91,7 +91,7 @@ describe('fetch:rails', () => {
beforeEach(() => {
mockFs({ [`${mockContext.workspacePath}/result`]: {} });
- jest.restoreAllMocks();
+ jest.clearAllMocks();
});
afterEach(() => {
diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
index 059b43bd90..ae6d8734c9 100644
--- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend-module-sentry
+## 0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json
index 8c1e2f5742..36f5139b28 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.3-next.0",
+ "version": "0.1.3-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 c099722329..e87cf64167 100644
--- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend-module-yeoman
+## 0.2.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.2.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
## 0.2.16-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json
index 6b609d8b39..01ba3f5eea 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.16-next.0",
+ "version": "0.2.16-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 2d31ac43c1..65a827797f 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,48 @@
# @backstage/plugin-scaffolder-backend
+## 1.12.0-next.2
+
+### Patch Changes
+
+- 860de10fa67: Make identity valid if subject of token is a backstage server-2-server auth token
+- 65454876fb2: Minor API report tweaks
+- 9968f455921: catalog write action should allow any shape of object
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/backend-plugin-api@0.4.1-next.2
+ - @backstage/plugin-catalog-backend@1.8.0-next.2
+ - @backstage/plugin-catalog-node@1.3.4-next.2
+ - @backstage/plugin-scaffolder-node@0.1.1-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 1.12.0-next.1
+
+### Minor Changes
+
+- 7d724d8ef56: Added the ability to be able to define an actions `input` and `output` schema using `zod` instead of hand writing types and `jsonschema`
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-catalog-backend@1.8.0-next.1
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-node@1.3.4-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+ - @backstage/plugin-scaffolder-node@0.1.1-next.1
+
## 1.11.1-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend/README.md b/plugins/scaffolder-backend/README.md
index 6a29911e13..ba9183c5cc 100644
--- a/plugins/scaffolder-backend/README.md
+++ b/plugins/scaffolder-backend/README.md
@@ -1,7 +1,7 @@
# Scaffolder Backend
This is the backend for the default Backstage [software
-templates](https://backstage.io/docs/features/software-templates/software-templates-index).
+templates](https://backstage.io/docs/features/software-templates/).
This provides the API for the frontend [scaffolder
plugin](https://github.com/backstage/backstage/tree/master/plugins/scaffolder),
as well as the built-in template actions, tasks and stages.
diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md
index 293ff7ed29..ca9b3543af 100644
--- a/plugins/scaffolder-backend/api-report.md
+++ b/plugins/scaffolder-backend/api-report.md
@@ -24,6 +24,7 @@ import { Observable } from '@backstage/types';
import { Octokit } from 'octokit';
import { PluginDatabaseManager } from '@backstage/backend-common';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
+import { Schema } from 'jsonschema';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { ScmIntegrations } from '@backstage/integration';
import { SpawnOptionsWithoutStdio } from 'child_process';
@@ -31,8 +32,11 @@ import { TaskSecrets as TaskSecrets_2 } from '@backstage/plugin-scaffolder-node'
import { TaskSpec } from '@backstage/plugin-scaffolder-common';
import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateAction as TemplateAction_2 } from '@backstage/plugin-scaffolder-node';
+import { TemplateActionOptions } from '@backstage/plugin-scaffolder-node';
import { UrlReader } from '@backstage/backend-common';
import { Writable } from 'stream';
+import { ZodType } from 'zod';
+import { ZodTypeDef } from 'zod';
// @public @deprecated (undocumented)
export type ActionContext = ActionContext_2;
@@ -40,7 +44,7 @@ export type ActionContext = ActionContext_2;
// @public
export const createBuiltinActions: (
options: CreateBuiltInActionsOptions,
-) => TemplateAction_2[];
+) => TemplateAction_2[];
// @public
export interface CreateBuiltInActionsOptions {
@@ -72,7 +76,7 @@ export function createCatalogRegisterAction(options: {
// @public
export function createCatalogWriteAction(): TemplateAction_2<{
filePath?: string | undefined;
- entity: Entity;
+ entity: {};
}>;
// @public
@@ -459,11 +463,9 @@ export function createPublishGithubAction(options: {
}>;
// @public
-export const createPublishGithubPullRequestAction: ({
- integrations,
- githubCredentialsProvider,
- clientFactory,
-}: CreateGithubPullRequestActionOptions) => TemplateAction_2<{
+export const createPublishGithubPullRequestAction: (
+ options: CreateGithubPullRequestActionOptions,
+) => TemplateAction_2<{
title: string;
branchName: string;
description: string;
@@ -514,9 +516,16 @@ export const createPublishGitlabMergeRequestAction: (options: {
export function createRouter(options: RouterOptions): Promise;
// @public @deprecated (undocumented)
-export const createTemplateAction: (
- templateAction: TemplateAction_2,
-) => TemplateAction_2;
+export const createTemplateAction: <
+ TParams,
+ TInputSchema extends ZodType | Schema = {},
+ TOutputSchema extends ZodType | Schema = {},
+ TActionInput = TInputSchema extends ZodType
+ ? IReturn
+ : TParams,
+>(
+ action: TemplateActionOptions,
+) => TemplateAction_2;
// @public
export type CreateWorkerOptions = {
@@ -581,7 +590,7 @@ export class DatabaseTaskStore implements TaskStore {
}[];
}>;
// (undocumented)
- shutdownTask({ taskId }: TaskStoreShutDownTaskOptions): Promise;
+ shutdownTask(options: TaskStoreShutDownTaskOptions): Promise;
}
// @public
@@ -792,7 +801,7 @@ export interface TaskStore {
options: TaskStoreCreateTaskOptions,
): Promise;
// (undocumented)
- emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise;
+ emitLogEvent(options: TaskStoreEmitOptions): Promise;
// (undocumented)
getTask(taskId: string): Promise;
// (undocumented)
@@ -802,7 +811,7 @@ export interface TaskStore {
tasks: SerializedTask[];
}>;
// (undocumented)
- listEvents({ taskId, after }: TaskStoreListEventsOptions): Promise<{
+ listEvents(options: TaskStoreListEventsOptions): Promise<{
events: SerializedTaskEvent[];
}>;
// (undocumented)
@@ -812,7 +821,7 @@ export interface TaskStore {
}[];
}>;
// (undocumented)
- shutdownTask?({ taskId }: TaskStoreShutDownTaskOptions): Promise;
+ shutdownTask?(options: TaskStoreShutDownTaskOptions): Promise;
}
// @public
@@ -863,11 +872,11 @@ export type TemplateAction =
// @public
export class TemplateActionRegistry {
// (undocumented)
- get(actionId: string): TemplateAction_2;
+ get(actionId: string): TemplateAction_2;
// (undocumented)
- list(): TemplateAction_2[];
+ list(): TemplateAction_2[];
// (undocumented)
- register(action: TemplateAction_2): void;
+ register(action: TemplateAction_2): void;
}
// @public (undocumented)
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index 12ef31899c..03f813b036 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.11.1-next.0",
+ "version": "1.12.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts b/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts
index d044d095cd..3868380919 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts
@@ -14,27 +14,26 @@
* limitations under the License.
*/
-import { JsonObject } from '@backstage/types';
import { ConflictError, NotFoundError } from '@backstage/errors';
import { TemplateAction } from '@backstage/plugin-scaffolder-node';
-
/**
* Registry of all registered template actions.
* @public
*/
export class TemplateActionRegistry {
- private readonly actions = new Map>();
+ private readonly actions = new Map();
- register(action: TemplateAction) {
+ register(action: TemplateAction) {
if (this.actions.has(action.id)) {
throw new ConflictError(
`Template action with ID '${action.id}' has already been registered`,
);
}
+
this.actions.set(action.id, action);
}
- get(actionId: string): TemplateAction {
+ get(actionId: string): TemplateAction {
const action = this.actions.get(actionId);
if (!action) {
throw new NotFoundError(
@@ -44,7 +43,7 @@ export class TemplateActionRegistry {
return action;
}
- list(): TemplateAction[] {
+ list(): TemplateAction[] {
return [...this.actions.values()];
}
}
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
index 5c5a62956f..9e823d2574 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
@@ -17,8 +17,8 @@
import fs from 'fs-extra';
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import * as yaml from 'yaml';
-import { Entity } from '@backstage/catalog-model';
import { resolveSafeChildPath } from '@backstage/backend-common';
+import { z } from 'zod';
const id = 'catalog:write';
@@ -56,29 +56,27 @@ const examples = [
* Writes a catalog descriptor file containing the provided entity to a path in the workspace.
* @public
*/
+
export function createCatalogWriteAction() {
- return createTemplateAction<{ filePath?: string; entity: Entity }>({
+ return createTemplateAction({
id,
description: 'Writes the catalog-info.yaml for your template',
- examples,
schema: {
- input: {
- type: 'object',
- properties: {
- filePath: {
- title: 'Catalog file path',
- description: 'Defaults to catalog-info.yaml',
- type: 'string',
- },
- entity: {
- title: 'Entity info to write catalog-info.yaml',
- description:
- 'You can provide the same values used in the Entity schema.',
- type: 'object',
- },
- },
- },
+ input: z.object({
+ filePath: z
+ .string()
+ .optional()
+ .describe('Defaults to catalog-info.yaml'),
+ // TODO: this should reference an zod entity validator if it existed.
+ entity: z
+ .object({})
+ .passthrough()
+ .describe(
+ 'You can provide the same values used in the Entity schema.',
+ ),
+ }),
},
+ examples,
supportsDryRun: true,
async handler(ctx) {
ctx.logStream.write(`Writing catalog-info.yaml`);
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts
index d83d9c5b07..9ba4a27b1a 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts
@@ -22,7 +22,6 @@ import {
GithubCredentialsProvider,
ScmIntegrations,
} from '@backstage/integration';
-import { JsonObject } from '@backstage/types';
import { TemplateAction } from '@backstage/plugin-scaffolder-node';
import {
createCatalogRegisterAction,
@@ -95,7 +94,7 @@ export interface CreateBuiltInActionsOptions {
*/
export const createBuiltinActions = (
options: CreateBuiltInActionsOptions,
-): TemplateAction[] => {
+): TemplateAction[] => {
const {
reader,
integrations,
@@ -188,5 +187,5 @@ export const createBuiltinActions = (
}),
];
- return actions as TemplateAction[];
+ return actions as TemplateAction[];
};
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
index 2d2775572f..a2262c1f9f 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/azure.test.ts
@@ -62,7 +62,7 @@ describe('publish:azure', () => {
(WebApi as unknown as jest.Mock).mockImplementation(() => mockGitApi);
beforeEach(() => {
- jest.restoreAllMocks();
+ jest.clearAllMocks();
});
it('should throw an error when the repoUrl is not well formed', async () => {
@@ -183,7 +183,12 @@ describe('publish:azure', () => {
id: '709e891c-dee7-4f91-b963-534713c0737f',
}));
- await action.handler(mockContext);
+ await action.handler({
+ ...mockContext,
+ input: {
+ repoUrl: 'dev.azure.com?repo=bob&owner=owner&organization=org',
+ },
+ });
expect(WebApi).toHaveBeenCalledWith(
'https://dev.azure.com/org',
@@ -234,7 +239,7 @@ describe('publish:azure', () => {
expect(initRepoAndPush).toHaveBeenCalledWith({
dir: mockContext.workspacePath,
remoteUrl: 'https://dev.azure.com/organization/project/_git/repo',
- defaultBranch: 'master',
+ defaultBranch: 'main',
auth: { username: 'notempty', password: 'tokenlols' },
logger: mockContext.logger,
commitMessage: 'initial commit',
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts
index 764354e8ec..b8c0068d70 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts
@@ -116,11 +116,15 @@ type GithubPullRequest = {
* Creates a Github Pull Request action.
* @public
*/
-export const createPublishGithubPullRequestAction = ({
- integrations,
- githubCredentialsProvider,
- clientFactory = defaultClientFactory,
-}: CreateGithubPullRequestActionOptions) => {
+export const createPublishGithubPullRequestAction = (
+ options: CreateGithubPullRequestActionOptions,
+) => {
+ const {
+ integrations,
+ githubCredentialsProvider,
+ clientFactory = defaultClientFactory,
+ } = options;
+
return createTemplateAction<{
title: string;
branchName: string;
diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/DecoratedActionsRegistry.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/DecoratedActionsRegistry.ts
index c02375554c..7109a6621e 100644
--- a/plugins/scaffolder-backend/src/scaffolder/dryrun/DecoratedActionsRegistry.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/DecoratedActionsRegistry.ts
@@ -15,14 +15,13 @@
*/
import { TemplateAction } from '@backstage/plugin-scaffolder-node';
-import { JsonObject } from '@backstage/types';
import { TemplateActionRegistry } from '../actions';
/** @internal */
export class DecoratedActionsRegistry extends TemplateActionRegistry {
constructor(
private readonly innerRegistry: TemplateActionRegistry,
- extraActions: Array>,
+ extraActions: Array,
) {
super();
for (const action of extraActions) {
@@ -30,7 +29,7 @@ export class DecoratedActionsRegistry extends TemplateActionRegistry {
}
}
- get(actionId: string): TemplateAction {
+ get(actionId: string): TemplateAction {
try {
return super.get(actionId);
} catch {
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
index b61c3d2676..879b457544 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
@@ -381,7 +381,8 @@ export class DatabaseTaskStore implements TaskStore {
return { events };
}
- async shutdownTask({ taskId }: TaskStoreShutDownTaskOptions): Promise {
+ async shutdownTask(options: TaskStoreShutDownTaskOptions): Promise {
+ const { taskId } = options;
const message = `This task was marked as stale as it exceeded its timeout`;
const statusStepEvents = (await this.listEvents({ taskId })).events.filter(
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
index 453cfae83b..0d2246ed36 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
@@ -24,8 +24,13 @@ import { ScmIntegrations } from '@backstage/integration';
import { ConfigReader } from '@backstage/config';
import { TaskContext } from './types';
import { TaskSpec } from '@backstage/plugin-scaffolder-common';
-import { TaskSecrets } from '@backstage/plugin-scaffolder-node';
+import {
+ createTemplateAction,
+ TaskSecrets,
+ TemplateAction,
+} from '@backstage/plugin-scaffolder-node';
import { UserEntity } from '@backstage/catalog-model';
+import { z } from 'zod';
// The Stream module is lazy loaded, so make sure it's in the module cache before mocking fs
void winston.transports.Stream;
@@ -103,6 +108,20 @@ describe('DefaultWorkflowRunner', () => {
},
});
+ actionRegistry.register(
+ createTemplateAction({
+ id: 'jest-zod-validated-action',
+ description: 'Mock action for testing',
+ handler: fakeActionHandler,
+ supportsDryRun: true,
+ schema: {
+ input: z.object({
+ foo: z.number(),
+ }),
+ },
+ }) as TemplateAction,
+ );
+
actionRegistry.register({
id: 'output-action',
description: 'Mock action for testing',
@@ -151,6 +170,41 @@ describe('DefaultWorkflowRunner', () => {
);
});
+ it('should throw an error if the action has a zod schema and the input does not match', async () => {
+ const task = createMockTaskWithSpec({
+ apiVersion: 'scaffolder.backstage.io/v1beta3',
+ parameters: {},
+ output: {},
+ steps: [
+ { id: 'test', name: 'name', action: 'jest-zod-validated-action' },
+ ],
+ });
+
+ await expect(runner.execute(task)).rejects.toThrow(
+ /Invalid input passed to action jest-zod-validated-action, instance requires property \"foo\"/,
+ );
+ });
+
+ it('should run the action when the zod validation passes', async () => {
+ const task = createMockTaskWithSpec({
+ apiVersion: 'scaffolder.backstage.io/v1beta3',
+ parameters: {},
+ output: {},
+ steps: [
+ {
+ id: 'test',
+ name: 'name',
+ action: 'jest-zod-validated-action',
+ input: { foo: 1 },
+ },
+ ],
+ });
+
+ await runner.execute(task);
+
+ expect(fakeActionHandler).toHaveBeenCalledTimes(1);
+ });
+
it('should run the action when the validation passes', async () => {
const task = createMockTaskWithSpec({
apiVersion: 'scaffolder.backstage.io/v1beta3',
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
index 516abe79e4..88abe05cad 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
@@ -380,10 +380,7 @@ function scaffoldingTracker() {
template,
});
- async function skipDryRun(
- step: TaskStep,
- action: TemplateAction,
- ) {
+ async function skipDryRun(step: TaskStep, action: TemplateAction) {
task.emitLog(`Skipping because ${action.id} does not support dry-run`, {
stepId: step.id,
status: 'skipped',
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts
index 89f6c3e213..5a91802f3e 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts
@@ -197,12 +197,11 @@ export interface TaskStore {
}>;
list?(options: { createdBy?: string }): Promise<{ tasks: SerializedTask[] }>;
- emitLogEvent({ taskId, body }: TaskStoreEmitOptions): Promise;
- listEvents({
- taskId,
- after,
- }: TaskStoreListEventsOptions): Promise<{ events: SerializedTaskEvent[] }>;
- shutdownTask?({ taskId }: TaskStoreShutDownTaskOptions): Promise;
+ emitLogEvent(options: TaskStoreEmitOptions): Promise;
+ listEvents(
+ options: TaskStoreListEventsOptions,
+ ): Promise<{ events: SerializedTaskEvent[] }>;
+ shutdownTask?(options: TaskStoreShutDownTaskOptions): Promise;
}
export type WorkflowResponse = { output: { [key: string]: JsonValue } };
diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts
index c339de8d10..dfccc4dc43 100644
--- a/plugins/scaffolder-backend/src/service/router.ts
+++ b/plugins/scaffolder-backend/src/service/router.ts
@@ -66,7 +66,6 @@ export interface RouterOptions {
database: PluginDatabaseManager;
catalogClient: CatalogApi;
scheduler?: PluginTaskScheduler;
-
actions?: TemplateAction[];
/**
* @deprecated taskWorkers is deprecated in favor of concurrentTasksLimit option with a single TaskWorker
@@ -95,14 +94,11 @@ function isSupportedTemplate(entity: TemplateEntityV1beta3) {
* until someone explicitly passes an IdentityApi. When we have reasonable confidence that most backstage deployments
* are using the IdentityApi, we can remove this function.
*/
-function buildDefaultIdentityClient({
- logger,
-}: {
- logger: Logger;
-}): IdentityApi {
+function buildDefaultIdentityClient(options: RouterOptions): IdentityApi {
return {
getIdentity: async ({ request }: IdentityApiGetIdentityRequest) => {
const header = request.headers.authorization;
+ const { logger } = options;
if (!header) {
return undefined;
@@ -132,6 +128,10 @@ function buildDefaultIdentityClient({
throw new TypeError('Expected string sub claim');
}
+ if (sub === 'backstage-server') {
+ return undefined;
+ }
+
// Check that it's a valid ref, otherwise this will throw.
parseEntityRef(sub);
@@ -179,8 +179,7 @@ export async function createRouter(
const logger = parentLogger.child({ plugin: 'scaffolder' });
const identity: IdentityApi =
- options.identity || buildDefaultIdentityClient({ logger });
-
+ options.identity || buildDefaultIdentityClient(options);
const workingDirectory = await getWorkingDirectory(config, logger);
const integrations = ScmIntegrations.fromConfig(config);
diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md
index c9c785d777..8b50ec85a9 100644
--- a/plugins/scaffolder-common/CHANGELOG.md
+++ b/plugins/scaffolder-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-scaffolder-common
+## 1.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+
## 1.2.6-next.0
### Patch Changes
diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json
index 4e78d531e3..a64185d681 100644
--- a/plugins/scaffolder-common/package.json
+++ b/plugins/scaffolder-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-common",
"description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin",
- "version": "1.2.6-next.0",
+ "version": "1.2.6-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md
index 5bc9d498b6..37b9613524 100644
--- a/plugins/scaffolder-node/CHANGELOG.md
+++ b/plugins/scaffolder-node/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-node
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.2
+
+## 0.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.4.1-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
## 0.1.1-next.0
### Patch Changes
diff --git a/plugins/scaffolder-node/api-report.md b/plugins/scaffolder-node/api-report.md
index 506ea0517d..89b7171ef9 100644
--- a/plugins/scaffolder-node/api-report.md
+++ b/plugins/scaffolder-node/api-report.md
@@ -13,14 +13,15 @@ import { Schema } from 'jsonschema';
import { TemplateInfo } from '@backstage/plugin-scaffolder-common';
import { UserEntity } from '@backstage/catalog-model';
import { Writable } from 'stream';
+import { z } from 'zod';
// @public
-export type ActionContext = {
+export type ActionContext = {
logger: Logger;
logStream: Writable;
secrets?: TaskSecrets;
workspacePath: string;
- input: TInput;
+ input: TActionInput;
output(name: string, value: JsonValue): void;
createTemporaryDirectory(): Promise;
templateInfo?: TemplateInfo;
@@ -32,9 +33,16 @@ export type ActionContext = {
};
// @public
-export const createTemplateAction: (
- templateAction: TemplateAction,
-) => TemplateAction;
+export const createTemplateAction: <
+ TParams,
+ TInputSchema extends z.ZodType | Schema = {},
+ TOutputSchema extends z.ZodType | Schema = {},
+ TActionInput = TInputSchema extends z.ZodType
+ ? IReturn
+ : TParams,
+>(
+ action: TemplateActionOptions,
+) => TemplateAction;
// @alpha
export interface ScaffolderActionsExtensionPoint {
@@ -51,7 +59,7 @@ export type TaskSecrets = Record & {
};
// @public (undocumented)
-export type TemplateAction = {
+export type TemplateAction = {
id: string;
description?: string;
examples?: {
@@ -63,6 +71,26 @@ export type TemplateAction = {
input?: Schema;
output?: Schema;
};
- handler: (ctx: ActionContext) => Promise;
+ handler: (ctx: ActionContext) => Promise;
+};
+
+// @public (undocumented)
+export type TemplateActionOptions<
+ TActionInput = {},
+ TInputSchema extends Schema | z.ZodType = {},
+ TOutputSchema extends Schema | z.ZodType = {},
+> = {
+ id: string;
+ description?: string;
+ examples?: {
+ description: string;
+ example: string;
+ }[];
+ supportsDryRun?: boolean;
+ schema?: {
+ input?: TInputSchema;
+ output?: TOutputSchema;
+ };
+ handler: (ctx: ActionContext) => Promise;
};
```
diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json
index 642a59b801..8978c155bf 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.1.1-next.0",
+ "version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,7 +29,9 @@
"@backstage/plugin-scaffolder-common": "workspace:^",
"@backstage/types": "workspace:^",
"jsonschema": "^1.2.6",
- "winston": "^3.2.1"
+ "winston": "^3.2.1",
+ "zod": "~3.18.0",
+ "zod-to-json-schema": "~3.18.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^"
diff --git a/plugins/scaffolder-node/src/actions/createTemplateAction.ts b/plugins/scaffolder-node/src/actions/createTemplateAction.ts
index 24d88a1681..8c98042d8c 100644
--- a/plugins/scaffolder-node/src/actions/createTemplateAction.ts
+++ b/plugins/scaffolder-node/src/actions/createTemplateAction.ts
@@ -14,17 +14,61 @@
* limitations under the License.
*/
-import { JsonObject } from '@backstage/types';
-import { TemplateAction } from './types';
+import { ActionContext, TemplateAction } from './types';
+import { z } from 'zod';
+import { Schema } from 'jsonschema';
+import zodToJsonSchema from 'zod-to-json-schema';
+
+/** @public */
+export type TemplateActionOptions<
+ TActionInput = {},
+ TInputSchema extends Schema | z.ZodType = {},
+ TOutputSchema extends Schema | z.ZodType = {},
+> = {
+ id: string;
+ description?: string;
+ examples?: { description: string; example: string }[];
+ supportsDryRun?: boolean;
+ schema?: {
+ input?: TInputSchema;
+ output?: TOutputSchema;
+ };
+ handler: (ctx: ActionContext) => Promise;
+};
/**
* This function is used to create new template actions to get type safety.
- *
+ * Will convert zod schemas to json schemas for use throughout the system.
* @public
*/
-export const createTemplateAction = (
- templateAction: TemplateAction,
-): TemplateAction => {
- // TODO(blam): Can add some more validation here to validate the action later on
+export const createTemplateAction = <
+ TParams,
+ TInputSchema extends Schema | z.ZodType = {},
+ TOutputSchema extends Schema | z.ZodType = {},
+ TActionInput = TInputSchema extends z.ZodType
+ ? IReturn
+ : TParams,
+>(
+ action: TemplateActionOptions,
+): TemplateAction => {
+ const inputSchema =
+ action.schema?.input && 'safeParseAsync' in action.schema.input
+ ? zodToJsonSchema(action.schema.input)
+ : action.schema?.input;
+
+ const outputSchema =
+ action.schema?.output && 'safeParseAsync' in action.schema.output
+ ? zodToJsonSchema(action.schema.output)
+ : action.schema?.output;
+
+ const templateAction = {
+ ...action,
+ schema: {
+ ...action.schema,
+ input: inputSchema,
+ output: outputSchema,
+ },
+ };
+
return templateAction;
};
diff --git a/plugins/scaffolder-node/src/actions/index.ts b/plugins/scaffolder-node/src/actions/index.ts
index 7fdee6d692..e4af098356 100644
--- a/plugins/scaffolder-node/src/actions/index.ts
+++ b/plugins/scaffolder-node/src/actions/index.ts
@@ -14,5 +14,8 @@
* limitations under the License.
*/
-export { createTemplateAction } from './createTemplateAction';
+export {
+ createTemplateAction,
+ type TemplateActionOptions,
+} from './createTemplateAction';
export { type ActionContext, type TemplateAction } from './types';
diff --git a/plugins/scaffolder-node/src/actions/types.ts b/plugins/scaffolder-node/src/actions/types.ts
index 5a4f5796a1..cce149adbe 100644
--- a/plugins/scaffolder-node/src/actions/types.ts
+++ b/plugins/scaffolder-node/src/actions/types.ts
@@ -16,22 +16,22 @@
import { Logger } from 'winston';
import { Writable } from 'stream';
-import { JsonValue, JsonObject } from '@backstage/types';
-import { Schema } from 'jsonschema';
+import { JsonObject, JsonValue } from '@backstage/types';
import { TaskSecrets } from '../tasks/types';
import { TemplateInfo } from '@backstage/plugin-scaffolder-common';
import { UserEntity } from '@backstage/catalog-model';
+import { Schema } from 'jsonschema';
/**
* ActionContext is passed into scaffolder actions.
* @public
*/
-export type ActionContext = {
+export type ActionContext = {
logger: Logger;
logStream: Writable;
secrets?: TaskSecrets;
workspacePath: string;
- input: TInput;
+ input: TActionInput;
output(name: string, value: JsonValue): void;
/**
@@ -63,7 +63,7 @@ export type ActionContext = {
};
/** @public */
-export type TemplateAction = {
+export type TemplateAction = {
id: string;
description?: string;
examples?: { description: string; example: string }[];
@@ -72,5 +72,5 @@ export type TemplateAction = {
input?: Schema;
output?: Schema;
};
- handler: (ctx: ActionContext) => Promise;
+ handler: (ctx: ActionContext) => Promise;
};
diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md
index 24ccc34e4e..25385e4816 100644
--- a/plugins/scaffolder-react/CHANGELOG.md
+++ b/plugins/scaffolder-react/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-scaffolder-react
+## 1.2.0-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
+- d9893263ba9: scaffolder/next: Fix for steps without properties
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 1.2.0-next.1
+
+### Minor Changes
+
+- 8f4d13f21cf: Move `useTaskStream`, `TaskBorder`, `TaskLogStream` and `TaskSteps` into `scaffolder-react`.
+
+### Patch Changes
+
+- 44941fc97eb: scaffolder/next: Move the `uiSchema` to its own property in the validation `context` to align with component development and access of `ui:options`
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
## 1.1.1-next.0
### Patch Changes
diff --git a/plugins/scaffolder-react/alpha-api-report.md b/plugins/scaffolder-react/alpha-api-report.md
index ad44cd3707..35029cb796 100644
--- a/plugins/scaffolder-react/alpha-api-report.md
+++ b/plugins/scaffolder-react/alpha-api-report.md
@@ -22,8 +22,10 @@ import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
import { RJSFSchema } from '@rjsf/utils';
+import { ScaffolderStep } from '@backstage/plugin-scaffolder-react';
import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react';
import { SetStateAction } from 'react';
+import { TaskStep } from '@backstage/plugin-scaffolder-common';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateParameterSchema } from '@backstage/plugin-scaffolder-react';
import { UIOptionsType } from '@rjsf/utils';
@@ -64,13 +66,17 @@ export type FormProps = Pick<
>;
// @alpha
-export type NextCustomFieldValidator = (
+export type NextCustomFieldValidator<
+ TFieldReturnValue,
+ TUiOptions = unknown,
+> = (
data: TFieldReturnValue,
field: FieldValidation,
context: {
apiHolder: ApiHolder;
formData: JsonObject;
schema: JsonObject;
+ uiSchema?: NextFieldExtensionUiSchema;
},
) => void | Promise;
@@ -80,24 +86,29 @@ export interface NextFieldExtensionComponentProps<
TUiOptions = {},
> extends PropsWithChildren> {
// (undocumented)
- uiSchema?: UiSchema & {
- 'ui:options'?: TUiOptions & UIOptionsType;
- };
+ uiSchema?: NextFieldExtensionUiSchema;
}
// @alpha
export type NextFieldExtensionOptions<
TFieldReturnValue = unknown,
- TInputProps = unknown,
+ TUiOptions = unknown,
> = {
name: string;
component: (
- props: NextFieldExtensionComponentProps,
+ props: NextFieldExtensionComponentProps,
) => JSX.Element | null;
- validation?: NextCustomFieldValidator;
+ validation?: NextCustomFieldValidator;
schema?: CustomFieldExtensionSchema;
};
+// @alpha
+export interface NextFieldExtensionUiSchema
+ extends UiSchema {
+ // (undocumented)
+ 'ui:options'?: TUiOptions & UIOptionsType;
+}
+
// @alpha
export interface ParsedTemplateSchema {
// (undocumented)
@@ -140,6 +151,28 @@ export type StepperProps = {
layouts?: LayoutOptions[];
};
+// @alpha
+export const TaskLogStream: (props: {
+ logs: {
+ [k: string]: string[];
+ };
+}) => JSX.Element;
+
+// @alpha
+export const TaskSteps: (props: TaskStepsProps) => JSX.Element;
+
+// @alpha
+export interface TaskStepsProps {
+ // (undocumented)
+ activeStep?: number;
+ // (undocumented)
+ isComplete?: boolean;
+ // (undocumented)
+ isError?: boolean;
+ // (undocumented)
+ steps: (TaskStep & ScaffolderStep)[];
+}
+
// @alpha
export const TemplateCard: (props: TemplateCardProps) => JSX.Element;
diff --git a/plugins/scaffolder-react/api-report.md b/plugins/scaffolder-react/api-report.md
index 384c4b80f2..0fbc8d0eed 100644
--- a/plugins/scaffolder-react/api-report.md
+++ b/plugins/scaffolder-react/api-report.md
@@ -17,10 +17,6 @@ import { JsonValue } from '@backstage/types';
import { Observable } from '@backstage/types';
import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
-import { ScaffolderTask as ScaffolderTask_2 } from '@backstage/plugin-scaffolder-react';
-import { ScaffolderTaskOutput as ScaffolderTaskOutput_2 } from '@backstage/plugin-scaffolder-react';
-import { ScaffolderTaskStatus as ScaffolderTaskStatus_2 } from '@backstage/plugin-scaffolder-react';
-import { Step as Step_2 } from '@backstage/plugin-scaffolder-react';
import { TaskSpec } from '@backstage/plugin-scaffolder-common';
import { TaskStep } from '@backstage/plugin-scaffolder-common';
@@ -236,6 +232,14 @@ export interface ScaffolderScaffoldResponse {
taskId: string;
}
+// @public
+export type ScaffolderStep = {
+ id: string;
+ status: ScaffolderTaskStatus;
+ endedAt?: string;
+ startedAt?: string;
+};
+
// @public
export interface ScaffolderStreamLogsOptions {
// (undocumented)
@@ -277,41 +281,9 @@ export interface ScaffolderUseTemplateSecrets {
}
// @public
-export const SecretsContextProvider: ({
- children,
-}: PropsWithChildren<{}>) => JSX.Element;
-
-// @public
-export type Step = {
- id: string;
- status: ScaffolderTaskStatus_2;
- endedAt?: string;
- startedAt?: string;
-};
-
-// @public (undocumented)
-export interface StepperProps {
- // (undocumented)
- activeStep?: number;
- // (undocumented)
- steps: (TaskStep & Step_2)[];
-}
-
-// @public
-export const TaskBorder: (props: {
- isComplete: boolean;
- isError: boolean;
-}) => JSX.Element;
-
-// @public
-export const TaskLogStream: (props: {
- logs: {
- [k: string]: string[];
- };
-}) => JSX.Element;
-
-// @public
-export const TaskSteps: (props: StepperProps) => JSX.Element;
+export const SecretsContextProvider: (
+ props: PropsWithChildren<{}>,
+) => JSX.Element;
// @public
export type TaskStream = {
@@ -321,11 +293,11 @@ export type TaskStream = {
[stepId in string]: string[];
};
completed: boolean;
- task?: ScaffolderTask_2;
+ task?: ScaffolderTask;
steps: {
- [stepId in string]: Step;
+ [stepId in string]: ScaffolderStep;
};
- output?: ScaffolderTaskOutput_2;
+ output?: ScaffolderTaskOutput;
};
// @public
diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json
index 070a92ee53..4e0cb590e4 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.1.1-next.0",
+ "version": "1.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.tsx b/plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.tsx
deleted file mode 100644
index 8b43d5e17b..0000000000
--- a/plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2022 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import React from 'react';
-import {
- Stepper as MuiStepper,
- Step as MuiStep,
- StepButton as MuiStepButton,
- StepLabel as MuiStepLabel,
- StepIconProps,
- Box,
-} from '@material-ui/core';
-import { TaskStep } from '@backstage/plugin-scaffolder-common';
-import { type Step } from '@backstage/plugin-scaffolder-react';
-import { StepIcon } from './StepIcon';
-import { StepTime } from './StepTime';
-
-/**
- *
- * @public
- */
-export interface StepperProps {
- steps: (TaskStep & Step)[];
- activeStep?: number;
-}
-
-/**
- * The visual stepper of the task event stream
- *
- * @public
- */
-export const TaskSteps = (props: StepperProps) => {
- return (
-
- {props.steps.map((step, index) => {
- const isCompleted = step.status === 'completed';
- const isFailed = step.status === 'failed';
- const isActive = step.status === 'processing';
- const isSkipped = step.status === 'skipped';
- const stepIconProps: Partial = {
- completed: isCompleted,
- error: isFailed,
- active: isActive,
- skipped: isSkipped,
- };
-
- return (
-
-
-
- {step.name}
-
-
-
-
- );
- })}
-
- );
-};
diff --git a/plugins/scaffolder-react/src/hooks/index.ts b/plugins/scaffolder-react/src/hooks/index.ts
index 124950e83d..1016a0af09 100644
--- a/plugins/scaffolder-react/src/hooks/index.ts
+++ b/plugins/scaffolder-react/src/hooks/index.ts
@@ -19,5 +19,5 @@ export { useCustomLayouts } from './useCustomLayouts';
export {
useTaskEventStream,
type TaskStream,
- type Step,
+ type ScaffolderStep,
} from './useEventStream';
diff --git a/plugins/scaffolder-react/src/hooks/useEventStream.ts b/plugins/scaffolder-react/src/hooks/useEventStream.ts
index 101063d258..d8c9cf4c1f 100644
--- a/plugins/scaffolder-react/src/hooks/useEventStream.ts
+++ b/plugins/scaffolder-react/src/hooks/useEventStream.ts
@@ -15,22 +15,23 @@
*/
import { useImmerReducer } from 'use-immer';
import { useEffect } from 'react';
-import {
- ScaffolderTask,
- ScaffolderTaskStatus,
- ScaffolderTaskOutput,
- LogEvent,
- scaffolderApiRef,
-} from '@backstage/plugin-scaffolder-react';
+
import { useApi } from '@backstage/core-plugin-api';
import { Subscription } from '@backstage/types';
+import {
+ LogEvent,
+ scaffolderApiRef,
+ ScaffolderTask,
+ ScaffolderTaskOutput,
+ ScaffolderTaskStatus,
+} from '../api';
/**
* The status of the step being processed
*
* @public
*/
-export type Step = {
+export type ScaffolderStep = {
id: string;
status: ScaffolderTaskStatus;
endedAt?: string;
@@ -48,7 +49,7 @@ export type TaskStream = {
stepLogs: { [stepId in string]: string[] };
completed: boolean;
task?: ScaffolderTask;
- steps: { [stepId in string]: Step };
+ steps: { [stepId in string]: ScaffolderStep };
output?: ScaffolderTaskOutput;
};
@@ -75,7 +76,7 @@ function reducer(draft: TaskStream, action: ReducerAction) {
draft.steps = action.data.spec.steps.reduce((current, next) => {
current[next.id] = { status: 'open', id: next.id };
return current;
- }, {} as { [stepId in string]: Step });
+ }, {} as { [stepId in string]: ScaffolderStep });
draft.stepLogs = action.data.spec.steps.reduce((current, next) => {
current[next.id] = [];
return current;
@@ -153,7 +154,7 @@ export const useTaskEventStream = (taskId: string): TaskStream => {
loading: true,
completed: false,
stepLogs: {} as { [stepId in string]: string[] },
- steps: {} as { [stepId in string]: Step },
+ steps: {} as { [stepId in string]: ScaffolderStep },
});
useEffect(() => {
diff --git a/plugins/scaffolder-react/src/index.ts b/plugins/scaffolder-react/src/index.ts
index 38584ab25b..1b20c19414 100644
--- a/plugins/scaffolder-react/src/index.ts
+++ b/plugins/scaffolder-react/src/index.ts
@@ -20,4 +20,3 @@ export * from './secrets';
export * from './api';
export * from './hooks';
export * from './layouts';
-export * from './components';
diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx
index 444e463064..51a00dfa64 100644
--- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx
+++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx
@@ -26,7 +26,6 @@ import { type IChangeEvent } from '@rjsf/core-v5';
import { ErrorSchema } from '@rjsf/utils';
import React, { useCallback, useMemo, useState, type ReactNode } from 'react';
import { NextFieldExtensionOptions } from '../../extensions';
-import { TemplateParameterSchema } from '@backstage/plugin-scaffolder-react';
import {
createAsyncValidators,
type FormValidation,
@@ -36,11 +35,14 @@ import { useTemplateSchema } from '../../hooks/useTemplateSchema';
import validator from '@rjsf/validator-ajv8';
import { useFormDataFromQuery } from '../../hooks';
import { FormProps } from '../../types';
-import { LayoutOptions } from '@backstage/plugin-scaffolder-react';
import { useTransformSchemaToProps } from '../../hooks/useTransformSchemaToProps';
import { hasErrors } from './utils';
import * as FieldOverrides from './FieldOverrides';
import { Form } from '../Form';
+import {
+ TemplateParameterSchema,
+ LayoutOptions,
+} from '@backstage/plugin-scaffolder-react';
const useStyles = makeStyles(theme => ({
backButton: {
diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts
index 196bae0255..3633410769 100644
--- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts
+++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts
@@ -100,10 +100,12 @@ describe('createAsyncValidators', () => {
expect.objectContaining({
schema: {
type: 'string',
+ pattern: 'lols',
+ },
+ uiSchema: {
'ui:options': {
bob: true,
},
- pattern: 'lols',
'ui:field': 'NameField',
},
}),
@@ -115,7 +117,6 @@ describe('createAsyncValidators', () => {
expect.objectContaining({
schema: {
type: 'object',
- 'ui:field': 'AddressField',
properties: {
street: {
type: 'string',
@@ -125,6 +126,11 @@ describe('createAsyncValidators', () => {
},
},
},
+ uiSchema: {
+ 'ui:field': 'AddressField',
+ street: {},
+ postcode: {},
+ },
}),
);
});
@@ -400,4 +406,39 @@ describe('createAsyncValidators', () => {
expect(validators.TagField).not.toHaveBeenCalled();
});
+
+ it('should call validator for array object property from a custom field extension', async () => {
+ const schema: JsonObject = {
+ type: 'object',
+ properties: {
+ links: {
+ title: 'Links',
+ type: 'array',
+ items: {
+ type: 'object',
+ required: ['url', 'title', 'icon'],
+ properties: {
+ url: {
+ title: 'url',
+ description: 'url',
+ type: 'object',
+ 'ui:field': 'CustomLinkField',
+ },
+ },
+ },
+ },
+ },
+ };
+ const validators = { CustomLinkField: jest.fn() };
+
+ const validate = createAsyncValidators(schema, validators, {
+ apiHolder: { get: jest.fn() },
+ });
+
+ await validate({
+ links: [{ url: 'http://my-url.spotify.com' }],
+ });
+
+ expect(validators.CustomLinkField).toHaveBeenCalled();
+ });
});
diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts
index 111f3a0f1f..ceef701255 100644
--- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts
+++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts
@@ -18,9 +18,10 @@ import { FieldValidation } from '@rjsf/utils';
import type { JsonObject, JsonValue } from '@backstage/types';
import { ApiHolder } from '@backstage/core-plugin-api';
import { Draft07 as JSONSchema } from 'json-schema-library';
-import { createFieldValidation } from '../../lib';
+import { createFieldValidation, extractSchemaFromStep } from '../../lib';
import { NextCustomFieldValidator } from '../../extensions';
import { isObject } from './utils';
+import { NextFieldExtensionUiSchema } from '../../extensions/types';
/**
* @internal
@@ -31,7 +32,10 @@ export type FormValidation = {
export const createAsyncValidators = (
rootSchema: JsonObject,
- validators: Record>,
+ validators: Record<
+ string,
+ undefined | NextCustomFieldValidator
+ >,
context: {
apiHolder: ApiHolder;
},
@@ -49,6 +53,7 @@ export const createAsyncValidators = (
key: string,
value: JsonValue | undefined,
schema: JsonObject,
+ uiSchema: NextFieldExtensionUiSchema,
) => {
const validator = validators[validatorName];
if (validator) {
@@ -58,6 +63,7 @@ export const createAsyncValidators = (
...context,
formData,
schema,
+ uiSchema,
});
} catch (ex) {
fieldValidation.addError(ex.message);
@@ -69,28 +75,41 @@ export const createAsyncValidators = (
for (const [key, value] of Object.entries(current)) {
const path = `${pathPrefix}/${key}`;
const definitionInSchema = parsedSchema.getSchema(path, formData);
+ const { schema, uiSchema } = extractSchemaFromStep(definitionInSchema);
+
+ const hasItems = definitionInSchema && definitionInSchema.items;
+
+ const doValidateItem = async (
+ propValue: JsonObject,
+ itemSchema: JsonObject,
+ itemUiSchema: NextFieldExtensionUiSchema,
+ ) => {
+ await validateForm(
+ propValue['ui:field'] as string,
+ key,
+ value,
+ itemSchema,
+ itemUiSchema,
+ );
+ };
+
+ const doValidate = async (propValue: JsonObject) => {
+ if ('ui:field' in propValue) {
+ const { schema: itemsSchema, uiSchema: itemsUiSchema } =
+ extractSchemaFromStep(definitionInSchema.items);
+ await doValidateItem(propValue, itemsSchema, itemsUiSchema);
+ }
+ };
if (definitionInSchema && 'ui:field' in definitionInSchema) {
- if ('ui:field' in definitionInSchema) {
- await validateForm(
- definitionInSchema['ui:field'],
- key,
- value,
- definitionInSchema,
- );
- }
- } else if (
- definitionInSchema &&
- definitionInSchema.items &&
- 'ui:field' in definitionInSchema.items
- ) {
- if ('ui:field' in definitionInSchema.items) {
- await validateForm(
- definitionInSchema.items['ui:field'],
- key,
- value,
- definitionInSchema.items,
- );
+ await doValidateItem(definitionInSchema, schema, uiSchema);
+ } else if (hasItems && 'ui:field' in definitionInSchema.items) {
+ await doValidate(definitionInSchema.items);
+ } else if (hasItems && definitionInSchema.items.type === 'object') {
+ const properties = (definitionInSchema.items?.properties ??
+ []) as JsonObject[];
+ for (const [, propValue] of Object.entries(properties)) {
+ await doValidate(propValue);
}
} else if (isObject(value)) {
formValidation[key] = await validate(formData, path, value);
diff --git a/plugins/scaffolder-react/src/components/TaskLogStream/TaskLogStream.test.tsx b/plugins/scaffolder-react/src/next/components/TaskLogStream/TaskLogStream.test.tsx
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskLogStream/TaskLogStream.test.tsx
rename to plugins/scaffolder-react/src/next/components/TaskLogStream/TaskLogStream.test.tsx
diff --git a/plugins/scaffolder-react/src/components/TaskLogStream/TaskLogStream.tsx b/plugins/scaffolder-react/src/next/components/TaskLogStream/TaskLogStream.tsx
similarity index 99%
rename from plugins/scaffolder-react/src/components/TaskLogStream/TaskLogStream.tsx
rename to plugins/scaffolder-react/src/next/components/TaskLogStream/TaskLogStream.tsx
index 973627aa02..4ce1df7a29 100644
--- a/plugins/scaffolder-react/src/components/TaskLogStream/TaskLogStream.tsx
+++ b/plugins/scaffolder-react/src/next/components/TaskLogStream/TaskLogStream.tsx
@@ -28,7 +28,7 @@ const useStyles = makeStyles({
/**
* The text of the event stream
*
- * @public
+ * @alpha
*/
export const TaskLogStream = (props: { logs: { [k: string]: string[] } }) => {
const styles = useStyles();
diff --git a/plugins/scaffolder-react/src/components/TaskLogStream/index.ts b/plugins/scaffolder-react/src/next/components/TaskLogStream/index.ts
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskLogStream/index.ts
rename to plugins/scaffolder-react/src/next/components/TaskLogStream/index.ts
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/StepIcon.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/StepIcon.tsx
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskSteps/StepIcon.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/StepIcon.tsx
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/StepTime.test.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/StepTime.test.tsx
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskSteps/StepTime.test.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/StepTime.test.tsx
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/StepTime.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/StepTime.tsx
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskSteps/StepTime.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/StepTime.tsx
diff --git a/plugins/scaffolder-react/src/components/TaskBorder/TaskBorder.test.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskBorder.test.tsx
similarity index 100%
rename from plugins/scaffolder-react/src/components/TaskBorder/TaskBorder.test.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/TaskBorder.test.tsx
diff --git a/plugins/scaffolder-react/src/components/TaskBorder/TaskBorder.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskBorder.tsx
similarity index 98%
rename from plugins/scaffolder-react/src/components/TaskBorder/TaskBorder.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/TaskBorder.tsx
index 17eea3997a..2d8e99bfe7 100644
--- a/plugins/scaffolder-react/src/components/TaskBorder/TaskBorder.tsx
+++ b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskBorder.tsx
@@ -28,8 +28,6 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({
/**
* The visual progress of the task event stream
- *
- * @public
*/
export const TaskBorder = (props: {
isComplete: boolean;
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.test.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.test.tsx
similarity index 96%
rename from plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.test.tsx
rename to plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.test.tsx
index afd1f58190..0945843961 100644
--- a/plugins/scaffolder-react/src/components/TaskSteps/TaskSteps.test.tsx
+++ b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.test.tsx
@@ -15,8 +15,8 @@
*/
import React from 'react';
import { TaskSteps } from './TaskSteps';
-import { ScaffolderTaskStatus } from '@backstage/plugin-scaffolder-react';
import { renderInTestApp } from '@backstage/test-utils';
+import { ScaffolderTaskStatus } from '../../../api';
describe('TaskSteps', () => {
it('should render each of the steps', async () => {
diff --git a/plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.tsx b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.tsx
new file mode 100644
index 0000000000..632500f07e
--- /dev/null
+++ b/plugins/scaffolder-react/src/next/components/TaskSteps/TaskSteps.tsx
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import {
+ Stepper as MuiStepper,
+ Step as MuiStep,
+ StepButton as MuiStepButton,
+ StepLabel as MuiStepLabel,
+ StepIconProps,
+ Box,
+ Paper,
+} from '@material-ui/core';
+import { TaskStep } from '@backstage/plugin-scaffolder-common';
+import { StepIcon } from './StepIcon';
+import { StepTime } from './StepTime';
+import { TaskBorder } from './TaskBorder';
+import { ScaffolderStep } from '@backstage/plugin-scaffolder-react';
+
+/**
+ * Props for the TaskSteps component
+ *
+ * @alpha
+ */
+export interface TaskStepsProps {
+ steps: (TaskStep & ScaffolderStep)[];
+ activeStep?: number;
+ isComplete?: boolean;
+ isError?: boolean;
+}
+
+/**
+ * The visual stepper of the task event stream
+ *
+ * @alpha
+ */
+export const TaskSteps = (props: TaskStepsProps) => {
+ return (
+
+
+
+
+ {props.steps.map((step, index) => {
+ const isCompleted = step.status === 'completed';
+ const isFailed = step.status === 'failed';
+ const isActive = step.status === 'processing';
+ const isSkipped = step.status === 'skipped';
+ const stepIconProps: Partial =
+ {
+ completed: isCompleted,
+ error: isFailed,
+ active: isActive,
+ skipped: isSkipped,
+ };
+
+ return (
+
+
+
+ {step.name}
+
+
+
+
+ );
+ })}
+
+
+
+ );
+};
diff --git a/plugins/scaffolder-react/src/components/TaskSteps/index.ts b/plugins/scaffolder-react/src/next/components/TaskSteps/index.ts
similarity index 90%
rename from plugins/scaffolder-react/src/components/TaskSteps/index.ts
rename to plugins/scaffolder-react/src/next/components/TaskSteps/index.ts
index 91f5537bd3..45ff9ccf7c 100644
--- a/plugins/scaffolder-react/src/components/TaskSteps/index.ts
+++ b/plugins/scaffolder-react/src/next/components/TaskSteps/index.ts
@@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-export { TaskSteps, type StepperProps } from './TaskSteps';
+export { TaskSteps, type TaskStepsProps } from './TaskSteps';
diff --git a/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx b/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx
index 3a5785a4f6..608af1a0bf 100644
--- a/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx
+++ b/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx
@@ -21,17 +21,22 @@ import { BackstageTheme } from '@backstage/theme';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { FavoriteEntity } from '@backstage/plugin-catalog-react';
-const useStyles = makeStyles(
- () => ({
- header: {
- backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage,
- },
- subtitleWrapper: {
- display: 'flex',
- justifyContent: 'space-between',
- },
- }),
-);
+const useStyles = makeStyles<
+ BackstageTheme,
+ {
+ cardFontColor: string;
+ cardBackgroundImage: string;
+ }
+>(() => ({
+ header: {
+ backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage,
+ color: ({ cardFontColor }) => cardFontColor,
+ },
+ subtitleWrapper: {
+ display: 'flex',
+ justifyContent: 'space-between',
+ },
+}));
/**
* Props for the CardHeader component
@@ -54,6 +59,7 @@ export const CardHeader = (props: CardHeaderProps) => {
const themeForType = getPageTheme({ themeId: type });
const styles = useStyles({
+ cardFontColor: themeForType.fontColor,
cardBackgroundImage: themeForType.backgroundImage,
});
diff --git a/plugins/scaffolder-react/src/next/components/index.ts b/plugins/scaffolder-react/src/next/components/index.ts
index 60a8fd9a51..083d88927e 100644
--- a/plugins/scaffolder-react/src/next/components/index.ts
+++ b/plugins/scaffolder-react/src/next/components/index.ts
@@ -20,3 +20,5 @@ export * from './TemplateGroup';
export * from './Workflow';
export * from './TemplateOutputs';
export * from './Form';
+export * from './TaskSteps';
+export * from './TaskLogStream';
diff --git a/plugins/scaffolder-react/src/next/extensions/index.tsx b/plugins/scaffolder-react/src/next/extensions/index.tsx
index b2d402c93f..70751936c5 100644
--- a/plugins/scaffolder-react/src/next/extensions/index.tsx
+++ b/plugins/scaffolder-react/src/next/extensions/index.tsx
@@ -18,12 +18,12 @@ import {
NextCustomFieldValidator,
NextFieldExtensionOptions,
NextFieldExtensionComponentProps,
+ NextFieldExtensionUiSchema,
} from './types';
import { Extension, attachComponentData } from '@backstage/core-plugin-api';
import { UIOptionsType } from '@rjsf/utils';
-// eslint-disable-next-line import/no-extraneous-dependencies
-import { FieldExtensionComponent } from '@backstage/plugin-scaffolder-react';
import { FIELD_EXTENSION_KEY } from '../../extensions/keys';
+import { FieldExtensionComponent } from '@backstage/plugin-scaffolder-react';
/**
* Method for creating field extensions that can be used in the scaffolder
@@ -55,4 +55,5 @@ export type {
NextCustomFieldValidator,
NextFieldExtensionOptions,
NextFieldExtensionComponentProps,
+ NextFieldExtensionUiSchema,
};
diff --git a/plugins/scaffolder-react/src/next/extensions/types.ts b/plugins/scaffolder-react/src/next/extensions/types.ts
index 0917efe85d..803dcb2be6 100644
--- a/plugins/scaffolder-react/src/next/extensions/types.ts
+++ b/plugins/scaffolder-react/src/next/extensions/types.ts
@@ -33,9 +33,17 @@ export interface NextFieldExtensionComponentProps<
TFieldReturnValue,
TUiOptions = {},
> extends PropsWithChildren> {
- uiSchema?: UiSchemaV5 & {
- 'ui:options'?: TUiOptions & UIOptionsType;
- };
+ uiSchema?: NextFieldExtensionUiSchema;
+}
+
+/**
+ * Type for Field Extension UiSchema
+ *
+ * @alpha
+ */
+export interface NextFieldExtensionUiSchema
+ extends UiSchemaV5 {
+ 'ui:options'?: TUiOptions & UIOptionsType;
}
/**
@@ -43,13 +51,17 @@ export interface NextFieldExtensionComponentProps<
*
* @alpha
*/
-export type NextCustomFieldValidator = (
+export type NextCustomFieldValidator<
+ TFieldReturnValue,
+ TUiOptions = unknown,
+> = (
data: TFieldReturnValue,
field: FieldValidationV5,
context: {
apiHolder: ApiHolder;
formData: JsonObject;
schema: JsonObject;
+ uiSchema?: NextFieldExtensionUiSchema;
},
) => void | Promise;
@@ -61,12 +73,12 @@ export type NextCustomFieldValidator = (
*/
export type NextFieldExtensionOptions<
TFieldReturnValue = unknown,
- TInputProps = unknown,
+ TUiOptions = unknown,
> = {
name: string;
component: (
- props: NextFieldExtensionComponentProps,
+ props: NextFieldExtensionComponentProps,
) => JSX.Element | null;
- validation?: NextCustomFieldValidator;
+ validation?: NextCustomFieldValidator;
schema?: CustomFieldExtensionSchema;
};
diff --git a/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.test.tsx b/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.test.tsx
index ab33652338..d257d69c59 100644
--- a/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.test.tsx
+++ b/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.test.tsx
@@ -18,7 +18,7 @@ import { renderHook } from '@testing-library/react-hooks';
import { TestApiProvider } from '@backstage/test-utils';
import React from 'react';
import { featureFlagsApiRef } from '@backstage/core-plugin-api';
-import { TemplateParameterSchema } from '@backstage/plugin-scaffolder-react';
+import { TemplateParameterSchema } from '../../types';
describe('useTemplateSchema', () => {
it('should generate the correct schema', () => {
@@ -232,5 +232,39 @@ describe('useTemplateSchema', () => {
},
});
});
+
+ it('should deal with steps having no properties', () => {
+ const manifest: TemplateParameterSchema = {
+ title: 'Test Template',
+ description: 'Test Template Description',
+ steps: [
+ {
+ title: 'About step',
+ description:
+ 'The first step giving the initial information about the template',
+ schema: {
+ type: 'object',
+ },
+ },
+ ],
+ };
+
+ const { result } = renderHook(() => useTemplateSchema(manifest), {
+ wrapper: ({ children }) => (
+ false }]]}
+ >
+ {children}
+
+ ),
+ });
+
+ const [first] = result.current.steps;
+
+ expect(first.schema).toEqual({
+ type: 'object',
+ properties: {},
+ });
+ });
});
});
diff --git a/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.ts b/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.ts
index 26980b15cf..df70df965c 100644
--- a/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.ts
+++ b/plugins/scaffolder-react/src/next/hooks/useTemplateSchema.ts
@@ -62,7 +62,7 @@ export const useTemplateSchema = (
// Title is rendered at the top of the page, so let's ignore this from jsonschemaform
title: undefined,
properties: Object.fromEntries(
- Object.entries(step.schema.properties as JsonObject).filter(
+ Object.entries((step.schema?.properties ?? []) as JsonObject).filter(
([key]) => {
const stepFeatureFlag =
step.uiSchema[key]?.['ui:backstage']?.featureFlag;
diff --git a/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts b/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts
index 612ad5427b..1e714eb874 100644
--- a/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts
+++ b/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts
@@ -13,8 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import { LayoutOptions } from '../../layouts';
import { type ParsedTemplateSchema } from './useTemplateSchema';
-import { type LayoutOptions } from '@backstage/plugin-scaffolder-react';
interface Options {
layouts?: LayoutOptions[];
diff --git a/plugins/scaffolder-react/src/secrets/SecretsContext.tsx b/plugins/scaffolder-react/src/secrets/SecretsContext.tsx
index af5c2393cd..3cbd23597a 100644
--- a/plugins/scaffolder-react/src/secrets/SecretsContext.tsx
+++ b/plugins/scaffolder-react/src/secrets/SecretsContext.tsx
@@ -43,14 +43,14 @@ const SecretsContext = createVersionedContext<{
* The Context Provider that holds the state for the secrets.
* @public
*/
-export const SecretsContextProvider = ({ children }: PropsWithChildren<{}>) => {
+export const SecretsContextProvider = (props: PropsWithChildren<{}>) => {
const [secrets, setSecrets] = useState>({});
return (
- {children}
+ {props.children}
);
};
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index 2c12e00c10..d3c377154e 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,56 @@
# @backstage/plugin-scaffolder
+## 1.12.0-next.2
+
+### Minor Changes
+
+- 0d61fcca9c3: Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version.
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles.
+- 0aae4596296: Fix the scaffolder validator for arrays when the item is a field in the object
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/plugin-scaffolder-react@1.2.0-next.2
+ - @backstage/plugin-catalog-react@1.4.0-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/integration-react@1.1.11-next.2
+ - @backstage/plugin-permission-react@0.4.11-next.2
+ - @backstage/config@1.0.7-next.0
+ - @backstage/integration@1.4.3-next.0
+
+## 1.12.0-next.1
+
+### Minor Changes
+
+- 8f4d13f21cf: Move `useTaskStream`, `TaskBorder`, `TaskLogStream` and `TaskSteps` into `scaffolder-react`.
+
+### Patch Changes
+
+- be3cddaab5f: Getting credentials in the RepoUrlPicker now also works for targets without owner (e.g. Bitbucket Server).
+- cb8ec97cdeb: Change black & white colors to be theme aware
+- eb877bad736: Create an "Other Templates" group when groups are given to scaffolder/next.
+- c10384a9235: Switch to using `LinkButton` instead of the deprecated `Button`
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-scaffolder-react@1.2.0-next.1
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/catalog-client@1.4.0-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/integration-react@1.1.11-next.1
+ - @backstage/integration@1.4.3-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/plugin-catalog-react@1.4.0-next.1
+ - @backstage/catalog-model@1.2.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/plugin-catalog-common@1.0.12-next.1
+ - @backstage/plugin-permission-react@0.4.11-next.1
+ - @backstage/plugin-scaffolder-common@1.2.6-next.1
+
## 1.11.1-next.0
### Patch Changes
diff --git a/plugins/scaffolder/README.md b/plugins/scaffolder/README.md
index 83fa01e6e5..80d59160c4 100644
--- a/plugins/scaffolder/README.md
+++ b/plugins/scaffolder/README.md
@@ -1,7 +1,7 @@
# Scaffolder Frontend
This is the React frontend for the default Backstage [software
-templates](https://backstage.io/docs/features/software-templates/software-templates-index).
+templates](https://backstage.io/docs/features/software-templates/).
This package supplies interfaces related to showing available templates in the
Backstage catalog and the workflow to create software using those templates.
diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md
index 43cc657a03..6b8d6d345f 100644
--- a/plugins/scaffolder/api-report.md
+++ b/plugins/scaffolder/api-report.md
@@ -460,7 +460,7 @@ export type ScaffolderTaskStatus = ScaffolderTaskStatus_2;
export type ScaffolderUseTemplateSecrets = ScaffolderUseTemplateSecrets_2;
// @public
-export const TaskPage: ({ loadingText }: TaskPageProps) => JSX.Element;
+export const TaskPage: (props: TaskPageProps) => JSX.Element;
// @public
export type TaskPageProps = {
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 8a0c1f8e26..7d939a3d1e 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.11.1-next.0",
+ "version": "1.12.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx
index 9e69fae68d..ef79eda406 100644
--- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx
+++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx
@@ -15,6 +15,7 @@
*/
import { useRouteRef } from '@backstage/core-plugin-api';
+import { BackstageTheme } from '@backstage/theme';
import IconButton from '@material-ui/core/IconButton';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
@@ -34,11 +35,11 @@ import {
scaffolderListTaskRouteRef,
} from '../../routes';
-const useStyles = makeStyles({
+const useStyles = makeStyles(theme => ({
button: {
- color: 'white',
+ color: theme.page.fontColor,
},
-});
+}));
export type ScaffolderPageContextMenuProps = {
editor?: boolean;
diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx
index a45f0cf413..f78d48e686 100644
--- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx
+++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx
@@ -243,7 +243,9 @@ export type TaskPageProps = {
*
* @public
*/
-export const TaskPage = ({ loadingText }: TaskPageProps) => {
+export const TaskPage = (props: TaskPageProps) => {
+ const { loadingText } = props;
+
const classes = useStyles();
const navigate = useNavigate();
const rootPath = useRouteRef(rootRouteRef);
diff --git a/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx
index e557f4d165..825317ef73 100644
--- a/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx
+++ b/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx
@@ -64,12 +64,16 @@ import WarningIcon from '@material-ui/icons/Warning';
import React from 'react';
import { selectedTemplateRouteRef, viewTechDocRouteRef } from '../../routes';
-const useStyles = makeStyles(theme => ({
+const useStyles = makeStyles<
+ BackstageTheme,
+ { fontColor: string; backgroundImage: string }
+>(theme => ({
cardHeader: {
position: 'relative',
},
title: {
- backgroundImage: ({ backgroundImage }: any) => backgroundImage,
+ backgroundImage: ({ backgroundImage }) => backgroundImage,
+ color: ({ fontColor }) => fontColor,
},
box: {
overflow: 'hidden',
@@ -103,7 +107,7 @@ const useStyles = makeStyles(theme => ({
top: theme.spacing(0.5),
right: theme.spacing(0.5),
padding: '0.25rem',
- color: '#fff',
+ color: theme.palette.common.white,
},
}));
@@ -186,7 +190,10 @@ export const TemplateCard = ({ template, deprecated }: TemplateCardProps) => {
? templateProps.type
: 'other';
const theme = backstageTheme.getPageTheme({ themeId });
- const classes = useStyles({ backgroundImage: theme.backgroundImage });
+ const classes = useStyles({
+ fontColor: theme.fontColor,
+ backgroundImage: theme.backgroundImage,
+ });
const { name, namespace } = parseEntityRef(stringifyEntityRef(template));
const href = templateRoute({ templateName: name, namespace });
diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
index f5be77811a..1858e40241 100644
--- a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
+++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
@@ -19,6 +19,12 @@ import { CustomFieldValidator } from '@backstage/plugin-scaffolder-react';
import { ApiHolder } from '@backstage/core-plugin-api';
import { FieldValidation, FormValidation } from '@rjsf/core';
+type CustomLinkType = {
+ url: string;
+ title: string;
+ icon: string;
+};
+
describe('createValidator', () => {
const validators: Record> =
{
@@ -31,6 +37,23 @@ describe('createValidator', () => {
fieldValidation.addError('Error !');
}
},
+ CustomLink: (
+ values: unknown,
+ fieldValidation: FieldValidation,
+ _context: { apiHolder: ApiHolder },
+ ) => {
+ const input = values as CustomLinkType[];
+ for (const item of input) {
+ const validGitlabUrlRegex =
+ /gitlab\.(?:stg\.)?spotify\.com\?owner=.*&repo=.*/;
+
+ if (!item || !validGitlabUrlRegex.test(item.url)) {
+ fieldValidation.addError(
+ `Make sure to put in a valid gitlab clone url.`,
+ );
+ }
+ }
+ },
TagPicker: (
values: unknown,
fieldValidation: FieldValidation,
@@ -123,4 +146,53 @@ describe('createValidator', () => {
expect(result).not.toBeNull();
expect(result.tags.addError).toHaveBeenCalledTimes(1);
});
+
+ it('should call validator for array object property from a custom field extension', () => {
+ /* GIVEN */
+ const rootSchema = {
+ title: 'My links',
+ properties: {
+ links: {
+ title: 'Links',
+ type: 'array',
+ items: {
+ type: 'object',
+ required: ['url', 'title', 'icon'],
+ properties: {
+ url: {
+ title: 'url',
+ description: 'url',
+ type: 'object',
+ 'ui:field': 'CustomLink',
+ },
+ },
+ },
+ },
+ },
+ };
+ const validator = createValidator(rootSchema, validators, context);
+
+ const formData = {
+ links: [
+ {
+ url: 'http://gitlab.spotify.nl/owener=me&repo=test',
+ icon: 'subject',
+ title: 'My repository for testing features',
+ } as CustomLinkType,
+ ],
+ };
+ const errors = {
+ addError: jest.fn(),
+ links: {
+ addError: jest.fn(),
+ } as unknown as FormValidation,
+ } as unknown as FormValidation;
+
+ /* WHEN */
+ const result = validator(formData, errors);
+
+ /* THEN */
+ expect(result).not.toBeNull();
+ expect(result.links.addError).toHaveBeenCalledTimes(1);
+ });
});
diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
index 123a7e800e..8bfe8c8313 100644
--- a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
+++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts
@@ -50,40 +50,42 @@ export const createValidator = (
for (const [key, propData] of Object.entries(formData)) {
const propValidation = errors[key];
- const propSchemaProps = schemaProps[key];
- if (isObject(propData)) {
- if (isObject(propSchemaProps)) {
- validate(
- propSchemaProps,
- propData as JsonObject,
- propValidation as FormValidation,
- );
+ const doValidate = (item: JsonValue | undefined) => {
+ if (item && isObject(item)) {
+ const fieldName = item['ui:field'] as string;
+ if (fieldName && typeof validators[fieldName] === 'function') {
+ validators[fieldName]!(
+ propData as JsonObject[],
+ propValidation,
+ context,
+ );
+ }
}
+ };
+
+ const propSchemaProps = schemaProps[key];
+ if (isObject(propData) && isObject(propSchemaProps)) {
+ validate(
+ propSchemaProps,
+ propData as JsonObject,
+ propValidation as FormValidation,
+ );
} else if (isArray(propData)) {
if (isObject(propSchemaProps)) {
const { items } = propSchemaProps;
if (isObject(items)) {
- const fieldName = items['ui:field'] as string;
- if (fieldName && typeof validators[fieldName] === 'function') {
- validators[fieldName]!(
- propData as JsonObject[],
- propValidation,
- context,
- );
+ if (items.type === 'object') {
+ const properties = (items?.properties ?? []) as JsonObject[];
+ for (const [, value] of Object.entries(properties)) {
+ doValidate(value);
+ }
+ } else {
+ doValidate(items);
}
}
}
} else {
- const fieldName =
- isObject(propSchemaProps) &&
- (propSchemaProps['ui:field'] as string);
- if (fieldName && typeof validators[fieldName] === 'function') {
- validators[fieldName]!(
- propData as JsonValue,
- propValidation,
- context,
- );
- }
+ doValidate(propSchemaProps);
}
}
} else if (customObject) {
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
index b6d6688a09..3cc45e6412 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
@@ -236,4 +236,54 @@ describe('', () => {
});
});
});
+
+ describe('uses full entity ref', () => {
+ beforeEach(() => {
+ uiSchema = {
+ 'ui:options': {
+ defaultKind: 'Group',
+ },
+ };
+ props = {
+ onChange,
+ schema,
+ required,
+ uiSchema,
+ rawErrors,
+ formData,
+ } as unknown as FieldProps;
+
+ catalogApi.getEntities.mockResolvedValue({ items: entities });
+ });
+
+ it('returns the full entityRef when entity exists in the list', async () => {
+ const { getByRole } = await renderInTestApp(
+
+
+ ,
+ );
+
+ const input = getByRole('textbox');
+
+ fireEvent.change(input, { target: { value: 'team-a' } });
+ fireEvent.blur(input);
+
+ expect(onChange).toHaveBeenCalledWith('group:default/team-a');
+ });
+
+ it('returns the full entityRef when entity does not exist in the list', async () => {
+ const { getByRole } = await renderInTestApp(
+
+
+ ,
+ );
+
+ const input = getByRole('textbox');
+
+ fireEvent.change(input, { target: { value: 'team-b' } });
+ fireEvent.blur(input);
+
+ expect(onChange).toHaveBeenCalledWith('group:default/team-b');
+ });
+ });
});
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
index 48e60b60ad..48d6453ab9 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
@@ -14,6 +14,11 @@
* limitations under the License.
*/
import { type EntityFilterQuery } from '@backstage/catalog-client';
+import {
+ Entity,
+ parseEntityRef,
+ stringifyEntityRef,
+} from '@backstage/catalog-model';
import { useApi } from '@backstage/core-plugin-api';
import {
catalogApiRef,
@@ -21,7 +26,9 @@ import {
} from '@backstage/plugin-catalog-react';
import { TextField } from '@material-ui/core';
import FormControl from '@material-ui/core/FormControl';
-import Autocomplete from '@material-ui/lab/Autocomplete';
+import Autocomplete, {
+ AutocompleteChangeReason,
+} from '@material-ui/lab/Autocomplete';
import React, { useCallback, useEffect } from 'react';
import useAsync from 'react-use/lib/useAsync';
import { EntityPickerProps } from './schema';
@@ -51,32 +58,72 @@ export const EntityPicker = (props: EntityPickerProps) => {
(allowedKinds && { kind: allowedKinds });
const defaultKind = uiSchema['ui:options']?.defaultKind;
- const defaultNamespace = uiSchema['ui:options']?.defaultNamespace;
+ const defaultNamespace =
+ uiSchema['ui:options']?.defaultNamespace || undefined;
const catalogApi = useApi(catalogApiRef);
- const { value: entities, loading } = useAsync(() =>
- catalogApi.getEntities(
+ const { value: entities, loading } = useAsync(async () => {
+ const { items } = await catalogApi.getEntities(
catalogFilter ? { filter: catalogFilter } : undefined,
- ),
- );
+ );
+ return items;
+ });
+ const allowArbitraryValues =
+ uiSchema['ui:options']?.allowArbitraryValues ?? true;
- const entityRefs = entities?.items.map(e =>
- humanizeEntityRef(e, { defaultKind, defaultNamespace }),
+ const getLabel = useCallback(
+ (ref: string) => {
+ try {
+ return humanizeEntityRef(
+ parseEntityRef(ref, { defaultKind, defaultNamespace }),
+ {
+ defaultKind,
+ defaultNamespace,
+ },
+ );
+ } catch (err) {
+ return ref;
+ }
+ },
+ [defaultKind, defaultNamespace],
);
const onSelect = useCallback(
- (_: any, value: string | null) => {
- onChange(value ?? undefined);
+ (_: any, ref: string | Entity | null, reason: AutocompleteChangeReason) => {
+ // ref can either be a string from free solo entry or
+ if (typeof ref !== 'string') {
+ onChange(ref ? stringifyEntityRef(ref as Entity) : '');
+ } else {
+ if (reason === 'blur' || reason === 'create-option') {
+ // Add in default namespace, etc.
+ let entityRef = ref;
+ try {
+ // Attempt to parse the entity ref into it's full form.
+ entityRef = stringifyEntityRef(
+ parseEntityRef(ref as string, {
+ defaultKind,
+ defaultNamespace,
+ }),
+ );
+ } catch (err) {
+ // If the passed in value isn't an entity ref, do nothing.
+ }
+ // We need to check against formData here as that's the previous value for this field.
+ if (formData !== ref || allowArbitraryValues) {
+ onChange(entityRef);
+ }
+ }
+ }
},
- [onChange],
+ [onChange, formData, defaultKind, defaultNamespace, allowArbitraryValues],
);
useEffect(() => {
- if (entityRefs?.length === 1) {
- onChange(entityRefs[0]);
+ if (entities?.length === 1) {
+ onChange(stringifyEntityRef(entities[0]));
}
- }, [entityRefs, onChange]);
+ }, [entities, onChange]);
return (
{
error={rawErrors?.length > 0 && !formData}
>
stringifyEntityRef(e) === formData) ??
+ (allowArbitraryValues && formData ? getLabel(formData) : '')
+ }
loading={loading}
onChange={onSelect}
- options={entityRefs || []}
+ options={entities || []}
+ getOptionLabel={option =>
+ // option can be a string due to freeSolo.
+ typeof option === 'string'
+ ? option
+ : humanizeEntityRef(option, { defaultKind, defaultNamespace })!
+ }
autoSelect
- freeSolo={uiSchema['ui:options']?.allowArbitraryValues ?? true}
+ freeSolo={allowArbitraryValues}
renderInput={params => (
{
const {
- onChange,
schema: { title = 'Entity', description = 'An entity from the catalog' },
- required,
uiSchema,
- rawErrors,
- formData,
- idSchema,
+ required,
} = props;
+ const identityApi = useApi(identityApiRef);
+ const { loading, value: identityRefs } = useAsync(async () => {
+ const identity = await identityApi.getBackstageIdentity();
+ return identity.ownershipEntityRefs;
+ });
+
const allowedKinds = uiSchema['ui:options']?.allowedKinds;
- const defaultKind = uiSchema['ui:options']?.defaultKind;
- const defaultNamespace = uiSchema['ui:options']?.defaultNamespace;
- const allowArbitraryValues =
- uiSchema['ui:options']?.allowArbitraryValues ?? true;
- const { ownedEntities, loading } = useOwnedEntities(allowedKinds);
-
- const entityRefs = ownedEntities?.items
- .map(e => humanizeEntityRef(e, { defaultKind, defaultNamespace }))
- .filter(n => n);
-
- const onSelect = (_: any, value: string | null) => {
- onChange(value || '');
- };
-
- return (
- 0 && !formData}
- >
+ if (loading)
+ return (
(
)}
+ options={[]}
/>
-
+ );
+
+ return (
+
);
};
-
-/**
- * Takes the relevant parts of the Backstage identity, and translates them into
- * a list of entities which are owned by the user. Takes an optional parameter
- * to filter the entities based on allowedKinds
- *
- *
- * @param allowedKinds - Array of allowed kinds to filter the entities
- */
-function useOwnedEntities(allowedKinds?: string[]): {
- loading: boolean;
- ownedEntities: GetEntitiesResponse | undefined;
-} {
- const identityApi = useApi(identityApiRef);
- const catalogApi = useApi(catalogApiRef);
-
- const { loading, value: refs } = useAsync(async () => {
- const identity = await identityApi.getBackstageIdentity();
- const identityRefs = identity.ownershipEntityRefs;
- const catalogs = await catalogApi.getEntities(
- allowedKinds
- ? {
- filter: {
- kind: allowedKinds,
- [`relations.${RELATION_OWNED_BY}`]: identityRefs || [],
- },
- }
- : {
- filter: {
- [`relations.${RELATION_OWNED_BY}`]: identityRefs || [],
- },
- },
- );
- return catalogs;
- }, []);
-
- const ownedEntities = useMemo(() => {
- return refs;
- }, [refs]);
-
- return useMemo(() => ({ loading, ownedEntities }), [loading, ownedEntities]);
-}
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
index 1edb4fb940..c36374f939 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx
@@ -38,6 +38,11 @@ describe('RepoUrlPicker', () => {
integrations: [
{ host: 'github.com', type: 'github', title: 'github.com' },
{ host: 'dev.azure.com', type: 'azure', title: 'dev.azure.com' },
+ {
+ host: 'server.bitbucket.org',
+ type: 'bitbucketServer',
+ title: 'server.bitbucket.org',
+ },
],
}),
};
@@ -175,6 +180,65 @@ describe('RepoUrlPicker', () => {
getByTestId('current-secrets').textContent!,
);
+ expect(currentSecrets).toEqual({
+ secrets: { testKey: 'abc123' },
+ });
+ });
+ it('should call the scmAuthApi with the correct params if only a project is set', async () => {
+ const SecretsComponent = () => {
+ const { secrets } = useTemplateSecrets();
+ return (
+ {JSON.stringify({ secrets })}
+ );
+ };
+ const { getAllByRole, getByTestId } = await renderInTestApp(
+
+
+
+
+
+ ,
+ );
+
+ const [projectInput, repoInput] = getAllByRole('textbox');
+
+ await act(async () => {
+ fireEvent.change(projectInput, { target: { value: 'backstage' } });
+ fireEvent.change(repoInput, { target: { value: 'repo123' } });
+
+ // need to wait for the debounce to finish
+ await new Promise(resolve => setTimeout(resolve, 600));
+ });
+
+ expect(mockScmAuthApi.getCredentials).toHaveBeenCalledWith({
+ url: 'https://server.bitbucket.org/backstage/repo123',
+ additionalScope: {
+ repoWrite: true,
+ },
+ });
+
+ const currentSecrets = JSON.parse(
+ getByTestId('current-secrets').textContent!,
+ );
+
expect(currentSecrets).toEqual({
secrets: { testKey: 'abc123' },
});
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
index 9cf61a5e40..9bd904de13 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
@@ -120,16 +120,17 @@ export const RepoUrlPicker = (props: RepoUrlPickerProps) => {
async () => {
const { requestUserCredentials } = uiSchema?.['ui:options'] ?? {};
+ const workspace = state.owner ? state.owner : state.project;
if (
!requestUserCredentials ||
- !(state.host && state.owner && state.repoName)
+ !(state.host && workspace && state.repoName)
) {
return;
}
- const [encodedHost, encodedOwner, encodedRepoName] = [
+ const [encodedHost, encodedWorkspace, encodedRepoName] = [
state.host,
- state.owner,
+ workspace,
state.repoName,
].map(encodeURIComponent);
@@ -137,14 +138,14 @@ export const RepoUrlPicker = (props: RepoUrlPickerProps) => {
// so lets grab them using the scmAuthApi and pass through
// any additional scopes from the ui:options
const { token } = await scmAuthApi.getCredentials({
- url: `https://${encodedHost}/${encodedOwner}/${encodedRepoName}`,
+ url: `https://${encodedHost}/${encodedWorkspace}/${encodedRepoName}`,
additionalScope: {
repoWrite: true,
customScopes: requestUserCredentials.additionalScopes,
},
});
- // set the secret using the key provided in the the ui:options for use
+ // set the secret using the key provided in the ui:options for use
// in the templating the manifest with ${{ secrets[secretsKey] }}
setSecrets({ [requestUserCredentials.secretsKey]: token });
},
diff --git a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
index 84730429dd..fc1c1a7413 100644
--- a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
+++ b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
@@ -18,9 +18,6 @@ import { Page, Header, Content, ErrorPanel } from '@backstage/core-components';
import { useNavigate, useParams } from 'react-router-dom';
import { Box, makeStyles, Paper } from '@material-ui/core';
import {
- TaskSteps,
- TaskBorder,
- TaskLogStream,
ScaffolderTaskOutput,
useTaskEventStream,
} from '@backstage/plugin-scaffolder-react';
@@ -28,7 +25,11 @@ import { nextSelectedTemplateRouteRef } from '../routes';
import { useRouteRef } from '@backstage/core-plugin-api';
import qs from 'qs';
import { ContextMenu } from './ContextMenu';
-import { DefaultTemplateOutputs } from '@backstage/plugin-scaffolder-react/alpha';
+import {
+ DefaultTemplateOutputs,
+ TaskLogStream,
+ TaskSteps,
+} from '@backstage/plugin-scaffolder-react/alpha';
const useStyles = makeStyles({
contentWrapper: {
@@ -132,15 +133,12 @@ export const OngoingTask = (props: {
) : null}
-
-
-
-
-
-
+
diff --git a/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx b/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx
index 3bca46af2a..d78b8a62c4 100644
--- a/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx
+++ b/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx
@@ -15,6 +15,7 @@
*/
import { useRouteRef } from '@backstage/core-plugin-api';
+import { BackstageTheme } from '@backstage/theme';
import IconButton from '@material-ui/core/IconButton';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
@@ -34,11 +35,11 @@ import {
nextScaffolderListTaskRouteRef,
} from '../routes';
-const useStyles = makeStyles({
+const useStyles = makeStyles((theme: BackstageTheme) => ({
button: {
- color: 'white',
+ color: theme.page.fontColor,
},
-});
+}));
export type ScaffolderPageContextMenuProps = {
editor?: boolean;
diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
index 1a73eecf55..8576e6602c 100644
--- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md
+++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-search-backend-module-elasticsearch
+## 1.1.4-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- Updated dependencies
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-elasticsearch/api-report.md b/plugins/search-backend-module-elasticsearch/api-report.md
index 8545e3fd8f..c7add1e8cb 100644
--- a/plugins/search-backend-module-elasticsearch/api-report.md
+++ b/plugins/search-backend-module-elasticsearch/api-report.md
@@ -327,12 +327,9 @@ export class ElasticSearchSearchEngine implements SearchEngine {
highlightOptions?: ElasticSearchHighlightOptions,
);
// (undocumented)
- static fromConfig({
- logger,
- config,
- aliasPostfix,
- indexPrefix,
- }: ElasticSearchOptions): Promise;
+ static fromConfig(
+ options: ElasticSearchOptions,
+ ): Promise;
// (undocumented)
getIndexer(type: string): Promise;
newClient(create: (options: ElasticSearchClientOptions) => T): T;
diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json
index d8e1ee7021..6520571ec6 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.1.4-next.0",
+ "version": "1.1.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
index c2f4224db3..25df3101de 100644
--- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
+++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
@@ -138,27 +138,29 @@ export class ElasticSearchSearchEngine implements SearchEngine {
};
}
- static async fromConfig({
- logger,
- config,
- aliasPostfix = `search`,
- indexPrefix = ``,
- }: ElasticSearchOptions) {
- const options = await createElasticSearchClientOptions(
+ static async fromConfig(options: ElasticSearchOptions) {
+ const {
+ logger,
+ config,
+ aliasPostfix = `search`,
+ indexPrefix = ``,
+ } = options;
+
+ const clientOptions = await createElasticSearchClientOptions(
config.getConfig('search.elasticsearch'),
);
- if (options.provider === 'elastic') {
+ if (clientOptions.provider === 'elastic') {
logger.info('Initializing Elastic.co ElasticSearch search engine.');
- } else if (options.provider === 'aws') {
+ } else if (clientOptions.provider === 'aws') {
logger.info('Initializing AWS OpenSearch search engine.');
- } else if (options.provider === 'opensearch') {
+ } else if (clientOptions.provider === 'opensearch') {
logger.info('Initializing OpenSearch search engine.');
} else {
logger.info('Initializing ElasticSearch search engine.');
}
return new ElasticSearchSearchEngine(
- options,
+ clientOptions,
aliasPostfix,
indexPrefix,
logger,
@@ -175,12 +177,13 @@ export class ElasticSearchSearchEngine implements SearchEngine {
* This need not be the same client that the engine uses internally.
*
* @example Instantiate an instance of an Elasticsearch client.
+ *
* ```ts
* import { isOpenSearchCompatible } from '@backstage/plugin-search-backend-module-elasticsearch';
* import { Client } from '@elastic/elasticsearch';
*
* const client = searchEngine.newClient(options => {
- * // This typeguard ensures options are compatible with either OpenSearch
+ * // This type guard ensures options are compatible with either OpenSearch
* // or Elasticsearch client constructors.
* if (!isOpenSearchCompatible(options)) {
* return new Client(options);
diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md
index abfc6e5060..db32c01817 100644
--- a/plugins/search-backend-module-pg/CHANGELOG.md
+++ b/plugins/search-backend-module-pg/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-search-backend-module-pg
+## 0.5.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 0.5.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 0.5.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json
index f944cf7c59..c6513c8e27 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.4-next.0",
+ "version": "0.5.4-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 eedafe3497..5fcd3bd0fa 100644
--- a/plugins/search-backend-node/CHANGELOG.md
+++ b/plugins/search-backend-node/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-search-backend-node
+## 1.1.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.0-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/backend-tasks@0.4.4-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index f8ec1c00b0..d86be92e92 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.1.4-next.0",
+ "version": "1.1.4-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 3bd3b84554..513ee4536a 100644
--- a/plugins/search-backend/CHANGELOG.md
+++ b/plugins/search-backend/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-search-backend
+## 1.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.12-next.2
+ - @backstage/backend-common@0.18.3-next.2
+ - @backstage/plugin-permission-node@0.7.6-next.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.7.6-next.1
+ - @backstage/errors@1.1.5-next.0
+ - @backstage/backend-common@0.18.3-next.1
+ - @backstage/plugin-auth-node@0.2.12-next.1
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/plugin-search-backend-node@1.1.4-next.1
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.2.4-next.0
### Patch Changes
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index 4eb8187a2a..0baecca0a9 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.2.4-next.0",
+ "version": "1.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/search-common/CHANGELOG.md b/plugins/search-common/CHANGELOG.md
index 7b6dafa270..b0a0479ed3 100644
--- a/plugins/search-common/CHANGELOG.md
+++ b/plugins/search-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-search-common
+## 1.2.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.4-next.0
+ - @backstage/types@1.0.2
+
## 1.2.1
### Patch Changes
diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json
index 99c44fa93f..ba767f7019 100644
--- a/plugins/search-common/package.json
+++ b/plugins/search-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-common",
"description": "Common functionalities for Search, to be shared between various search-enabled plugins",
- "version": "1.2.1",
+ "version": "1.2.2-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md
index 52ac478207..9fc158de5d 100644
--- a/plugins/search-react/CHANGELOG.md
+++ b/plugins/search-react/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-search-react
+## 1.5.1-next.2
+
+### Patch Changes
+
+- 65454876fb2: Minor API report tweaks
+- 553f3c95011: Correctly disable next button in `SearchPagination` on last page
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.2
+ - @backstage/core-plugin-api@1.5.0-next.2
+
+## 1.5.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.12.5-next.1
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/theme@0.2.18-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+ - @backstage/plugin-search-common@1.2.2-next.0
+
## 1.5.1-next.0
### Patch Changes
diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md
index 375af20d5c..30b5d4b581 100644
--- a/plugins/search-react/api-report.md
+++ b/plugins/search-react/api-report.md
@@ -60,11 +60,9 @@ export type DefaultResultListItemProps = {
};
// @public (undocumented)
-export const HighlightedSearchResultText: ({
- text,
- preTag,
- postTag,
-}: HighlightedSearchResultTextProps) => JSX.Element;
+export const HighlightedSearchResultText: (
+ props: HighlightedSearchResultTextProps,
+) => JSX.Element;
// @public
export type HighlightedSearchResultTextProps = {
@@ -100,14 +98,9 @@ export type SearchAutocompleteComponent =