diff --git a/.changeset/breezy-hotels-deny.md b/.changeset/breezy-hotels-deny.md new file mode 100644 index 0000000000..13c8b47a7f --- /dev/null +++ b/.changeset/breezy-hotels-deny.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Added missing `organizations` property to `azure` section in `config.d.ts` file diff --git a/.changeset/bumpy-showers-design.md b/.changeset/bumpy-showers-design.md new file mode 100644 index 0000000000..2db5006944 --- /dev/null +++ b/.changeset/bumpy-showers-design.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +If the commit action is not `create` log a more appropriate error message to the end user advising that the files they're trying to modify might not exist diff --git a/.changeset/chubby-needles-vanish.md b/.changeset/chubby-needles-vanish.md new file mode 100644 index 0000000000..2cd664dcdd --- /dev/null +++ b/.changeset/chubby-needles-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Fix Canon missing dependencies diff --git a/.changeset/cruel-lights-sip.md b/.changeset/cruel-lights-sip.md new file mode 100644 index 0000000000..b38ab052a9 --- /dev/null +++ b/.changeset/cruel-lights-sip.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-github-provider': patch +--- + +Added missing types package diff --git a/.changeset/cyan-pots-appear.md b/.changeset/cyan-pots-appear.md new file mode 100644 index 0000000000..f82f4548c3 --- /dev/null +++ b/.changeset/cyan-pots-appear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-unprocessed': minor +--- + +**BREAKING** Removed support for the legacy backend and removed references to `@backstage/backend-common`, please [migrate to the new backend system](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating) diff --git a/.changeset/green-trainers-float.md b/.changeset/green-trainers-float.md new file mode 100644 index 0000000000..537fe01736 --- /dev/null +++ b/.changeset/green-trainers-float.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix EntityPicker field to render description as markdown, matching other form components in the system. diff --git a/.changeset/huge-olives-do.md b/.changeset/huge-olives-do.md new file mode 100644 index 0000000000..61eb37559f --- /dev/null +++ b/.changeset/huge-olives-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-events-backend-module-gitlab': patch +--- + +Adds support for `object_kind` field with priority over `event_name` on Gitlab webhook event types diff --git a/.changeset/new-hands-scream.md b/.changeset/new-hands-scream.md new file mode 100644 index 0000000000..03291648db --- /dev/null +++ b/.changeset/new-hands-scream.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +**BREAKING**: Removed support for the old backend system, and removed all deprecated exports. + +If you were using one of the deprecated imports from this package, you will have to follow the instructions in their respective deprecation notices before upgrading. Most of the general utilities are available from `@backstage/plugin-auth-node`, and the specific auth providers are available from dedicated packages such as for example `@backstage/plugin-auth-backend-module-github-provider`. See [the auth docs](https://backstage.io/docs/auth/) for specific instructions. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..7e1a48a83a --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,203 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "example-app": "0.2.108", + "@backstage/app-defaults": "1.6.1", + "example-app-next": "0.0.22", + "app-next-example-plugin": "0.0.22", + "example-backend": "0.0.37", + "@backstage/backend-app-api": "1.2.2", + "@backstage/backend-defaults": "0.9.0", + "@backstage/backend-dev-utils": "0.1.5", + "@backstage/backend-dynamic-feature-service": "0.6.2", + "@backstage/backend-openapi-utils": "0.5.2", + "@backstage/backend-plugin-api": "1.3.0", + "@backstage/backend-test-utils": "1.4.0", + "@backstage/canon": "0.3.0", + "@backstage/catalog-client": "1.9.1", + "@backstage/catalog-model": "1.7.3", + "@backstage/cli": "0.32.0", + "@backstage/cli-common": "0.1.15", + "@backstage/cli-node": "0.2.13", + "@backstage/codemods": "0.1.52", + "@backstage/config": "1.3.2", + "@backstage/config-loader": "1.10.0", + "@backstage/core-app-api": "1.16.1", + "@backstage/core-compat-api": "0.4.1", + "@backstage/core-components": "0.17.1", + "@backstage/core-plugin-api": "1.10.6", + "@backstage/create-app": "0.6.1", + "@backstage/dev-utils": "1.1.9", + "e2e-test": "0.2.27", + "@backstage/e2e-test-utils": "0.1.1", + "@backstage/errors": "1.2.7", + "@backstage/eslint-plugin": "0.1.10", + "@backstage/frontend-app-api": "0.11.1", + "@backstage/frontend-defaults": "0.2.1", + "@backstage/frontend-dynamic-feature-loader": "0.1.0", + "@internal/frontend": "0.0.8", + "@backstage/frontend-plugin-api": "0.10.1", + "@backstage/frontend-test-utils": "0.3.1", + "@backstage/integration": "1.16.3", + "@backstage/integration-aws-node": "0.1.15", + "@backstage/integration-react": "1.2.6", + "@internal/opaque": "0.0.1", + "@backstage/release-manifests": "0.0.12", + "@backstage/repo-tools": "0.13.2", + "@internal/scaffolder": "0.0.8", + "@techdocs/cli": "1.9.2", + "techdocs-cli-embedded-app": "0.2.107", + "@backstage/test-utils": "1.7.7", + "@backstage/theme": "0.6.5", + "@backstage/types": "1.2.1", + "@backstage/version-bridge": "1.0.11", + "yarn-plugin-backstage": "0.0.4", + "@backstage/plugin-api-docs": "0.12.6", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.10", + "@backstage/plugin-app": "0.1.8", + "@backstage/plugin-app-backend": "0.5.1", + "@backstage/plugin-app-node": "0.1.32", + "@backstage/plugin-app-visualizer": "0.1.18", + "@backstage/plugin-auth-backend": "0.24.5", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-auth0-provider": "0.2.2", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.7", + "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.2.2", + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-github-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-google-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-guest-provider": "0.2.7", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.7", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.4.2", + "@backstage/plugin-auth-backend-module-okta-provider": "0.2.2", + "@backstage/plugin-auth-backend-module-onelogin-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.3.2", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.5.2", + "@backstage/plugin-auth-node": "0.6.2", + "@backstage/plugin-auth-react": "0.1.14", + "@backstage/plugin-bitbucket-cloud-common": "0.2.29", + "@backstage/plugin-catalog": "1.29.0", + "@backstage/plugin-catalog-backend": "1.32.1", + "@backstage/plugin-catalog-backend-module-aws": "0.4.10", + "@backstage/plugin-catalog-backend-module-azure": "0.3.4", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.5.1", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.4.7", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.4.0", + "@backstage/plugin-catalog-backend-module-gcp": "0.3.7", + "@backstage/plugin-catalog-backend-module-gerrit": "0.3.1", + "@backstage/plugin-catalog-backend-module-github": "0.8.0", + "@backstage/plugin-catalog-backend-module-github-org": "0.3.9", + "@backstage/plugin-catalog-backend-module-gitlab": "0.6.5", + "@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.8", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.6.5", + "@backstage/plugin-catalog-backend-module-ldap": "0.11.4", + "@backstage/plugin-catalog-backend-module-logs": "0.1.9", + "@backstage/plugin-catalog-backend-module-msgraph": "0.6.9", + "@backstage/plugin-catalog-backend-module-openapi": "0.2.9", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.9", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.7", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.5.7", + "@backstage/plugin-catalog-common": "1.1.3", + "@backstage/plugin-catalog-graph": "0.4.18", + "@backstage/plugin-catalog-import": "0.12.13", + "@backstage/plugin-catalog-node": "1.16.3", + "@backstage/plugin-catalog-react": "1.17.0", + "@backstage/plugin-catalog-unprocessed-entities": "0.2.16", + "@backstage/plugin-catalog-unprocessed-entities-common": "0.0.7", + "@backstage/plugin-config-schema": "0.1.67", + "@backstage/plugin-devtools": "0.1.26", + "@backstage/plugin-devtools-backend": "0.5.4", + "@backstage/plugin-devtools-common": "0.1.15", + "@backstage/plugin-events-backend": "0.5.1", + "@backstage/plugin-events-backend-module-aws-sqs": "0.4.10", + "@backstage/plugin-events-backend-module-azure": "0.2.19", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.19", + "@backstage/plugin-events-backend-module-bitbucket-server": "0.1.0", + "@backstage/plugin-events-backend-module-gerrit": "0.2.19", + "@backstage/plugin-events-backend-module-github": "0.3.0", + "@backstage/plugin-events-backend-module-gitlab": "0.3.0", + "@backstage/plugin-events-backend-test-utils": "0.1.43", + "@backstage/plugin-events-node": "0.4.10", + "@internal/plugin-todo-list": "1.0.38", + "@internal/plugin-todo-list-backend": "1.0.38", + "@internal/plugin-todo-list-common": "1.0.24", + "@backstage/plugin-gateway-backend": "1.0.0", + "@backstage/plugin-home": "0.8.7", + "@backstage/plugin-home-react": "0.1.25", + "@backstage/plugin-kubernetes": "0.12.6", + "@backstage/plugin-kubernetes-backend": "0.19.5", + "@backstage/plugin-kubernetes-cluster": "0.0.24", + "@backstage/plugin-kubernetes-common": "0.9.4", + "@backstage/plugin-kubernetes-node": "0.2.5", + "@backstage/plugin-kubernetes-react": "0.5.6", + "@backstage/plugin-notifications": "0.5.4", + "@backstage/plugin-notifications-backend": "0.5.5", + "@backstage/plugin-notifications-backend-module-email": "0.3.8", + "@backstage/plugin-notifications-backend-module-slack": "0.1.0", + "@backstage/plugin-notifications-common": "0.0.8", + "@backstage/plugin-notifications-node": "0.2.14", + "@backstage/plugin-org": "0.6.38", + "@backstage/plugin-org-react": "0.1.37", + "@backstage/plugin-permission-backend": "0.6.0", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.7", + "@backstage/plugin-permission-common": "0.8.4", + "@backstage/plugin-permission-node": "0.9.1", + "@backstage/plugin-permission-react": "0.4.33", + "@backstage/plugin-proxy-backend": "0.6.1", + "@backstage/plugin-proxy-node": "0.1.3", + "@backstage/plugin-scaffolder": "1.30.0", + "@backstage/plugin-scaffolder-backend": "1.32.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.9", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.8", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.9", + "@backstage/plugin-scaffolder-backend-module-gcp": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-github": "0.7.0", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.9.0", + "@backstage/plugin-scaffolder-backend-module-notifications": "0.1.9", + "@backstage/plugin-scaffolder-backend-module-rails": "0.5.8", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.2.8", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.9", + "@backstage/plugin-scaffolder-common": "1.5.10", + "@backstage/plugin-scaffolder-node": "0.8.1", + "@backstage/plugin-scaffolder-node-test-utils": "0.2.1", + "@backstage/plugin-scaffolder-react": "1.15.0", + "@backstage/plugin-search": "1.4.25", + "@backstage/plugin-search-backend": "2.0.1", + "@backstage/plugin-search-backend-module-catalog": "0.3.3", + "@backstage/plugin-search-backend-module-elasticsearch": "1.7.1", + "@backstage/plugin-search-backend-module-explore": "0.3.1", + "@backstage/plugin-search-backend-module-pg": "0.5.43", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.8", + "@backstage/plugin-search-backend-module-techdocs": "0.4.1", + "@backstage/plugin-search-backend-node": "1.3.10", + "@backstage/plugin-search-common": "1.2.17", + "@backstage/plugin-search-react": "1.8.8", + "@backstage/plugin-signals": "0.0.18", + "@backstage/plugin-signals-backend": "0.3.3", + "@backstage/plugin-signals-node": "0.1.19", + "@backstage/plugin-signals-react": "0.0.12", + "@backstage/plugin-techdocs": "1.12.5", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.47", + "@backstage/plugin-techdocs-backend": "2.0.1", + "@backstage/plugin-techdocs-common": "0.1.0", + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.23", + "@backstage/plugin-techdocs-node": "1.13.2", + "@backstage/plugin-techdocs-react": "1.2.16", + "@backstage/plugin-user-settings": "0.8.21", + "@backstage/plugin-user-settings-backend": "0.3.1", + "@backstage/plugin-user-settings-common": "0.0.1" + }, + "changesets": [] +} diff --git a/.changeset/sharp-numbers-doubt.md b/.changeset/sharp-numbers-doubt.md new file mode 100644 index 0000000000..81e1313780 --- /dev/null +++ b/.changeset/sharp-numbers-doubt.md @@ -0,0 +1,26 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Added EntityOrderFilter to sort entities by different fields/columns. This new filter allows users to specify the order in which entities are displayed in the catalog. + +Example usage: + +```ts +import { + EntityOrderFilter, + useEntityList, +} from '@backstage/plugin-catalog-react'; +// ... +const { updateFilters } = useEntityList(); + +// ... +updateFilters({ + order: new EntityOrderFilter([ + { + field: 'metadata.name', + order: 'desc', + }, + ]), +}); +``` diff --git a/.changeset/shiny-symbols-grow.md b/.changeset/shiny-symbols-grow.md new file mode 100644 index 0000000000..18dd3b8b1f --- /dev/null +++ b/.changeset/shiny-symbols-grow.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Fixing a bug where the name for `templatingExtensions` was incorrectly set to `templateExtensions` diff --git a/.changeset/silent-clubs-roll.md b/.changeset/silent-clubs-roll.md new file mode 100644 index 0000000000..c80f884331 --- /dev/null +++ b/.changeset/silent-clubs-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-backend': minor +--- + +**BREAKING** Removed support for the legacy backend system, please [migrate to the new backend system](https://backstage.io/docs/backend-system/building-backends/migrating) diff --git a/.changeset/yellow-cows-tickle.md b/.changeset/yellow-cows-tickle.md new file mode 100644 index 0000000000..026c7444f0 --- /dev/null +++ b/.changeset/yellow-cows-tickle.md @@ -0,0 +1,7 @@ +--- +'@backstage/catalog-client': minor +'@backstage/plugin-catalog-react': minor +'@backstage/plugin-catalog-node': minor +--- + +Add `getLocations` method to `CatalogApi` and `CatalogClient`. This method calls the [`GET /locations`](https://backstage.io/docs/features/software-catalog/software-catalog-api/#get-locations) endpoint from the catalog backend. diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index 28444cecfc..ff49b94e56 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -231,11 +231,8 @@ jobs: run: yarn docusaurus docs:version stable working-directory: microsite - - name: clear API reference - run: rm -r docs/reference - - - name: clear OpenAPI reference - run: find ./docs -name '*.api.mdx' -type f -delete + - name: clear generated docs + run: git clean -fdx docs/ # Next docs - name: checkout master diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 88c1bbc299..ce3be0cf42 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -242,11 +242,8 @@ jobs: run: yarn docusaurus docs:version stable working-directory: microsite - - name: clear API reference - run: rm -r docs/reference - - - name: clear OpenAPI reference - run: find ./docs -name '*.api.mdx' -type f -delete + - name: clear generated docs + run: git clean -fdx docs/ - name: build API reference run: yarn build:api-docs diff --git a/ADOPTERS.md b/ADOPTERS.md index 2db4d5f9b9..e97c213adf 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -108,7 +108,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Beez Innovation Labs Pvt. Ltd](https://www.beezlabs.com/) | [Karthikeyan Venkatesan](https://github.com/karthikeyan23) | Developer portal with software catalog, scaffolding, tech docs, templates, and infra. | | [Agorapulse](https://www.agorapulse.com/) | [@jvdrean](https://github.com/jvdrean) | Developer portal with software catalog, documentation, monitoring, runbooks, tech radar and more. | | [Wistia](https://wistia.com/) | [@qrush](https://github.com/qrush), [@okize](https://github.com/okize) | Internal Developer Portal, service catalog, tech docs and more | -| [SIX](https://www.six-group.com/) | [@jbadeau](https://github.com/jbadeau), [@tomassatka](https://github.com/tomassatka) | Internal DevOps portal hosting our software and dataset catalog, as well as custom plugins for observability, service virtualization, deployments, incident managment and quality metrics. | +| [SIX](https://www.six-group.com/) | [@jbadeau](https://github.com/jbadeau), [@tomassatka](https://github.com/tomassatka) | Internal DevOps portal hosting our software and dataset catalog, as well as custom plugins for observability, service virtualization, deployments, incident management and quality metrics. | | [Raiffeisen Bank International](https://www.rbinternational.com/) | [Daniel Baumgartner](https://github.com/dabarbi) | From developers for developers: software catalog, techdocs and heavy use of scaffolder to drive reuse on engineering level forward. Part of inner source initiative. Multi national setup coming. | | [Spread Group](https://www.spreadgroup.com/) | [Luna Stadler](https://github.com/heyLu), [Iván González](https://github.com/ivangonzalezacuna) | Internal Developer Portal, an overview of all running software, architecture documentation and more; replacing and unifying a variety of internal tools. | | [RD Station](https://rdstation.com) | [Rogerio Angeliski](https://github.com/angeliski), [Paula Assis](https://github.com/paulassis), [Guilherme Eric](https://github.com/guilhermeeric), [Daniela Adamatti](https://github.com/daniadamatti), [Luana Negreiros](https://github.com/luananegreiros) | Developer portal, scaffolding, services catalog. We are looking to centralize automations and information for the whole engineering team . | @@ -206,7 +206,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Paraná Banco](https://site.paranabanco.com.br/) | [Joao Antunes](mailto:joaopma@pbtech.net.br) | Internal software catalog, documentation and ownership, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. | | [Stone](https://stone.com.br/) | [Levy Fialho](mailto:lfialho@stone.com.br) | We're using Backstage as our Credit Team Developer Portal and microservices catalog for mapping ownership. We are also using mkdocs for microservices documentation. | | [REI](https://www.rei.com/) | [Jen Evans](mailto:jenevan@rei.com) | Developer portal focused on an enterprise-wide app catalog to track ownership and surface APIs. | -| [next](https://next.me) | [Devan Jeronimo Nack](mailto:devan.j.nack@next.me), [Everson Crusara](mailto:everson.crusara@next.me), [Thiago Carneiro da Silva](mailto:thiagoc.silva@next.me) | We are building our Internal Developer Portal using Backstage to improve developer's experience by centralizing our services catalog and identifing microservices' ownership. Also we are going to improve Technical Documentation and speed up development using software templates to help squads in creation and deployment of new microservices. | +| [next](https://next.me) | [Devan Jeronimo Nack](mailto:devan.j.nack@next.me), [Everson Crusara](mailto:everson.crusara@next.me), [Thiago Carneiro da Silva](mailto:thiagoc.silva@next.me) | We are building our Internal Developer Portal using Backstage to improve developer's experience by centralizing our services catalog and identifying microservices' ownership. Also we are going to improve Technical Documentation and speed up development using software templates to help squads in creation and deployment of new microservices. | | [Vipps](https://vipps.no) | [Martin Ehrnst](https://github.com/ehrnst) | Vipps use backstage for our service catalog, documentation, and developer portal. Using templates we are able to simplify the developer experience when deploying new services to our platform. | | [Ferrovial](https://ferrovial.com) | [Jose Luis Rosado](mailto:jlrosado@ferrovial.com) | Backstage is helping us to improve and acelerate dev experience helping teams to quickly find technical documentation, infrastructure templates, pipelines, software components and quickstarters that have been developed by our squads in a inner source friendly environment. | | [Inter&Co](https://bancointer.com.br) | [Arnaud Lanna](https://github.com/arnaudlanna), [Adriano Silva](https://github.com/adrianovss), [Bruno Grossi](https://github.com/begrossi) | We're using Backstage as our internal Developer Portal to catalog and collect repositories and microservices pieces of information like ownership, deployment time, and documentation. | @@ -229,7 +229,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [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. | +| [The LEGO Group](https://www.lego.com) | [Waqas Ali](https://www.linkedin.com/in/waqasali47) | We are building our internal developer portal on top of Backstage. | | [CORS.gmbh](https://www.cors.gmbh) | [@dpfaffenbauer](https://github.com/dpfaffenbauer) | Developer Portal for our Projects we develop for our Customers and Hosting them On Kubernetes. | | [Comcast](https://comcast.github.io/) | [Ryan Emerle](https://github.com/remerle) | Developer portal enabling discovery of products, services, and documentation throughout the enterprise to ultimately reduce friction and improve time-to-market. | | [Syntasso](https://www.syntasso.io/) | [@syntassodev](https://github.com/syntassodev) | Backstage is used as a optional UI for the [Kratix project](https://kratix.io), a framework for building platforms. @@ -237,7 +237,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [B3](https://www.b3.com.br/) | [Marcos Rodrigues](https://www.linkedin.com/in/marcos-rodrigues-cloud/) | B3 (Brazilian Stock Exchange) will implement a self-service platform focused on software development based on Backstage. The tool will primarily focus on product development and software engineering teams, as well as professionals from other areas who are also involved in software delivery. The new platform will function as a portal where teams can access tools, codes, and templates that have already been tested and are available, serving as building blocks for the development of new solutions. | | [Porto](https://www.portoseguro.com.br/) | [Camilo Alessandro](https://www.linkedin.com/in/camilo-alessandro/) | Porto (Brazilian insurance company) Centralized developer portal with software catalog, application templates, maturity radar, component taxonomy standardization, and automation in the integration with DevSecOps processes. | | [Einride](https://github.com/einride) | [@odsod](https://github.com/odsod/) | We use Backstage to create a great developer experience across Einride's entire software stack - from autonomous and electric vehicles to cloud systems - and we've developed a [Backstage Go SDK](https://github.com/einride/backstage-go) for interfacing with Backstage from our Go tooling. -| [Chartboost](https://www.chartboost.com)| [@brucearctor](https://github.com/brucearctor), [@ArtemChekunov](https://github.com/ArtemChekunov) | We are building our internal develper portal on top of Backstage.| +| [Chartboost](https://www.chartboost.com)| [@brucearctor](https://github.com/brucearctor), [@ArtemChekunov](https://github.com/ArtemChekunov) | We are building our internal developer portal on top of Backstage.| | [Quantum Metric](https://www.quantummetric.com/) | [Eric Irwin](https://www.linkedin.com/in/ericirwin1124/) | Backstage is used within our Developer Experience Platform (DXP) in order to increase self-service, standardization and discoverability across our Engineering teams. | | [VodafoneZiggo](https://www.vodafoneziggo.nl/) | [Peter Macdonald](https://github.com/Parsifal-M) | We use Backstage as our go-to platform for managing our internal tools and services. With Backstage, we can easily discover and access all the services we need to do our work, whether it's deploying code, managing infrastructure, or accessing documentation. We appreciate the standardized, consistent interface and the ability to easily create custom plugins to integrate with our existing workflows. Overall, Backstage is streamlining our internal operations and helps us work more efficiently as a team. | | [Volvo Cars](https://www.volvocars.com) | [Martin Wänerskär](https://github.com/martin-wanerskar) | Internal developer portal with intent to unify infrastructure tooling, services, and developer documentation under a single, easy-to-use interface. | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bc67fba8c6..6a91fc4196 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,7 @@ If you need help, just jump into our [Discord chatroom](https://discord.gg/backs - [Accessibility](#accessibility) - [Get Started!](#get-started) - [Coding Guidelines](#coding-guidelines) +- [Documentation Guidelines](#documentation-guidelines) - [Package Scripts](#package-scripts) - [Local configuration](#local-configuration) - [Creating Changesets](#creating-changesets) @@ -117,6 +118,20 @@ If there are any updates in `markdown` file please make sure to run `yarn run li The Backstage development environment does not require any specific editor, but it is intended to be used with one that has built-in linting and type-checking. The development server does not include any checks by default, but they can be enabled using the `--check` flag. Note that using the flag may consume more system resources and slow things down. +## Documentation Guidelines + +Contributing to the docs is one of the best ways to start getting involved with Backstage. The documentation site is often the first stop for anyone using or exploring Backstage, so even small improvements can have a big impact! + +To help your changes get reviewed and merged smoothly, please keep the following in mind: + +- Try to group related updates into a single pull request. For example, if you notice missing admonitions or outdated information in a section, feel free to update all of it together. This makes it easier for maintainers to review your contribution in context. + +- We really appreciate contributions that improve clarity or fix outdated information. That said, we generally don’t accept changes that are purely stylistic (e.g., rewording a sentence just to tweak the tone or phrasing). If something is **unclear**, **confusing**, or **factually inaccurate**, those are great opportunities to help! + +Ready to get started? You can find all the documentation files in the [docs](docs) directory! If you have any questions or need help, feel free to reach out in the [Backstage Discord Docs Channel](https://discord.com/channels/687207715902193673/687994765559463940) + +Thank you in advance for your contributions! We really appreciate it. 🙏 + ## Package Scripts There are many commands to be found in the root [package.json](https://github.com/backstage/backstage/blob/master/package.json), here are some useful ones: diff --git a/beps/0002-dynamic-frontend-plugins/README.md b/beps/0002-dynamic-frontend-plugins/README.md index 1007732eec..4787f0fb7a 100644 --- a/beps/0002-dynamic-frontend-plugins/README.md +++ b/beps/0002-dynamic-frontend-plugins/README.md @@ -357,7 +357,7 @@ Initializing the dynamic feature is just a case of mapping the `DynamicFrontendF ```ts import { processManifest, getModule } from '@scalprum/core'; -// a ID of the module withing module federation container, can be customized, depends on the build +// a ID of the module within module federation container, can be customized, depends on the build const DEFAULT_MODULE_NAME = 'pluginEntry'; async function loadScalprumFeature({ manifestLocation, name }) { @@ -680,7 +680,7 @@ const dynamicPluginPlugin = new DynamicRemotePlugin({ version: plugin.version || '0.0.0', exposedModules: { // path to the default export of the frontend plugin entry point - // the path should be sourced from the "main" attribute withing package.json + // the path should be sourced from the "main" attribute within package.json pluginEntry: './src/index.ts', }, }, diff --git a/canon-docs/src/app/(docs)/releases/page.mdx b/canon-docs/src/app/(docs)/releases/page.mdx index 5fc22cd6b4..e71779e854 100644 --- a/canon-docs/src/app/(docs)/releases/page.mdx +++ b/canon-docs/src/app/(docs)/releases/page.mdx @@ -1,5 +1,33 @@ # Releases +## Version 0.3.0 + +### Main updates + +- Add `DataTable` component - ([#29484](https://github.com/backstage/backstage/pull/29484), [#29603](https://github.com/backstage/backstage/pull/29603)) +- Add `Select` component - ([#29440](https://github.com/backstage/backstage/pull/29440)) +- Add `Avatar` component - ([#29594](https://github.com/backstage/backstage/pull/29594)) +- Add `Collapsible` component - ([#29617](https://github.com/backstage/backstage/pull/29617)) +- Add `TextField` component instead of `Field` + `Input` - ([#29364](https://github.com/backstage/backstage/pull/29364)) +- Add `TableCellProfile` - ([#29600](https://github.com/backstage/backstage/pull/29600)) +- Add breakpoint hooks - `up()` and `down()` - ([#29564](https://github.com/backstage/backstage/pull/29564)) +- Add gray scale css tokens - ([#29543](https://github.com/backstage/backstage/pull/29543)) +- Update CSS styling API using `[data-___]` instead of class names for props - ([#29560](https://github.com/backstage/backstage/pull/29560)) +- Update `Checkbox` dark mode - ([#29544](https://github.com/backstage/backstage/pull/29544)) +- Update `Container` styles - ([#29475](https://github.com/backstage/backstage/pull/29475)) +- Update `Menu` styles - ([#29351](https://github.com/backstage/backstage/pull/29351)) +- Fix `Select` styles on small sizes + with long option names - ([#29545](https://github.com/backstage/backstage/pull/29545)) +- Fix render prop on `Link` - ([#29247](https://github.com/backstage/backstage/pull/29247)) +- Remove `Field` from `TextField` + `Select` - ([#29482](https://github.com/backstage/backstage/pull/29482)) +- Update `textDecoration` to `none` on `Text` / `Heading` - ([#29357](https://github.com/backstage/backstage/pull/29357)) + +### Notable fixes + +- Docs - Use stories from Storybook for all examples in Nextjs - ([#29306](https://github.com/backstage/backstage/pull/29306)) +- Docs - Add release page (this one 🤗) - ([#29461](https://github.com/backstage/backstage/pull/29461)) +- Docs - Add docs for Menu, Link - ([#29576](https://github.com/backstage/backstage/pull/29576)) +- Fix CSS watch mode - ([#29352](https://github.com/backstage/backstage/pull/29352)) + ## Version 0.2.0 ### Main updates diff --git a/canon-docs/src/app/(docs)/theme/theming/page.mdx b/canon-docs/src/app/(docs)/theme/theming/page.mdx index 665755c268..ed7f801db0 100644 --- a/canon-docs/src/app/(docs)/theme/theming/page.mdx +++ b/canon-docs/src/app/(docs)/theme/theming/page.mdx @@ -207,19 +207,19 @@ color of your app. --canon-bg-danger - Used to show errors informations. + Used to show errors information. --canon-bg-warning - Used to show warnings informations. + Used to show warnings information. --canon-bg-success - Used to show success informations. + Used to show success information. diff --git a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md index 178c45567f..f4e991db27 100644 --- a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md +++ b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md @@ -39,7 +39,7 @@ Use the following advanced settings: - `Session cookie name` = `AWSELBAuthSessionCookie` - `Session timeout` = `604800` seconds - `Scope` = `openid profile offline_access` -- `Action on unauthenticated request` = `Autenticate (client reattempt)` +- `Action on unauthenticated request` = `Authenticate (client reattempt)` Once you've saved the action, you should see an authentication flow be triggered against Entra ID when visiting Backstage address at `https://backstage.yourdomain.com`. The flow will not complete successfully as the Backstage app isn't yet configured properly. diff --git a/contrib/docs/tutorials/jsx-migration-codemod.md b/contrib/docs/tutorials/jsx-migration-codemod.md index 82d4143572..14ccd44080 100644 --- a/contrib/docs/tutorials/jsx-migration-codemod.md +++ b/contrib/docs/tutorials/jsx-migration-codemod.md @@ -307,7 +307,7 @@ While a codemod for the New JSX Transform was originally introduced in the [Intr j(path).replaceWith(j.jsxIdentifier(property)); }); - // Add exisiting React imports to map + // Add existing React imports to map reactImportPaths.forEach(path => { const specifiers = path.value.specifiers; for (let i = 0; i < specifiers.length; i++) { diff --git a/docs/release-notes-template.md b/docs/.release-notes-template.md similarity index 100% rename from docs/release-notes-template.md rename to docs/.release-notes-template.md diff --git a/docs/auth/add-auth-provider.md b/docs/auth/add-auth-provider.md index 51424f1c10..7cfa21dd4a 100644 --- a/docs/auth/add-auth-provider.md +++ b/docs/auth/add-auth-provider.md @@ -66,10 +66,6 @@ function takes an `express.Response`, a `WebMessageResponse` and the URL of the frontend (`appOrigin`) as parameters and return an HTML page with the script and the message. -There is a helper class for [OAuth2](https://oauth.net/2/) based authentication providers, [OAuthAdapter](../reference/plugin-auth-backend.oauthadapter.md). This class implements the `AuthProviderRouteHandlers` interface -for you, and instead requires you to implement [OAuthHandlers](../reference/plugin-auth-backend.oauthhandlers.md), which -is significantly easier. - ### Auth Environment Separation The concept of an `env` is core to the way the auth backend works. It uses an diff --git a/docs/auth/identity-resolver--old.md b/docs/auth/identity-resolver--old.md index f6310ace64..ce41fbcf2b 100644 --- a/docs/auth/identity-resolver--old.md +++ b/docs/auth/identity-resolver--old.md @@ -22,7 +22,7 @@ be mapped to user identities within Backstage. ## Quick Start -> See [providers](../reference/plugin-auth-backend.providers.md) +> See [the auth docs](./index.md) > for a full list of auth providers and their built-in sign-in resolvers. Backstage projects created with `npx @backstage/create-app` come configured with a diff --git a/docs/backend-system/building-plugins-and-modules/08-migrating.md b/docs/backend-system/building-plugins-and-modules/08-migrating.md index ea86854b18..5da443328c 100644 --- a/docs/backend-system/building-plugins-and-modules/08-migrating.md +++ b/docs/backend-system/building-plugins-and-modules/08-migrating.md @@ -237,7 +237,7 @@ The development server created above will be automatically configured with the d ```ts title="in dev/index.js" //... -// This package should be installed as `devDependecies` +// This package should be installed as `devDependencies` import { mockServices } from '@backstage/backend-test-utils'; const backend = createBackend(); diff --git a/docs/conf/reading.md b/docs/conf/reading.md index f7d1edae86..61cff2502b 100644 --- a/docs/conf/reading.md +++ b/docs/conf/reading.md @@ -141,15 +141,7 @@ from `@backstage/core-plugin-api`. ## Accessing ConfigApi in Backend Plugins -### Old Backend System - -In the old backend system plugins, the configuration is passed in via options from the main -backend package. See for example -[packages/backend-legacy/src/plugins/auth.ts](https://github.com/backstage/backstage/blob/244eef851f5aa19f91c7c9b5c12d5df95cf482ca/packages/backend/src/plugins/auth.ts#L23). - -### New Backend System - -In the new backend system, plugins are able to directly access config through dependencies. You can access config like so, +In the backend system, plugins are able to directly access config through dependencies. You can access config like so, ```ts title="plugins/your-plugin-backend/src/plugin.ts" export const yourPlugin = createBackendPlugin({ @@ -175,3 +167,7 @@ export const yourPlugin = createBackendPlugin({ }, }); ``` + +### Old Backend System + +In the old backend system plugins, the configuration is passed in via options from the main backend package. diff --git a/docs/contribute/getting-involved.md b/docs/contribute/getting-involved.md index c11e870752..4b8c4dfc6f 100644 --- a/docs/contribute/getting-involved.md +++ b/docs/contribute/getting-involved.md @@ -43,6 +43,8 @@ submitting them. You'll find the website sources under [/microsite](https://gith with instructions for building and locally serving the website in the [README](/microsite#readme). +For additional information and helpful guidelines on how to contribute to the documentation, check out these [Documentation Guidelines](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md#documentation-guidelines)! + ### Contribute to Storybook We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook). diff --git a/docs/features/kubernetes/authenticationstrategy.md b/docs/features/kubernetes/authenticationstrategy.md index ffea69d610..c902995a19 100644 --- a/docs/features/kubernetes/authenticationstrategy.md +++ b/docs/features/kubernetes/authenticationstrategy.md @@ -13,7 +13,7 @@ it also defines what authentication metadata about a Kubernetes cluster is retur ## Context -Backstage includes by default some [Kubernetes Auth Providers](./authentication.md) to ease the authentication proccess to +Backstage includes by default some [Kubernetes Auth Providers](./authentication.md) to ease the authentication process to kubernetes clusters, it includes: - `Server Side Providers` like `localKubectlProxy` or `serviceAccount` where the same set diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index 64468f7f41..44946b334a 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -53,9 +53,7 @@ Some defining traits of entity providers: ### Creating an Entity Provider -The recommended way of instantiating the catalog backend classes is to use the -`CatalogBuilder`, as illustrated in the -[example backend here](https://github.com/backstage/backstage/blob/master/packages/backend-legacy/src/plugins/catalog.ts). +The recommended way of instantiating the catalog backend classes is to use the `CatalogBuilder`. We will create a new [`EntityProvider`](https://github.com/backstage/backstage/blob/master/plugins/catalog-node/src/api/provider.ts) subclass that can be added to this catalog builder. @@ -637,9 +635,7 @@ does so! ### Creating a Catalog Data Reader Processor -The recommended way of instantiating the catalog backend classes is to use the -`CatalogBuilder`, as illustrated in the -[example backend here](https://github.com/backstage/backstage/blob/master/packages/backend-legacy/src/plugins/catalog.ts). +The recommended way of instantiating the catalog backend classes is to use the `CatalogBuilder`. We will create a new [`CatalogProcessor`](https://github.com/backstage/backstage/blob/master/plugins/catalog-node/src/api/processor.ts) subclass that can be added to this catalog builder. diff --git a/docs/features/software-catalog/faq.md b/docs/features/software-catalog/faq.md index f4eb79d119..24b490ee13 100644 --- a/docs/features/software-catalog/faq.md +++ b/docs/features/software-catalog/faq.md @@ -29,7 +29,7 @@ On the user experience side, a Backstage experience without complete organizatio While it's possible to get hold of a catalog client via the `catalogServiceRef` from `@backstage/plugin-catalog-node`, it's almost never the right thing to do, and we strongly discourage from doing so. -The catalog processing loop is a very high-speed system where your entire catalog cluster collaborates to race through all entities at the highest possible rate. The ideal processor does an absolute minimum of work, and immediately relinquishes control back. Performing asynchronous requests to external systems - including the catalog - from processors, can quickly become overwhelming for that external system and starve their resources if they aren't prepared to deal with very high rates of small requests. It also significantly slows down the procesing loop, when each step needs to wait for responses. This can lead to work "piling up" in the catalog and delays in seeing entities get updated. The [life of an entity](./life-of-an-entity.md) article shows the sequence of events that happen when an entity goes from original ingestion, through processing, and to becoming final entities. +The catalog processing loop is a very high-speed system where your entire catalog cluster collaborates to race through all entities at the highest possible rate. The ideal processor does an absolute minimum of work, and immediately relinquishes control back. Performing asynchronous requests to external systems - including the catalog - from processors, can quickly become overwhelming for that external system and starve their resources if they aren't prepared to deal with very high rates of small requests. It also significantly slows down the processing loop, when each step needs to wait for responses. This can lead to work "piling up" in the catalog and delays in seeing entities get updated. The [life of an entity](./life-of-an-entity.md) article shows the sequence of events that happen when an entity goes from original ingestion, through processing, and to becoming final entities. See also [the related validation topic](#can-i-validate-relations-in-processors). diff --git a/docs/features/software-templates/experimental.md b/docs/features/software-templates/experimental.md index 432bc3fecc..929fe088cf 100644 --- a/docs/features/software-templates/experimental.md +++ b/docs/features/software-templates/experimental.md @@ -118,7 +118,7 @@ export const mockDecorator = createScaffolderFormDecorator({ // give the decorator a name id: 'mock-decorator', - // define the schema for the input that can be proided in `template.yaml` + // define the schema for the input that can be provided in `template.yaml` schema: { input: { test: z => z.string(), diff --git a/docs/features/software-templates/writing-custom-field-extensions.md b/docs/features/software-templates/writing-custom-field-extensions.md index 20f36fd1a6..477fa66e5b 100644 --- a/docs/features/software-templates/writing-custom-field-extensions.md +++ b/docs/features/software-templates/writing-custom-field-extensions.md @@ -151,7 +151,7 @@ const routes = ( ### Async Validation Function -A validation function can be asyncronous and use [Utility APIs](https://backstage.io/docs/api/utility-apis/) via the `ApiHolder` in the [field validation context](https://backstage.io/docs/reference/plugin-scaffolder-react.customfieldvalidator). The example below uses the `catalogApiRef` to check if the submitted value (in this scenario an entity ref) exists in the catalog. +A validation function can be asynchronous and use [Utility APIs](https://backstage.io/docs/api/utility-apis/) via the `ApiHolder` in the [field validation context](https://backstage.io/docs/reference/plugin-scaffolder-react.customfieldvalidator). The example below uses the `catalogApiRef` to check if the submitted value (in this scenario an entity ref) exists in the catalog. ```tsx import { FieldValidation } from '@rjsf/utils'; diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 4abe8f1eb0..23786db54f 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -252,7 +252,7 @@ spec: type: service parameters: - - title: Authenticaion + - title: Authentication description: Provide authentication for the resource required: - username diff --git a/docs/features/techdocs/how-to-guides.md b/docs/features/techdocs/how-to-guides.md index 014c8309b0..8a95c86533 100644 --- a/docs/features/techdocs/how-to-guides.md +++ b/docs/features/techdocs/how-to-guides.md @@ -934,7 +934,7 @@ metadata: apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: example-platfrom + name: example-platform title: Example Application Platform namespace: default description: This is the child entity diff --git a/docs/frontend-system/utility-apis/02-creating.md b/docs/frontend-system/utility-apis/02-creating.md index 01c21fe656..a2b3bf06f6 100644 --- a/docs/frontend-system/utility-apis/02-creating.md +++ b/docs/frontend-system/utility-apis/02-creating.md @@ -93,7 +93,7 @@ The extension ID of the work API will be the kind `api:` followed by the plugin ## Adding configurability -Here we will describe how to amend a utility API with the capability of having extension config, which is driven by [your app-config](../../conf/writing.md). You do this by giving an extension config schema to your API extension factory function. Let's refactory the example above to also accept configuration, which will require us to use the [override method of the blueprint](../architecture/23-extension-blueprints.md#creating-an-extension-from-a-blueprint-with-overrides). +Here we will describe how to amend a utility API with the capability of having extension config, which is driven by [your app-config](../../conf/writing.md). You do this by giving an extension config schema to your API extension factory function. Let's refactor the example above to also accept configuration, which will require us to use the [override method of the blueprint](../architecture/23-extension-blueprints.md#creating-an-extension-from-a-blueprint-with-overrides). ```tsx title="in @internal/plugin-example" const exampleWorkApi = ApiBlueprint.makeWithOverrides({ @@ -123,7 +123,7 @@ We wanted users to be able to set a `goSlow` extension config parameter for our Note that the expression "extension config" as used here, is _not_ the same thing as the `configApi` which gives you access to the full app-config. The extension config discussed here is instead the particular configuration settings given to your utility API instance. This is discussed more [in the Configuring section](./04-configuring.md). -Note also that the extension config schema contained a default value fo the `goSlow` field. This is an important consideration. You want users of your API to be able to get maximum value out of it, without having to dive deep into how to configure it. For that reason you generally want to provide as many sane defaults as possible, while letting users override them rarely but with purpose, only when called for. If you have an extension config schema without defaults, the framework will refuse to instantiate the utility API on startup unless the user had configured those values explicitly. Since it had a default value, the TypeScript code and interfaces also don't have to defensively allow `undefined` - we know that it'll have either the default value or an overridden value when we start consuming the extension config data. +Note also that the extension config schema contained a default value for the `goSlow` field. This is an important consideration. You want users of your API to be able to get maximum value out of it, without having to dive deep into how to configure it. For that reason you generally want to provide as many sane defaults as possible, while letting users override them rarely but with purpose, only when called for. If you have an extension config schema without defaults, the framework will refuse to instantiate the utility API on startup unless the user had configured those values explicitly. Since it had a default value, the TypeScript code and interfaces also don't have to defensively allow `undefined` - we know that it'll have either the default value or an overridden value when we start consuming the extension config data. ## Adding inputs diff --git a/docs/publishing.md b/docs/publishing.md index 08f4f124d9..3d23572ffe 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -47,7 +47,7 @@ Additional steps for the main line release - Check for mentions of "major" & "breaking" and if they are expected in the current release - Verify the version we are shipping is correct - Create Release Notes - - There exists a [release notes template](./release-notes-template.md) for creating the release notes. It can already be created after the last main line release to keep track of major changes during the month + - There exists a [release notes template](./.release-notes-template.md) for creating the release notes. It can already be created after the last main line release to keep track of major changes during the month - The content is picked by relevancy showcasing the work of the community during the month of the release - Mention newly added packages or features - Mention any security fixes diff --git a/docs/releases/v1.38.0.md b/docs/releases/v1.38.0.md index 5f18981212..4d5fe1d75c 100644 --- a/docs/releases/v1.38.0.md +++ b/docs/releases/v1.38.0.md @@ -51,7 +51,7 @@ This means that the translation keys have changed for `actionsPage.content.table Contributed by [@mbenson](https://github.com/mbenson) in [#29383](https://github.com/backstage/backstage/pull/29383) -### `backtage-cli repo start` +### `backstage-cli repo start` In order to align on `yarn start` being the only command needed for local development, we’ve introduced a new `repo start` command to the `backstage-cli` for use in the root `package.json`. diff --git a/microsite/blog/2023-05-06-backstage-deploy-alpha.mdx b/microsite/blog/2023-05-06-backstage-deploy-alpha.mdx index 126bbb9e7d..d2c37caa31 100644 --- a/microsite/blog/2023-05-06-backstage-deploy-alpha.mdx +++ b/microsite/blog/2023-05-06-backstage-deploy-alpha.mdx @@ -25,7 +25,7 @@ For example: - Should the POC be deployed on Kubernetes? - How do you deploy the POC on my cloud provider? -To address these questions and reduce friction from deploying a POC, we built a [new CLI](https://github.com/backstage/backstage-deploy). The CLI is simply called `deploy` and is invokable with `npx`. With this new CLI, you can generate a Dockerfile and deploy a Backstage instance onto a preferred cloud provider. While the package’s infrastructure is built to support all cloud providers, currently the CLI only offers an AWS implementation. In the future, we plan to add additional cloud providers to the package and [welcome any contributions](https://github.com/backstage/backstage/blob/6996b3338d678efc03307112524060e9dc2ad769/CONTRIBUTING.md) extending the suite of cloud provider implementations! +To address these questions and reduce friction from deploying a POC, we built a [new CLI](https://github.com/backstage/backstage-deploy). The CLI is simply called `deploy` and is invocable with `npx`. With this new CLI, you can generate a Dockerfile and deploy a Backstage instance onto a preferred cloud provider. While the package’s infrastructure is built to support all cloud providers, currently the CLI only offers an AWS implementation. In the future, we plan to add additional cloud providers to the package and [welcome any contributions](https://github.com/backstage/backstage/blob/6996b3338d678efc03307112524060e9dc2ad769/CONTRIBUTING.md) extending the suite of cloud provider implementations! **So, what about Kubernetes?** Since the CLI is designed specifically for the POC phase, we believe that Kubernetes isn’t the right fit – as Kubernetes is better suited for production workloads. So, we explored lightweight, container-based solutions, and landed on [Amazon Lightsail](https://docs.aws.amazon.com/lightsail/index.html) as a hosting service for the POC. Amazon Lightsail supports [lightweight container](https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services) deployments [at a low cost](https://aws.amazon.com/lightsail/pricing/), and has a [free trial for new users](https://aws.amazon.com/lightsail/pricing/?loc=ft#AWS_Free_Tier)! Given Lightsail’s ease of use and affordability, we recommend using Lightsail over Kubernetes to test out your Backstage POC. diff --git a/microsite/blog/2024-09-24-dynatrace-adopter-spotlight.mdx b/microsite/blog/2024-09-24-dynatrace-adopter-spotlight.mdx index 7e029e0aab..e49e0e8e90 100644 --- a/microsite/blog/2024-09-24-dynatrace-adopter-spotlight.mdx +++ b/microsite/blog/2024-09-24-dynatrace-adopter-spotlight.mdx @@ -74,7 +74,7 @@ While Kubernetes observability was requested to be provided out of the box, we q - Fetching runtime security vulnerability information across different stages -![Security vulnerabilities in context](assets/2024-09-24/backstage_catalog_security_vulnerabilites.png) +![Security vulnerabilities in context](assets/2024-09-24/backstage_catalog_security_vulnerabilities.png) ### Error logs at hand diff --git a/microsite/blog/assets/2024-09-24/backstage_catalog_security_vulnerabilites.png b/microsite/blog/assets/2024-09-24/backstage_catalog_security_vulnerabilities.png similarity index 100% rename from microsite/blog/assets/2024-09-24/backstage_catalog_security_vulnerabilites.png rename to microsite/blog/assets/2024-09-24/backstage_catalog_security_vulnerabilities.png diff --git a/microsite/data/plugins/backchat.yaml b/microsite/data/plugins/backchat.yaml index b375ad26bc..dd09938307 100644 --- a/microsite/data/plugins/backchat.yaml +++ b/microsite/data/plugins/backchat.yaml @@ -3,7 +3,7 @@ title: Backchat GenAI author: benwilcock authorUrl: https://github.com/benwilcock category: Services -description: Access your favorite open source GenAI GUIs privately from Backstage. Chat wth large language models in your portal. Choose from hundreds of LLMs. Run inferencing wherever you like - local or remote, CPU or GPU - it's up to you! +description: Access your favorite open source GenAI GUIs privately from Backstage. Chat with large language models in your portal. Choose from hundreds of LLMs. Run inferencing wherever you like - local or remote, CPU or GPU - it's up to you! documentation: https://github.com/benwilcock/backstage-plugin-backchat iconUrl: /img/backchat-logo.png npmPackageName: '@benbravo73/backstage-plugin-backchat' diff --git a/microsite/data/plugins/harness-iacm.yaml b/microsite/data/plugins/harness-iacm.yaml index 4463bab371..b9aa3b8ab4 100644 --- a/microsite/data/plugins/harness-iacm.yaml +++ b/microsite/data/plugins/harness-iacm.yaml @@ -8,6 +8,6 @@ documentation: https://github.com/harness/backstage-plugins/tree/main/plugins/ha iconUrl: https://static.harness.io/ng-static/images/favicon.png npmPackageName: '@harnessio/backstage-plugin-harness-iacm' tags: - - infrastrucure-as-code + - infrastructure-as-code - resource-management addedDate: '2024-07-03' diff --git a/microsite/data/plugins/statuspage.yaml b/microsite/data/plugins/statuspage.yaml index 652052defc..d5402c8ea3 100644 --- a/microsite/data/plugins/statuspage.yaml +++ b/microsite/data/plugins/statuspage.yaml @@ -3,7 +3,7 @@ title: Statuspage.io Plugin author: AxisCommunications authorUrl: https://github.com/AxisCommunications category: Monitoring -description: The Statuspage plugin allows you to embedd https://statuspage.io components, component groups and dashboards in Backstage. +description: The Statuspage plugin allows you to embed https://statuspage.io components, component groups and dashboards in Backstage. documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/statuspage/README.md iconUrl: https://raw.githubusercontent.com/AxisCommunications/backstage-plugins/main/plugins/statuspage/media/logo.png npmPackageName: '@axis-backstage/plugin-statuspage' diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index 1e31edeedc..0a45464805 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -165,7 +165,9 @@ const Community = () => { -

Offical Backstage Initiatives

+

+ Official Backstage Initiatives +

Stay tuned to the latest developments

diff --git a/package.json b/package.json index f9aa0d9776..f42bafb4ab 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "snyk:test:package": "yarn snyk:test --include", "start": "backstage-cli repo start", "start-backend": "echo \"Use 'yarn start example-backend' instead\"", - "start-backend:legacy": "echo \"Use 'yarn start example-backend-legacy' instead\"", "start:microsite": "cd microsite/ && yarn start", "start:next": "yarn start example-app-next example-backend", "storybook": "yarn ./storybook run storybook", diff --git a/packages/backend-legacy/.eslintrc.js b/packages/backend-legacy/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/packages/backend-legacy/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/packages/backend-legacy/.snyk b/packages/backend-legacy/.snyk deleted file mode 100644 index ea5abd653d..0000000000 --- a/packages/backend-legacy/.snyk +++ /dev/null @@ -1,10 +0,0 @@ -# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. -version: v1.22.1 -# ignores vulnerabilities until expiry date; change duration by modifying expiry date -ignore: - SNYK-JS-ISOLATEDVM-3037320: - - '*': - reason: We do not pass any V8 cache data, and are therefore unaffected by this vulnerability - expires: 2033-07-02T16:55:57.077Z - created: 2023-07-02T16:55:57.077Z -patch: {} diff --git a/packages/backend-legacy/CHANGELOG.md b/packages/backend-legacy/CHANGELOG.md deleted file mode 100644 index f68e1d3c0d..0000000000 --- a/packages/backend-legacy/CHANGELOG.md +++ /dev/null @@ -1,8828 +0,0 @@ -# example-backend-legacy - -## 0.2.109 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.9.0 - - @backstage/plugin-permission-backend@0.6.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.9.0 - - @backstage/plugin-catalog-node@1.16.3 - - @backstage/plugin-auth-backend@0.24.5 - - @backstage/plugin-catalog-backend@1.32.1 - - @backstage/plugin-scaffolder-backend@1.32.0 - - @backstage/backend-plugin-api@1.3.0 - - @backstage/integration@1.16.3 - - @backstage/plugin-auth-node@0.6.2 - - @backstage/plugin-events-backend@0.5.1 - - @backstage/plugin-kubernetes-backend@0.19.5 - - @backstage/plugin-permission-node@0.9.1 - - @backstage/plugin-search-backend@2.0.1 - - @backstage/plugin-search-backend-node@1.3.10 - - @backstage/plugin-signals-backend@0.3.3 - - @backstage/plugin-techdocs-backend@2.0.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.7 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.7 - - @backstage/plugin-search-backend-module-catalog@0.3.3 - - @backstage/plugin-search-backend-module-techdocs@0.4.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/plugin-events-node@0.4.10 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.8 - - @backstage/plugin-search-backend-module-elasticsearch@1.7.1 - - @backstage/plugin-search-backend-module-explore@0.3.1 - - @backstage/plugin-search-backend-module-pg@0.5.43 - - @backstage/plugin-signals-node@0.1.19 - -## 0.2.109-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.32.1-next.1 - - @backstage/plugin-catalog-node@1.16.3-next.0 - - @backstage/backend-defaults@0.9.0-next.2 - - @backstage/plugin-auth-backend@0.24.5-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.7-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.7-next.0 - - @backstage/plugin-kubernetes-backend@0.19.5-next.0 - - @backstage/plugin-scaffolder-backend@1.32.0-next.2 - - @backstage/plugin-search-backend-module-catalog@0.3.3-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.4.1-next.2 - - @backstage/plugin-techdocs-backend@2.0.1-next.2 - - @backstage/backend-plugin-api@1.2.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.3-next.0 - - @backstage/plugin-auth-node@0.6.1 - - @backstage/plugin-events-backend@0.5.0 - - @backstage/plugin-events-node@0.4.9 - - @backstage/plugin-permission-backend@0.5.55 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-permission-node@0.9.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.2-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.8-next.1 - - @backstage/plugin-search-backend@2.0.1-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.7.0 - - @backstage/plugin-search-backend-module-explore@0.3.0 - - @backstage/plugin-search-backend-module-pg@0.5.42 - - @backstage/plugin-search-backend-node@1.3.9 - - @backstage/plugin-signals-backend@0.3.2 - - @backstage/plugin-signals-node@0.1.18 - -## 0.2.109-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.2-next.1 - - @backstage/integration@1.16.3-next.0 - - @backstage/plugin-auth-backend@0.24.5-next.1 - - @backstage/plugin-scaffolder-backend@1.32.0-next.1 - - @backstage/backend-defaults@0.9.0-next.1 - - @backstage/plugin-catalog-backend@1.32.1-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.8-next.1 - - @backstage/plugin-techdocs-backend@2.0.1-next.1 - - @backstage/plugin-signals-backend@0.3.2 - - @backstage/plugin-auth-node@0.6.1 - - @backstage/plugin-events-backend@0.5.0 - - @backstage/plugin-kubernetes-backend@0.19.4 - - @backstage/plugin-permission-backend@0.5.55 - - @backstage/plugin-permission-node@0.9.0 - - @backstage/plugin-search-backend@2.0.1-next.1 - - @backstage/plugin-search-backend-node@1.3.9 - - @backstage/backend-plugin-api@1.2.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6 - - @backstage/plugin-catalog-node@1.16.1 - - @backstage/plugin-events-node@0.4.9 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-search-backend-module-catalog@0.3.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.7.0 - - @backstage/plugin-search-backend-module-explore@0.3.0 - - @backstage/plugin-search-backend-module-pg@0.5.42 - - @backstage/plugin-search-backend-module-techdocs@0.4.1-next.1 - - @backstage/plugin-signals-node@0.1.18 - -## 0.2.109-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.9.0-next.0 - - @backstage/plugin-scaffolder-backend@1.32.0-next.0 - - @backstage/plugin-auth-backend@0.24.5-next.0 - - @backstage/plugin-auth-node@0.6.1 - - @backstage/plugin-catalog-backend@1.32.0 - - @backstage/plugin-events-backend@0.5.0 - - @backstage/plugin-kubernetes-backend@0.19.4 - - @backstage/plugin-permission-backend@0.5.55 - - @backstage/plugin-permission-node@0.9.0 - - @backstage/plugin-search-backend@2.0.1-next.0 - - @backstage/plugin-search-backend-node@1.3.9 - - @backstage/plugin-signals-backend@0.3.2 - - @backstage/plugin-techdocs-backend@2.0.1-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.4.1-next.0 - - @backstage/backend-plugin-api@1.2.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6 - - @backstage/plugin-catalog-node@1.16.1 - - @backstage/plugin-events-node@0.4.9 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.8-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.2-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.8-next.0 - - @backstage/plugin-search-backend-module-catalog@0.3.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.7.0 - - @backstage/plugin-search-backend-module-explore@0.3.0 - - @backstage/plugin-search-backend-module-pg@0.5.42 - - @backstage/plugin-signals-node@0.1.18 - -## 0.2.108 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-techdocs@0.4.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.7.0 - - @backstage/integration@1.16.2 - - @backstage/backend-defaults@0.8.2 - - @backstage/plugin-scaffolder-backend@1.31.0 - - @backstage/plugin-kubernetes-backend@0.19.4 - - @backstage/plugin-events-backend@0.5.0 - - @backstage/plugin-search-backend-module-pg@0.5.42 - - @backstage/plugin-permission-node@0.9.0 - - @backstage/plugin-catalog-backend@1.32.0 - - @backstage/plugin-techdocs-backend@2.0.0 - - @backstage/plugin-auth-node@0.6.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.7 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.7 - - @backstage/plugin-auth-backend@0.24.4 - - @backstage/plugin-events-node@0.4.9 - - @backstage/plugin-search-backend-module-explore@0.3.0 - - @backstage/plugin-search-backend@2.0.0 - - @backstage/backend-plugin-api@1.2.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6 - - @backstage/plugin-catalog-node@1.16.1 - - @backstage/plugin-permission-backend@0.5.55 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-search-backend-module-catalog@0.3.2 - - @backstage/plugin-search-backend-node@1.3.9 - - @backstage/plugin-signals-backend@0.3.2 - - @backstage/plugin-signals-node@0.1.18 - -## 0.2.108-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.1-next.2 - - @backstage/plugin-scaffolder-backend@1.31.0-next.2 - - @backstage/plugin-catalog-backend@1.32.0-next.2 - - @backstage/plugin-techdocs-backend@1.11.7-next.2 - - @backstage/backend-defaults@0.8.2-next.2 - - @backstage/integration@1.16.2-next.0 - - @backstage/plugin-events-backend@0.4.4-next.2 - - @backstage/plugin-events-node@0.4.9-next.2 - - @backstage/backend-plugin-api@1.2.1-next.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/plugin-auth-backend@0.24.4-next.2 - - @backstage/plugin-auth-node@0.6.1-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6-next.1 - - @backstage/plugin-catalog-node@1.16.1-next.1 - - @backstage/plugin-kubernetes-backend@0.19.4-next.1 - - @backstage/plugin-permission-backend@0.5.55-next.1 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-permission-node@0.8.9-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.7-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.7-next.2 - - @backstage/plugin-search-backend@1.8.3-next.2 - - @backstage/plugin-search-backend-module-catalog@0.3.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.6-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.9-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.42-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.7-next.2 - - @backstage/plugin-search-backend-node@1.3.9-next.1 - - @backstage/plugin-signals-backend@0.3.2-next.2 - - @backstage/plugin-signals-node@0.1.18-next.2 - -## 0.2.108-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-node@0.6.1-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.1-next.1 - - @backstage/plugin-catalog-backend@1.32.0-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.7-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.7-next.1 - - @backstage/plugin-scaffolder-backend@1.30.1-next.1 - - @backstage/plugin-auth-backend@0.24.4-next.1 - - @backstage/backend-defaults@0.8.2-next.1 - - @backstage/backend-plugin-api@1.2.1-next.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6-next.1 - - @backstage/plugin-catalog-node@1.16.1-next.1 - - @backstage/plugin-events-backend@0.4.4-next.1 - - @backstage/plugin-events-node@0.4.9-next.1 - - @backstage/plugin-kubernetes-backend@0.19.4-next.1 - - @backstage/plugin-permission-backend@0.5.55-next.1 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-permission-node@0.8.9-next.1 - - @backstage/plugin-search-backend@1.8.3-next.1 - - @backstage/plugin-search-backend-module-catalog@0.3.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.6-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.9-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.42-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.7-next.1 - - @backstage/plugin-search-backend-node@1.3.9-next.1 - - @backstage/plugin-signals-backend@0.3.2-next.1 - - @backstage/plugin-signals-node@0.1.18-next.1 - - @backstage/plugin-techdocs-backend@1.11.7-next.1 - -## 0.2.108-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.6.6-next.0 - - @backstage/backend-defaults@0.8.2-next.0 - - @backstage/plugin-kubernetes-backend@0.19.4-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.42-next.0 - - @backstage/plugin-events-backend@0.4.4-next.0 - - @backstage/plugin-permission-node@0.8.9-next.0 - - @backstage/plugin-app-backend@0.4.6-next.0 - - @backstage/plugin-auth-backend@0.24.4-next.0 - - @backstage/plugin-auth-node@0.6.1-next.0 - - @backstage/plugin-catalog-backend@1.31.1-next.0 - - @backstage/plugin-permission-backend@0.5.55-next.0 - - @backstage/plugin-proxy-backend@0.5.12-next.0 - - @backstage/plugin-scaffolder-backend@1.30.1-next.0 - - @backstage/plugin-search-backend@1.8.3-next.0 - - @backstage/plugin-search-backend-node@1.3.9-next.0 - - @backstage/plugin-signals-backend@0.3.2-next.0 - - @backstage/plugin-techdocs-backend@1.11.7-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.7-next.0 - - @backstage/backend-plugin-api@1.2.1-next.0 - - @backstage/plugin-catalog-node@1.16.1-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.6-next.0 - - @backstage/plugin-events-node@0.4.9-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.7-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.7-next.0 - - @backstage/plugin-search-backend-module-catalog@0.3.2-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.9-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.6-next.0 - - @backstage/plugin-signals-node@0.1.18-next.0 - -## 0.2.107 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-permission-node@0.8.8 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.0 - - @backstage/backend-defaults@0.8.0 - - @backstage/plugin-catalog-backend@1.31.0 - - @backstage/plugin-scaffolder-backend@1.30.0 - - @backstage/backend-plugin-api@1.2.0 - - @backstage/plugin-catalog-node@1.16.0 - - @backstage/plugin-kubernetes-backend@0.19.3 - - @backstage/plugin-search-backend-module-catalog@0.3.1 - - @backstage/plugin-search-backend-module-pg@0.5.41 - - @backstage/plugin-search-backend-node@1.3.8 - - @backstage/plugin-auth-node@0.6.0 - - @backstage/plugin-techdocs-backend@1.11.6 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.5 - - @backstage/plugin-permission-backend@0.5.54 - - @backstage/plugin-search-backend@1.8.2 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-app-backend@0.4.5 - - @backstage/plugin-auth-backend@0.24.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5 - - @backstage/plugin-events-backend@0.4.2 - - @backstage/plugin-events-node@0.4.8 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-proxy-backend@0.5.11 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.6 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.5 - - @backstage/plugin-search-backend-module-explore@0.2.8 - - @backstage/plugin-search-backend-module-techdocs@0.3.6 - - @backstage/plugin-signals-backend@0.3.1 - - @backstage/plugin-signals-node@0.1.17 - -## 0.2.107-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.16.0-next.3 - - @backstage/plugin-permission-node@0.8.8-next.2 - - @backstage/plugin-catalog-backend@1.31.0-next.3 - - @backstage/plugin-scaffolder-backend@1.30.0-next.3 - - @backstage/backend-defaults@0.8.0-next.3 - - @backstage/backend-plugin-api@1.2.0-next.2 - - @backstage/plugin-auth-backend@0.24.3-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.5-next.3 - - @backstage/plugin-kubernetes-backend@0.19.3-next.3 - - @backstage/plugin-search-backend-module-catalog@0.3.1-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.3.6-next.3 - - @backstage/plugin-techdocs-backend@1.11.6-next.3 - - @backstage/plugin-permission-backend@0.5.54-next.2 - - @backstage/plugin-search-backend@1.8.2-next.3 - - @backstage/plugin-app-backend@0.4.5-next.2 - - @backstage/plugin-auth-node@0.6.0-next.2 - - @backstage/plugin-events-backend@0.4.2-next.3 - - @backstage/plugin-events-node@0.4.8-next.2 - - @backstage/plugin-proxy-backend@0.5.11-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.0-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.6-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.5-next.2 - - @backstage/plugin-search-backend-module-explore@0.2.8-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.41-next.2 - - @backstage/plugin-search-backend-node@1.3.8-next.2 - - @backstage/plugin-signals-backend@0.3.1-next.2 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-signals-node@0.1.17-next.2 - -## 0.2.107-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.0-next.2 - - @backstage/backend-plugin-api@1.2.0-next.1 - - @backstage/plugin-search-backend-module-catalog@0.3.1-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.41-next.1 - - @backstage/plugin-search-backend-node@1.3.8-next.1 - - @backstage/plugin-auth-node@0.6.0-next.1 - - @backstage/backend-defaults@0.8.0-next.2 - - @backstage/plugin-kubernetes-backend@0.19.3-next.2 - - @backstage/plugin-scaffolder-backend@1.30.0-next.2 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-app-backend@0.4.5-next.1 - - @backstage/plugin-auth-backend@0.24.3-next.2 - - @backstage/plugin-catalog-backend@1.31.0-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.5-next.2 - - @backstage/plugin-catalog-node@1.16.0-next.2 - - @backstage/plugin-events-backend@0.4.2-next.2 - - @backstage/plugin-events-node@0.4.8-next.1 - - @backstage/plugin-permission-backend@0.5.54-next.1 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-permission-node@0.8.8-next.1 - - @backstage/plugin-proxy-backend@0.5.11-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.6-next.1 - - @backstage/plugin-search-backend@1.8.2-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.5-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.8-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.6-next.2 - - @backstage/plugin-signals-backend@0.3.1-next.1 - - @backstage/plugin-signals-node@0.1.17-next.1 - - @backstage/plugin-techdocs-backend@1.11.6-next.2 - -## 0.2.107-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-gitlab@0.8.0-next.1 - - @backstage/plugin-scaffolder-backend@1.30.0-next.1 - - @backstage/plugin-catalog-backend@1.31.0-next.1 - - @backstage/plugin-catalog-node@1.16.0-next.1 - - @backstage/backend-defaults@0.8.0-next.1 - - @backstage/plugin-app-backend@0.4.5-next.0 - - @backstage/plugin-events-backend@0.4.2-next.1 - - @backstage/plugin-kubernetes-backend@0.19.3-next.1 - - @backstage/plugin-proxy-backend@0.5.11-next.0 - - @backstage/backend-plugin-api@1.2.0-next.0 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-auth-backend@0.24.3-next.1 - - @backstage/plugin-auth-node@0.5.7-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.5-next.1 - - @backstage/plugin-events-node@0.4.8-next.0 - - @backstage/plugin-permission-backend@0.5.54-next.0 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-permission-node@0.8.8-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.6-next.0 - - @backstage/plugin-search-backend@1.8.2-next.1 - - @backstage/plugin-search-backend-module-catalog@0.3.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.5-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.8-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.41-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.6-next.1 - - @backstage/plugin-search-backend-node@1.3.8-next.0 - - @backstage/plugin-signals-backend@0.3.1-next.0 - - @backstage/plugin-signals-node@0.1.17-next.0 - - @backstage/plugin-techdocs-backend@1.11.6-next.1 - -## 0.2.107-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-permission-node@0.8.8-next.0 - - @backstage/backend-defaults@0.8.0-next.0 - - @backstage/plugin-catalog-backend@1.31.0-next.0 - - @backstage/plugin-kubernetes-backend@0.19.3-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.5-next.0 - - @backstage/plugin-catalog-node@1.15.2-next.0 - - @backstage/backend-plugin-api@1.2.0-next.0 - - @backstage/plugin-scaffolder-backend@1.30.0-next.0 - - @backstage/plugin-search-backend-module-catalog@0.3.1-next.0 - - @backstage/plugin-permission-backend@0.5.54-next.0 - - @backstage/plugin-search-backend@1.8.2-next.0 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/integration@1.16.1 - - @backstage/plugin-app-backend@0.4.5-next.0 - - @backstage/plugin-auth-backend@0.24.3-next.0 - - @backstage/plugin-auth-node@0.5.7-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5-next.0 - - @backstage/plugin-events-backend@0.4.2-next.0 - - @backstage/plugin-events-node@0.4.8-next.0 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-proxy-backend@0.5.11-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.2-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.6-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.5-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.8-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.41-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.6-next.0 - - @backstage/plugin-search-backend-node@1.3.8-next.0 - - @backstage/plugin-signals-backend@0.3.1-next.0 - - @backstage/plugin-signals-node@0.1.17-next.0 - - @backstage/plugin-techdocs-backend@1.11.6-next.0 - -## 0.2.106 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-signals-backend@0.3.0 - - @backstage/backend-defaults@0.7.0 - - @backstage/plugin-scaffolder-backend@1.29.0 - - @backstage/plugin-proxy-backend@0.5.10 - - @backstage/plugin-search-backend-module-catalog@0.3.0 - - @backstage/plugin-techdocs-backend@1.11.5 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1 - - @backstage/plugin-permission-backend@0.5.53 - - @backstage/plugin-catalog-backend@1.30.0 - - @backstage/plugin-permission-node@0.8.7 - - @backstage/plugin-events-backend@0.4.1 - - @backstage/plugin-app-backend@0.4.4 - - @backstage/plugin-auth-node@0.5.6 - - @backstage/integration@1.16.1 - - @backstage/plugin-auth-backend@0.24.2 - - @backstage/backend-plugin-api@1.1.1 - - @backstage/catalog-client@1.9.1 - - @backstage/catalog-model@1.7.3 - - @backstage/config@1.3.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4 - - @backstage/plugin-catalog-node@1.15.1 - - @backstage/plugin-events-node@0.4.7 - - @backstage/plugin-kubernetes-backend@0.19.2 - - @backstage/plugin-permission-common@0.8.4 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.5 - - @backstage/plugin-search-backend@1.8.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.4 - - @backstage/plugin-search-backend-module-explore@0.2.7 - - @backstage/plugin-search-backend-module-pg@0.5.40 - - @backstage/plugin-search-backend-module-techdocs@0.3.5 - - @backstage/plugin-search-backend-node@1.3.7 - - @backstage/plugin-signals-node@0.1.16 - -## 0.2.106-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.7.0-next.1 - - @backstage/backend-plugin-api@1.1.1-next.1 - - @backstage/catalog-model@1.7.3-next.0 - - @backstage/config@1.3.2-next.0 - - @backstage/plugin-app-backend@0.4.4-next.1 - - @backstage/plugin-auth-backend@0.24.2-next.1 - - @backstage/plugin-auth-node@0.5.6-next.1 - - @backstage/plugin-catalog-backend@1.30.0-next.1 - - @backstage/plugin-catalog-node@1.15.1-next.1 - - @backstage/plugin-events-backend@0.4.1-next.1 - - @backstage/plugin-events-node@0.4.7-next.1 - - @backstage/plugin-kubernetes-backend@0.19.2-next.1 - - @backstage/plugin-permission-common@0.8.4-next.0 - - @backstage/plugin-proxy-backend@0.5.10-next.1 - - @backstage/plugin-scaffolder-backend@1.29.0-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.1 - - @backstage/plugin-search-backend@1.8.1-next.1 - - @backstage/plugin-signals-backend@0.3.0-next.2 - - @backstage/plugin-signals-node@0.1.16-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.1 - - @backstage/plugin-permission-backend@0.5.53-next.1 - - @backstage/plugin-permission-node@0.8.7-next.1 - - @backstage/plugin-search-backend-node@1.3.7-next.1 - - @backstage/plugin-techdocs-backend@1.11.5-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.1 - - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.7-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.40-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 - - @backstage/catalog-client@1.9.1-next.0 - - @backstage/integration@1.16.1-next.0 - -## 0.2.106-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-signals-backend@0.3.0-next.1 - - @backstage/plugin-techdocs-backend@1.11.5-next.1 - - @backstage/plugin-scaffolder-backend@1.29.0-next.1 - -## 0.2.106-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.7.0-next.0 - - @backstage/plugin-scaffolder-backend@1.29.0-next.0 - - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 - - @backstage/plugin-permission-backend@0.5.53-next.0 - - @backstage/plugin-catalog-backend@1.30.0-next.0 - - @backstage/plugin-permission-node@0.8.7-next.0 - - @backstage/plugin-events-backend@0.4.1-next.0 - - @backstage/plugin-app-backend@0.4.4-next.0 - - @backstage/plugin-auth-node@0.5.6-next.0 - - @backstage/plugin-auth-backend@0.24.2-next.0 - - @backstage/backend-plugin-api@1.1.1-next.0 - - @backstage/catalog-client@1.9.0 - - @backstage/catalog-model@1.7.2 - - @backstage/config@1.3.1 - - @backstage/integration@1.16.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 - - @backstage/plugin-catalog-node@1.15.1-next.0 - - @backstage/plugin-events-node@0.4.7-next.0 - - @backstage/plugin-kubernetes-backend@0.19.2-next.0 - - @backstage/plugin-permission-common@0.8.3 - - @backstage/plugin-proxy-backend@0.5.10-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 - - @backstage/plugin-search-backend@1.8.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.40-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 - - @backstage/plugin-search-backend-node@1.3.7-next.0 - - @backstage/plugin-signals-backend@0.2.5-next.0 - - @backstage/plugin-signals-node@0.1.16-next.0 - - @backstage/plugin-techdocs-backend@1.11.5-next.0 - -## 0.2.105 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.28.0 - - @backstage/backend-defaults@0.6.0 - - @backstage/plugin-catalog-backend@1.29.0 - - @backstage/integration@1.16.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.3 - - @backstage/plugin-auth-backend@0.24.1 - - @backstage/plugin-auth-node@0.5.5 - - @backstage/backend-plugin-api@1.1.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.4 - - @backstage/plugin-search-backend-module-catalog@0.2.6 - - @backstage/plugin-search-backend-module-explore@0.2.6 - - @backstage/plugin-app-backend@0.4.3 - - @backstage/plugin-catalog-node@1.15.0 - - @backstage/plugin-events-node@0.4.6 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.0 - - @backstage/catalog-client@1.9.0 - - @backstage/plugin-events-backend@0.4.0 - - @backstage/plugin-search-backend@1.8.0 - - @backstage/plugin-permission-backend@0.5.52 - - @backstage/plugin-signals-backend@0.2.4 - - @backstage/plugin-permission-node@0.8.6 - - @backstage/plugin-search-backend-node@1.3.6 - - @backstage/plugin-techdocs-backend@1.11.4 - - @backstage/plugin-proxy-backend@0.5.9 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.4 - - @backstage/plugin-kubernetes-backend@0.19.1 - - @backstage/catalog-model@1.7.2 - - @backstage/config@1.3.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.3 - - @backstage/plugin-permission-common@0.8.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.4 - - @backstage/plugin-search-backend-module-pg@0.5.39 - - @backstage/plugin-signals-node@0.1.15 - -## 0.2.105-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.28.0-next.2 - - @backstage/backend-defaults@0.6.0-next.2 - - @backstage/plugin-catalog-backend@1.29.0-next.2 - - @backstage/backend-plugin-api@1.1.0-next.2 - - @backstage/plugin-permission-node@0.8.6-next.2 - - @backstage/plugin-app-backend@0.4.3-next.2 - - @backstage/plugin-auth-backend@0.24.1-next.2 - - @backstage/plugin-events-backend@0.4.0-next.2 - - @backstage/plugin-kubernetes-backend@0.19.1-next.2 - - @backstage/plugin-proxy-backend@0.5.9-next.2 - - @backstage/plugin-search-backend@1.8.0-next.2 - - @backstage/plugin-search-backend-node@1.3.6-next.2 - - @backstage/plugin-signals-backend@0.2.4-next.2 - - @backstage/plugin-techdocs-backend@1.11.4-next.2 - - @backstage/plugin-auth-node@0.5.5-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.3-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.3-next.2 - - @backstage/plugin-catalog-node@1.15.0-next.2 - - @backstage/plugin-events-node@0.4.6-next.2 - - @backstage/plugin-permission-backend@0.5.52-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.4-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.0-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.4-next.2 - - @backstage/plugin-search-backend-module-catalog@0.2.6-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.3-next.2 - - @backstage/plugin-search-backend-module-explore@0.2.6-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.39-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.3.4-next.2 - - @backstage/plugin-signals-node@0.1.15-next.2 - - @backstage/catalog-client@1.9.0-next.2 - - @backstage/catalog-model@1.7.2-next.0 - - @backstage/config@1.3.1-next.0 - - @backstage/integration@1.16.0-next.1 - - @backstage/plugin-permission-common@0.8.3-next.0 - -## 0.2.105-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.6.3-next.1 - - @backstage/plugin-auth-backend@0.24.1-next.1 - - @backstage/plugin-auth-node@0.5.5-next.1 - - @backstage/plugin-catalog-backend@1.29.0-next.1 - - @backstage/backend-defaults@0.6.0-next.1 - - @backstage/plugin-catalog-node@1.15.0-next.1 - - @backstage/catalog-client@1.9.0-next.1 - - @backstage/plugin-events-backend@0.4.0-next.1 - - @backstage/plugin-search-backend@1.8.0-next.1 - - @backstage/plugin-search-backend-node@1.3.6-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.4-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.6-next.1 - - @backstage/plugin-permission-backend@0.5.52-next.1 - - @backstage/plugin-techdocs-backend@1.11.4-next.1 - - @backstage/plugin-signals-backend@0.2.4-next.1 - - @backstage/plugin-proxy-backend@0.5.9-next.1 - - @backstage/plugin-app-backend@0.4.3-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.4-next.1 - - @backstage/backend-plugin-api@1.1.0-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.3-next.1 - - @backstage/plugin-kubernetes-backend@0.19.1-next.1 - - @backstage/plugin-permission-node@0.8.6-next.1 - - @backstage/plugin-scaffolder-backend@1.28.0-next.1 - - @backstage/plugin-signals-node@0.1.15-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.3-next.1 - - @backstage/plugin-search-backend-module-catalog@0.2.6-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.4-next.1 - - @backstage/catalog-model@1.7.1 - - @backstage/config@1.3.0 - - @backstage/integration@1.16.0-next.0 - - @backstage/plugin-events-node@0.4.6-next.1 - - @backstage/plugin-permission-common@0.8.2 - - @backstage/plugin-search-backend-module-pg@0.5.39-next.1 - -## 0.2.105-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.6.0-next.0 - - @backstage/integration@1.16.0-next.0 - - @backstage/plugin-scaffolder-backend@1.28.0-next.0 - - @backstage/backend-plugin-api@1.0.3-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.4-next.0 - - @backstage/plugin-search-backend-module-catalog@0.2.6-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.6-next.0 - - @backstage/plugin-app-backend@0.4.3-next.0 - - @backstage/plugin-catalog-backend@1.28.1-next.0 - - @backstage/plugin-events-node@0.4.6-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.0-next.0 - - @backstage/plugin-auth-node@0.5.5-next.0 - - @backstage/plugin-permission-backend@0.5.52-next.0 - - @backstage/plugin-devtools-backend@0.4.3-next.0 - - @backstage/plugin-signals-backend@0.2.4-next.0 - - @backstage/plugin-events-backend@0.3.17-next.0 - - @backstage/plugin-kubernetes-backend@0.19.1-next.0 - - @backstage/catalog-client@1.8.1-next.0 - - @backstage/catalog-model@1.7.1 - - @backstage/config@1.3.0 - - @backstage/plugin-auth-backend@0.24.1-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.3-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.3-next.0 - - @backstage/plugin-catalog-node@1.14.1-next.0 - - @backstage/plugin-permission-common@0.8.2 - - @backstage/plugin-permission-node@0.8.6-next.0 - - @backstage/plugin-proxy-backend@0.5.9-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.3-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.3-next.0 - - @backstage/plugin-search-backend@1.7.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.3-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.39-next.0 - - @backstage/plugin-search-backend-node@1.3.6-next.0 - - @backstage/plugin-signals-node@0.1.15-next.0 - - @backstage/plugin-techdocs-backend@1.11.4-next.0 - -## 0.2.104 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-client@1.8.0 - - @backstage/config@1.3.0 - - @backstage/plugin-events-node@0.4.5 - - @backstage/backend-defaults@0.5.3 - - @backstage/plugin-app-backend@0.4.0 - - @backstage/plugin-search-backend-module-catalog@0.2.5 - - @backstage/plugin-scaffolder-backend@1.27.0 - - @backstage/plugin-auth-backend@0.24.0 - - @backstage/plugin-catalog-backend@1.28.0 - - @backstage/plugin-search-backend@1.7.0 - - @backstage/plugin-events-backend@0.3.16 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.1 - - @backstage/plugin-kubernetes-backend@0.19.0 - - @backstage/plugin-auth-node@0.5.4 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.2 - - @backstage/plugin-search-backend-module-explore@0.2.5 - - @backstage/plugin-catalog-node@1.14.0 - - @backstage/backend-plugin-api@1.0.2 - - @backstage/plugin-signals-backend@0.2.3 - - @backstage/plugin-search-backend-module-pg@0.5.38 - - @backstage/plugin-search-backend-node@1.3.5 - - @backstage/plugin-permission-common@0.8.2 - - @backstage/plugin-proxy-backend@0.5.8 - - @backstage/plugin-signals-node@0.1.14 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.2 - - @backstage/catalog-model@1.7.1 - - @backstage/integration@1.15.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.2 - - @backstage/plugin-devtools-backend@0.4.2 - - @backstage/plugin-permission-backend@0.5.51 - - @backstage/plugin-permission-node@0.8.5 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.2 - - @backstage/plugin-search-backend-module-techdocs@0.3.2 - - @backstage/plugin-techdocs-backend@1.11.2 - -## 0.2.104-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-events-node@0.4.5-next.3 - - @backstage/plugin-events-backend@0.3.16-next.3 - - @backstage/plugin-catalog-backend@1.28.0-next.3 - - @backstage/backend-defaults@0.5.3-next.3 - - @backstage/plugin-scaffolder-backend@1.27.0-next.3 - - @backstage/backend-plugin-api@1.0.2-next.2 - - @backstage/catalog-client@1.8.0-next.1 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.15.1 - - @backstage/plugin-app-backend@0.3.77-next.2 - - @backstage/plugin-auth-backend@0.24.0-next.2 - - @backstage/plugin-auth-node@0.5.4-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.2-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.2-next.2 - - @backstage/plugin-catalog-node@1.14.0-next.2 - - @backstage/plugin-devtools-backend@0.4.2-next.2 - - @backstage/plugin-kubernetes-backend@0.19.0-next.3 - - @backstage/plugin-permission-backend@0.5.51-next.2 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.5-next.2 - - @backstage/plugin-proxy-backend@0.5.8-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.2-next.3 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.1-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.2-next.3 - - @backstage/plugin-search-backend@1.7.0-next.3 - - @backstage/plugin-search-backend-module-catalog@0.2.5-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.2-next.3 - - @backstage/plugin-search-backend-module-explore@0.2.5-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.38-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.3.2-next.3 - - @backstage/plugin-search-backend-node@1.3.5-next.3 - - @backstage/plugin-signals-backend@0.2.3-next.3 - - @backstage/plugin-signals-node@0.1.14-next.3 - - @backstage/plugin-techdocs-backend@1.11.2-next.3 - -## 0.2.104-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-client@1.8.0-next.1 - - @backstage/plugin-catalog-backend@1.28.0-next.2 - - @backstage/plugin-search-backend@1.7.0-next.2 - - @backstage/plugin-kubernetes-backend@0.19.0-next.2 - - @backstage/backend-defaults@0.5.3-next.2 - - @backstage/plugin-events-backend@0.3.16-next.2 - - @backstage/plugin-events-node@0.4.5-next.2 - - @backstage/plugin-auth-backend@0.24.0-next.2 - - @backstage/plugin-auth-node@0.5.4-next.2 - - @backstage/plugin-catalog-node@1.14.0-next.2 - - @backstage/plugin-scaffolder-backend@1.27.0-next.2 - - @backstage/plugin-search-backend-module-catalog@0.2.5-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.3.2-next.2 - - @backstage/plugin-techdocs-backend@1.11.2-next.2 - - @backstage/backend-plugin-api@1.0.2-next.2 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.15.1 - - @backstage/plugin-app-backend@0.3.77-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.2-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.2-next.2 - - @backstage/plugin-devtools-backend@0.4.2-next.2 - - @backstage/plugin-permission-backend@0.5.51-next.2 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.5-next.2 - - @backstage/plugin-proxy-backend@0.5.8-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.2-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.1-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.2-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.2-next.2 - - @backstage/plugin-search-backend-module-explore@0.2.5-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.38-next.2 - - @backstage/plugin-search-backend-node@1.3.5-next.2 - - @backstage/plugin-signals-backend@0.2.3-next.2 - - @backstage/plugin-signals-node@0.1.14-next.2 - -## 0.2.104-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.19.0-next.1 - - @backstage/plugin-scaffolder-backend@1.27.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.2-next.1 - - @backstage/backend-defaults@0.5.3-next.1 - - @backstage/backend-plugin-api@1.0.2-next.1 - - @backstage/catalog-client@1.8.0-next.0 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.15.1 - - @backstage/plugin-app-backend@0.3.77-next.1 - - @backstage/plugin-auth-backend@0.24.0-next.1 - - @backstage/plugin-auth-node@0.5.4-next.1 - - @backstage/plugin-catalog-backend@1.27.2-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.2-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.2-next.1 - - @backstage/plugin-catalog-node@1.14.0-next.1 - - @backstage/plugin-devtools-backend@0.4.2-next.1 - - @backstage/plugin-events-backend@0.3.16-next.1 - - @backstage/plugin-events-node@0.4.4-next.1 - - @backstage/plugin-permission-backend@0.5.51-next.1 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.5-next.1 - - @backstage/plugin-proxy-backend@0.5.8-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.2-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.1-next.1 - - @backstage/plugin-search-backend@1.6.2-next.1 - - @backstage/plugin-search-backend-module-catalog@0.2.5-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.2-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.5-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.38-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.3.2-next.1 - - @backstage/plugin-search-backend-node@1.3.5-next.1 - - @backstage/plugin-signals-backend@0.2.3-next.1 - - @backstage/plugin-signals-node@0.1.14-next.1 - - @backstage/plugin-techdocs-backend@1.11.2-next.1 - -## 0.2.104-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-events-node@0.4.3-next.0 - - @backstage/plugin-search-backend-module-catalog@0.2.5-next.0 - - @backstage/plugin-scaffolder-backend@1.26.3-next.0 - - @backstage/plugin-auth-backend@0.24.0-next.0 - - @backstage/plugin-events-backend@0.3.15-next.0 - - @backstage/plugin-auth-node@0.5.4-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.6.2-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.14.0-next.0 - - @backstage/backend-defaults@0.5.3-next.0 - - @backstage/plugin-signals-backend@0.2.3-next.0 - - @backstage/catalog-client@1.8.0-next.0 - - @backstage/backend-plugin-api@1.0.2-next.0 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.15.1 - - @backstage/plugin-app-backend@0.3.77-next.0 - - @backstage/plugin-catalog-backend@1.27.2-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.2-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.2-next.0 - - @backstage/plugin-devtools-backend@0.4.2-next.0 - - @backstage/plugin-kubernetes-backend@0.18.8-next.0 - - @backstage/plugin-permission-backend@0.5.51-next.0 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.5-next.0 - - @backstage/plugin-proxy-backend@0.5.8-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.2-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.2-next.0 - - @backstage/plugin-search-backend@1.6.2-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.38-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.3.2-next.0 - - @backstage/plugin-search-backend-node@1.3.5-next.0 - - @backstage/plugin-signals-node@0.1.14-next.0 - - @backstage/plugin-techdocs-backend@1.11.2-next.0 - -## 0.2.103 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.6.0 - - @backstage/plugin-search-backend-module-catalog@0.2.3 - - @backstage/plugin-search-backend-module-techdocs@0.3.0 - - @backstage/plugin-scaffolder-backend@1.26.0 - - @backstage/backend-defaults@0.5.1 - - @backstage/plugin-search-backend@1.6.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.0 - - @backstage/plugin-auth-node@0.5.3 - - @backstage/plugin-app-backend@0.3.76 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.1 - - @backstage/plugin-search-backend-module-explore@0.2.3 - - @backstage/plugin-search-backend-module-pg@0.5.36 - - @backstage/plugin-search-backend-node@1.3.3 - - @backstage/plugin-kubernetes-backend@0.18.7 - - @backstage/plugin-permission-backend@0.5.50 - - @backstage/plugin-devtools-backend@0.4.1 - - @backstage/plugin-techdocs-backend@1.11.0 - - @backstage/plugin-catalog-backend@1.27.0 - - @backstage/plugin-permission-node@0.8.4 - - @backstage/plugin-signals-backend@0.2.1 - - @backstage/plugin-events-backend@0.3.13 - - @backstage/plugin-proxy-backend@0.5.7 - - @backstage/plugin-auth-backend@0.23.1 - - @backstage/plugin-signals-node@0.1.12 - - @backstage/plugin-events-node@0.4.1 - - @backstage/plugin-catalog-node@1.13.1 - - @backstage/integration@1.15.1 - - @backstage/catalog-client@1.7.1 - - @backstage/backend-plugin-api@1.0.1 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1 - - @backstage/plugin-permission-common@0.8.1 - -## 0.2.103-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.5.1-next.2 - - @backstage/plugin-scaffolder-backend@1.26.0-next.2 - - @backstage/plugin-search-backend@1.5.18-next.2 - - @backstage/plugin-auth-node@0.5.3-next.1 - - @backstage/plugin-app-backend@0.3.76-next.1 - - @backstage/plugin-catalog-node@1.13.1-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.0-next.2 - - @backstage/integration@1.15.1-next.1 - - @backstage/plugin-catalog-backend@1.26.2-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.1-next.2 - - @backstage/plugin-search-backend-module-explore@0.2.3-next.2 - - @backstage/catalog-client@1.7.1-next.0 - - @backstage/plugin-techdocs-backend@1.10.14-next.2 - - @backstage/backend-plugin-api@1.0.1-next.1 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/plugin-auth-backend@0.23.1-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.1-next.1 - - @backstage/plugin-devtools-backend@0.4.1-next.1 - - @backstage/plugin-events-backend@0.3.13-next.1 - - @backstage/plugin-events-node@0.4.1-next.1 - - @backstage/plugin-kubernetes-backend@0.18.7-next.1 - - @backstage/plugin-permission-backend@0.5.50-next.1 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.4-next.1 - - @backstage/plugin-proxy-backend@0.5.7-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.1-next.2 - - @backstage/plugin-search-backend-module-catalog@0.2.3-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.7-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.36-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.2.3-next.2 - - @backstage/plugin-search-backend-node@1.3.3-next.2 - - @backstage/plugin-signals-backend@0.2.1-next.1 - - @backstage/plugin-signals-node@0.1.12-next.1 - -## 0.2.103-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.26.0-next.1 - - @backstage/plugin-catalog-backend@1.26.2-next.1 - - @backstage/backend-defaults@0.5.1-next.1 - - @backstage/integration@1.15.1-next.0 - - @backstage/backend-plugin-api@1.0.1-next.0 - - @backstage/catalog-client@1.7.0 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/plugin-app-backend@0.3.75-next.0 - - @backstage/plugin-auth-backend@0.23.1-next.0 - - @backstage/plugin-auth-node@0.5.3-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.1-next.0 - - @backstage/plugin-catalog-node@1.13.1-next.0 - - @backstage/plugin-devtools-backend@0.4.1-next.0 - - @backstage/plugin-events-backend@0.3.13-next.0 - - @backstage/plugin-events-node@0.4.1-next.0 - - @backstage/plugin-kubernetes-backend@0.18.7-next.0 - - @backstage/plugin-permission-backend@0.5.50-next.0 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.4-next.0 - - @backstage/plugin-proxy-backend@0.5.7-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.1-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.1-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.1-next.1 - - @backstage/plugin-search-backend@1.5.18-next.1 - - @backstage/plugin-search-backend-module-catalog@0.2.3-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.7-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.3-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.36-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.2.3-next.1 - - @backstage/plugin-search-backend-node@1.3.3-next.1 - - @backstage/plugin-signals-backend@0.2.1-next.0 - - @backstage/plugin-signals-node@0.1.12-next.0 - - @backstage/plugin-techdocs-backend@1.10.14-next.1 - -## 0.2.103-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.5.7-next.0 - - @backstage/plugin-scaffolder-backend@1.26.0-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.1-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.1-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.2.3-next.0 - - @backstage/plugin-search-backend-module-catalog@0.2.3-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.3-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.36-next.0 - - @backstage/plugin-search-backend-node@1.3.3-next.0 - - @backstage/plugin-kubernetes-backend@0.18.7-next.0 - - @backstage/plugin-permission-backend@0.5.50-next.0 - - @backstage/backend-defaults@0.5.1-next.0 - - @backstage/plugin-devtools-backend@0.4.1-next.0 - - @backstage/plugin-techdocs-backend@1.10.14-next.0 - - @backstage/plugin-catalog-backend@1.26.1-next.0 - - @backstage/plugin-permission-node@0.8.4-next.0 - - @backstage/plugin-signals-backend@0.2.1-next.0 - - @backstage/plugin-events-backend@0.3.13-next.0 - - @backstage/plugin-search-backend@1.5.18-next.0 - - @backstage/plugin-proxy-backend@0.5.7-next.0 - - @backstage/plugin-auth-backend@0.23.1-next.0 - - @backstage/plugin-signals-node@0.1.12-next.0 - - @backstage/plugin-app-backend@0.3.75-next.0 - - @backstage/plugin-events-node@0.4.1-next.0 - - @backstage/plugin-auth-node@0.5.3-next.0 - - @backstage/backend-plugin-api@1.0.1-next.0 - - @backstage/catalog-client@1.7.0 - - @backstage/catalog-model@1.7.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.15.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1-next.0 - - @backstage/plugin-catalog-node@1.13.1-next.0 - - @backstage/plugin-permission-common@0.8.1 - -## 0.2.102 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.5.0 - - @backstage/backend-common@0.25.0 - - @backstage/plugin-kubernetes-backend@0.18.6 - - @backstage/plugin-signals-backend@0.2.0 - - @backstage/plugin-signals-node@0.1.11 - - @backstage/plugin-techdocs-backend@1.10.13 - - @backstage/backend-plugin-api@1.0.0 - - @backstage/plugin-search-backend@1.5.17 - - @backstage/plugin-auth-node@0.5.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.0 - - @backstage/plugin-devtools-backend@0.4.0 - - @backstage/plugin-app-backend@0.3.74 - - @backstage/plugin-scaffolder-backend@1.25.0 - - @backstage/plugin-auth-backend@0.23.0 - - @backstage/catalog-model@1.7.0 - - @backstage/plugin-catalog-backend@1.26.0 - - @backstage/catalog-client@1.7.0 - - @backstage/plugin-search-backend-module-techdocs@0.2.2 - - @backstage/plugin-search-backend-module-catalog@0.2.2 - - @backstage/plugin-search-backend-module-explore@0.2.2 - - @backstage/plugin-permission-node@0.8.3 - - @backstage/plugin-catalog-node@1.13.0 - - @backstage/plugin-events-backend@0.3.12 - - @backstage/plugin-permission-backend@0.5.49 - - @backstage/plugin-proxy-backend@0.5.6 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.6 - - @backstage/plugin-search-backend-module-pg@0.5.35 - - @backstage/integration@1.15.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0 - - @backstage/plugin-events-node@0.4.0 - - @backstage/config@1.2.0 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-search-backend-node@1.3.2 - -## 0.2.102-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.25.0-next.2 - - @backstage/backend-defaults@0.5.0-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.0-next.2 - - @backstage/plugin-devtools-backend@0.4.0-next.2 - - @backstage/plugin-scaffolder-backend@1.25.0-next.2 - - @backstage/plugin-auth-node@0.5.2-next.2 - - @backstage/plugin-auth-backend@0.23.0-next.2 - - @backstage/backend-plugin-api@1.0.0-next.2 - - @backstage/catalog-client@1.7.0-next.1 - - @backstage/plugin-catalog-backend@1.26.0-next.2 - - @backstage/plugin-app-backend@0.3.74-next.2 - - @backstage/integration@1.15.0-next.0 - - @backstage/plugin-events-backend@0.3.12-next.2 - - @backstage/plugin-kubernetes-backend@0.18.6-next.2 - - @backstage/plugin-permission-backend@0.5.49-next.2 - - @backstage/plugin-permission-node@0.8.3-next.2 - - @backstage/plugin-search-backend@1.5.17-next.2 - - @backstage/plugin-signals-backend@0.2.0-next.2 - - @backstage/plugin-techdocs-backend@1.10.13-next.2 - - @backstage/plugin-search-backend-module-explore@0.2.2-next.2 - - @backstage/catalog-model@1.6.0 - - @backstage/config@1.2.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.2 - - @backstage/plugin-catalog-node@1.12.7-next.2 - - @backstage/plugin-events-node@0.4.0-next.2 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-proxy-backend@0.5.6-next.2 - - @backstage/plugin-search-backend-module-catalog@0.2.2-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.6-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.35-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.2 - - @backstage/plugin-search-backend-node@1.3.2-next.2 - - @backstage/plugin-signals-node@0.1.11-next.2 - -## 0.2.102-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.5.0-next.1 - - @backstage/backend-common@0.25.0-next.1 - - @backstage/plugin-auth-node@0.5.2-next.1 - - @backstage/catalog-client@1.6.7-next.0 - - @backstage/plugin-catalog-backend@1.25.3-next.1 - - @backstage/plugin-scaffolder-backend@1.25.0-next.1 - - @backstage/plugin-kubernetes-backend@0.18.6-next.1 - - @backstage/plugin-techdocs-backend@1.10.13-next.1 - - @backstage/backend-plugin-api@0.9.0-next.1 - - @backstage/catalog-model@1.6.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.14.0 - - @backstage/plugin-app-backend@0.3.74-next.1 - - @backstage/plugin-auth-backend@0.23.0-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.1 - - @backstage/plugin-catalog-node@1.12.7-next.1 - - @backstage/plugin-devtools-backend@0.4.0-next.1 - - @backstage/plugin-events-backend@0.3.12-next.1 - - @backstage/plugin-events-node@0.4.0-next.1 - - @backstage/plugin-permission-backend@0.5.49-next.1 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-permission-node@0.8.3-next.1 - - @backstage/plugin-proxy-backend@0.5.6-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.0-next.1 - - @backstage/plugin-search-backend@1.5.17-next.1 - - @backstage/plugin-search-backend-module-catalog@0.2.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.6-next.1 - - @backstage/plugin-search-backend-module-explore@0.2.2-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.35-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.1 - - @backstage/plugin-search-backend-node@1.3.2-next.1 - - @backstage/plugin-signals-backend@0.2.0-next.1 - - @backstage/plugin-signals-node@0.1.11-next.1 - -## 0.2.102-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.10.13-next.0 - - @backstage/backend-plugin-api@0.9.0-next.0 - - @backstage/plugin-search-backend@1.5.17-next.0 - - @backstage/plugin-kubernetes-backend@0.18.6-next.0 - - @backstage/plugin-scaffolder-backend@1.25.0-next.0 - - @backstage/plugin-app-backend@0.3.74-next.0 - - @backstage/plugin-signals-backend@0.2.0-next.0 - - @backstage/backend-defaults@0.5.0-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.0 - - @backstage/plugin-search-backend-module-catalog@0.2.2-next.0 - - @backstage/plugin-search-backend-module-explore@0.2.2-next.0 - - @backstage/plugin-permission-node@0.8.3-next.0 - - @backstage/plugin-auth-backend@0.23.0-next.0 - - @backstage/backend-common@0.25.0-next.0 - - @backstage/plugin-catalog-backend@1.25.3-next.0 - - @backstage/plugin-events-backend@0.3.12-next.0 - - @backstage/plugin-permission-backend@0.5.49-next.0 - - @backstage/plugin-proxy-backend@0.5.6-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.6-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.35-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.0 - - @backstage/plugin-devtools-backend@0.4.0-next.0 - - @backstage/plugin-events-node@0.4.0-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.5.0-next.0 - - @backstage/plugin-auth-node@0.5.2-next.0 - - @backstage/plugin-catalog-node@1.12.7-next.0 - - @backstage/plugin-search-backend-node@1.3.2-next.0 - - @backstage/plugin-signals-node@0.1.11-next.0 - - @backstage/catalog-client@1.6.6 - - @backstage/catalog-model@1.6.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.14.0 - - @backstage/plugin-permission-common@0.8.1 - -## 0.2.101 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-defaults@0.4.2 - - @backstage/backend-plugin-api@0.8.0 - - @backstage/backend-common@0.24.0 - - @backstage/plugin-catalog-backend@1.25.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.24 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.40 - - @backstage/plugin-search-backend-node@1.3.0 - - @backstage/plugin-scaffolder-backend@1.24.0 - - @backstage/plugin-techdocs-backend@1.10.10 - - @backstage/plugin-permission-common@0.8.1 - - @backstage/plugin-search-backend-module-techdocs@0.2.0 - - @backstage/plugin-search-backend-module-explore@0.2.0 - - @backstage/plugin-kubernetes-backend@0.18.4 - - @backstage/plugin-permission-backend@0.5.47 - - @backstage/plugin-devtools-backend@0.3.9 - - @backstage/plugin-signals-backend@0.1.9 - - @backstage/plugin-proxy-backend@0.5.4 - - @backstage/plugin-auth-backend@0.22.10 - - @backstage/plugin-app-backend@0.3.72 - - @backstage/plugin-auth-node@0.5.0 - - @backstage/plugin-permission-node@0.8.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.5 - - @backstage/plugin-search-backend-module-catalog@0.2.0 - - @backstage/plugin-search-backend@1.5.15 - - @backstage/plugin-catalog-node@1.12.5 - - @backstage/integration@1.14.0 - - @backstage/plugin-search-backend-module-pg@0.5.33 - - @backstage/catalog-model@1.6.0 - - @backstage/catalog-client@1.6.6 - - @backstage/config@1.2.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.21 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.10 - - @backstage/plugin-events-backend@0.3.10 - - @backstage/plugin-events-node@0.3.9 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.4 - - @backstage/plugin-signals-node@0.1.9 - -## 0.2.101-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.5-next.3 - - @backstage/plugin-techdocs-backend@1.10.10-next.3 - - @backstage/backend-common@0.23.4-next.3 - - @backstage/catalog-model@1.6.0-next.0 - - @backstage/plugin-scaffolder-backend@1.23.1-next.3 - - @backstage/backend-tasks@0.5.28-next.3 - - @backstage/catalog-client@1.6.6-next.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.14.0-next.0 - - @backstage/plugin-app-backend@0.3.72-next.3 - - @backstage/plugin-auth-backend@0.22.10-next.3 - - @backstage/plugin-auth-node@0.5.0-next.3 - - @backstage/plugin-catalog-backend@1.24.1-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.21-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.10-next.3 - - @backstage/plugin-catalog-node@1.12.5-next.3 - - @backstage/plugin-devtools-backend@0.3.9-next.3 - - @backstage/plugin-events-backend@0.3.10-next.3 - - @backstage/plugin-events-node@0.3.9-next.3 - - @backstage/plugin-kubernetes-backend@0.18.4-next.3 - - @backstage/plugin-permission-backend@0.5.47-next.3 - - @backstage/plugin-permission-common@0.8.1-next.1 - - @backstage/plugin-permission-node@0.8.1-next.3 - - @backstage/plugin-proxy-backend@0.5.4-next.3 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.24-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.40-next.3 - - @backstage/plugin-search-backend@1.5.15-next.3 - - @backstage/plugin-search-backend-module-catalog@0.1.29-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.4-next.3 - - @backstage/plugin-search-backend-module-explore@0.1.29-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.33-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.1.28-next.3 - - @backstage/plugin-search-backend-node@1.2.28-next.3 - - @backstage/plugin-signals-backend@0.1.9-next.3 - - @backstage/plugin-signals-node@0.1.9-next.3 - -## 0.2.101-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.23.1-next.2 - - @backstage/plugin-permission-common@0.8.1-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.24-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.28-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.29-next.2 - - @backstage/plugin-kubernetes-backend@0.18.4-next.2 - - @backstage/plugin-permission-backend@0.5.47-next.2 - - @backstage/plugin-devtools-backend@0.3.9-next.2 - - @backstage/plugin-techdocs-backend@1.10.10-next.2 - - @backstage/backend-common@0.23.4-next.2 - - @backstage/plugin-catalog-backend@1.24.1-next.2 - - @backstage/plugin-signals-backend@0.1.9-next.2 - - @backstage/plugin-proxy-backend@0.5.4-next.2 - - @backstage/plugin-auth-backend@0.22.10-next.2 - - @backstage/plugin-app-backend@0.3.72-next.2 - - @backstage/plugin-auth-node@0.5.0-next.2 - - @backstage/plugin-permission-node@0.8.1-next.2 - - @backstage/plugin-search-backend-node@1.2.28-next.2 - - @backstage/plugin-search-backend@1.5.15-next.2 - - @backstage/backend-tasks@0.5.28-next.2 - - @backstage/plugin-catalog-node@1.12.5-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.21-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.10-next.2 - - @backstage/plugin-events-backend@0.3.10-next.2 - - @backstage/plugin-events-node@0.3.9-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.5-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.40-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.29-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.4-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.33-next.2 - - @backstage/plugin-signals-node@0.1.9-next.2 - - @backstage/integration@1.14.0-next.0 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - -## 0.2.101-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.10.10-next.1 - - @backstage/plugin-permission-common@0.8.1-next.0 - - @backstage/plugin-catalog-backend@1.24.1-next.1 - - @backstage/plugin-permission-node@0.8.1-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.29-next.1 - - @backstage/plugin-scaffolder-backend@1.23.1-next.1 - - @backstage/plugin-auth-backend@0.22.10-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.28-next.1 - - example-app@0.2.100-next.1 - - @backstage/backend-common@0.23.4-next.1 - - @backstage/integration@1.14.0-next.0 - - @backstage/plugin-app-backend@0.3.72-next.1 - - @backstage/plugin-devtools-backend@0.3.9-next.1 - - @backstage/plugin-proxy-backend@0.5.4-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.10-next.1 - - @backstage/plugin-catalog-node@1.12.5-next.1 - - @backstage/plugin-kubernetes-backend@0.18.4-next.1 - - @backstage/plugin-permission-backend@0.5.47-next.1 - - @backstage/plugin-search-backend@1.5.15-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.29-next.1 - - @backstage/plugin-search-backend-node@1.2.28-next.1 - - @backstage/backend-tasks@0.5.28-next.1 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/plugin-auth-node@0.4.18-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.21-next.1 - - @backstage/plugin-events-backend@0.3.10-next.1 - - @backstage/plugin-events-node@0.3.9-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.24-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.5-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.40-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.4-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.33-next.1 - - @backstage/plugin-signals-backend@0.1.9-next.1 - - @backstage/plugin-signals-node@0.1.9-next.1 - -## 0.2.101-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.23.4-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.40-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.5-next.0 - - @backstage/plugin-catalog-backend@1.24.1-next.0 - - @backstage/plugin-catalog-node@1.12.5-next.0 - - @backstage/plugin-devtools-backend@0.3.9-next.0 - - @backstage/integration@1.14.0-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.33-next.0 - - example-app@0.2.100-next.0 - - @backstage/backend-tasks@0.5.28-next.0 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/plugin-app-backend@0.3.72-next.0 - - @backstage/plugin-auth-backend@0.22.10-next.0 - - @backstage/plugin-auth-node@0.4.18-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.21-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.10-next.0 - - @backstage/plugin-events-backend@0.3.10-next.0 - - @backstage/plugin-events-node@0.3.9-next.0 - - @backstage/plugin-kubernetes-backend@0.18.4-next.0 - - @backstage/plugin-permission-backend@0.5.47-next.0 - - @backstage/plugin-permission-common@0.8.0 - - @backstage/plugin-permission-node@0.8.1-next.0 - - @backstage/plugin-proxy-backend@0.5.4-next.0 - - @backstage/plugin-scaffolder-backend@1.23.1-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.24-next.0 - - @backstage/plugin-search-backend@1.5.15-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.29-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.4-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.29-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.28-next.0 - - @backstage/plugin-search-backend-node@1.2.28-next.0 - - @backstage/plugin-signals-backend@0.1.9-next.0 - - @backstage/plugin-signals-node@0.1.9-next.0 - - @backstage/plugin-techdocs-backend@1.10.10-next.0 - -## 0.2.100 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.23.3 - - @backstage/backend-tasks@0.5.27 - - @backstage/plugin-scaffolder-backend@1.23.0 - - @backstage/plugin-permission-common@0.8.0 - - @backstage/plugin-permission-backend@0.5.46 - - @backstage/plugin-permission-node@0.8.0 - - @backstage/plugin-techdocs-backend@1.10.9 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.4 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.39 - - @backstage/integration@1.13.0 - - @backstage/plugin-events-node@0.3.8 - - @backstage/plugin-auth-node@0.4.17 - - @backstage/plugin-search-backend@1.5.14 - - @backstage/plugin-catalog-backend@1.24.0 - - @backstage/plugin-app-backend@0.3.71 - - @backstage/plugin-auth-backend@0.22.9 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.20 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.9 - - @backstage/plugin-catalog-node@1.12.4 - - @backstage/plugin-devtools-backend@0.3.8 - - @backstage/plugin-events-backend@0.3.9 - - @backstage/plugin-kubernetes-backend@0.18.3 - - @backstage/plugin-proxy-backend@0.5.3 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.23 - - @backstage/plugin-search-backend-module-catalog@0.1.28 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.3 - - @backstage/plugin-search-backend-module-explore@0.1.28 - - @backstage/plugin-search-backend-module-pg@0.5.32 - - @backstage/plugin-search-backend-module-techdocs@0.1.27 - - @backstage/plugin-search-backend-node@1.2.27 - - @backstage/plugin-signals-backend@0.1.8 - - @backstage/plugin-signals-node@0.1.8 - - example-app@0.2.99 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - -## 0.2.100-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.23.0-next.2 - - example-app@0.2.99-next.2 - -## 0.2.100-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.10.9-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.4-next.1 - - @backstage/plugin-catalog-backend@1.24.0-next.1 - - @backstage/backend-common@0.23.3-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.27-next.1 - - example-app@0.2.99-next.1 - - @backstage/backend-tasks@0.5.27-next.1 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.13.0-next.0 - - @backstage/plugin-app-backend@0.3.71-next.1 - - @backstage/plugin-auth-backend@0.22.9-next.1 - - @backstage/plugin-auth-node@0.4.17-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.20-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.9-next.1 - - @backstage/plugin-catalog-node@1.12.4-next.1 - - @backstage/plugin-devtools-backend@0.3.8-next.1 - - @backstage/plugin-events-backend@0.3.9-next.1 - - @backstage/plugin-events-node@0.3.8-next.1 - - @backstage/plugin-kubernetes-backend@0.18.3-next.1 - - @backstage/plugin-permission-backend@0.5.46-next.1 - - @backstage/plugin-permission-common@0.7.14 - - @backstage/plugin-permission-node@0.7.33-next.1 - - @backstage/plugin-proxy-backend@0.5.3-next.1 - - @backstage/plugin-scaffolder-backend@1.23.0-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.23-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.39-next.1 - - @backstage/plugin-search-backend@1.5.14-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.28-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.3-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.28-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.32-next.1 - - @backstage/plugin-search-backend-node@1.2.27-next.1 - - @backstage/plugin-signals-backend@0.1.8-next.1 - - @backstage/plugin-signals-node@0.1.8-next.1 - -## 0.2.100-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.23.2-next.0 - - @backstage/backend-tasks@0.5.26-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.3-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.38-next.0 - - @backstage/integration@1.13.0-next.0 - - @backstage/plugin-scaffolder-backend@1.23.0-next.0 - - @backstage/plugin-app-backend@0.3.70-next.0 - - @backstage/plugin-auth-backend@0.22.8-next.0 - - @backstage/plugin-auth-node@0.4.16-next.0 - - @backstage/plugin-catalog-backend@1.23.2-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.19-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.8-next.0 - - @backstage/plugin-catalog-node@1.12.3-next.0 - - @backstage/plugin-devtools-backend@0.3.7-next.0 - - @backstage/plugin-events-backend@0.3.8-next.0 - - @backstage/plugin-events-node@0.3.7-next.0 - - @backstage/plugin-kubernetes-backend@0.18.2-next.0 - - @backstage/plugin-permission-backend@0.5.45-next.0 - - @backstage/plugin-permission-node@0.7.32-next.0 - - @backstage/plugin-proxy-backend@0.5.2-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.22-next.0 - - @backstage/plugin-search-backend@1.5.13-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.27-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.2-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.27-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.31-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.26-next.0 - - @backstage/plugin-search-backend-node@1.2.26-next.0 - - @backstage/plugin-signals-backend@0.1.7-next.0 - - @backstage/plugin-signals-node@0.1.7-next.0 - - @backstage/plugin-techdocs-backend@1.10.8-next.0 - - example-app@0.2.99-next.0 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/plugin-permission-common@0.7.14 - -## 0.2.99 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.23.0 - - @backstage/backend-tasks@0.5.24 - - @backstage/plugin-auth-node@0.4.14 - - @backstage/plugin-auth-backend@0.22.6 - - @backstage/plugin-techdocs-backend@1.10.6 - - @backstage/plugin-devtools-backend@0.3.5 - - @backstage/plugin-catalog-backend@1.23.0 - - @backstage/plugin-search-backend@1.5.10 - - @backstage/plugin-proxy-backend@0.5.0 - - @backstage/plugin-app-backend@0.3.68 - - @backstage/integration@1.12.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.20 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.17 - - @backstage/plugin-search-backend-module-elasticsearch@1.5.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.6 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.36 - - @backstage/plugin-search-backend-module-techdocs@0.1.24 - - @backstage/plugin-search-backend-module-catalog@0.1.25 - - @backstage/plugin-search-backend-module-explore@0.1.25 - - @backstage/plugin-search-backend-module-pg@0.5.28 - - @backstage/plugin-kubernetes-backend@0.18.0 - - @backstage/plugin-permission-backend@0.5.43 - - @backstage/plugin-scaffolder-backend@1.22.9 - - @backstage/plugin-signals-backend@0.1.5 - - @backstage/plugin-events-backend@0.3.6 - - @backstage/plugin-catalog-node@1.12.1 - - @backstage/plugin-search-backend-node@1.2.24 - - @backstage/plugin-events-node@0.3.5 - - @backstage/plugin-permission-node@0.7.30 - - @backstage/plugin-permission-common@0.7.14 - - @backstage/plugin-signals-node@0.1.5 - - example-app@0.2.98 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - -## 0.2.99-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-node@0.4.14-next.3 - - @backstage/integration@1.12.0-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.20-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.17-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.2-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.6-next.3 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.1-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.36-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.1.24-next.3 - - @backstage/plugin-search-backend-module-catalog@0.1.25-next.3 - - @backstage/plugin-search-backend-module-explore@0.1.25-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.28-next.3 - - @backstage/plugin-search-backend-node@1.2.24-next.3 - - @backstage/plugin-kubernetes-backend@0.18.0-next.3 - - @backstage/plugin-permission-backend@0.5.43-next.3 - - @backstage/plugin-scaffolder-backend@1.22.8-next.3 - - @backstage/plugin-permission-common@0.7.14-next.0 - - @backstage/plugin-devtools-backend@0.3.5-next.3 - - @backstage/plugin-techdocs-backend@1.10.6-next.3 - - @backstage/plugin-catalog-backend@1.23.0-next.3 - - @backstage/plugin-permission-node@0.7.30-next.3 - - @backstage/plugin-signals-backend@0.1.5-next.3 - - @backstage/plugin-events-backend@0.3.6-next.3 - - @backstage/plugin-search-backend@1.5.10-next.3 - - @backstage/plugin-proxy-backend@0.5.0-next.3 - - @backstage/plugin-auth-backend@0.22.6-next.3 - - @backstage/plugin-catalog-node@1.12.1-next.2 - - @backstage/plugin-signals-node@0.1.5-next.3 - - @backstage/plugin-app-backend@0.3.68-next.3 - - @backstage/plugin-events-node@0.3.5-next.2 - - @backstage/backend-tasks@0.5.24-next.3 - - @backstage/backend-common@0.23.0-next.3 - - example-app@0.2.98-next.3 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - -## 0.2.99-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.10.6-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.1-next.2 - - @backstage/backend-common@0.23.0-next.2 - - @backstage/integration@1.12.0-next.0 - - @backstage/plugin-permission-node@0.7.30-next.2 - - example-app@0.2.98-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.24-next.2 - - @backstage/plugin-scaffolder-backend@1.22.8-next.2 - - @backstage/backend-tasks@0.5.24-next.2 - - @backstage/plugin-app-backend@0.3.68-next.2 - - @backstage/plugin-auth-backend@0.22.6-next.2 - - @backstage/plugin-auth-node@0.4.14-next.2 - - @backstage/plugin-catalog-backend@1.23.0-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.17-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.6-next.2 - - @backstage/plugin-catalog-node@1.12.1-next.1 - - @backstage/plugin-devtools-backend@0.3.5-next.2 - - @backstage/plugin-events-backend@0.3.6-next.2 - - @backstage/plugin-events-node@0.3.5-next.1 - - @backstage/plugin-kubernetes-backend@0.18.0-next.2 - - @backstage/plugin-permission-backend@0.5.43-next.2 - - @backstage/plugin-proxy-backend@0.5.0-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.20-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.36-next.2 - - @backstage/plugin-search-backend@1.5.10-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.25-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.2-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.25-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.28-next.2 - - @backstage/plugin-search-backend-node@1.2.24-next.2 - - @backstage/plugin-signals-backend@0.1.5-next.2 - - @backstage/plugin-signals-node@0.1.5-next.2 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.99-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-tasks@0.5.24-next.1 - - @backstage/plugin-permission-node@0.7.30-next.1 - - @backstage/plugin-search-backend@1.5.10-next.1 - - @backstage/backend-common@0.23.0-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.1-next.1 - - @backstage/plugin-kubernetes-backend@0.18.0-next.1 - - @backstage/plugin-catalog-backend@1.23.0-next.1 - - @backstage/plugin-scaffolder-backend@1.22.8-next.1 - - @backstage/plugin-app-backend@0.3.68-next.1 - - @backstage/plugin-auth-backend@0.22.6-next.1 - - @backstage/plugin-auth-node@0.4.14-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.17-next.1 - - @backstage/plugin-catalog-node@1.12.1-next.0 - - @backstage/plugin-devtools-backend@0.3.5-next.1 - - @backstage/plugin-events-backend@0.3.6-next.1 - - @backstage/plugin-events-node@0.3.5-next.0 - - @backstage/plugin-permission-backend@0.5.43-next.1 - - @backstage/plugin-proxy-backend@0.5.0-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.20-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.36-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.25-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.2-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.25-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.28-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.24-next.1 - - @backstage/plugin-search-backend-node@1.2.24-next.1 - - @backstage/plugin-signals-backend@0.1.5-next.1 - - @backstage/plugin-techdocs-backend@1.10.6-next.1 - - example-app@0.2.98-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.6-next.1 - - @backstage/plugin-signals-node@0.1.5-next.1 - -## 0.2.99-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-tasks@0.5.24-next.0 - - @backstage/backend-common@0.22.1-next.0 - - @backstage/plugin-devtools-backend@0.3.5-next.0 - - @backstage/plugin-techdocs-backend@1.10.6-next.0 - - @backstage/plugin-catalog-backend@1.23.0-next.0 - - @backstage/plugin-search-backend@1.5.10-next.0 - - @backstage/plugin-proxy-backend@0.5.0-next.0 - - @backstage/plugin-auth-backend@0.22.6-next.0 - - @backstage/plugin-app-backend@0.3.68-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.2-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.28-next.0 - - @backstage/plugin-search-backend-node@1.2.24-next.0 - - @backstage/plugin-signals-backend@0.1.5-next.0 - - @backstage/plugin-events-node@0.3.5-next.0 - - @backstage/plugin-scaffolder-backend@1.22.8-next.0 - - @backstage/plugin-kubernetes-backend@0.17.2-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.25-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.25-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.24-next.0 - - example-app@0.2.98-next.0 - - @backstage/plugin-auth-node@0.4.14-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.6-next.0 - - @backstage/plugin-events-backend@0.3.6-next.0 - - @backstage/plugin-permission-backend@0.5.43-next.0 - - @backstage/plugin-permission-node@0.7.30-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.20-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.36-next.0 - - @backstage/plugin-signals-node@0.1.5-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.17-next.0 - - @backstage/plugin-catalog-node@1.12.1-next.0 - - @backstage/catalog-client@1.6.5 - - @backstage/catalog-model@1.5.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.11.0 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.98 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.4.1 - - @backstage/plugin-catalog-node@1.12.0 - - @backstage/plugin-scaffolder-backend@1.22.6 - - @backstage/plugin-catalog-backend@1.22.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.5 - - @backstage/plugin-search-backend-module-catalog@0.1.24 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.0 - - @backstage/catalog-model@1.5.0 - - @backstage/backend-common@0.22.0 - - @backstage/plugin-search-backend-module-pg@0.5.27 - - @backstage/backend-tasks@0.5.23 - - @backstage/plugin-auth-backend@0.22.5 - - @backstage/plugin-app-backend@0.3.66 - - @backstage/plugin-devtools-backend@0.3.4 - - @backstage/plugin-signals-backend@0.1.4 - - @backstage/plugin-search-backend-node@1.2.22 - - @backstage/plugin-search-backend@1.5.8 - - @backstage/plugin-techdocs-backend@1.10.5 - - @backstage/plugin-events-node@0.3.4 - - @backstage/plugin-search-backend-module-explore@0.1.24 - - @backstage/plugin-auth-node@0.4.13 - - @backstage/integration@1.11.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.23 - - example-app@0.2.97 - - @backstage/catalog-client@1.6.5 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.16 - - @backstage/plugin-events-backend@0.3.5 - - @backstage/plugin-kubernetes-backend@0.17.1 - - @backstage/plugin-permission-backend@0.5.42 - - @backstage/plugin-permission-node@0.7.29 - - @backstage/plugin-proxy-backend@0.4.16 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.19 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.35 - - @backstage/plugin-signals-node@0.1.4 - -## 0.2.98-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.12.0-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.5-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.24-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.4.0-next.2 - - @backstage/plugin-catalog-backend@1.22.0-next.2 - - @backstage/backend-common@0.22.0-next.2 - - @backstage/plugin-devtools-backend@0.3.4-next.2 - - @backstage/plugin-scaffolder-backend@1.22.6-next.2 - - @backstage/plugin-signals-backend@0.1.4-next.2 - - @backstage/plugin-auth-backend@0.22.5-next.2 - - @backstage/plugin-techdocs-backend@1.10.5-next.2 - - @backstage/plugin-events-node@0.3.4-next.2 - - @backstage/integration@1.11.0-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.23-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.16-next.2 - - @backstage/plugin-kubernetes-backend@0.17.1-next.2 - - @backstage/plugin-search-backend@1.5.8-next.2 - - example-app@0.2.97-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.19-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.35-next.2 - -## 0.2.98-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.5-next.1 - - @backstage/backend-common@0.22.0-next.1 - - @backstage/plugin-catalog-backend@1.22.0-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.16-next.1 - - @backstage/plugin-scaffolder-backend@1.22.5-next.1 - - example-app@0.2.97-next.1 - - @backstage/plugin-search-backend@1.5.8-next.1 - - @backstage/plugin-app-backend@0.3.66-next.1 - - @backstage/plugin-kubernetes-backend@0.17.1-next.1 - - @backstage/backend-tasks@0.5.23-next.1 - - @backstage/plugin-auth-backend@0.22.5-next.1 - - @backstage/plugin-auth-node@0.4.13-next.1 - - @backstage/plugin-devtools-backend@0.3.4-next.1 - - @backstage/plugin-events-backend@0.3.5-next.1 - - @backstage/plugin-events-node@0.3.4-next.1 - - @backstage/plugin-permission-backend@0.5.42-next.1 - - @backstage/plugin-permission-node@0.7.29-next.1 - - @backstage/plugin-proxy-backend@0.4.16-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.19-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.4-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.35-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.24-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.1-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.24-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.27-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.23-next.1 - - @backstage/plugin-search-backend-node@1.2.22-next.1 - - @backstage/plugin-signals-backend@0.1.4-next.1 - - @backstage/plugin-signals-node@0.1.4-next.1 - - @backstage/plugin-techdocs-backend@1.10.5-next.1 - - @backstage/plugin-catalog-node@1.11.2-next.1 - -## 0.2.98-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.22.0-next.0 - - @backstage/plugin-scaffolder-backend@1.22.5-next.0 - - @backstage/catalog-model@1.5.0-next.0 - - @backstage/plugin-search-backend-node@1.2.22-next.0 - - @backstage/plugin-search-backend@1.5.8-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.4-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.23-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.23-next.0 - - @backstage/plugin-auth-backend@0.22.5-next.0 - - @backstage/plugin-auth-node@0.4.13-next.0 - - @backstage/backend-common@0.21.8-next.0 - - example-app@0.2.97-next.0 - - @backstage/plugin-app-backend@0.3.66-next.0 - - @backstage/plugin-kubernetes-backend@0.17.1-next.0 - - @backstage/catalog-client@1.6.5-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.16-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.5-next.0 - - @backstage/plugin-catalog-node@1.11.2-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.23-next.0 - - @backstage/plugin-techdocs-backend@1.10.5-next.0 - - @backstage/backend-tasks@0.5.23-next.0 - - @backstage/config@1.2.0 - - @backstage/integration@1.10.0 - - @backstage/plugin-devtools-backend@0.3.4-next.0 - - @backstage/plugin-events-backend@0.3.5-next.0 - - @backstage/plugin-events-node@0.3.4-next.0 - - @backstage/plugin-permission-backend@0.5.42-next.0 - - @backstage/plugin-permission-common@0.7.13 - - @backstage/plugin-permission-node@0.7.29-next.0 - - @backstage/plugin-proxy-backend@0.4.16-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.19-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.35-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.1-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.27-next.0 - - @backstage/plugin-signals-backend@0.1.4-next.0 - - @backstage/plugin-signals-node@0.1.4-next.0 - -## 0.2.97 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-pg@0.5.26 - - @backstage/plugin-badges-backend@0.4.0 - - @backstage/plugin-kubernetes-backend@0.17.0 - - @backstage/backend-common@0.21.7 - - @backstage/plugin-azure-devops-backend@0.6.4 - - @backstage/plugin-techdocs-backend@1.10.4 - - @backstage/plugin-permission-node@0.7.28 - - @backstage/plugin-auth-backend@0.22.4 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.3 - - @backstage/plugin-catalog-backend@1.21.1 - - @backstage/plugin-events-backend@0.3.4 - - @backstage/plugin-tech-insights-node@0.6.0 - - @backstage/plugin-search-backend@1.5.7 - - @backstage/plugin-todo-backend@0.3.16 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.49 - - @backstage/plugin-search-backend-module-techdocs@0.1.22 - - @backstage/plugin-search-backend-module-explore@0.1.21 - - @backstage/plugin-entity-feedback-backend@0.2.14 - - @backstage/plugin-code-coverage-backend@0.2.31 - - @backstage/plugin-tech-insights-backend@0.5.31 - - @backstage/plugin-search-backend-node@1.2.21 - - @backstage/plugin-lighthouse-backend@0.4.10 - - @backstage/plugin-permission-backend@0.5.41 - - @backstage/plugin-devtools-backend@0.3.3 - - @backstage/plugin-linguist-backend@0.5.15 - - @backstage/plugin-playlist-backend@0.3.21 - - @backstage/plugin-explore-backend@0.0.27 - - @backstage/plugin-jenkins-backend@0.4.4 - - @backstage/backend-tasks@0.5.22 - - @backstage/plugin-kafka-backend@0.3.15 - - @backstage/plugin-nomad-backend@0.1.19 - - @backstage/plugin-adr-backend@0.4.14 - - @backstage/plugin-app-backend@0.3.65 - - @backstage/plugin-auth-node@0.4.12 - - @backstage/plugin-signals-backend@0.1.3 - - @backstage/plugin-proxy-backend@0.4.15 - - @backstage/plugin-scaffolder-backend@1.22.4 - - @backstage/catalog-client@1.6.4 - - @backstage/integration@1.10.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.4.0 - - example-app@0.2.96 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.4 - - @backstage/plugin-events-node@0.3.3 - - @backstage/plugin-rollbar-backend@0.1.62 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.18 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.34 - - @backstage/plugin-search-backend-module-catalog@0.1.22 - - @backstage/plugin-signals-node@0.1.3 - - @backstage/plugin-catalog-node@1.11.1 - - @backstage/catalog-model@1.4.5 - - @backstage/config@1.2.0 - - @backstage/plugin-azure-sites-common@0.1.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.15 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.97-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.17.0-next.1 - - @backstage/backend-common@0.21.7-next.1 - - @backstage/plugin-azure-devops-backend@0.6.4-next.1 - - @backstage/plugin-techdocs-backend@1.10.4-next.1 - - @backstage/plugin-events-backend@0.3.4-next.1 - - @backstage/plugin-auth-backend@0.22.4-next.1 - - @backstage/plugin-auth-node@0.4.12-next.1 - - @backstage/plugin-proxy-backend@0.4.15-next.1 - - @backstage/plugin-scaffolder-backend@1.22.4-next.1 - - @backstage/plugin-catalog-backend@1.21.1-next.1 - - @backstage/catalog-client@1.6.4-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.3-next.1 - - @backstage/plugin-app-backend@0.3.65-next.1 - - @backstage/backend-tasks@0.5.22-next.1 - - @backstage/plugin-adr-backend@0.4.14-next.1 - - @backstage/plugin-badges-backend@0.3.14-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.4-next.1 - - @backstage/plugin-code-coverage-backend@0.2.31-next.1 - - @backstage/plugin-devtools-backend@0.3.3-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.14-next.1 - - @backstage/plugin-events-node@0.3.3-next.1 - - @backstage/plugin-explore-backend@0.0.27-next.1 - - @backstage/plugin-jenkins-backend@0.4.4-next.1 - - @backstage/plugin-kafka-backend@0.3.15-next.1 - - @backstage/plugin-lighthouse-backend@0.4.10-next.1 - - @backstage/plugin-linguist-backend@0.5.15-next.1 - - @backstage/plugin-nomad-backend@0.1.19-next.1 - - @backstage/plugin-permission-backend@0.5.41-next.1 - - @backstage/plugin-permission-node@0.7.28-next.1 - - @backstage/plugin-playlist-backend@0.3.21-next.1 - - @backstage/plugin-rollbar-backend@0.1.62-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.18-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.34-next.1 - - @backstage/plugin-search-backend@1.5.7-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.22-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.20-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.21-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.26-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.22-next.1 - - @backstage/plugin-search-backend-node@1.2.21-next.1 - - @backstage/plugin-signals-backend@0.1.3-next.1 - - @backstage/plugin-signals-node@0.1.3-next.1 - - @backstage/plugin-tech-insights-backend@0.5.31-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.49-next.1 - - @backstage/plugin-tech-insights-node@0.5.3-next.1 - - @backstage/plugin-todo-backend@0.3.16-next.1 - - example-app@0.2.96-next.1 - - @backstage/catalog-model@1.4.5 - - @backstage/config@1.2.0 - - @backstage/integration@1.10.0-next.0 - - @backstage/plugin-azure-sites-common@0.1.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.15-next.1 - - @backstage/plugin-catalog-node@1.11.1-next.1 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.97-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.10.4-next.0 - - @backstage/plugin-catalog-backend@1.21.1-next.0 - - @backstage/plugin-kubernetes-backend@0.16.4-next.0 - - @backstage/plugin-signals-backend@0.1.3-next.0 - - @backstage/backend-common@0.21.7-next.0 - - @backstage/integration@1.10.0-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.22-next.0 - - @backstage/plugin-scaffolder-backend@1.22.4-next.0 - - @backstage/plugin-app-backend@0.3.65-next.0 - - example-app@0.2.96-next.0 - - @backstage/backend-tasks@0.5.22-next.0 - - @backstage/catalog-client@1.6.3 - - @backstage/catalog-model@1.4.5 - - @backstage/config@1.2.0 - - @backstage/plugin-adr-backend@0.4.14-next.0 - - @backstage/plugin-auth-backend@0.22.4-next.0 - - @backstage/plugin-auth-node@0.4.12-next.0 - - @backstage/plugin-azure-devops-backend@0.6.4-next.0 - - @backstage/plugin-azure-sites-common@0.1.3 - - @backstage/plugin-badges-backend@0.3.14-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.15-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.4-next.0 - - @backstage/plugin-catalog-node@1.11.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.31-next.0 - - @backstage/plugin-devtools-backend@0.3.3-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.14-next.0 - - @backstage/plugin-events-backend@0.3.3-next.0 - - @backstage/plugin-events-node@0.3.3-next.0 - - @backstage/plugin-explore-backend@0.0.27-next.0 - - @backstage/plugin-jenkins-backend@0.4.4-next.0 - - @backstage/plugin-kafka-backend@0.3.15-next.0 - - @backstage/plugin-lighthouse-backend@0.4.10-next.0 - - @backstage/plugin-linguist-backend@0.5.15-next.0 - - @backstage/plugin-nomad-backend@0.1.19-next.0 - - @backstage/plugin-permission-backend@0.5.41-next.0 - - @backstage/plugin-permission-common@0.7.13 - - @backstage/plugin-permission-node@0.7.28-next.0 - - @backstage/plugin-playlist-backend@0.3.21-next.0 - - @backstage/plugin-proxy-backend@0.4.15-next.0 - - @backstage/plugin-rollbar-backend@0.1.62-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.18-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.3-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.34-next.0 - - @backstage/plugin-search-backend@1.5.7-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.22-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.20-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.21-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.26-next.0 - - @backstage/plugin-search-backend-node@1.2.21-next.0 - - @backstage/plugin-signals-node@0.1.3-next.0 - - @backstage/plugin-tech-insights-backend@0.5.31-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.49-next.0 - - @backstage/plugin-tech-insights-node@0.5.3-next.0 - - @backstage/plugin-todo-backend@0.3.16-next.0 - -## 0.2.96 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.21.0 - - @backstage/plugin-catalog-node@1.11.0 - - @backstage/plugin-kubernetes-backend@0.16.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.3 - - @backstage/plugin-permission-backend@0.5.40 - - @backstage/plugin-proxy-backend@0.4.14 - - @backstage/plugin-scaffolder-backend@1.22.3 - - @backstage/catalog-client@1.6.3 - - @backstage/plugin-jenkins-backend@0.4.3 - - @backstage/plugin-auth-backend@0.22.3 - - @backstage/plugin-auth-node@0.4.11 - - @backstage/backend-common@0.21.6 - - @backstage/plugin-azure-devops-backend@0.6.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.14 - - @backstage/plugin-lighthouse-backend@0.4.9 - - @backstage/plugin-linguist-backend@0.5.14 - - @backstage/plugin-search-backend-module-catalog@0.1.21 - - @backstage/plugin-search-backend-module-techdocs@0.1.21 - - @backstage/plugin-todo-backend@0.3.15 - - example-app@0.2.95 - - @backstage/plugin-app-backend@0.3.64 - - @backstage/plugin-adr-backend@0.4.13 - - @backstage/plugin-badges-backend@0.3.13 - - @backstage/plugin-code-coverage-backend@0.2.30 - - @backstage/plugin-entity-feedback-backend@0.2.13 - - @backstage/plugin-playlist-backend@0.3.20 - - @backstage/plugin-tech-insights-backend@0.5.30 - - @backstage/plugin-techdocs-backend@1.10.3 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.2 - - @backstage/plugin-permission-node@0.7.27 - - @backstage/plugin-signals-backend@0.1.2 - - @backstage/plugin-signals-node@0.1.2 - - @backstage/backend-tasks@0.5.21 - - @backstage/plugin-devtools-backend@0.3.2 - - @backstage/plugin-events-backend@0.3.2 - - @backstage/plugin-events-node@0.3.2 - - @backstage/plugin-explore-backend@0.0.26 - - @backstage/plugin-kafka-backend@0.3.14 - - @backstage/plugin-nomad-backend@0.1.18 - - @backstage/plugin-rollbar-backend@0.1.61 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.17 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.33 - - @backstage/plugin-search-backend@1.5.6 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.19 - - @backstage/plugin-search-backend-module-explore@0.1.20 - - @backstage/plugin-search-backend-module-pg@0.5.25 - - @backstage/plugin-search-backend-node@1.2.20 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.48 - - @backstage/plugin-tech-insights-node@0.5.2 - - @backstage/catalog-model@1.4.5 - - @backstage/config@1.2.0 - - @backstage/integration@1.9.1 - - @backstage/plugin-azure-sites-common@0.1.3 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.95 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.20.0 - - @backstage/plugin-catalog-node@1.10.0 - - @backstage/plugin-kubernetes-backend@0.16.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.2 - - @backstage/plugin-permission-backend@0.5.39 - - @backstage/catalog-client@1.6.2 - - @backstage/backend-common@0.21.5 - - @backstage/plugin-auth-backend@0.22.2 - - @backstage/plugin-azure-devops-backend@0.6.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.13 - - @backstage/plugin-jenkins-backend@0.4.2 - - @backstage/plugin-lighthouse-backend@0.4.8 - - @backstage/plugin-linguist-backend@0.5.13 - - @backstage/plugin-scaffolder-backend@1.22.2 - - @backstage/plugin-search-backend-module-catalog@0.1.20 - - @backstage/plugin-search-backend-module-techdocs@0.1.20 - - @backstage/plugin-todo-backend@0.3.14 - - example-app@0.2.94 - - @backstage/plugin-app-backend@0.3.63 - - @backstage/plugin-adr-backend@0.4.12 - - @backstage/plugin-auth-node@0.4.10 - - @backstage/plugin-badges-backend@0.3.12 - - @backstage/plugin-code-coverage-backend@0.2.29 - - @backstage/plugin-entity-feedback-backend@0.2.12 - - @backstage/plugin-playlist-backend@0.3.19 - - @backstage/plugin-tech-insights-backend@0.5.29 - - @backstage/plugin-techdocs-backend@1.10.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.1 - - @backstage/backend-tasks@0.5.20 - - @backstage/plugin-devtools-backend@0.3.1 - - @backstage/plugin-events-backend@0.3.1 - - @backstage/plugin-events-node@0.3.1 - - @backstage/plugin-explore-backend@0.0.25 - - @backstage/plugin-kafka-backend@0.3.13 - - @backstage/plugin-nomad-backend@0.1.17 - - @backstage/plugin-permission-node@0.7.26 - - @backstage/plugin-proxy-backend@0.4.13 - - @backstage/plugin-rollbar-backend@0.1.60 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.16 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.32 - - @backstage/plugin-search-backend@1.5.5 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.18 - - @backstage/plugin-search-backend-module-explore@0.1.19 - - @backstage/plugin-search-backend-module-pg@0.5.24 - - @backstage/plugin-search-backend-node@1.2.19 - - @backstage/plugin-signals-backend@0.1.1 - - @backstage/plugin-signals-node@0.1.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.47 - - @backstage/plugin-tech-insights-node@0.5.1 - - @backstage/catalog-model@1.4.5 - - @backstage/config@1.2.0 - - @backstage/integration@1.9.1 - - @backstage/plugin-azure-sites-common@0.1.3 - - @backstage/plugin-permission-common@0.7.13 - -## 0.2.94 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.19.0 - - @backstage/plugin-catalog-node@1.9.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.1 - - @backstage/plugin-permission-backend@0.5.38 - - @backstage/plugin-auth-backend@0.22.1 - - @backstage/plugin-azure-devops-backend@0.6.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.12 - - @backstage/plugin-jenkins-backend@0.4.1 - - @backstage/plugin-kubernetes-backend@0.16.1 - - @backstage/plugin-lighthouse-backend@0.4.7 - - @backstage/plugin-linguist-backend@0.5.12 - - @backstage/plugin-scaffolder-backend@1.22.1 - - @backstage/plugin-search-backend-module-catalog@0.1.19 - - @backstage/plugin-search-backend-module-techdocs@0.1.19 - - @backstage/plugin-todo-backend@0.3.13 - - @backstage/plugin-techdocs-backend@1.10.1 - -## 0.2.93 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-events-backend@0.3.0 - - @backstage/plugin-events-node@0.3.0 - - @backstage/plugin-scaffolder-backend@1.22.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.31 - - @backstage/plugin-linguist-backend@0.5.11 - - @backstage/plugin-catalog-backend-module-unprocessed@0.4.0 - - @backstage/plugin-catalog-backend@1.18.0 - - @backstage/plugin-code-coverage-backend@0.2.28 - - @backstage/plugin-devtools-backend@0.3.0 - - @backstage/plugin-jenkins-backend@0.4.0 - - @backstage/plugin-search-backend@1.5.4 - - @backstage/backend-common@0.21.4 - - @backstage/integration@1.9.1 - - @backstage/plugin-auth-node@0.4.9 - - @backstage/plugin-lighthouse-backend@0.4.6 - - @backstage/config@1.2.0 - - @backstage/plugin-azure-devops-backend@0.6.0 - - @backstage/plugin-permission-backend@0.5.37 - - @backstage/plugin-signals-backend@0.1.0 - - @backstage/plugin-nomad-backend@0.1.16 - - @backstage/plugin-entity-feedback-backend@0.2.11 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.17 - - @backstage/plugin-search-backend-module-pg@0.5.23 - - @backstage/plugin-signals-node@0.1.0 - - @backstage/plugin-playlist-backend@0.3.18 - - @backstage/plugin-auth-backend@0.22.0 - - @backstage/plugin-techdocs-backend@1.10.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.15 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.0 - - @backstage/plugin-permission-common@0.7.13 - - @backstage/plugin-search-backend-module-techdocs@0.1.18 - - @backstage/plugin-search-backend-module-catalog@0.1.18 - - @backstage/plugin-search-backend-module-explore@0.1.18 - - @backstage/plugin-catalog-node@1.8.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.46 - - @backstage/catalog-client@1.6.1 - - @backstage/plugin-kubernetes-backend@0.16.0 - - @backstage/plugin-adr-backend@0.4.11 - - @backstage/plugin-proxy-backend@0.4.12 - - @backstage/backend-tasks@0.5.19 - - @backstage/plugin-search-backend-node@1.2.18 - - @backstage/plugin-tech-insights-backend@0.5.28 - - @backstage/plugin-app-backend@0.3.62 - - @backstage/plugin-permission-node@0.7.25 - - @backstage/plugin-todo-backend@0.3.12 - - @backstage/plugin-tech-insights-node@0.5.0 - - @backstage/plugin-badges-backend@0.3.11 - - example-app@0.2.93 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.11 - - @backstage/plugin-explore-backend@0.0.24 - - @backstage/plugin-rollbar-backend@0.1.59 - - @backstage/plugin-kafka-backend@0.3.12 - - @backstage/catalog-model@1.4.5 - - @backstage/plugin-azure-sites-common@0.1.3 - -## 0.2.93-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.22.0-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.31-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.11-next.2 - - @backstage/plugin-catalog-backend@1.18.0-next.2 - - @backstage/plugin-code-coverage-backend@0.2.28-next.2 - - @backstage/plugin-devtools-backend@0.3.0-next.2 - - @backstage/plugin-jenkins-backend@0.4.0-next.2 - - @backstage/plugin-search-backend@1.5.4-next.2 - - @backstage/integration@1.9.1-next.2 - - @backstage/plugin-techdocs-backend@1.10.0-next.2 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.0-next.2 - - @backstage/plugin-signals-node@0.1.0-next.2 - - @backstage/catalog-client@1.6.1-next.1 - - @backstage/plugin-linguist-backend@0.5.11-next.2 - - @backstage/plugin-kubernetes-backend@0.16.0-next.2 - - @backstage/plugin-todo-backend@0.3.12-next.2 - - @backstage/plugin-signals-backend@0.1.0-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.15-next.2 - - @backstage/backend-common@0.21.4-next.2 - - @backstage/plugin-adr-backend@0.4.11-next.2 - - @backstage/plugin-azure-devops-backend@0.6.0-next.2 - - example-app@0.2.93-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.18-next.2 - - @backstage/plugin-auth-backend@0.22.0-next.2 - - @backstage/plugin-app-backend@0.3.62-next.2 - - @backstage/plugin-auth-node@0.4.9-next.2 - - @backstage/plugin-badges-backend@0.3.11-next.2 - - @backstage/plugin-catalog-node@1.8.0-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.11-next.2 - - @backstage/plugin-lighthouse-backend@0.4.6-next.2 - - @backstage/plugin-playlist-backend@0.3.18-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.18-next.2 - - @backstage/plugin-tech-insights-backend@0.5.28-next.2 - - @backstage/backend-tasks@0.5.19-next.2 - - @backstage/catalog-model@1.4.5-next.0 - - @backstage/config@1.2.0-next.1 - - @backstage/plugin-azure-sites-common@0.1.3-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.11-next.2 - - @backstage/plugin-events-backend@0.3.0-next.2 - - @backstage/plugin-events-node@0.3.0-next.2 - - @backstage/plugin-explore-backend@0.0.24-next.2 - - @backstage/plugin-kafka-backend@0.3.12-next.2 - - @backstage/plugin-nomad-backend@0.1.16-next.2 - - @backstage/plugin-permission-backend@0.5.37-next.2 - - @backstage/plugin-permission-common@0.7.13-next.1 - - @backstage/plugin-permission-node@0.7.25-next.2 - - @backstage/plugin-proxy-backend@0.4.12-next.2 - - @backstage/plugin-rollbar-backend@0.1.59-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.17-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.18-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.23-next.2 - - @backstage/plugin-search-backend-node@1.2.18-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.46-next.2 - - @backstage/plugin-tech-insights-node@0.5.0-next.2 - -## 0.2.93-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/config@1.2.0-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.11-next.1 - - @backstage/plugin-scaffolder-backend@1.22.0-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.17-next.1 - - @backstage/plugin-app-backend@0.3.62-next.1 - - @backstage/plugin-signals-backend@0.1.0-next.1 - - @backstage/plugin-signals-node@0.1.0-next.1 - - @backstage/plugin-azure-devops-backend@0.6.0-next.1 - - @backstage/plugin-kubernetes-backend@0.16.0-next.1 - - example-app@0.2.93-next.1 - - @backstage/backend-common@0.21.4-next.1 - - @backstage/backend-tasks@0.5.19-next.1 - - @backstage/integration@1.9.1-next.1 - - @backstage/plugin-adr-backend@0.4.11-next.1 - - @backstage/plugin-auth-backend@0.22.0-next.1 - - @backstage/plugin-auth-node@0.4.9-next.1 - - @backstage/plugin-badges-backend@0.3.11-next.1 - - @backstage/plugin-catalog-backend@1.18.0-next.1 - - @backstage/plugin-code-coverage-backend@0.2.28-next.1 - - @backstage/plugin-devtools-backend@0.3.0-next.1 - - @backstage/plugin-events-backend@0.3.0-next.1 - - @backstage/plugin-explore-backend@0.0.24-next.1 - - @backstage/plugin-jenkins-backend@0.4.0-next.1 - - @backstage/plugin-kafka-backend@0.3.12-next.1 - - @backstage/plugin-lighthouse-backend@0.4.6-next.1 - - @backstage/plugin-linguist-backend@0.5.11-next.1 - - @backstage/plugin-nomad-backend@0.1.16-next.1 - - @backstage/plugin-permission-backend@0.5.37-next.1 - - @backstage/plugin-permission-common@0.7.13-next.1 - - @backstage/plugin-permission-node@0.7.25-next.1 - - @backstage/plugin-playlist-backend@0.3.18-next.1 - - @backstage/plugin-proxy-backend@0.4.12-next.1 - - @backstage/plugin-rollbar-backend@0.1.59-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.15-next.1 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.17-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.31-next.1 - - @backstage/plugin-search-backend@1.5.4-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.18-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.18-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.23-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.18-next.1 - - @backstage/plugin-search-backend-node@1.2.18-next.1 - - @backstage/plugin-tech-insights-backend@0.5.28-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.46-next.1 - - @backstage/plugin-tech-insights-node@0.5.0-next.1 - - @backstage/plugin-techdocs-backend@1.9.7-next.1 - - @backstage/plugin-todo-backend@0.3.12-next.1 - - @backstage/catalog-client@1.6.1-next.0 - - @backstage/catalog-model@1.4.5-next.0 - - @backstage/plugin-azure-sites-common@0.1.3-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.11-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.11-next.1 - - @backstage/plugin-catalog-node@1.8.0-next.1 - - @backstage/plugin-events-node@0.3.0-next.1 - -## 0.2.93-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-events-backend@0.3.0-next.0 - - @backstage/plugin-events-node@0.3.0-next.0 - - @backstage/plugin-linguist-backend@0.5.10-next.0 - - @backstage/backend-common@0.21.3-next.0 - - @backstage/plugin-auth-node@0.4.8-next.0 - - @backstage/plugin-lighthouse-backend@0.4.5-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.16-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.22-next.0 - - @backstage/plugin-playlist-backend@0.3.17-next.0 - - @backstage/plugin-code-coverage-backend@0.2.27-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.10-next.0 - - @backstage/plugin-catalog-backend@1.18.0-next.0 - - @backstage/plugin-auth-backend@0.22.0-next.0 - - @backstage/plugin-jenkins-backend@0.4.0-next.0 - - @backstage/plugin-azure-devops-backend@0.6.0-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.14-next.0 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.16-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.30-next.0 - - @backstage/plugin-scaffolder-backend@1.22.0-next.0 - - @backstage/plugin-permission-common@0.7.13-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.17-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.17-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.17-next.0 - - @backstage/plugin-catalog-node@1.8.0-next.0 - - @backstage/plugin-kubernetes-backend@0.16.0-next.0 - - @backstage/plugin-adr-backend@0.4.10-next.0 - - @backstage/plugin-proxy-backend@0.4.11-next.0 - - @backstage/backend-tasks@0.5.18-next.0 - - @backstage/plugin-search-backend-node@1.2.17-next.0 - - @backstage/plugin-signals-backend@0.0.4-next.0 - - @backstage/plugin-signals-node@0.0.4-next.0 - - @backstage/plugin-tech-insights-backend@0.5.27-next.0 - - @backstage/plugin-search-backend@1.5.3-next.0 - - @backstage/plugin-devtools-backend@0.3.0-next.0 - - @backstage/plugin-permission-node@0.7.24-next.0 - - @backstage/plugin-tech-insights-node@0.5.0-next.0 - - @backstage/plugin-badges-backend@0.3.10-next.0 - - @backstage/plugin-permission-backend@0.5.36-next.0 - - @backstage/plugin-app-backend@0.3.61-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.10-next.0 - - @backstage/plugin-explore-backend@0.0.23-next.0 - - @backstage/plugin-rollbar-backend@0.1.58-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.45-next.0 - - @backstage/plugin-techdocs-backend@1.9.6-next.0 - - @backstage/plugin-kafka-backend@0.3.11-next.0 - - @backstage/plugin-nomad-backend@0.1.15-next.0 - - @backstage/plugin-todo-backend@0.3.11-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.10-next.0 - - example-app@0.2.93-next.0 - - @backstage/catalog-client@1.6.1-next.0 - - @backstage/catalog-model@1.4.5-next.0 - - @backstage/config@1.1.2-next.0 - - @backstage/integration@1.9.1-next.0 - - @backstage/plugin-azure-sites-common@0.1.3-next.0 - -## 0.2.92 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.27 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7 - - @backstage/plugin-scaffolder-backend@1.21.0 - - @backstage/plugin-badges-backend@0.3.7 - - @backstage/plugin-azure-devops-backend@0.5.2 - - @backstage/plugin-explore-backend@0.0.20 - - @backstage/plugin-auth-backend@0.21.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42 - - @backstage/plugin-auth-node@0.4.4 - - @backstage/plugin-entity-feedback-backend@0.2.7 - - @backstage/plugin-lighthouse-backend@0.4.2 - - @backstage/plugin-devtools-backend@0.2.7 - - @backstage/plugin-linguist-backend@0.5.7 - - @backstage/plugin-adr-backend@0.4.7 - - @backstage/plugin-kubernetes-backend@0.15.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13 - - @backstage/plugin-signals-backend@0.0.1 - - @backstage/plugin-signals-node@0.0.1 - - @backstage/plugin-tech-insights-backend@0.5.24 - - @backstage/plugin-tech-insights-node@0.4.16 - - @backstage/plugin-search-backend-module-techdocs@0.1.14 - - @backstage/plugin-search-backend-module-catalog@0.1.14 - - @backstage/plugin-search-backend-module-explore@0.1.14 - - @backstage/plugin-code-coverage-backend@0.2.24 - - @backstage/plugin-playlist-backend@0.3.14 - - @backstage/plugin-catalog-backend@1.17.0 - - @backstage/plugin-jenkins-backend@0.3.4 - - @backstage/plugin-rollbar-backend@0.1.55 - - @backstage/backend-tasks@0.5.15 - - @backstage/plugin-events-backend@0.2.19 - - @backstage/plugin-nomad-backend@0.1.12 - - @backstage/plugin-app-backend@0.3.58 - - @backstage/catalog-model@1.4.4 - - @backstage/integration@1.9.0 - - @backstage/catalog-client@1.6.0 - - @backstage/plugin-search-backend@1.5.0 - - @backstage/plugin-todo-backend@0.3.8 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7 - - @backstage/plugin-techdocs-backend@1.9.3 - - @backstage/plugin-catalog-node@1.7.0 - - @backstage/plugin-azure-sites-common@0.1.2 - - example-app@0.2.92 - - @backstage/plugin-kafka-backend@0.3.8 - - @backstage/plugin-permission-backend@0.5.33 - - @backstage/plugin-permission-node@0.7.21 - - @backstage/plugin-proxy-backend@0.4.8 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.13 - - @backstage/plugin-search-backend-module-pg@0.5.19 - - @backstage/plugin-search-backend-node@1.2.14 - - @backstage/config@1.1.1 - - @backstage/plugin-events-node@0.2.19 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-search-common@1.2.10 - -## 0.2.92-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0-next.3 - - @backstage/plugin-badges-backend@0.3.7-next.3 - - @backstage/plugin-kubernetes-backend@0.15.0-next.3 - - @backstage/plugin-scaffolder-backend-module-gitlab@0.2.13-next.3 - - @backstage/integration@1.9.0-next.1 - - @backstage/backend-tasks@0.5.15-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.3 - - @backstage/plugin-signals-backend@0.0.1-next.3 - - @backstage/plugin-signals-node@0.0.1-next.3 - - @backstage/plugin-catalog-backend@1.17.0-next.3 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.3 - - @backstage/plugin-app-backend@0.3.58-next.3 - - @backstage/plugin-auth-backend@0.21.0-next.3 - - @backstage/plugin-catalog-node@1.6.2-next.3 - - @backstage/plugin-adr-backend@0.4.7-next.3 - - @backstage/plugin-auth-node@0.4.4-next.3 - - @backstage/plugin-azure-devops-backend@0.5.2-next.3 - - @backstage/plugin-code-coverage-backend@0.2.24-next.3 - - @backstage/plugin-devtools-backend@0.2.7-next.3 - - @backstage/plugin-entity-feedback-backend@0.2.7-next.3 - - @backstage/plugin-events-backend@0.2.19-next.3 - - @backstage/plugin-explore-backend@0.0.20-next.3 - - @backstage/plugin-jenkins-backend@0.3.4-next.3 - - @backstage/plugin-kafka-backend@0.3.8-next.3 - - @backstage/plugin-lighthouse-backend@0.4.2-next.3 - - @backstage/plugin-linguist-backend@0.5.7-next.3 - - @backstage/plugin-nomad-backend@0.1.12-next.3 - - @backstage/plugin-permission-backend@0.5.33-next.3 - - @backstage/plugin-permission-node@0.7.21-next.3 - - @backstage/plugin-playlist-backend@0.3.14-next.3 - - @backstage/plugin-proxy-backend@0.4.8-next.3 - - @backstage/plugin-rollbar-backend@0.1.55-next.3 - - @backstage/plugin-scaffolder-backend@1.21.0-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.3 - - @backstage/plugin-search-backend@1.5.0-next.3 - - @backstage/plugin-search-backend-module-catalog@0.1.14-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.3 - - @backstage/plugin-search-backend-module-explore@0.1.14-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.19-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.3 - - @backstage/plugin-search-backend-node@1.2.14-next.3 - - @backstage/plugin-tech-insights-backend@0.5.24-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.3 - - @backstage/plugin-tech-insights-node@0.4.16-next.3 - - @backstage/plugin-techdocs-backend@1.9.3-next.3 - - @backstage/plugin-todo-backend@0.3.8-next.3 - - example-app@0.2.92-next.3 - - @backstage/catalog-client@1.6.0-next.1 - - @backstage/catalog-model@1.4.4-next.0 - - @backstage/config@1.1.1 - - @backstage/plugin-azure-sites-common@0.1.2-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.3 - - @backstage/plugin-events-node@0.2.19-next.3 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-search-common@1.2.10 - -## 0.2.92-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.21.0-next.2 - - @backstage/plugin-auth-backend@0.21.0-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.2 - - @backstage/backend-common@0.21.0-next.2 - - @backstage/plugin-signals-backend@0.0.1-next.2 - - @backstage/plugin-signals-node@0.0.1-next.2 - - @backstage/plugin-kubernetes-backend@0.15.0-next.2 - - @backstage/plugin-tech-insights-backend@0.5.24-next.2 - - @backstage/plugin-tech-insights-node@0.4.16-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.14-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.14-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.7-next.2 - - @backstage/plugin-code-coverage-backend@0.2.24-next.2 - - @backstage/plugin-azure-devops-backend@0.5.2-next.2 - - @backstage/plugin-lighthouse-backend@0.4.2-next.2 - - @backstage/plugin-devtools-backend@0.2.7-next.2 - - @backstage/plugin-linguist-backend@0.5.7-next.2 - - @backstage/plugin-playlist-backend@0.3.14-next.2 - - @backstage/plugin-catalog-backend@1.17.0-next.2 - - @backstage/plugin-explore-backend@0.0.20-next.2 - - @backstage/plugin-jenkins-backend@0.3.4-next.2 - - @backstage/plugin-rollbar-backend@0.1.55-next.2 - - @backstage/backend-tasks@0.5.15-next.2 - - @backstage/plugin-badges-backend@0.3.7-next.2 - - @backstage/plugin-events-backend@0.2.19-next.2 - - @backstage/plugin-nomad-backend@0.1.12-next.2 - - @backstage/plugin-adr-backend@0.4.7-next.2 - - @backstage/plugin-app-backend@0.3.58-next.2 - - @backstage/plugin-auth-node@0.4.4-next.2 - - example-app@0.2.92-next.2 - - @backstage/plugin-todo-backend@0.3.8-next.2 - - @backstage/plugin-kafka-backend@0.3.8-next.2 - - @backstage/plugin-permission-backend@0.5.33-next.2 - - @backstage/plugin-permission-node@0.7.21-next.2 - - @backstage/plugin-proxy-backend@0.4.8-next.2 - - @backstage/plugin-search-backend@1.5.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.19-next.2 - - @backstage/plugin-search-backend-node@1.2.14-next.2 - - @backstage/plugin-techdocs-backend@1.9.3-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.2 - - @backstage/plugin-catalog-node@1.6.2-next.2 - - @backstage/plugin-events-node@0.2.19-next.2 - - @backstage/config@1.1.1 - - @backstage/catalog-client@1.6.0-next.1 - - @backstage/catalog-model@1.4.4-next.0 - - @backstage/integration@1.9.0-next.0 - - @backstage/plugin-azure-sites-common@0.1.2-next.0 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-search-common@1.2.10 - -## 0.2.92-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.21.0-next.1 - - @backstage/plugin-azure-devops-backend@0.5.2-next.1 - - @backstage/catalog-model@1.4.4-next.0 - - @backstage/catalog-client@1.6.0-next.1 - - @backstage/plugin-catalog-backend@1.17.0-next.1 - - @backstage/backend-common@0.21.0-next.1 - - @backstage/plugin-auth-backend@0.20.4-next.1 - - @backstage/integration@1.9.0-next.0 - - @backstage/plugin-azure-sites-common@0.1.2-next.0 - - example-app@0.2.92-next.1 - - @backstage/backend-tasks@0.5.15-next.1 - - @backstage/config@1.1.1 - - @backstage/plugin-adr-backend@0.4.7-next.1 - - @backstage/plugin-app-backend@0.3.58-next.1 - - @backstage/plugin-auth-node@0.4.4-next.1 - - @backstage/plugin-badges-backend@0.3.7-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.1 - - @backstage/plugin-catalog-node@1.6.2-next.1 - - @backstage/plugin-code-coverage-backend@0.2.24-next.1 - - @backstage/plugin-devtools-backend@0.2.7-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.7-next.1 - - @backstage/plugin-events-backend@0.2.19-next.1 - - @backstage/plugin-events-node@0.2.19-next.1 - - @backstage/plugin-explore-backend@0.0.20-next.1 - - @backstage/plugin-jenkins-backend@0.3.4-next.1 - - @backstage/plugin-kafka-backend@0.3.8-next.1 - - @backstage/plugin-kubernetes-backend@0.14.2-next.1 - - @backstage/plugin-lighthouse-backend@0.4.2-next.1 - - @backstage/plugin-linguist-backend@0.5.7-next.1 - - @backstage/plugin-nomad-backend@0.1.12-next.1 - - @backstage/plugin-permission-backend@0.5.33-next.1 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-permission-node@0.7.21-next.1 - - @backstage/plugin-playlist-backend@0.3.14-next.1 - - @backstage/plugin-proxy-backend@0.4.8-next.1 - - @backstage/plugin-rollbar-backend@0.1.55-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.1 - - @backstage/plugin-search-backend@1.5.0-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.14-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.14-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.19-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.1 - - @backstage/plugin-search-backend-node@1.2.14-next.1 - - @backstage/plugin-search-common@1.2.10 - - @backstage/plugin-signals-backend@0.0.1-next.1 - - @backstage/plugin-signals-node@0.0.1-next.1 - - @backstage/plugin-tech-insights-backend@0.5.24-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.1 - - @backstage/plugin-tech-insights-node@0.4.16-next.1 - - @backstage/plugin-techdocs-backend@1.9.3-next.1 - - @backstage/plugin-todo-backend@0.3.8-next.1 - -## 0.2.92-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-rails@0.4.27-next.0 - - @backstage/plugin-azure-devops-backend@0.5.2-next.0 - - @backstage/plugin-explore-backend@0.0.20-next.0 - - @backstage/plugin-auth-backend@0.20.4-next.0 - - @backstage/backend-common@0.21.0-next.0 - - @backstage/plugin-kubernetes-backend@0.14.2-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.11-next.0 - - @backstage/plugin-catalog-backend@1.17.0-next.0 - - @backstage/plugin-search-backend@1.5.0-next.0 - - @backstage/plugin-todo-backend@0.3.8-next.0 - - @backstage/catalog-client@1.6.0-next.0 - - @backstage/plugin-signals-backend@0.0.1-next.0 - - @backstage/plugin-signals-node@0.0.1-next.0 - - @backstage/plugin-scaffolder-backend@1.21.0-next.0 - - @backstage/plugin-app-backend@0.3.58-next.0 - - example-app@0.2.92-next.0 - - @backstage/backend-tasks@0.5.15-next.0 - - @backstage/plugin-auth-node@0.4.4-next.0 - - @backstage/plugin-badges-backend@0.3.7-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.7-next.0 - - @backstage/plugin-catalog-node@1.6.2-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.7-next.0 - - @backstage/plugin-events-backend@0.2.19-next.0 - - @backstage/plugin-linguist-backend@0.5.7-next.0 - - @backstage/plugin-permission-node@0.7.21-next.0 - - @backstage/plugin-playlist-backend@0.3.14-next.0 - - @backstage/plugin-proxy-backend@0.4.8-next.0 - - @backstage/plugin-rollbar-backend@0.1.55-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.14-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.14-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.19-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.14-next.0 - - @backstage/plugin-tech-insights-backend@0.5.24-next.0 - - @backstage/plugin-techdocs-backend@1.9.3-next.0 - - @backstage/plugin-adr-backend@0.4.7-next.0 - - @backstage/plugin-azure-sites-backend@0.1.20-next.0 - - @backstage/plugin-code-coverage-backend@0.2.24-next.0 - - @backstage/plugin-devtools-backend@0.2.7-next.0 - - @backstage/plugin-jenkins-backend@0.3.4-next.0 - - @backstage/plugin-kafka-backend@0.3.8-next.0 - - @backstage/plugin-lighthouse-backend@0.4.2-next.0 - - @backstage/plugin-nomad-backend@0.1.12-next.0 - - @backstage/plugin-permission-backend@0.5.33-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.13-next.0 - - @backstage/plugin-search-backend-node@1.2.14-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.42-next.0 - - @backstage/plugin-tech-insights-node@0.4.16-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.7-next.0 - - @backstage/plugin-events-node@0.2.19-next.0 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-search-common@1.2.10 - -## 0.2.91 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.20.3 - - @backstage/backend-common@0.20.1 - - @backstage/plugin-scaffolder-backend@1.20.0 - - @backstage/catalog-client@1.5.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.10 - - @backstage/plugin-events-backend@0.2.18 - - @backstage/plugin-search-backend-module-techdocs@0.1.13 - - @backstage/plugin-search-backend-module-catalog@0.1.13 - - @backstage/plugin-search-backend-module-explore@0.1.13 - - @backstage/plugin-azure-devops-backend@0.5.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.6 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.41 - - @backstage/plugin-entity-feedback-backend@0.2.6 - - @backstage/plugin-code-coverage-backend@0.2.23 - - @backstage/plugin-azure-sites-backend@0.1.19 - - @backstage/plugin-tech-insights-node@0.4.15 - - @backstage/plugin-devtools-backend@0.2.6 - - @backstage/plugin-linguist-backend@0.5.6 - - @backstage/plugin-playlist-backend@0.3.13 - - @backstage/plugin-techdocs-backend@1.9.2 - - @backstage/plugin-explore-backend@0.0.19 - - @backstage/plugin-jenkins-backend@0.3.3 - - @backstage/plugin-badges-backend@0.3.6 - - @backstage/plugin-search-backend@1.4.9 - - @backstage/plugin-kafka-backend@0.3.7 - - @backstage/plugin-nomad-backend@0.1.11 - - @backstage/plugin-catalog-node@1.6.1 - - @backstage/plugin-todo-backend@0.3.7 - - @backstage/plugin-adr-backend@0.4.6 - - @backstage/plugin-app-backend@0.3.57 - - @backstage/plugin-permission-backend@0.5.32 - - @backstage/plugin-permission-common@0.7.12 - - @backstage/plugin-permission-node@0.7.20 - - @backstage/plugin-catalog-backend@1.16.1 - - example-app@0.2.91 - - @backstage/backend-tasks@0.5.14 - - @backstage/plugin-auth-node@0.4.3 - - @backstage/plugin-kubernetes-backend@0.14.1 - - @backstage/plugin-lighthouse-backend@0.4.1 - - @backstage/plugin-proxy-backend@0.4.7 - - @backstage/plugin-rollbar-backend@0.1.54 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.26 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.12 - - @backstage/plugin-search-backend-module-pg@0.5.18 - - @backstage/plugin-search-backend-node@1.2.13 - - @backstage/plugin-tech-insights-backend@0.5.23 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.6 - - @backstage/plugin-events-node@0.2.18 - - @backstage/plugin-search-common@1.2.10 - -## 0.2.91-next.2 - -### Patch Changes - -- Updated dependencies - - example-app@0.2.91-next.2 - - @backstage/backend-common@0.20.1-next.2 - - @backstage/plugin-adr-backend@0.4.6-next.2 - - @backstage/plugin-app-backend@0.3.57-next.2 - - @backstage/plugin-auth-backend@0.20.3-next.2 - - @backstage/plugin-auth-node@0.4.3-next.2 - - @backstage/plugin-azure-devops-backend@0.5.1-next.2 - - @backstage/plugin-badges-backend@0.3.6-next.2 - - @backstage/plugin-catalog-backend@1.16.1-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.6-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.6-next.2 - - @backstage/plugin-catalog-node@1.6.1-next.2 - - @backstage/plugin-code-coverage-backend@0.2.23-next.2 - - @backstage/plugin-devtools-backend@0.2.6-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.6-next.2 - - @backstage/plugin-events-backend@0.2.18-next.2 - - @backstage/plugin-events-node@0.2.18-next.2 - - @backstage/plugin-jenkins-backend@0.3.3-next.2 - - @backstage/plugin-kafka-backend@0.3.7-next.2 - - @backstage/plugin-kubernetes-backend@0.14.1-next.2 - - @backstage/plugin-lighthouse-backend@0.4.1-next.2 - - @backstage/plugin-linguist-backend@0.5.6-next.2 - - @backstage/plugin-nomad-backend@0.1.11-next.2 - - @backstage/plugin-permission-backend@0.5.32-next.2 - - @backstage/plugin-permission-node@0.7.20-next.2 - - @backstage/plugin-playlist-backend@0.3.13-next.2 - - @backstage/plugin-proxy-backend@0.4.7-next.2 - - @backstage/plugin-scaffolder-backend@1.19.3-next.2 - - @backstage/plugin-search-backend@1.4.9-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.13-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.12-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.13-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.18-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.13-next.2 - - @backstage/plugin-search-backend-node@1.2.13-next.2 - - @backstage/plugin-techdocs-backend@1.9.2-next.2 - - @backstage/plugin-todo-backend@0.3.7-next.2 - - @backstage/backend-tasks@0.5.14-next.2 - - @backstage/plugin-azure-sites-backend@0.1.19-next.2 - - @backstage/plugin-explore-backend@0.0.19-next.2 - - @backstage/plugin-rollbar-backend@0.1.54-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.10-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.26-next.2 - - @backstage/plugin-tech-insights-backend@0.5.23-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.41-next.2 - - @backstage/plugin-tech-insights-node@0.4.15-next.2 - -## 0.2.91-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.10-next.1 - - example-app@0.2.91-next.1 - - @backstage/backend-common@0.20.1-next.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-app-backend@0.3.57-next.1 - - @backstage/plugin-devtools-backend@0.2.6-next.1 - - @backstage/plugin-proxy-backend@0.4.7-next.1 - - @backstage/config@1.1.1 - - @backstage/plugin-kubernetes-backend@0.14.1-next.1 - - @backstage/backend-tasks@0.5.14-next.1 - - @backstage/plugin-adr-backend@0.4.6-next.1 - - @backstage/plugin-auth-backend@0.20.3-next.1 - - @backstage/plugin-auth-node@0.4.3-next.1 - - @backstage/plugin-azure-devops-backend@0.5.1-next.1 - - @backstage/plugin-azure-sites-backend@0.1.19-next.1 - - @backstage/plugin-badges-backend@0.3.6-next.1 - - @backstage/plugin-catalog-backend@1.16.1-next.1 - - @backstage/plugin-code-coverage-backend@0.2.23-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.6-next.1 - - @backstage/plugin-events-backend@0.2.18-next.1 - - @backstage/plugin-explore-backend@0.0.19-next.1 - - @backstage/plugin-jenkins-backend@0.3.3-next.1 - - @backstage/plugin-kafka-backend@0.3.7-next.1 - - @backstage/plugin-lighthouse-backend@0.4.1-next.1 - - @backstage/plugin-linguist-backend@0.5.6-next.1 - - @backstage/plugin-nomad-backend@0.1.11-next.1 - - @backstage/plugin-permission-backend@0.5.32-next.1 - - @backstage/plugin-permission-node@0.7.20-next.1 - - @backstage/plugin-playlist-backend@0.3.13-next.1 - - @backstage/plugin-rollbar-backend@0.1.54-next.1 - - @backstage/plugin-scaffolder-backend@1.19.3-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.26-next.1 - - @backstage/plugin-search-backend@1.4.9-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.13-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.12-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.13-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.18-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.13-next.1 - - @backstage/plugin-search-backend-node@1.2.13-next.1 - - @backstage/plugin-tech-insights-backend@0.5.23-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.41-next.1 - - @backstage/plugin-tech-insights-node@0.4.15-next.1 - - @backstage/plugin-techdocs-backend@1.9.2-next.1 - - @backstage/plugin-todo-backend@0.3.7-next.1 - - @backstage/catalog-client@1.5.2-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.6-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.6-next.1 - - @backstage/plugin-catalog-node@1.6.1-next.1 - - @backstage/plugin-events-node@0.2.18-next.1 - - @backstage/plugin-permission-common@0.7.11 - - @backstage/plugin-search-common@1.2.9 - -## 0.2.91-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.20.3-next.0 - - @backstage/backend-common@0.20.1-next.0 - - @backstage/plugin-scaffolder-backend@1.19.3-next.0 - - @backstage/catalog-client@1.5.2-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.13-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.13-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.13-next.0 - - @backstage/plugin-azure-devops-backend@0.5.1-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.10-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.6-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.41-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.6-next.0 - - @backstage/plugin-code-coverage-backend@0.2.23-next.0 - - @backstage/plugin-azure-sites-backend@0.1.19-next.0 - - @backstage/plugin-tech-insights-node@0.4.15-next.0 - - @backstage/plugin-devtools-backend@0.2.6-next.0 - - @backstage/plugin-linguist-backend@0.5.6-next.0 - - @backstage/plugin-playlist-backend@0.3.13-next.0 - - @backstage/plugin-techdocs-backend@1.9.2-next.0 - - @backstage/plugin-explore-backend@0.0.19-next.0 - - @backstage/plugin-jenkins-backend@0.3.3-next.0 - - @backstage/plugin-badges-backend@0.3.6-next.0 - - @backstage/plugin-search-backend@1.4.9-next.0 - - @backstage/plugin-kafka-backend@0.3.7-next.0 - - @backstage/plugin-nomad-backend@0.1.11-next.0 - - @backstage/plugin-catalog-node@1.6.1-next.0 - - @backstage/plugin-todo-backend@0.3.7-next.0 - - @backstage/plugin-adr-backend@0.4.6-next.0 - - @backstage/plugin-app-backend@0.3.57-next.0 - - example-app@0.2.91-next.0 - - @backstage/backend-tasks@0.5.14-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-auth-node@0.4.3-next.0 - - @backstage/plugin-catalog-backend@1.16.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.6-next.0 - - @backstage/plugin-events-backend@0.2.18-next.0 - - @backstage/plugin-events-node@0.2.18-next.0 - - @backstage/plugin-kubernetes-backend@0.14.1-next.0 - - @backstage/plugin-lighthouse-backend@0.4.1-next.0 - - @backstage/plugin-permission-backend@0.5.32-next.0 - - @backstage/plugin-permission-common@0.7.11 - - @backstage/plugin-permission-node@0.7.20-next.0 - - @backstage/plugin-proxy-backend@0.4.7-next.0 - - @backstage/plugin-rollbar-backend@0.1.54-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.26-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.12-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.18-next.0 - - @backstage/plugin-search-backend-node@1.2.13-next.0 - - @backstage/plugin-search-common@1.2.9 - - @backstage/plugin-tech-insights-backend@0.5.23-next.0 - -## 0.2.90 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.20.1 - - @backstage/backend-common@0.20.0 - - @backstage/plugin-catalog-node@1.6.0 - - @backstage/plugin-techdocs-backend@1.9.1 - - @backstage/plugin-catalog-backend@1.16.0 - - @backstage/catalog-client@1.5.0 - - @backstage/plugin-azure-devops-backend@0.5.0 - - @backstage/plugin-scaffolder-backend@1.19.2 - - @backstage/backend-tasks@0.5.13 - - @backstage/plugin-lighthouse-backend@0.4.0 - - @backstage/plugin-kubernetes-backend@0.14.0 - - @backstage/integration@1.8.0 - - @backstage/plugin-azure-sites-backend@0.1.18 - - @backstage/plugin-auth-node@0.4.2 - - @backstage/plugin-permission-backend@0.5.31 - - @backstage/plugin-permission-common@0.7.11 - - @backstage/plugin-playlist-backend@0.3.12 - - @backstage/plugin-permission-node@0.7.19 - - @backstage/plugin-search-backend@1.4.8 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.5 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.11 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.5 - - @backstage/plugin-search-backend-module-techdocs@0.1.12 - - @backstage/plugin-search-backend-module-catalog@0.1.12 - - @backstage/plugin-search-backend-module-explore@0.1.12 - - @backstage/plugin-search-backend-module-pg@0.5.17 - - @backstage/plugin-events-backend@0.2.17 - - example-app@0.2.90 - - @backstage/plugin-adr-backend@0.4.5 - - @backstage/plugin-app-backend@0.3.56 - - @backstage/plugin-badges-backend@0.3.5 - - @backstage/plugin-code-coverage-backend@0.2.22 - - @backstage/plugin-devtools-backend@0.2.5 - - @backstage/plugin-entity-feedback-backend@0.2.5 - - @backstage/plugin-explore-backend@0.0.18 - - @backstage/plugin-jenkins-backend@0.3.2 - - @backstage/plugin-kafka-backend@0.3.6 - - @backstage/plugin-linguist-backend@0.5.5 - - @backstage/plugin-nomad-backend@0.1.10 - - @backstage/plugin-proxy-backend@0.4.6 - - @backstage/plugin-rollbar-backend@0.1.53 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.9 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.25 - - @backstage/plugin-search-backend-node@1.2.12 - - @backstage/plugin-tech-insights-backend@0.5.22 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.40 - - @backstage/plugin-tech-insights-node@0.4.14 - - @backstage/plugin-todo-backend@0.3.6 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-events-node@0.2.17 - - @backstage/plugin-search-common@1.2.9 - -## 0.2.90-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-azure-devops-backend@0.5.0-next.3 - - @backstage/plugin-scaffolder-backend@1.19.2-next.3 - - @backstage/backend-common@0.20.0-next.3 - - example-app@0.2.90-next.4 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.9-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.25-next.3 - - @backstage/backend-tasks@0.5.13-next.3 - - @backstage/catalog-client@1.5.0-next.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0-next.1 - - @backstage/plugin-adr-backend@0.4.5-next.3 - - @backstage/plugin-app-backend@0.3.56-next.3 - - @backstage/plugin-auth-backend@0.20.1-next.3 - - @backstage/plugin-auth-node@0.4.2-next.3 - - @backstage/plugin-azure-sites-backend@0.1.18-next.3 - - @backstage/plugin-badges-backend@0.3.5-next.3 - - @backstage/plugin-catalog-backend@1.16.0-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.5-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.5-next.3 - - @backstage/plugin-catalog-node@1.6.0-next.3 - - @backstage/plugin-code-coverage-backend@0.2.22-next.3 - - @backstage/plugin-devtools-backend@0.2.5-next.3 - - @backstage/plugin-entity-feedback-backend@0.2.5-next.3 - - @backstage/plugin-events-backend@0.2.17-next.3 - - @backstage/plugin-events-node@0.2.17-next.3 - - @backstage/plugin-explore-backend@0.0.18-next.3 - - @backstage/plugin-jenkins-backend@0.3.2-next.3 - - @backstage/plugin-kafka-backend@0.3.6-next.3 - - @backstage/plugin-kubernetes-backend@0.14.0-next.3 - - @backstage/plugin-lighthouse-backend@0.4.0-next.3 - - @backstage/plugin-linguist-backend@0.5.5-next.3 - - @backstage/plugin-nomad-backend@0.1.10-next.3 - - @backstage/plugin-permission-backend@0.5.31-next.3 - - @backstage/plugin-permission-common@0.7.10 - - @backstage/plugin-permission-node@0.7.19-next.3 - - @backstage/plugin-playlist-backend@0.3.12-next.3 - - @backstage/plugin-proxy-backend@0.4.6-next.3 - - @backstage/plugin-rollbar-backend@0.1.53-next.3 - - @backstage/plugin-search-backend@1.4.8-next.3 - - @backstage/plugin-search-backend-module-catalog@0.1.12-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.11-next.3 - - @backstage/plugin-search-backend-module-explore@0.1.12-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.17-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.1.12-next.3 - - @backstage/plugin-search-backend-node@1.2.12-next.3 - - @backstage/plugin-search-common@1.2.8 - - @backstage/plugin-tech-insights-backend@0.5.22-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.40-next.3 - - @backstage/plugin-tech-insights-node@0.4.14-next.3 - - @backstage/plugin-techdocs-backend@1.9.1-next.3 - - @backstage/plugin-todo-backend@0.3.6-next.3 - -## 0.2.90-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.6.0-next.2 - - @backstage/plugin-catalog-backend@1.16.0-next.2 - - @backstage/plugin-auth-backend@0.20.1-next.2 - - @backstage/plugin-lighthouse-backend@0.4.0-next.2 - - @backstage/backend-common@0.20.0-next.2 - - @backstage/plugin-auth-node@0.4.2-next.2 - - @backstage/catalog-client@1.5.0-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.5-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.11-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.5-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.12-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.12-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.12-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.17-next.2 - - @backstage/plugin-events-backend@0.2.17-next.2 - - example-app@0.2.90-next.3 - - @backstage/backend-tasks@0.5.13-next.2 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0-next.1 - - @backstage/plugin-adr-backend@0.4.5-next.2 - - @backstage/plugin-app-backend@0.3.56-next.2 - - @backstage/plugin-azure-devops-backend@0.5.0-next.2 - - @backstage/plugin-azure-sites-backend@0.1.18-next.2 - - @backstage/plugin-badges-backend@0.3.5-next.2 - - @backstage/plugin-code-coverage-backend@0.2.22-next.2 - - @backstage/plugin-devtools-backend@0.2.5-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.5-next.2 - - @backstage/plugin-events-node@0.2.17-next.2 - - @backstage/plugin-explore-backend@0.0.18-next.2 - - @backstage/plugin-jenkins-backend@0.3.2-next.2 - - @backstage/plugin-kafka-backend@0.3.6-next.2 - - @backstage/plugin-kubernetes-backend@0.14.0-next.2 - - @backstage/plugin-linguist-backend@0.5.5-next.2 - - @backstage/plugin-nomad-backend@0.1.10-next.2 - - @backstage/plugin-permission-backend@0.5.31-next.2 - - @backstage/plugin-permission-common@0.7.10 - - @backstage/plugin-permission-node@0.7.19-next.2 - - @backstage/plugin-playlist-backend@0.3.12-next.2 - - @backstage/plugin-proxy-backend@0.4.6-next.2 - - @backstage/plugin-rollbar-backend@0.1.53-next.2 - - @backstage/plugin-scaffolder-backend@1.19.2-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.9-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.25-next.2 - - @backstage/plugin-search-backend@1.4.8-next.2 - - @backstage/plugin-search-backend-node@1.2.12-next.2 - - @backstage/plugin-search-common@1.2.8 - - @backstage/plugin-tech-insights-backend@0.5.22-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.40-next.2 - - @backstage/plugin-tech-insights-node@0.4.14-next.2 - - @backstage/plugin-techdocs-backend@1.9.1-next.2 - - @backstage/plugin-todo-backend@0.3.6-next.2 - -## 0.2.90-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.20.1-next.1 - - @backstage/plugin-catalog-backend@1.15.1-next.1 - - @backstage/catalog-client@1.5.0-next.0 - - @backstage/plugin-azure-devops-backend@0.5.0-next.1 - - @backstage/plugin-kubernetes-backend@0.14.0-next.1 - - @backstage/integration@1.8.0-next.1 - - @backstage/plugin-azure-sites-backend@0.1.18-next.1 - - @backstage/backend-common@0.20.0-next.1 - - example-app@0.2.90-next.2 - - @backstage/backend-tasks@0.5.13-next.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-adr-backend@0.4.5-next.1 - - @backstage/plugin-app-backend@0.3.56-next.1 - - @backstage/plugin-auth-node@0.4.2-next.1 - - @backstage/plugin-badges-backend@0.3.5-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.5-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.5-next.1 - - @backstage/plugin-catalog-node@1.5.1-next.1 - - @backstage/plugin-code-coverage-backend@0.2.22-next.1 - - @backstage/plugin-devtools-backend@0.2.5-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.5-next.1 - - @backstage/plugin-events-backend@0.2.17-next.1 - - @backstage/plugin-events-node@0.2.17-next.1 - - @backstage/plugin-explore-backend@0.0.18-next.1 - - @backstage/plugin-jenkins-backend@0.3.2-next.1 - - @backstage/plugin-kafka-backend@0.3.6-next.1 - - @backstage/plugin-lighthouse-backend@0.3.5-next.1 - - @backstage/plugin-linguist-backend@0.5.5-next.1 - - @backstage/plugin-nomad-backend@0.1.10-next.1 - - @backstage/plugin-permission-backend@0.5.31-next.1 - - @backstage/plugin-permission-common@0.7.10 - - @backstage/plugin-permission-node@0.7.19-next.1 - - @backstage/plugin-playlist-backend@0.3.12-next.1 - - @backstage/plugin-proxy-backend@0.4.6-next.1 - - @backstage/plugin-rollbar-backend@0.1.53-next.1 - - @backstage/plugin-scaffolder-backend@1.19.2-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.9-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.25-next.1 - - @backstage/plugin-search-backend@1.4.8-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.12-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.11-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.12-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.17-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.12-next.1 - - @backstage/plugin-search-backend-node@1.2.12-next.1 - - @backstage/plugin-search-common@1.2.8 - - @backstage/plugin-tech-insights-backend@0.5.22-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.40-next.1 - - @backstage/plugin-tech-insights-node@0.4.14-next.1 - - @backstage/plugin-techdocs-backend@1.9.1-next.1 - - @backstage/plugin-todo-backend@0.3.6-next.1 - -## 0.2.90-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0-next.0 - - @backstage/plugin-auth-backend@0.20.1-next.0 - - @backstage/backend-tasks@0.5.13-next.0 - - @backstage/plugin-scaffolder-backend@1.19.2-next.0 - - @backstage/plugin-kubernetes-backend@0.14.0-next.0 - - @backstage/plugin-azure-sites-backend@0.1.18-next.0 - - @backstage/integration@1.8.0-next.0 - - example-app@0.2.90-next.0 - - @backstage/plugin-adr-backend@0.4.5-next.0 - - @backstage/plugin-app-backend@0.3.56-next.0 - - @backstage/plugin-auth-node@0.4.2-next.0 - - @backstage/plugin-azure-devops-backend@0.4.5-next.0 - - @backstage/plugin-badges-backend@0.3.5-next.0 - - @backstage/plugin-catalog-backend@1.15.1-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.5-next.0 - - @backstage/plugin-catalog-node@1.5.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.22-next.0 - - @backstage/plugin-devtools-backend@0.2.5-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.5-next.0 - - @backstage/plugin-events-backend@0.2.17-next.0 - - @backstage/plugin-explore-backend@0.0.18-next.0 - - @backstage/plugin-jenkins-backend@0.3.2-next.0 - - @backstage/plugin-kafka-backend@0.3.6-next.0 - - @backstage/plugin-lighthouse-backend@0.3.5-next.0 - - @backstage/plugin-linguist-backend@0.5.5-next.0 - - @backstage/plugin-nomad-backend@0.1.10-next.0 - - @backstage/plugin-permission-backend@0.5.31-next.0 - - @backstage/plugin-permission-node@0.7.19-next.0 - - @backstage/plugin-playlist-backend@0.3.12-next.0 - - @backstage/plugin-proxy-backend@0.4.6-next.0 - - @backstage/plugin-rollbar-backend@0.1.53-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.9-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.25-next.0 - - @backstage/plugin-search-backend@1.4.8-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.12-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.11-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.12-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.17-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.12-next.0 - - @backstage/plugin-search-backend-node@1.2.12-next.0 - - @backstage/plugin-tech-insights-backend@0.5.22-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.40-next.0 - - @backstage/plugin-tech-insights-node@0.4.14-next.0 - - @backstage/plugin-techdocs-backend@1.9.1-next.0 - - @backstage/plugin-todo-backend@0.3.6-next.0 - - @backstage/catalog-client@1.4.6 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.5-next.0 - - @backstage/plugin-events-node@0.2.17-next.0 - - @backstage/plugin-permission-common@0.7.10 - - @backstage/plugin-search-common@1.2.8 - -## 0.2.89 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.15.0 - - @backstage/plugin-catalog-node@1.5.0 - - @backstage/plugin-search-backend-module-pg@0.5.16 - - @backstage/plugin-kubernetes-backend@0.13.1 - - @backstage/plugin-search-backend-node@1.2.11 - - @backstage/integration@1.7.2 - - @backstage/plugin-auth-backend@0.20.0 - - @backstage/backend-common@0.19.9 - - @backstage/plugin-techdocs-backend@1.9.0 - - @backstage/plugin-code-coverage-backend@0.2.21 - - @backstage/plugin-scaffolder-backend@1.19.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.10 - - @backstage/plugin-search-backend@1.4.7 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4 - - @backstage/plugin-entity-feedback-backend@0.2.4 - - @backstage/plugin-tech-insights-backend@0.5.21 - - @backstage/plugin-linguist-backend@0.5.4 - - @backstage/plugin-playlist-backend@0.3.11 - - @backstage/backend-tasks@0.5.12 - - @backstage/plugin-badges-backend@0.3.4 - - @backstage/plugin-app-backend@0.3.55 - - @backstage/plugin-search-backend-module-techdocs@0.1.11 - - @backstage/catalog-client@1.4.6 - - @backstage/plugin-permission-common@0.7.10 - - @backstage/plugin-jenkins-backend@0.3.1 - - @backstage/plugin-adr-backend@0.4.4 - - @backstage/plugin-kafka-backend@0.3.5 - - @backstage/plugin-proxy-backend@0.4.5 - - example-app@0.2.89 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4 - - @backstage/plugin-lighthouse-backend@0.3.4 - - @backstage/plugin-search-backend-module-catalog@0.1.11 - - @backstage/plugin-todo-backend@0.3.5 - - @backstage/plugin-devtools-backend@0.2.4 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-auth-node@0.4.1 - - @backstage/plugin-azure-devops-backend@0.4.4 - - @backstage/plugin-azure-sites-backend@0.1.17 - - @backstage/plugin-events-backend@0.2.16 - - @backstage/plugin-events-node@0.2.16 - - @backstage/plugin-explore-backend@0.0.17 - - @backstage/plugin-graphql-backend@0.2.1 - - @backstage/plugin-nomad-backend@0.1.9 - - @backstage/plugin-permission-backend@0.5.30 - - @backstage/plugin-permission-node@0.7.18 - - @backstage/plugin-rollbar-backend@0.1.52 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.24 - - @backstage/plugin-search-backend-module-explore@0.1.11 - - @backstage/plugin-search-common@1.2.8 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39 - - @backstage/plugin-tech-insights-node@0.4.13 - -## 0.2.89-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.13.1-next.2 - - @backstage/plugin-scaffolder-backend@1.19.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.16-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.4-next.2 - - @backstage/plugin-code-coverage-backend@0.2.21-next.2 - - @backstage/plugin-tech-insights-backend@0.5.21-next.2 - - @backstage/plugin-linguist-backend@0.5.4-next.2 - - @backstage/plugin-playlist-backend@0.3.11-next.2 - - @backstage/plugin-techdocs-backend@1.9.0-next.2 - - @backstage/backend-common@0.19.9-next.2 - - @backstage/plugin-catalog-backend@1.15.0-next.2 - - @backstage/backend-tasks@0.5.12-next.2 - - @backstage/plugin-badges-backend@0.3.4-next.2 - - @backstage/plugin-auth-backend@0.20.0-next.2 - - @backstage/plugin-app-backend@0.3.55-next.2 - - example-app@0.2.89-next.2 - - @backstage/plugin-adr-backend@0.4.4-next.2 - - @backstage/plugin-auth-node@0.4.1-next.2 - - @backstage/plugin-azure-devops-backend@0.4.4-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.2 - - @backstage/plugin-catalog-node@1.5.0-next.2 - - @backstage/plugin-devtools-backend@0.2.4-next.2 - - @backstage/plugin-events-backend@0.2.16-next.2 - - @backstage/plugin-events-node@0.2.16-next.2 - - @backstage/plugin-jenkins-backend@0.3.1-next.2 - - @backstage/plugin-kafka-backend@0.3.5-next.2 - - @backstage/plugin-lighthouse-backend@0.3.4-next.2 - - @backstage/plugin-nomad-backend@0.1.9-next.2 - - @backstage/plugin-permission-backend@0.5.30-next.2 - - @backstage/plugin-permission-node@0.7.18-next.2 - - @backstage/plugin-proxy-backend@0.4.5-next.2 - - @backstage/plugin-search-backend@1.4.7-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.11-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.11-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.2 - - @backstage/plugin-search-backend-node@1.2.11-next.2 - - @backstage/plugin-todo-backend@0.3.5-next.2 - - @backstage/plugin-rollbar-backend@0.1.52-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.2 - - @backstage/plugin-azure-sites-backend@0.1.17-next.2 - - @backstage/plugin-explore-backend@0.0.17-next.2 - - @backstage/plugin-graphql-backend@0.2.1-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.2 - - @backstage/plugin-tech-insights-node@0.4.13-next.2 - -## 0.2.89-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.15.0-next.1 - - @backstage/plugin-catalog-node@1.5.0-next.1 - - @backstage/integration@1.7.2-next.0 - - @backstage/plugin-auth-backend@0.20.0-next.1 - - @backstage/plugin-techdocs-backend@1.9.0-next.1 - - @backstage/plugin-scaffolder-backend@1.19.0-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.1 - - @backstage/plugin-jenkins-backend@0.3.1-next.1 - - @backstage/plugin-kubernetes-backend@0.13.1-next.1 - - @backstage/plugin-lighthouse-backend@0.3.4-next.1 - - @backstage/plugin-linguist-backend@0.5.4-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.11-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.1 - - @backstage/plugin-todo-backend@0.3.5-next.1 - - example-app@0.2.89-next.1 - - @backstage/backend-common@0.19.9-next.1 - - @backstage/plugin-adr-backend@0.4.4-next.1 - - @backstage/plugin-code-coverage-backend@0.2.21-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.1 - - @backstage/backend-tasks@0.5.12-next.1 - - @backstage/plugin-app-backend@0.3.55-next.1 - - @backstage/plugin-auth-node@0.4.1-next.1 - - @backstage/plugin-badges-backend@0.3.4-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.4-next.1 - - @backstage/plugin-events-backend@0.2.16-next.1 - - @backstage/plugin-permission-node@0.7.18-next.1 - - @backstage/plugin-playlist-backend@0.3.11-next.1 - - @backstage/plugin-proxy-backend@0.4.5-next.1 - - @backstage/plugin-rollbar-backend@0.1.52-next.1 - - @backstage/plugin-search-backend@1.4.7-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.11-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.16-next.1 - - @backstage/plugin-tech-insights-backend@0.5.21-next.1 - - @backstage/plugin-azure-devops-backend@0.4.4-next.1 - - @backstage/plugin-azure-sites-backend@0.1.17-next.1 - - @backstage/plugin-devtools-backend@0.2.4-next.1 - - @backstage/plugin-explore-backend@0.0.17-next.1 - - @backstage/plugin-graphql-backend@0.2.1-next.1 - - @backstage/plugin-kafka-backend@0.3.5-next.1 - - @backstage/plugin-nomad-backend@0.1.9-next.1 - - @backstage/plugin-permission-backend@0.5.30-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.1 - - @backstage/plugin-search-backend-node@1.2.11-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.1 - - @backstage/plugin-tech-insights-node@0.4.13-next.1 - - @backstage/catalog-client@1.4.5 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.1 - - @backstage/plugin-events-node@0.2.16-next.1 - - @backstage/plugin-permission-common@0.7.9 - - @backstage/plugin-search-common@1.2.7 - -## 0.2.89-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-node@1.2.11-next.0 - - @backstage/plugin-techdocs-backend@1.8.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.21-next.0 - - @backstage/plugin-scaffolder-backend@1.19.0-next.0 - - @backstage/plugin-catalog-backend@1.15.0-next.0 - - @backstage/plugin-search-backend@1.4.7-next.0 - - @backstage/plugin-tech-insights-backend@0.5.21-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 - - @backstage/plugin-kafka-backend@0.3.5-next.0 - - @backstage/plugin-proxy-backend@0.4.5-next.0 - - @backstage/plugin-auth-backend@0.20.0-next.0 - - @backstage/backend-common@0.19.9-next.0 - - @backstage/integration@1.7.1 - - @backstage/plugin-app-backend@0.3.55-next.0 - - @backstage/plugin-devtools-backend@0.2.4-next.0 - - example-app@0.2.89-next.0 - - @backstage/backend-tasks@0.5.12-next.0 - - @backstage/catalog-client@1.4.5 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/plugin-adr-backend@0.4.4-next.0 - - @backstage/plugin-auth-node@0.4.1-next.0 - - @backstage/plugin-azure-devops-backend@0.4.4-next.0 - - @backstage/plugin-azure-sites-backend@0.1.17-next.0 - - @backstage/plugin-badges-backend@0.3.4-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 - - @backstage/plugin-catalog-node@1.4.8-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.4-next.0 - - @backstage/plugin-events-backend@0.2.16-next.0 - - @backstage/plugin-events-node@0.2.16-next.0 - - @backstage/plugin-explore-backend@0.0.17-next.0 - - @backstage/plugin-graphql-backend@0.2.1-next.0 - - @backstage/plugin-jenkins-backend@0.3.1-next.0 - - @backstage/plugin-kubernetes-backend@0.13.1-next.0 - - @backstage/plugin-lighthouse-backend@0.3.4-next.0 - - @backstage/plugin-linguist-backend@0.5.4-next.0 - - @backstage/plugin-nomad-backend@0.1.9-next.0 - - @backstage/plugin-permission-backend@0.5.30-next.0 - - @backstage/plugin-permission-common@0.7.9 - - @backstage/plugin-permission-node@0.7.18-next.0 - - @backstage/plugin-playlist-backend@0.3.11-next.0 - - @backstage/plugin-rollbar-backend@0.1.52-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.16-next.0 - - @backstage/plugin-search-common@1.2.7 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.0 - - @backstage/plugin-tech-insights-node@0.4.13-next.0 - - @backstage/plugin-todo-backend@0.3.5-next.0 - -## 0.2.88 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-nomad-backend@0.1.8 - - @backstage/backend-tasks@0.5.11 - - @backstage/backend-common@0.19.8 - - @backstage/plugin-scaffolder-backend@1.18.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.9 - - @backstage/integration@1.7.1 - - @backstage/plugin-playlist-backend@0.3.10 - - @backstage/plugin-techdocs-backend@1.8.0 - - @backstage/plugin-auth-backend@0.19.3 - - @backstage/plugin-rollbar-backend@0.1.51 - - @backstage/plugin-catalog-backend@1.14.0 - - @backstage/plugin-catalog-node@1.4.7 - - @backstage/plugin-auth-node@0.4.0 - - @backstage/plugin-graphql-backend@0.2.0 - - @backstage/catalog-model@1.4.3 - - @backstage/plugin-badges-backend@0.3.3 - - @backstage/plugin-tech-insights-backend@0.5.20 - - @backstage/plugin-kubernetes-backend@0.13.0 - - @backstage/plugin-jenkins-backend@0.3.0 - - @backstage/plugin-code-coverage-backend@0.2.20 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.23 - - @backstage/plugin-search-backend@1.4.6 - - example-app@0.2.88 - - @backstage/plugin-lighthouse-backend@0.3.3 - - @backstage/plugin-linguist-backend@0.5.3 - - @backstage/plugin-search-backend-module-catalog@0.1.10 - - @backstage/plugin-search-backend-module-explore@0.1.10 - - @backstage/plugin-search-backend-module-techdocs@0.1.10 - - @backstage/plugin-search-backend-node@1.2.10 - - @backstage/plugin-tech-insights-node@0.4.12 - - @backstage/plugin-adr-backend@0.4.3 - - @backstage/plugin-app-backend@0.3.54 - - @backstage/plugin-azure-devops-backend@0.4.3 - - @backstage/plugin-azure-sites-backend@0.1.16 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.3 - - @backstage/plugin-devtools-backend@0.2.3 - - @backstage/plugin-entity-feedback-backend@0.2.3 - - @backstage/plugin-events-backend@0.2.15 - - @backstage/plugin-explore-backend@0.0.16 - - @backstage/plugin-kafka-backend@0.3.3 - - @backstage/plugin-permission-backend@0.5.29 - - @backstage/plugin-permission-node@0.7.17 - - @backstage/plugin-proxy-backend@0.4.3 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.7 - - @backstage/plugin-search-backend-module-pg@0.5.15 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.38 - - @backstage/plugin-todo-backend@0.3.4 - - @backstage/catalog-client@1.4.5 - - @backstage/config@1.1.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.3 - - @backstage/plugin-events-node@0.2.15 - - @backstage/plugin-permission-common@0.7.9 - - @backstage/plugin-search-common@1.2.7 - -## 0.2.88-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-nomad-backend@0.1.8-next.2 - - @backstage/backend-common@0.19.8-next.2 - - @backstage/plugin-scaffolder-backend@1.18.0-next.2 - - @backstage/plugin-techdocs-backend@1.8.0-next.2 - - @backstage/plugin-auth-node@0.4.0-next.2 - - @backstage/plugin-catalog-backend@1.14.0-next.2 - - @backstage/catalog-model@1.4.3-next.0 - - @backstage/integration@1.7.1-next.1 - - @backstage/plugin-kubernetes-backend@0.12.3-next.2 - - @backstage/plugin-jenkins-backend@0.2.9-next.2 - - @backstage/plugin-auth-backend@0.19.3-next.2 - - @backstage/backend-tasks@0.5.11-next.2 - - @backstage/plugin-adr-backend@0.4.3-next.2 - - @backstage/plugin-app-backend@0.3.54-next.2 - - @backstage/plugin-azure-devops-backend@0.4.3-next.2 - - @backstage/plugin-azure-sites-backend@0.1.16-next.2 - - @backstage/plugin-badges-backend@0.3.3-next.2 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.3-next.2 - - @backstage/plugin-catalog-node@1.4.7-next.2 - - @backstage/plugin-code-coverage-backend@0.2.20-next.2 - - @backstage/plugin-devtools-backend@0.2.3-next.2 - - @backstage/plugin-entity-feedback-backend@0.2.3-next.2 - - @backstage/plugin-events-backend@0.2.15-next.2 - - @backstage/plugin-explore-backend@0.0.16-next.2 - - @backstage/plugin-graphql-backend@0.1.44-next.2 - - @backstage/plugin-kafka-backend@0.3.3-next.2 - - @backstage/plugin-lighthouse-backend@0.3.3-next.2 - - @backstage/plugin-linguist-backend@0.5.3-next.2 - - @backstage/plugin-permission-backend@0.5.29-next.2 - - @backstage/plugin-permission-node@0.7.17-next.2 - - @backstage/plugin-playlist-backend@0.3.10-next.2 - - @backstage/plugin-proxy-backend@0.4.3-next.2 - - @backstage/plugin-rollbar-backend@0.1.51-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.7-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.23-next.2 - - @backstage/plugin-search-backend@1.4.6-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.10-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.9-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.10-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.15-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.10-next.2 - - @backstage/plugin-search-backend-node@1.2.10-next.2 - - @backstage/plugin-tech-insights-backend@0.5.20-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.38-next.2 - - @backstage/plugin-tech-insights-node@0.4.12-next.2 - - @backstage/plugin-todo-backend@0.3.4-next.2 - - example-app@0.2.88-next.2 - - @backstage/catalog-client@1.4.5-next.0 - - @backstage/config@1.1.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.3-next.2 - - @backstage/plugin-events-node@0.2.15-next.2 - - @backstage/plugin-permission-common@0.7.9-next.0 - - @backstage/plugin-search-common@1.2.7-next.0 - -## 0.2.88-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-tasks@0.5.10-next.1 - - @backstage/plugin-catalog-backend@1.14.0-next.1 - - @backstage/plugin-catalog-node@1.4.6-next.1 - - @backstage/backend-common@0.19.7-next.1 - - @backstage/plugin-scaffolder-backend@1.18.0-next.1 - - @backstage/plugin-badges-backend@0.3.2-next.1 - - @backstage/plugin-lighthouse-backend@0.3.2-next.1 - - @backstage/plugin-linguist-backend@0.5.2-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.9-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.9-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.9-next.1 - - @backstage/plugin-search-backend-node@1.2.9-next.1 - - @backstage/plugin-tech-insights-backend@0.5.19-next.1 - - @backstage/plugin-tech-insights-node@0.4.11-next.1 - - example-app@0.2.88-next.1 - - @backstage/plugin-auth-backend@0.19.2-next.1 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.2-next.1 - - @backstage/plugin-kubernetes-backend@0.12.2-next.1 - - @backstage/plugin-todo-backend@0.3.3-next.1 - - @backstage/plugin-adr-backend@0.4.2-next.1 - - @backstage/plugin-app-backend@0.3.53-next.1 - - @backstage/plugin-auth-node@0.3.2-next.1 - - @backstage/plugin-azure-devops-backend@0.4.2-next.1 - - @backstage/plugin-azure-sites-backend@0.1.15-next.1 - - @backstage/plugin-code-coverage-backend@0.2.19-next.1 - - @backstage/plugin-devtools-backend@0.2.2-next.1 - - @backstage/plugin-entity-feedback-backend@0.2.2-next.1 - - @backstage/plugin-events-backend@0.2.14-next.1 - - @backstage/plugin-explore-backend@0.0.15-next.1 - - @backstage/plugin-graphql-backend@0.1.43-next.1 - - @backstage/plugin-jenkins-backend@0.2.8-next.1 - - @backstage/plugin-kafka-backend@0.3.2-next.1 - - @backstage/plugin-nomad-backend@0.1.7-next.1 - - @backstage/plugin-permission-backend@0.5.28-next.1 - - @backstage/plugin-permission-node@0.7.16-next.1 - - @backstage/plugin-playlist-backend@0.3.9-next.1 - - @backstage/plugin-proxy-backend@0.4.2-next.1 - - @backstage/plugin-rollbar-backend@0.1.50-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.6-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.22-next.1 - - @backstage/plugin-search-backend@1.4.5-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.8-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.14-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.37-next.1 - - @backstage/plugin-techdocs-backend@1.7.2-next.1 - - @backstage/config@1.1.0 - - @backstage/catalog-client@1.4.4 - - @backstage/catalog-model@1.4.2 - - @backstage/integration@1.7.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.2-next.1 - - @backstage/plugin-events-node@0.2.14-next.1 - - @backstage/plugin-permission-common@0.7.8 - - @backstage/plugin-search-common@1.2.6 - -## 0.2.88-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.3.8-next.0 - - @backstage/integration@1.7.1-next.0 - - @backstage/plugin-playlist-backend@0.3.9-next.0 - - @backstage/plugin-rollbar-backend@0.1.50-next.0 - - @backstage/plugin-catalog-backend@1.14.0-next.0 - - @backstage/plugin-tech-insights-backend@0.5.19-next.0 - - @backstage/plugin-code-coverage-backend@0.2.19-next.0 - - @backstage/plugin-auth-node@0.3.2-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.22-next.0 - - @backstage/backend-common@0.19.7-next.0 - - example-app@0.2.88-next.0 - - @backstage/plugin-adr-backend@0.4.2-next.0 - - @backstage/plugin-scaffolder-backend@1.17.3-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.6-next.0 - - @backstage/plugin-techdocs-backend@1.7.2-next.0 - - @backstage/plugin-todo-backend@0.3.3-next.0 - - @backstage/config@1.1.0 - - @backstage/backend-tasks@0.5.10-next.0 - - @backstage/catalog-client@1.4.4 - - @backstage/catalog-model@1.4.2 - - @backstage/plugin-app-backend@0.3.53-next.0 - - @backstage/plugin-auth-backend@0.19.2-next.0 - - @backstage/plugin-azure-devops-backend@0.4.2-next.0 - - @backstage/plugin-azure-sites-backend@0.1.15-next.0 - - @backstage/plugin-badges-backend@0.3.2-next.0 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.2-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.2-next.0 - - @backstage/plugin-catalog-node@1.4.6-next.0 - - @backstage/plugin-devtools-backend@0.2.2-next.0 - - @backstage/plugin-entity-feedback-backend@0.2.2-next.0 - - @backstage/plugin-events-backend@0.2.14-next.0 - - @backstage/plugin-events-node@0.2.14-next.0 - - @backstage/plugin-explore-backend@0.0.15-next.0 - - @backstage/plugin-graphql-backend@0.1.43-next.0 - - @backstage/plugin-jenkins-backend@0.2.8-next.0 - - @backstage/plugin-kafka-backend@0.3.2-next.0 - - @backstage/plugin-kubernetes-backend@0.12.2-next.0 - - @backstage/plugin-lighthouse-backend@0.3.2-next.0 - - @backstage/plugin-linguist-backend@0.5.2-next.0 - - @backstage/plugin-nomad-backend@0.1.7-next.0 - - @backstage/plugin-permission-backend@0.5.28-next.0 - - @backstage/plugin-permission-common@0.7.8 - - @backstage/plugin-permission-node@0.7.16-next.0 - - @backstage/plugin-proxy-backend@0.4.2-next.0 - - @backstage/plugin-search-backend@1.4.5-next.0 - - @backstage/plugin-search-backend-module-catalog@0.1.9-next.0 - - @backstage/plugin-search-backend-module-explore@0.1.9-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.14-next.0 - - @backstage/plugin-search-backend-module-techdocs@0.1.9-next.0 - - @backstage/plugin-search-backend-node@1.2.9-next.0 - - @backstage/plugin-search-common@1.2.6 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.37-next.0 - - @backstage/plugin-tech-insights-node@0.4.11-next.0 - -## 0.2.87 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-pg@0.5.12 - - @backstage/plugin-catalog-backend@1.13.0 - - @backstage/plugin-kubernetes-backend@0.12.0 - - @backstage/plugin-techdocs-backend@1.7.0 - - @backstage/plugin-auth-backend@0.19.0 - - @backstage/plugin-proxy-backend@0.4.0 - - @backstage/plugin-adr-backend@0.4.0 - - @backstage/plugin-azure-devops-backend@0.4.0 - - @backstage/plugin-badges-backend@0.3.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.0 - - @backstage/plugin-devtools-backend@0.2.0 - - @backstage/plugin-entity-feedback-backend@0.2.0 - - @backstage/plugin-kafka-backend@0.3.0 - - @backstage/plugin-lighthouse-backend@0.3.0 - - @backstage/plugin-linguist-backend@0.5.0 - - @backstage/plugin-todo-backend@0.3.0 - - @backstage/plugin-app-backend@0.3.51 - - @backstage/plugin-events-backend@0.2.12 - - @backstage/plugin-permission-backend@0.5.26 - - @backstage/plugin-scaffolder-backend@1.17.0 - - @backstage/plugin-search-backend@1.4.3 - - @backstage/plugin-search-backend-module-catalog@0.1.7 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.6 - - @backstage/plugin-search-backend-module-explore@0.1.7 - - @backstage/plugin-search-backend-module-techdocs@0.1.7 - - @backstage/plugin-code-coverage-backend@0.2.17 - - @backstage/backend-tasks@0.5.8 - - @backstage/backend-common@0.19.5 - - @backstage/plugin-auth-node@0.3.0 - - @backstage/config@1.1.0 - - @backstage/catalog-client@1.4.4 - - @backstage/catalog-model@1.4.2 - - @backstage/integration@1.7.0 - - @backstage/plugin-permission-common@0.7.8 - - @backstage/plugin-search-common@1.2.6 - - @backstage/plugin-permission-node@0.7.14 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.35 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.0 - - @backstage/plugin-tech-insights-backend@0.5.17 - - example-app@0.2.87 - - @backstage/plugin-catalog-node@1.4.4 - - @backstage/plugin-playlist-backend@0.3.7 - - @backstage/plugin-rollbar-backend@0.1.48 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.4 - - @backstage/plugin-azure-sites-backend@0.1.13 - - @backstage/plugin-events-node@0.2.12 - - @backstage/plugin-explore-backend@0.0.13 - - @backstage/plugin-graphql-backend@0.1.41 - - @backstage/plugin-jenkins-backend@0.2.6 - - @backstage/plugin-nomad-backend@0.1.5 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.20 - - @backstage/plugin-search-backend-node@1.2.7 - - @backstage/plugin-tech-insights-node@0.4.9 - -## 0.2.87-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@1.7.0-next.3 - - @backstage/plugin-proxy-backend@0.4.0-next.3 - - @backstage/plugin-adr-backend@0.4.0-next.3 - - @backstage/plugin-auth-backend@0.19.0-next.3 - - @backstage/plugin-azure-devops-backend@0.4.0-next.3 - - @backstage/plugin-badges-backend@0.3.0-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.3.0-next.3 - - @backstage/plugin-devtools-backend@0.2.0-next.3 - - @backstage/plugin-entity-feedback-backend@0.2.0-next.3 - - @backstage/plugin-kafka-backend@0.3.0-next.3 - - @backstage/plugin-lighthouse-backend@0.3.0-next.3 - - @backstage/plugin-linguist-backend@0.5.0-next.3 - - @backstage/plugin-todo-backend@0.3.0-next.3 - - @backstage/plugin-app-backend@0.3.51-next.3 - - @backstage/plugin-catalog-backend@1.13.0-next.3 - - @backstage/plugin-events-backend@0.2.12-next.3 - - @backstage/plugin-kubernetes-backend@0.11.6-next.3 - - @backstage/plugin-permission-backend@0.5.26-next.3 - - @backstage/plugin-scaffolder-backend@1.17.0-next.3 - - @backstage/plugin-search-backend@1.4.3-next.3 - - @backstage/plugin-search-backend-module-catalog@0.1.7-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.6-next.3 - - @backstage/plugin-search-backend-module-explore@0.1.7-next.3 - - @backstage/plugin-search-backend-module-pg@0.5.12-next.3 - - @backstage/plugin-search-backend-module-techdocs@0.1.7-next.3 - - @backstage/catalog-client@1.4.4-next.2 - - @backstage/catalog-model@1.4.2-next.2 - - @backstage/config@1.1.0-next.2 - - @backstage/integration@1.7.0-next.3 - - @backstage/plugin-permission-common@0.7.8-next.2 - - @backstage/plugin-search-common@1.2.6-next.2 - - @backstage/plugin-permission-node@0.7.14-next.3 - - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.0-next.0 - - example-app@0.2.87-next.3 - - @backstage/backend-common@0.19.5-next.3 - - @backstage/plugin-explore-backend@0.0.13-next.3 - - @backstage/backend-tasks@0.5.8-next.3 - - @backstage/plugin-auth-node@0.3.0-next.3 - - @backstage/plugin-azure-sites-backend@0.1.13-next.3 - - @backstage/plugin-catalog-node@1.4.4-next.3 - - @backstage/plugin-code-coverage-backend@0.2.17-next.3 - - @backstage/plugin-events-node@0.2.12-next.3 - - @backstage/plugin-graphql-backend@0.1.41-next.3 - - @backstage/plugin-jenkins-backend@0.2.6-next.3 - - @backstage/plugin-nomad-backend@0.1.5-next.3 - - @backstage/plugin-playlist-backend@0.3.7-next.3 - - @backstage/plugin-rollbar-backend@0.1.48-next.3 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.4-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.20-next.3 - - @backstage/plugin-search-backend-node@1.2.7-next.3 - - @backstage/plugin-tech-insights-backend@0.5.17-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.35-next.3 - - @backstage/plugin-tech-insights-node@0.4.9-next.3 - -## 0.2.87-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.16.6-next.2 - - @backstage/plugin-code-coverage-backend@0.2.17-next.2 - - @backstage/plugin-permission-backend@0.5.26-next.2 - - @backstage/plugin-catalog-backend@1.13.0-next.2 - - @backstage/plugin-badges-backend@0.2.6-next.2 - - @backstage/config@1.1.0-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.35-next.2 - - @backstage/plugin-tech-insights-backend@0.5.17-next.2 - - @backstage/backend-tasks@0.5.8-next.2 - - example-app@0.2.87-next.2 - - @backstage/backend-common@0.19.5-next.2 - - @backstage/plugin-app-backend@0.3.51-next.2 - - @backstage/plugin-auth-backend@0.18.9-next.2 - - @backstage/plugin-auth-node@0.3.0-next.2 - - @backstage/plugin-catalog-node@1.4.4-next.2 - - @backstage/plugin-entity-feedback-backend@0.1.9-next.2 - - @backstage/plugin-events-backend@0.2.12-next.2 - - @backstage/plugin-kubernetes-backend@0.11.6-next.2 - - @backstage/plugin-linguist-backend@0.4.3-next.2 - - @backstage/plugin-permission-node@0.7.14-next.2 - - @backstage/plugin-playlist-backend@0.3.7-next.2 - - @backstage/plugin-proxy-backend@0.3.3-next.2 - - @backstage/plugin-rollbar-backend@0.1.48-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.4-next.2 - - @backstage/plugin-search-backend@1.4.3-next.2 - - @backstage/plugin-search-backend-module-catalog@0.1.7-next.2 - - @backstage/plugin-search-backend-module-explore@0.1.7-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.12-next.2 - - @backstage/plugin-search-backend-module-techdocs@0.1.7-next.2 - - @backstage/plugin-techdocs-backend@1.7.0-next.2 - - @backstage/integration@1.7.0-next.2 - - @backstage/plugin-devtools-backend@0.1.6-next.2 - - @backstage/catalog-model@1.4.2-next.1 - - @backstage/plugin-adr-backend@0.3.9-next.2 - - @backstage/plugin-azure-devops-backend@0.3.30-next.2 - - @backstage/plugin-azure-sites-backend@0.1.13-next.2 - - @backstage/plugin-explore-backend@0.0.13-next.2 - - @backstage/plugin-graphql-backend@0.1.41-next.2 - - @backstage/plugin-jenkins-backend@0.2.6-next.2 - - @backstage/plugin-kafka-backend@0.2.44-next.2 - - @backstage/plugin-lighthouse-backend@0.2.7-next.2 - - @backstage/plugin-nomad-backend@0.1.5-next.2 - - @backstage/plugin-permission-common@0.7.8-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.20-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.6-next.2 - - @backstage/plugin-search-backend-node@1.2.7-next.2 - - @backstage/plugin-tech-insights-node@0.4.9-next.2 - - @backstage/plugin-todo-backend@0.2.3-next.2 - - @backstage/catalog-client@1.4.4-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.3-next.2 - - @backstage/plugin-events-node@0.2.12-next.2 - - @backstage/plugin-search-common@1.2.6-next.1 - -## 0.2.87-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-pg@0.5.12-next.1 - - @backstage/plugin-kubernetes-backend@0.11.6-next.1 - - @backstage/plugin-catalog-backend@1.13.0-next.1 - - @backstage/plugin-auth-backend@0.18.9-next.1 - - @backstage/config@1.1.0-next.0 - - @backstage/integration@1.7.0-next.1 - - @backstage/plugin-devtools-backend@0.1.6-next.1 - - @backstage/backend-tasks@0.5.8-next.1 - - @backstage/plugin-techdocs-backend@1.7.0-next.1 - - @backstage/plugin-scaffolder-backend@1.16.6-next.1 - - @backstage/plugin-code-coverage-backend@0.2.17-next.1 - - example-app@0.2.87-next.1 - - @backstage/backend-common@0.19.5-next.1 - - @backstage/catalog-model@1.4.2-next.0 - - @backstage/plugin-adr-backend@0.3.9-next.1 - - @backstage/plugin-app-backend@0.3.51-next.1 - - @backstage/plugin-auth-node@0.3.0-next.1 - - @backstage/plugin-azure-devops-backend@0.3.30-next.1 - - @backstage/plugin-azure-sites-backend@0.1.13-next.1 - - @backstage/plugin-badges-backend@0.2.6-next.1 - - @backstage/plugin-entity-feedback-backend@0.1.9-next.1 - - @backstage/plugin-events-backend@0.2.12-next.1 - - @backstage/plugin-explore-backend@0.0.13-next.1 - - @backstage/plugin-graphql-backend@0.1.41-next.1 - - @backstage/plugin-jenkins-backend@0.2.6-next.1 - - @backstage/plugin-kafka-backend@0.2.44-next.1 - - @backstage/plugin-lighthouse-backend@0.2.7-next.1 - - @backstage/plugin-linguist-backend@0.4.3-next.1 - - @backstage/plugin-nomad-backend@0.1.5-next.1 - - @backstage/plugin-permission-backend@0.5.26-next.1 - - @backstage/plugin-permission-common@0.7.8-next.0 - - @backstage/plugin-permission-node@0.7.14-next.1 - - @backstage/plugin-playlist-backend@0.3.7-next.1 - - @backstage/plugin-proxy-backend@0.3.3-next.1 - - @backstage/plugin-rollbar-backend@0.1.48-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.4-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.20-next.1 - - @backstage/plugin-search-backend@1.4.3-next.1 - - @backstage/plugin-search-backend-module-catalog@0.1.7-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.6-next.1 - - @backstage/plugin-search-backend-module-explore@0.1.7-next.1 - - @backstage/plugin-search-backend-module-techdocs@0.1.7-next.1 - - @backstage/plugin-search-backend-node@1.2.7-next.1 - - @backstage/plugin-tech-insights-backend@0.5.17-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.35-next.1 - - @backstage/plugin-tech-insights-node@0.4.9-next.1 - - @backstage/plugin-todo-backend@0.2.3-next.1 - - @backstage/plugin-catalog-node@1.4.4-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.3-next.1 - - @backstage/plugin-events-node@0.2.12-next.1 - - @backstage/catalog-client@1.4.4-next.0 - - @backstage/plugin-search-common@1.2.6-next.0 - -## 0.2.87-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.12.2-next.0 - - @backstage/plugin-auth-backend@0.18.8-next.0 - - @backstage/plugin-code-coverage-backend@0.2.16-next.0 - - @backstage/plugin-scaffolder-backend@1.16.3-next.0 - - @backstage/plugin-auth-node@0.3.0-next.0 - - @backstage/backend-common@0.19.4-next.0 - - @backstage/plugin-linguist-backend@0.4.2-next.0 - - @backstage/integration@1.7.0-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.8-next.0 - - @backstage/plugin-tech-insights-backend@0.5.16-next.0 - - @backstage/backend-tasks@0.5.7-next.0 - - @backstage/plugin-app-backend@0.3.50-next.0 - - example-app@0.2.87-next.0 - - @backstage/catalog-client@1.4.3 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/plugin-adr-backend@0.3.8-next.0 - - @backstage/plugin-azure-devops-backend@0.3.29-next.0 - - @backstage/plugin-azure-sites-backend@0.1.12-next.0 - - @backstage/plugin-badges-backend@0.2.5-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.2-next.0 - - @backstage/plugin-catalog-node@1.4.3-next.0 - - @backstage/plugin-devtools-backend@0.1.5-next.0 - - @backstage/plugin-events-backend@0.2.11-next.0 - - @backstage/plugin-events-node@0.2.11-next.0 - - @backstage/plugin-explore-backend@0.0.12-next.0 - - @backstage/plugin-graphql-backend@0.1.40-next.0 - - @backstage/plugin-jenkins-backend@0.2.5-next.0 - - @backstage/plugin-kafka-backend@0.2.43-next.0 - - @backstage/plugin-kubernetes-backend@0.11.5-next.0 - - @backstage/plugin-lighthouse-backend@0.2.6-next.0 - - @backstage/plugin-nomad-backend@0.1.4-next.0 - - @backstage/plugin-permission-backend@0.5.25-next.0 - - @backstage/plugin-permission-common@0.7.7 - - @backstage/plugin-permission-node@0.7.13-next.0 - - @backstage/plugin-playlist-backend@0.3.6-next.0 - - @backstage/plugin-proxy-backend@0.3.2-next.0 - - @backstage/plugin-rollbar-backend@0.1.47-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.3-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.19-next.0 - - @backstage/plugin-search-backend@1.4.2-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.5-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.11-next.0 - - @backstage/plugin-search-backend-node@1.2.6-next.0 - - @backstage/plugin-search-common@1.2.5 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.34-next.0 - - @backstage/plugin-tech-insights-node@0.4.8-next.0 - - @backstage/plugin-techdocs-backend@1.6.7-next.0 - - @backstage/plugin-todo-backend@0.2.2-next.0 - -## 0.2.86 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.3.3 - - @backstage/plugin-search-backend-module-pg@0.5.9 - - @backstage/plugin-azure-devops-backend@0.3.27 - - @backstage/plugin-kubernetes-backend@0.11.3 - - @backstage/plugin-lighthouse-backend@0.2.4 - - @backstage/plugin-permission-backend@0.5.23 - - @backstage/plugin-scaffolder-backend@1.16.0 - - @backstage/plugin-devtools-backend@0.1.3 - - @backstage/plugin-techdocs-backend@1.6.5 - - @backstage/backend-common@0.19.2 - - @backstage/plugin-catalog-backend@1.12.0 - - @backstage/plugin-badges-backend@0.2.3 - - @backstage/plugin-events-backend@0.2.9 - - @backstage/plugin-search-backend@1.4.0 - - @backstage/plugin-kafka-backend@0.2.41 - - @backstage/plugin-proxy-backend@0.3.0 - - @backstage/plugin-todo-backend@0.2.0 - - @backstage/plugin-app-backend@0.3.48 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1 - - @backstage/plugin-auth-backend@0.18.6 - - @backstage/plugin-explore-backend@0.0.10 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.17 - - @backstage/plugin-entity-feedback-backend@0.1.6 - - @backstage/plugin-code-coverage-backend@0.2.14 - - @backstage/plugin-search-backend-node@1.2.4 - - @backstage/plugin-linguist-backend@0.4.0 - - @backstage/plugin-playlist-backend@0.3.4 - - @backstage/plugin-jenkins-backend@0.2.3 - - @backstage/plugin-nomad-backend@0.1.2 - - @backstage/plugin-catalog-node@1.4.1 - - @backstage/plugin-events-node@0.2.9 - - @backstage/plugin-auth-node@0.2.17 - - @backstage/integration@1.6.0 - - @backstage/backend-tasks@0.5.5 - - example-app@0.2.86 - - @backstage/plugin-adr-backend@0.3.6 - - @backstage/plugin-azure-sites-backend@0.1.10 - - @backstage/plugin-graphql-backend@0.1.38 - - @backstage/plugin-permission-node@0.7.11 - - @backstage/plugin-rollbar-backend@0.1.45 - - @backstage/plugin-tech-insights-backend@0.5.14 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32 - - @backstage/plugin-tech-insights-node@0.4.6 - - @backstage/catalog-client@1.4.3 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/plugin-permission-common@0.7.7 - - @backstage/plugin-search-common@1.2.5 - -## 0.2.86-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.18.6-next.2 - - @backstage/plugin-scaffolder-backend@1.15.2-next.2 - - @backstage/plugin-explore-backend@0.0.10-next.2 - - @backstage/plugin-catalog-backend@1.12.0-next.2 - - @backstage/plugin-proxy-backend@0.3.0-next.2 - - @backstage/backend-tasks@0.5.5-next.2 - - @backstage/plugin-app-backend@0.3.48-next.2 - - @backstage/plugin-linguist-backend@0.4.0-next.2 - - @backstage/plugin-techdocs-backend@1.6.5-next.2 - - @backstage/backend-common@0.19.2-next.2 - - example-app@0.2.86-next.2 - - @backstage/plugin-adr-backend@0.3.6-next.2 - - @backstage/plugin-azure-devops-backend@0.3.27-next.2 - - @backstage/plugin-badges-backend@0.2.3-next.2 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2 - - @backstage/plugin-catalog-node@1.4.1-next.2 - - @backstage/plugin-devtools-backend@0.1.3-next.2 - - @backstage/plugin-entity-feedback-backend@0.1.6-next.2 - - @backstage/plugin-events-backend@0.2.9-next.2 - - @backstage/plugin-events-node@0.2.9-next.2 - - @backstage/plugin-kafka-backend@0.2.41-next.2 - - @backstage/plugin-kubernetes-backend@0.11.3-next.2 - - @backstage/plugin-lighthouse-backend@0.2.4-next.2 - - @backstage/plugin-permission-backend@0.5.23-next.2 - - @backstage/plugin-permission-node@0.7.11-next.2 - - @backstage/plugin-search-backend@1.4.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.9-next.2 - - @backstage/plugin-search-backend-node@1.2.4-next.2 - - @backstage/plugin-todo-backend@0.2.0-next.2 - - @backstage/plugin-tech-insights-backend@0.5.14-next.2 - - @backstage/plugin-tech-insights-node@0.4.6-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.2 - - @backstage/plugin-auth-node@0.2.17-next.2 - - @backstage/plugin-azure-sites-backend@0.1.10-next.2 - - @backstage/plugin-code-coverage-backend@0.2.14-next.2 - - @backstage/plugin-graphql-backend@0.1.38-next.2 - - @backstage/plugin-jenkins-backend@0.2.3-next.2 - - @backstage/plugin-nomad-backend@0.1.2-next.2 - - @backstage/plugin-playlist-backend@0.3.4-next.2 - - @backstage/plugin-rollbar-backend@0.1.45-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.2 - -## 0.2.86-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.9-next.1 - - @backstage/plugin-azure-devops-backend@0.3.27-next.1 - - @backstage/plugin-kubernetes-backend@0.11.3-next.1 - - @backstage/plugin-lighthouse-backend@0.2.4-next.1 - - @backstage/plugin-permission-backend@0.5.23-next.1 - - @backstage/plugin-scaffolder-backend@1.15.2-next.1 - - @backstage/plugin-devtools-backend@0.1.3-next.1 - - @backstage/plugin-techdocs-backend@1.6.5-next.1 - - @backstage/backend-common@0.19.2-next.1 - - @backstage/plugin-catalog-backend@1.12.0-next.1 - - @backstage/plugin-badges-backend@0.2.3-next.1 - - @backstage/plugin-events-backend@0.2.9-next.1 - - @backstage/plugin-search-backend@1.4.0-next.1 - - @backstage/plugin-kafka-backend@0.2.41-next.1 - - @backstage/plugin-proxy-backend@0.2.42-next.1 - - @backstage/plugin-todo-backend@0.2.0-next.1 - - @backstage/plugin-app-backend@0.3.48-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.1 - - @backstage/plugin-entity-feedback-backend@0.1.6-next.1 - - @backstage/plugin-code-coverage-backend@0.2.14-next.1 - - @backstage/plugin-search-backend-node@1.2.4-next.1 - - @backstage/plugin-linguist-backend@0.3.2-next.1 - - @backstage/plugin-playlist-backend@0.3.4-next.1 - - @backstage/plugin-explore-backend@0.0.10-next.1 - - @backstage/plugin-jenkins-backend@0.2.3-next.1 - - @backstage/plugin-nomad-backend@0.1.2-next.1 - - @backstage/plugin-catalog-node@1.4.1-next.1 - - @backstage/plugin-events-node@0.2.9-next.1 - - @backstage/plugin-auth-node@0.2.17-next.1 - - @backstage/plugin-auth-backend@0.18.6-next.1 - - @backstage/backend-tasks@0.5.5-next.1 - - @backstage/plugin-adr-backend@0.3.6-next.1 - - @backstage/plugin-azure-sites-backend@0.1.10-next.1 - - @backstage/plugin-graphql-backend@0.1.38-next.1 - - @backstage/plugin-permission-node@0.7.11-next.1 - - @backstage/plugin-rollbar-backend@0.1.45-next.1 - - @backstage/plugin-tech-insights-backend@0.5.14-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.1 - - @backstage/plugin-tech-insights-node@0.4.6-next.1 - - example-app@0.2.86-next.1 - - @backstage/integration@1.5.1 - - @backstage/catalog-client@1.4.3 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/plugin-permission-common@0.7.7 - - @backstage/plugin-search-common@1.2.5 - -## 0.2.86-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-linguist-backend@0.3.2-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.0 - - @backstage/plugin-search-backend-node@1.2.4-next.0 - - @backstage/plugin-todo-backend@0.2.0-next.0 - - @backstage/plugin-catalog-backend@1.12.0-next.0 - - @backstage/plugin-search-backend@1.4.0-next.0 - - example-app@0.2.86-next.0 - - @backstage/backend-common@0.19.2-next.0 - - @backstage/backend-tasks@0.5.5-next.0 - - @backstage/catalog-client@1.4.3 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1 - - @backstage/plugin-adr-backend@0.3.6-next.0 - - @backstage/plugin-app-backend@0.3.48-next.0 - - @backstage/plugin-auth-backend@0.18.6-next.0 - - @backstage/plugin-auth-node@0.2.17-next.0 - - @backstage/plugin-azure-devops-backend@0.3.27-next.0 - - @backstage/plugin-azure-sites-backend@0.1.10-next.0 - - @backstage/plugin-badges-backend@0.2.3-next.0 - - @backstage/plugin-catalog-node@1.4.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.14-next.0 - - @backstage/plugin-devtools-backend@0.1.3-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.6-next.0 - - @backstage/plugin-events-backend@0.2.9-next.0 - - @backstage/plugin-events-node@0.2.9-next.0 - - @backstage/plugin-explore-backend@0.0.10-next.0 - - @backstage/plugin-graphql-backend@0.1.38-next.0 - - @backstage/plugin-jenkins-backend@0.2.3-next.0 - - @backstage/plugin-kafka-backend@0.2.41-next.0 - - @backstage/plugin-kubernetes-backend@0.11.3-next.0 - - @backstage/plugin-lighthouse-backend@0.2.4-next.0 - - @backstage/plugin-nomad-backend@0.1.2-next.0 - - @backstage/plugin-permission-backend@0.5.23-next.0 - - @backstage/plugin-permission-common@0.7.7 - - @backstage/plugin-permission-node@0.7.11-next.0 - - @backstage/plugin-playlist-backend@0.3.4-next.0 - - @backstage/plugin-proxy-backend@0.2.42-next.0 - - @backstage/plugin-rollbar-backend@0.1.45-next.0 - - @backstage/plugin-scaffolder-backend@1.15.2-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.9-next.0 - - @backstage/plugin-search-common@1.2.5 - - @backstage/plugin-tech-insights-backend@0.5.14-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.0 - - @backstage/plugin-tech-insights-node@0.4.6-next.0 - - @backstage/plugin-techdocs-backend@1.6.5-next.0 - -## 0.2.85 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.11.2 - - @backstage/plugin-badges-backend@0.2.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.0 - - @backstage/plugin-devtools-backend@0.1.2 - - @backstage/plugin-tech-insights-backend@0.5.13 - - @backstage/backend-common@0.19.1 - - @backstage/plugin-scaffolder-backend@1.15.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1 - - @backstage/plugin-azure-devops-backend@0.3.26 - - @backstage/plugin-linguist-backend@0.3.1 - - @backstage/plugin-adr-backend@0.3.5 - - @backstage/plugin-lighthouse-backend@0.2.3 - - @backstage/plugin-entity-feedback-backend@0.1.5 - - @backstage/plugin-catalog-backend@1.11.0 - - @backstage/plugin-catalog-node@1.4.0 - - @backstage/plugin-auth-backend@0.18.5 - - example-app@0.2.85 - - @backstage/backend-tasks@0.5.4 - - @backstage/catalog-client@1.4.3 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1 - - @backstage/plugin-app-backend@0.3.47 - - @backstage/plugin-auth-node@0.2.16 - - @backstage/plugin-azure-sites-backend@0.1.9 - - @backstage/plugin-code-coverage-backend@0.2.13 - - @backstage/plugin-events-backend@0.2.8 - - @backstage/plugin-events-node@0.2.8 - - @backstage/plugin-explore-backend@0.0.9 - - @backstage/plugin-graphql-backend@0.1.37 - - @backstage/plugin-jenkins-backend@0.2.2 - - @backstage/plugin-kafka-backend@0.2.40 - - @backstage/plugin-nomad-backend@0.1.1 - - @backstage/plugin-permission-backend@0.5.22 - - @backstage/plugin-permission-common@0.7.7 - - @backstage/plugin-permission-node@0.7.10 - - @backstage/plugin-playlist-backend@0.3.3 - - @backstage/plugin-proxy-backend@0.2.41 - - @backstage/plugin-rollbar-backend@0.1.44 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.16 - - @backstage/plugin-search-backend@1.3.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.2 - - @backstage/plugin-search-backend-module-pg@0.5.8 - - @backstage/plugin-search-backend-node@1.2.3 - - @backstage/plugin-search-common@1.2.5 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31 - - @backstage/plugin-tech-insights-node@0.4.5 - - @backstage/plugin-techdocs-backend@1.6.4 - - @backstage/plugin-todo-backend@0.1.44 - -## 0.2.85-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.0-next.1 - - @backstage/plugin-devtools-backend@0.1.2-next.2 - - @backstage/plugin-tech-insights-backend@0.5.13-next.1 - - @backstage/plugin-scaffolder-backend@1.15.1-next.1 - - @backstage/plugin-kubernetes-backend@0.11.2-next.2 - - @backstage/plugin-adr-backend@0.3.5-next.1 - - example-app@0.2.85-next.2 - - @backstage/backend-common@0.19.1-next.0 - - @backstage/backend-tasks@0.5.4-next.0 - - @backstage/catalog-client@1.4.3-next.0 - - @backstage/catalog-model@1.4.1-next.0 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1-next.0 - - @backstage/plugin-app-backend@0.3.47-next.0 - - @backstage/plugin-auth-backend@0.18.5-next.1 - - @backstage/plugin-auth-node@0.2.16-next.0 - - @backstage/plugin-azure-devops-backend@0.3.26-next.1 - - @backstage/plugin-azure-sites-backend@0.1.9-next.0 - - @backstage/plugin-badges-backend@0.2.2-next.1 - - @backstage/plugin-catalog-backend@1.11.0-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 - - @backstage/plugin-catalog-node@1.4.0-next.0 - - @backstage/plugin-code-coverage-backend@0.2.13-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 - - @backstage/plugin-events-backend@0.2.8-next.0 - - @backstage/plugin-events-node@0.2.8-next.0 - - @backstage/plugin-explore-backend@0.0.9-next.0 - - @backstage/plugin-graphql-backend@0.1.37-next.0 - - @backstage/plugin-jenkins-backend@0.2.2-next.0 - - @backstage/plugin-kafka-backend@0.2.40-next.0 - - @backstage/plugin-lighthouse-backend@0.2.3-next.0 - - @backstage/plugin-linguist-backend@0.3.1-next.1 - - @backstage/plugin-nomad-backend@0.1.1-next.0 - - @backstage/plugin-permission-backend@0.5.22-next.0 - - @backstage/plugin-permission-common@0.7.7-next.0 - - @backstage/plugin-permission-node@0.7.10-next.0 - - @backstage/plugin-playlist-backend@0.3.3-next.0 - - @backstage/plugin-proxy-backend@0.2.41-next.0 - - @backstage/plugin-rollbar-backend@0.1.44-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.16-next.1 - - @backstage/plugin-search-backend@1.3.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.2-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.8-next.0 - - @backstage/plugin-search-backend-node@1.2.3-next.0 - - @backstage/plugin-search-common@1.2.5-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31-next.0 - - @backstage/plugin-tech-insights-node@0.4.5-next.0 - - @backstage/plugin-techdocs-backend@1.6.4-next.0 - - @backstage/plugin-todo-backend@0.1.44-next.0 - -## 0.2.85-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.11.2-next.1 - - @backstage/plugin-badges-backend@0.2.2-next.1 - - @backstage/plugin-azure-devops-backend@0.3.26-next.1 - - @backstage/plugin-devtools-backend@0.1.2-next.1 - - @backstage/plugin-linguist-backend@0.3.1-next.1 - - @backstage/plugin-auth-backend@0.18.5-next.1 - - example-app@0.2.85-next.1 - - @backstage/config@1.0.8 - -## 0.2.85-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.1-next.0 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 - - @backstage/plugin-catalog-backend@1.11.0-next.0 - - @backstage/plugin-catalog-node@1.4.0-next.0 - - @backstage/plugin-kubernetes-backend@0.11.2-next.0 - - example-app@0.2.85-next.0 - - @backstage/backend-tasks@0.5.4-next.0 - - @backstage/catalog-client@1.4.3-next.0 - - @backstage/catalog-model@1.4.1-next.0 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1-next.0 - - @backstage/plugin-adr-backend@0.3.5-next.0 - - @backstage/plugin-app-backend@0.3.47-next.0 - - @backstage/plugin-auth-backend@0.18.5-next.0 - - @backstage/plugin-auth-node@0.2.16-next.0 - - @backstage/plugin-azure-devops-backend@0.3.26-next.0 - - @backstage/plugin-azure-sites-backend@0.1.9-next.0 - - @backstage/plugin-badges-backend@0.2.2-next.0 - - @backstage/plugin-code-coverage-backend@0.2.13-next.0 - - @backstage/plugin-devtools-backend@0.1.2-next.0 - - @backstage/plugin-events-backend@0.2.8-next.0 - - @backstage/plugin-events-node@0.2.8-next.0 - - @backstage/plugin-explore-backend@0.0.9-next.0 - - @backstage/plugin-graphql-backend@0.1.37-next.0 - - @backstage/plugin-jenkins-backend@0.2.2-next.0 - - @backstage/plugin-kafka-backend@0.2.40-next.0 - - @backstage/plugin-lighthouse-backend@0.2.3-next.0 - - @backstage/plugin-linguist-backend@0.3.1-next.0 - - @backstage/plugin-nomad-backend@0.1.1-next.0 - - @backstage/plugin-permission-backend@0.5.22-next.0 - - @backstage/plugin-permission-common@0.7.7-next.0 - - @backstage/plugin-permission-node@0.7.10-next.0 - - @backstage/plugin-playlist-backend@0.3.3-next.0 - - @backstage/plugin-proxy-backend@0.2.41-next.0 - - @backstage/plugin-rollbar-backend@0.1.44-next.0 - - @backstage/plugin-scaffolder-backend@1.15.1-next.0 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.4-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.16-next.0 - - @backstage/plugin-search-backend@1.3.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.2-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.8-next.0 - - @backstage/plugin-search-backend-node@1.2.3-next.0 - - @backstage/plugin-search-common@1.2.5-next.0 - - @backstage/plugin-tech-insights-backend@0.5.13-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31-next.0 - - @backstage/plugin-tech-insights-node@0.4.5-next.0 - - @backstage/plugin-techdocs-backend@1.6.4-next.0 - - @backstage/plugin-todo-backend@0.1.44-next.0 - -## 0.2.84 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0 - - @backstage/catalog-client@1.4.2 - - @backstage/plugin-jenkins-backend@0.2.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.3 - - @backstage/plugin-devtools-backend@0.1.1 - - @backstage/plugin-scaffolder-backend@1.15.0 - - @backstage/plugin-nomad-backend@0.1.0 - - @backstage/plugin-azure-sites-backend@0.1.8 - - @backstage/plugin-kubernetes-backend@0.11.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.0 - - @backstage/plugin-badges-backend@0.2.1 - - @backstage/plugin-catalog-backend@1.10.0 - - @backstage/integration@1.5.0 - - @backstage/plugin-search-backend@1.3.2 - - @backstage/plugin-explore-backend@0.0.8 - - @backstage/catalog-model@1.4.0 - - @backstage/plugin-auth-backend@0.18.4 - - @backstage/plugin-adr-backend@0.3.4 - - @backstage/plugin-code-coverage-backend@0.2.12 - - @backstage/plugin-proxy-backend@0.2.40 - - @backstage/plugin-linguist-backend@0.3.0 - - @backstage/plugin-search-backend-module-pg@0.5.7 - - example-app@0.2.84 - - @backstage/backend-tasks@0.5.3 - - @backstage/plugin-app-backend@0.3.46 - - @backstage/plugin-auth-node@0.2.15 - - @backstage/plugin-azure-devops-backend@0.3.25 - - @backstage/plugin-catalog-node@1.3.7 - - @backstage/plugin-entity-feedback-backend@0.1.4 - - @backstage/plugin-events-backend@0.2.7 - - @backstage/plugin-graphql-backend@0.1.36 - - @backstage/plugin-kafka-backend@0.2.39 - - @backstage/plugin-lighthouse-backend@0.2.2 - - @backstage/plugin-permission-backend@0.5.21 - - @backstage/plugin-permission-node@0.7.9 - - @backstage/plugin-playlist-backend@0.3.2 - - @backstage/plugin-rollbar-backend@0.1.43 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.15 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.1 - - @backstage/plugin-search-backend-node@1.2.2 - - @backstage/plugin-tech-insights-backend@0.5.12 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.30 - - @backstage/plugin-tech-insights-node@0.4.4 - - @backstage/plugin-techdocs-backend@1.6.3 - - @backstage/plugin-todo-backend@0.1.43 - - @backstage/config@1.0.8 - - @backstage/plugin-events-node@0.2.7 - - @backstage/plugin-permission-common@0.7.6 - - @backstage/plugin-search-common@1.2.4 - -## 0.2.84-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.15.0-next.3 - - @backstage/plugin-kubernetes-backend@0.11.1-next.3 - - @backstage/backend-common@0.19.0-next.2 - - @backstage/catalog-model@1.4.0-next.1 - - @backstage/plugin-catalog-backend@1.10.0-next.2 - - example-app@0.2.84-next.3 - - @backstage/backend-tasks@0.5.3-next.2 - - @backstage/catalog-client@1.4.2-next.2 - - @backstage/config@1.0.7 - - @backstage/integration@1.5.0-next.0 - - @backstage/plugin-adr-backend@0.3.4-next.2 - - @backstage/plugin-app-backend@0.3.46-next.2 - - @backstage/plugin-auth-backend@0.18.4-next.3 - - @backstage/plugin-auth-node@0.2.15-next.2 - - @backstage/plugin-azure-devops-backend@0.3.25-next.2 - - @backstage/plugin-azure-sites-backend@0.1.8-next.2 - - @backstage/plugin-badges-backend@0.2.1-next.3 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.0-next.1 - - @backstage/plugin-catalog-node@1.3.7-next.2 - - @backstage/plugin-code-coverage-backend@0.2.12-next.3 - - @backstage/plugin-devtools-backend@0.1.1-next.2 - - @backstage/plugin-entity-feedback-backend@0.1.4-next.2 - - @backstage/plugin-events-backend@0.2.7-next.2 - - @backstage/plugin-events-node@0.2.7-next.2 - - @backstage/plugin-explore-backend@0.0.8-next.2 - - @backstage/plugin-graphql-backend@0.1.36-next.2 - - @backstage/plugin-jenkins-backend@0.2.1-next.2 - - @backstage/plugin-kafka-backend@0.2.39-next.2 - - @backstage/plugin-lighthouse-backend@0.2.2-next.2 - - @backstage/plugin-linguist-backend@0.3.0-next.2 - - @backstage/plugin-permission-backend@0.5.21-next.2 - - @backstage/plugin-permission-common@0.7.6-next.0 - - @backstage/plugin-permission-node@0.7.9-next.2 - - @backstage/plugin-playlist-backend@0.3.2-next.2 - - @backstage/plugin-proxy-backend@0.2.40-next.2 - - @backstage/plugin-rollbar-backend@0.1.43-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.3-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.15-next.3 - - @backstage/plugin-search-backend@1.3.2-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.1-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.7-next.2 - - @backstage/plugin-search-backend-node@1.2.2-next.2 - - @backstage/plugin-search-common@1.2.4-next.0 - - @backstage/plugin-tech-insights-backend@0.5.12-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.30-next.2 - - @backstage/plugin-tech-insights-node@0.4.4-next.2 - - @backstage/plugin-techdocs-backend@1.6.3-next.2 - - @backstage/plugin-todo-backend@0.1.43-next.2 - -## 0.2.84-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.11.1-next.2 - - @backstage/plugin-badges-backend@0.2.1-next.2 - - @backstage/plugin-scaffolder-backend@1.15.0-next.2 - - @backstage/plugin-auth-backend@0.18.4-next.2 - - @backstage/plugin-code-coverage-backend@0.2.12-next.2 - - example-app@0.2.84-next.2 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.3-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.15-next.2 - - @backstage/config@1.0.7 - -## 0.2.84-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0-next.1 - - @backstage/plugin-jenkins-backend@0.2.1-next.1 - - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.3-next.1 - - @backstage/plugin-devtools-backend@0.1.1-next.1 - - @backstage/plugin-catalog-backend-module-unprocessed@0.1.0-next.0 - - @backstage/plugin-catalog-backend@1.9.2-next.1 - - @backstage/integration@1.5.0-next.0 - - @backstage/plugin-adr-backend@0.3.4-next.1 - - @backstage/plugin-proxy-backend@0.2.40-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.7-next.1 - - @backstage/catalog-model@1.4.0-next.0 - - @backstage/plugin-scaffolder-backend@1.15.0-next.1 - - @backstage/backend-tasks@0.5.3-next.1 - - @backstage/plugin-app-backend@0.3.46-next.1 - - @backstage/plugin-auth-backend@0.18.4-next.1 - - @backstage/plugin-auth-node@0.2.15-next.1 - - @backstage/plugin-azure-devops-backend@0.3.25-next.1 - - @backstage/plugin-azure-sites-backend@0.1.8-next.1 - - @backstage/plugin-badges-backend@0.2.1-next.1 - - @backstage/plugin-catalog-node@1.3.7-next.1 - - @backstage/plugin-code-coverage-backend@0.2.12-next.1 - - @backstage/plugin-entity-feedback-backend@0.1.4-next.1 - - @backstage/plugin-events-backend@0.2.7-next.1 - - @backstage/plugin-explore-backend@0.0.8-next.1 - - @backstage/plugin-graphql-backend@0.1.36-next.1 - - @backstage/plugin-kafka-backend@0.2.39-next.1 - - @backstage/plugin-kubernetes-backend@0.11.1-next.1 - - @backstage/plugin-lighthouse-backend@0.2.2-next.1 - - @backstage/plugin-linguist-backend@0.3.0-next.1 - - @backstage/plugin-permission-backend@0.5.21-next.1 - - @backstage/plugin-permission-node@0.7.9-next.1 - - @backstage/plugin-playlist-backend@0.3.2-next.1 - - @backstage/plugin-rollbar-backend@0.1.43-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.15-next.1 - - @backstage/plugin-search-backend@1.3.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.1-next.1 - - @backstage/plugin-search-backend-node@1.2.2-next.1 - - @backstage/plugin-tech-insights-backend@0.5.12-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.30-next.1 - - @backstage/plugin-tech-insights-node@0.4.4-next.1 - - @backstage/plugin-techdocs-backend@1.6.3-next.1 - - @backstage/plugin-todo-backend@0.1.43-next.1 - - example-app@0.2.84-next.1 - - @backstage/catalog-client@1.4.2-next.1 - - @backstage/plugin-permission-common@0.7.6-next.0 - - @backstage/plugin-events-node@0.2.7-next.1 - - @backstage/config@1.0.7 - - @backstage/plugin-search-common@1.2.4-next.0 - -## 0.2.84-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-client@1.4.2-next.0 - - @backstage/plugin-scaffolder-backend@1.14.1-next.0 - - @backstage/plugin-jenkins-backend@0.2.1-next.0 - - @backstage/plugin-linguist-backend@0.3.0-next.0 - - @backstage/plugin-devtools-backend@0.1.1-next.0 - - @backstage/plugin-adr-backend@0.3.4-next.0 - - @backstage/plugin-auth-backend@0.18.4-next.0 - - @backstage/plugin-badges-backend@0.2.1-next.0 - - @backstage/plugin-catalog-backend@1.9.2-next.0 - - @backstage/plugin-catalog-node@1.3.7-next.0 - - @backstage/plugin-code-coverage-backend@0.2.12-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.4-next.0 - - @backstage/plugin-kubernetes-backend@0.11.1-next.0 - - @backstage/plugin-lighthouse-backend@0.2.2-next.0 - - @backstage/plugin-playlist-backend@0.3.2-next.0 - - @backstage/plugin-tech-insights-backend@0.5.12-next.0 - - @backstage/plugin-techdocs-backend@1.6.3-next.0 - - @backstage/plugin-todo-backend@0.1.43-next.0 - - example-app@0.2.84-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.15-next.0 - - @backstage/backend-common@0.18.6-next.0 - - @backstage/integration@1.4.5 - - @backstage/plugin-app-backend@0.3.46-next.0 - - @backstage/plugin-explore-backend@0.0.8-next.0 - - @backstage/config@1.0.7 - - @backstage/backend-tasks@0.5.3-next.0 - - @backstage/catalog-model@1.3.0 - - @backstage/plugin-auth-node@0.2.15-next.0 - - @backstage/plugin-azure-devops-backend@0.3.25-next.0 - - @backstage/plugin-azure-sites-backend@0.1.8-next.0 - - @backstage/plugin-events-backend@0.2.7-next.0 - - @backstage/plugin-events-node@0.2.7-next.0 - - @backstage/plugin-graphql-backend@0.1.36-next.0 - - @backstage/plugin-kafka-backend@0.2.39-next.0 - - @backstage/plugin-permission-backend@0.5.21-next.0 - - @backstage/plugin-permission-common@0.7.5 - - @backstage/plugin-permission-node@0.7.9-next.0 - - @backstage/plugin-proxy-backend@0.2.40-next.0 - - @backstage/plugin-rollbar-backend@0.1.43-next.0 - - @backstage/plugin-search-backend@1.3.2-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.1-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.7-next.0 - - @backstage/plugin-search-backend-node@1.2.2-next.0 - - @backstage/plugin-search-common@1.2.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.30-next.0 - - @backstage/plugin-tech-insights-node@0.4.4-next.0 - -## 0.2.83 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.14.0 - - @backstage/plugin-devtools-backend@0.1.0 - - @backstage/plugin-catalog-backend@1.9.1 - - @backstage/backend-common@0.18.5 - - @backstage/plugin-kubernetes-backend@0.11.0 - - @backstage/plugin-auth-backend@0.18.3 - - @backstage/plugin-badges-backend@0.2.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.0 - - @backstage/integration@1.4.5 - - @backstage/plugin-todo-backend@0.1.42 - - @backstage/plugin-jenkins-backend@0.2.0 - - @backstage/plugin-azure-sites-backend@0.1.7 - - @backstage/plugin-permission-node@0.7.8 - - @backstage/plugin-search-backend@1.3.1 - - example-app@0.2.83 - - @backstage/backend-tasks@0.5.2 - - @backstage/plugin-app-backend@0.3.45 - - @backstage/plugin-auth-node@0.2.14 - - @backstage/plugin-catalog-node@1.3.6 - - @backstage/plugin-entity-feedback-backend@0.1.3 - - @backstage/plugin-events-backend@0.2.6 - - @backstage/plugin-playlist-backend@0.3.1 - - @backstage/plugin-rollbar-backend@0.1.42 - - @backstage/plugin-search-backend-module-pg@0.5.6 - - @backstage/plugin-tech-insights-backend@0.5.11 - - @backstage/plugin-techdocs-backend@1.6.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.14 - - @backstage/plugin-adr-backend@0.3.3 - - @backstage/plugin-azure-devops-backend@0.3.24 - - @backstage/plugin-code-coverage-backend@0.2.11 - - @backstage/plugin-explore-backend@0.0.7 - - @backstage/plugin-graphql-backend@0.1.35 - - @backstage/plugin-kafka-backend@0.2.38 - - @backstage/plugin-lighthouse-backend@0.2.1 - - @backstage/plugin-linguist-backend@0.2.2 - - @backstage/plugin-permission-backend@0.5.20 - - @backstage/plugin-proxy-backend@0.2.39 - - @backstage/plugin-search-backend-node@1.2.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29 - - @backstage/plugin-tech-insights-node@0.4.3 - - @backstage/catalog-client@1.4.1 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/plugin-events-node@0.2.6 - - @backstage/plugin-permission-common@0.7.5 - - @backstage/plugin-search-common@1.2.3 - -## 0.2.83-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-devtools-backend@0.1.0-next.0 - - @backstage/plugin-catalog-backend@1.9.1-next.2 - - @backstage/plugin-badges-backend@0.2.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.3.0-next.2 - - @backstage/plugin-kubernetes-backend@0.11.0-next.2 - - @backstage/plugin-auth-backend@0.18.3-next.2 - - @backstage/plugin-search-backend@1.3.1-next.2 - - example-app@0.2.83-next.2 - - @backstage/plugin-scaffolder-backend@1.13.2-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.14-next.2 - - @backstage/config@1.0.7 - -## 0.2.83-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.1 - - @backstage/plugin-kubernetes-backend@0.11.0-next.1 - - @backstage/plugin-catalog-backend@1.9.1-next.1 - - @backstage/plugin-jenkins-backend@0.1.35-next.1 - - @backstage/plugin-scaffolder-backend@1.13.2-next.1 - - example-app@0.2.83-next.1 - - @backstage/backend-tasks@0.5.2-next.1 - - @backstage/plugin-adr-backend@0.3.3-next.1 - - @backstage/plugin-app-backend@0.3.45-next.1 - - @backstage/plugin-auth-backend@0.18.3-next.1 - - @backstage/plugin-auth-node@0.2.14-next.1 - - @backstage/plugin-azure-devops-backend@0.3.24-next.1 - - @backstage/plugin-azure-sites-backend@0.1.7-next.1 - - @backstage/plugin-badges-backend@0.1.39-next.1 - - @backstage/plugin-catalog-node@1.3.6-next.1 - - @backstage/plugin-code-coverage-backend@0.2.11-next.1 - - @backstage/plugin-entity-feedback-backend@0.1.3-next.1 - - @backstage/plugin-events-backend@0.2.6-next.1 - - @backstage/plugin-explore-backend@0.0.7-next.1 - - @backstage/plugin-graphql-backend@0.1.35-next.1 - - @backstage/plugin-kafka-backend@0.2.38-next.1 - - @backstage/plugin-lighthouse-backend@0.2.1-next.1 - - @backstage/plugin-linguist-backend@0.2.2-next.1 - - @backstage/plugin-permission-backend@0.5.20-next.1 - - @backstage/plugin-permission-node@0.7.8-next.1 - - @backstage/plugin-playlist-backend@0.3.1-next.1 - - @backstage/plugin-proxy-backend@0.2.39-next.1 - - @backstage/plugin-rollbar-backend@0.1.42-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.14-next.1 - - @backstage/plugin-search-backend@1.3.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.1-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.6-next.1 - - @backstage/plugin-search-backend-node@1.2.1-next.1 - - @backstage/plugin-tech-insights-backend@0.5.11-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29-next.1 - - @backstage/plugin-tech-insights-node@0.4.3-next.1 - - @backstage/plugin-techdocs-backend@1.6.2-next.1 - - @backstage/plugin-todo-backend@0.1.42-next.1 - - @backstage/config@1.0.7 - - @backstage/plugin-events-node@0.2.6-next.1 - -## 0.2.83-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.0 - - @backstage/integration@1.4.5-next.0 - - @backstage/plugin-permission-node@0.7.8-next.0 - - @backstage/plugin-scaffolder-backend@1.13.2-next.0 - - @backstage/plugin-kubernetes-backend@0.11.0-next.0 - - @backstage/backend-tasks@0.5.2-next.0 - - @backstage/plugin-app-backend@0.3.45-next.0 - - @backstage/plugin-auth-backend@0.18.3-next.0 - - @backstage/plugin-auth-node@0.2.14-next.0 - - @backstage/plugin-catalog-backend@1.9.1-next.0 - - @backstage/plugin-catalog-node@1.3.6-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.3-next.0 - - @backstage/plugin-events-backend@0.2.6-next.0 - - @backstage/plugin-playlist-backend@0.3.1-next.0 - - @backstage/plugin-rollbar-backend@0.1.42-next.0 - - @backstage/plugin-search-backend@1.3.1-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.6-next.0 - - @backstage/plugin-tech-insights-backend@0.5.11-next.0 - - @backstage/plugin-techdocs-backend@1.6.2-next.0 - - example-app@0.2.83-next.0 - - @backstage/plugin-adr-backend@0.3.3-next.0 - - @backstage/plugin-azure-devops-backend@0.3.24-next.0 - - @backstage/plugin-azure-sites-backend@0.1.7-next.0 - - @backstage/plugin-badges-backend@0.1.39-next.0 - - @backstage/plugin-code-coverage-backend@0.2.11-next.0 - - @backstage/plugin-explore-backend@0.0.7-next.0 - - @backstage/plugin-graphql-backend@0.1.35-next.0 - - @backstage/plugin-jenkins-backend@0.1.35-next.0 - - @backstage/plugin-kafka-backend@0.2.38-next.0 - - @backstage/plugin-lighthouse-backend@0.2.1-next.0 - - @backstage/plugin-linguist-backend@0.2.2-next.0 - - @backstage/plugin-permission-backend@0.5.20-next.0 - - @backstage/plugin-proxy-backend@0.2.39-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.14-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.1-next.0 - - @backstage/plugin-search-backend-node@1.2.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29-next.0 - - @backstage/plugin-tech-insights-node@0.4.3-next.0 - - @backstage/plugin-todo-backend@0.1.42-next.0 - - @backstage/catalog-client@1.4.1 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/plugin-events-node@0.2.6-next.0 - - @backstage/plugin-permission-common@0.7.5 - - @backstage/plugin-search-common@1.2.3 - -## 0.2.82 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.10.0 - - @backstage/backend-common@0.18.4 - - @backstage/plugin-scaffolder-backend@1.13.0 - - @backstage/plugin-catalog-backend@1.9.0 - - @backstage/plugin-code-coverage-backend@0.2.10 - - @backstage/catalog-client@1.4.1 - - @backstage/plugin-permission-node@0.7.7 - - @backstage/plugin-permission-backend@0.5.19 - - @backstage/plugin-entity-feedback-backend@0.1.2 - - @backstage/plugin-rollbar-backend@0.1.41 - - @backstage/plugin-search-backend@1.3.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.0 - - @backstage/plugin-search-backend-module-pg@0.5.5 - - @backstage/plugin-auth-backend@0.18.2 - - @backstage/plugin-lighthouse-backend@0.2.0 - - @backstage/plugin-permission-common@0.7.5 - - @backstage/plugin-playlist-backend@0.3.0 - - @backstage/backend-tasks@0.5.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28 - - @backstage/plugin-adr-backend@0.3.2 - - @backstage/plugin-graphql-backend@0.1.34 - - @backstage/catalog-model@1.3.0 - - @backstage/plugin-techdocs-backend@1.6.1 - - @backstage/plugin-explore-backend@0.0.6 - - @backstage/plugin-events-backend@0.2.5 - - @backstage/plugin-search-backend-node@1.2.0 - - @backstage/integration@1.4.4 - - example-app@0.2.82 - - @backstage/plugin-app-backend@0.3.44 - - @backstage/plugin-auth-node@0.2.13 - - @backstage/plugin-azure-devops-backend@0.3.23 - - @backstage/plugin-azure-sites-backend@0.1.6 - - @backstage/plugin-badges-backend@0.1.38 - - @backstage/plugin-catalog-node@1.3.5 - - @backstage/plugin-jenkins-backend@0.1.34 - - @backstage/plugin-kafka-backend@0.2.37 - - @backstage/plugin-linguist-backend@0.2.1 - - @backstage/plugin-proxy-backend@0.2.38 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.12 - - @backstage/plugin-tech-insights-backend@0.5.10 - - @backstage/plugin-tech-insights-node@0.4.2 - - @backstage/plugin-todo-backend@0.1.41 - - @backstage/config@1.0.7 - - @backstage/plugin-events-node@0.2.5 - - @backstage/plugin-search-common@1.2.3 - -## 0.2.82-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.10.0-next.3 - - @backstage/plugin-catalog-backend@1.9.0-next.3 - - @backstage/plugin-code-coverage-backend@0.2.10-next.3 - - @backstage/plugin-lighthouse-backend@0.2.0-next.3 - - @backstage/plugin-auth-backend@0.18.2-next.3 - - @backstage/plugin-scaffolder-backend@1.13.0-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.0-next.3 - - @backstage/catalog-model@1.3.0-next.0 - - @backstage/plugin-events-backend@0.2.5-next.3 - - example-app@0.2.82-next.3 - - @backstage/backend-common@0.18.4-next.2 - - @backstage/backend-tasks@0.5.1-next.2 - - @backstage/catalog-client@1.4.1-next.1 - - @backstage/config@1.0.7 - - @backstage/integration@1.4.4-next.0 - - @backstage/plugin-adr-backend@0.3.2-next.3 - - @backstage/plugin-app-backend@0.3.44-next.2 - - @backstage/plugin-auth-node@0.2.13-next.2 - - @backstage/plugin-azure-devops-backend@0.3.23-next.2 - - @backstage/plugin-azure-sites-backend@0.1.6-next.2 - - @backstage/plugin-badges-backend@0.1.38-next.3 - - @backstage/plugin-catalog-node@1.3.5-next.3 - - @backstage/plugin-entity-feedback-backend@0.1.2-next.3 - - @backstage/plugin-events-node@0.2.5-next.2 - - @backstage/plugin-explore-backend@0.0.6-next.2 - - @backstage/plugin-graphql-backend@0.1.34-next.3 - - @backstage/plugin-jenkins-backend@0.1.34-next.3 - - @backstage/plugin-kafka-backend@0.2.37-next.3 - - @backstage/plugin-linguist-backend@0.2.1-next.3 - - @backstage/plugin-permission-backend@0.5.19-next.2 - - @backstage/plugin-permission-common@0.7.5-next.0 - - @backstage/plugin-permission-node@0.7.7-next.2 - - @backstage/plugin-playlist-backend@0.2.7-next.3 - - @backstage/plugin-proxy-backend@0.2.38-next.2 - - @backstage/plugin-rollbar-backend@0.1.41-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.3 - - @backstage/plugin-search-backend@1.3.0-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.5-next.2 - - @backstage/plugin-search-backend-node@1.2.0-next.2 - - @backstage/plugin-search-common@1.2.3-next.0 - - @backstage/plugin-tech-insights-backend@0.5.10-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28-next.2 - - @backstage/plugin-tech-insights-node@0.4.2-next.2 - - @backstage/plugin-techdocs-backend@1.6.1-next.3 - - @backstage/plugin-todo-backend@0.1.41-next.3 - -## 0.2.82-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.10.0-next.2 - - @backstage/plugin-catalog-backend@1.8.1-next.2 - - @backstage/backend-common@0.18.4-next.2 - - @backstage/catalog-client@1.4.1-next.0 - - @backstage/plugin-permission-node@0.7.7-next.2 - - @backstage/plugin-permission-backend@0.5.19-next.2 - - @backstage/plugin-rollbar-backend@0.1.41-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28-next.2 - - @backstage/plugin-scaffolder-backend@1.13.0-next.2 - - example-app@0.2.82-next.2 - - @backstage/backend-tasks@0.5.1-next.2 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/integration@1.4.4-next.0 - - @backstage/plugin-adr-backend@0.3.2-next.2 - - @backstage/plugin-app-backend@0.3.44-next.2 - - @backstage/plugin-auth-backend@0.18.2-next.2 - - @backstage/plugin-auth-node@0.2.13-next.2 - - @backstage/plugin-azure-devops-backend@0.3.23-next.2 - - @backstage/plugin-azure-sites-backend@0.1.6-next.2 - - @backstage/plugin-badges-backend@0.1.38-next.2 - - @backstage/plugin-catalog-node@1.3.5-next.2 - - @backstage/plugin-code-coverage-backend@0.2.10-next.2 - - @backstage/plugin-entity-feedback-backend@0.1.2-next.2 - - @backstage/plugin-events-backend@0.2.5-next.2 - - @backstage/plugin-events-node@0.2.5-next.2 - - @backstage/plugin-explore-backend@0.0.6-next.2 - - @backstage/plugin-graphql-backend@0.1.34-next.2 - - @backstage/plugin-jenkins-backend@0.1.34-next.2 - - @backstage/plugin-kafka-backend@0.2.37-next.2 - - @backstage/plugin-lighthouse-backend@0.1.2-next.2 - - @backstage/plugin-linguist-backend@0.2.1-next.2 - - @backstage/plugin-permission-common@0.7.5-next.0 - - @backstage/plugin-playlist-backend@0.2.7-next.2 - - @backstage/plugin-proxy-backend@0.2.38-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.2 - - @backstage/plugin-search-backend@1.3.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.0-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.5-next.2 - - @backstage/plugin-search-backend-node@1.2.0-next.2 - - @backstage/plugin-search-common@1.2.3-next.0 - - @backstage/plugin-tech-insights-backend@0.5.10-next.2 - - @backstage/plugin-tech-insights-node@0.4.2-next.2 - - @backstage/plugin-techdocs-backend@1.6.1-next.2 - - @backstage/plugin-todo-backend@0.1.41-next.2 - -## 0.2.82-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend@1.3.0-next.1 - - @backstage/plugin-scaffolder-backend@1.13.0-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.2.0-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.5-next.1 - - @backstage/plugin-permission-node@0.7.7-next.1 - - @backstage/plugin-permission-backend@0.5.19-next.1 - - @backstage/plugin-permission-common@0.7.5-next.0 - - @backstage/plugin-playlist-backend@0.2.7-next.1 - - @backstage/plugin-catalog-backend@1.8.1-next.1 - - @backstage/backend-tasks@0.5.1-next.1 - - @backstage/plugin-adr-backend@0.3.2-next.1 - - @backstage/plugin-kubernetes-backend@0.10.0-next.1 - - @backstage/plugin-techdocs-backend@1.6.1-next.1 - - @backstage/plugin-explore-backend@0.0.6-next.1 - - @backstage/plugin-search-backend-node@1.2.0-next.1 - - @backstage/integration@1.4.4-next.0 - - @backstage/plugin-auth-backend@0.18.2-next.1 - - example-app@0.2.82-next.1 - - @backstage/backend-common@0.18.4-next.1 - - @backstage/catalog-client@1.4.0 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/plugin-app-backend@0.3.44-next.1 - - @backstage/plugin-auth-node@0.2.13-next.1 - - @backstage/plugin-azure-devops-backend@0.3.23-next.1 - - @backstage/plugin-azure-sites-backend@0.1.6-next.1 - - @backstage/plugin-badges-backend@0.1.38-next.1 - - @backstage/plugin-catalog-node@1.3.5-next.1 - - @backstage/plugin-code-coverage-backend@0.2.10-next.1 - - @backstage/plugin-entity-feedback-backend@0.1.2-next.1 - - @backstage/plugin-events-backend@0.2.5-next.1 - - @backstage/plugin-events-node@0.2.5-next.1 - - @backstage/plugin-graphql-backend@0.1.34-next.1 - - @backstage/plugin-jenkins-backend@0.1.34-next.1 - - @backstage/plugin-kafka-backend@0.2.37-next.1 - - @backstage/plugin-lighthouse-backend@0.1.2-next.1 - - @backstage/plugin-linguist-backend@0.2.1-next.1 - - @backstage/plugin-proxy-backend@0.2.38-next.1 - - @backstage/plugin-rollbar-backend@0.1.41-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.1 - - @backstage/plugin-search-common@1.2.3-next.0 - - @backstage/plugin-tech-insights-backend@0.5.10-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28-next.1 - - @backstage/plugin-tech-insights-node@0.4.2-next.1 - - @backstage/plugin-todo-backend@0.1.41-next.1 - -## 0.2.82-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.12.1-next.0 - - @backstage/plugin-kubernetes-backend@0.10.0-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.2-next.0 - - @backstage/plugin-auth-backend@0.18.2-next.0 - - @backstage/plugin-catalog-backend@1.8.1-next.0 - - @backstage/plugin-graphql-backend@0.1.34-next.0 - - @backstage/backend-common@0.18.4-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.12-next.0 - - example-app@0.2.82-next.0 - - @backstage/config@1.0.7 - - @backstage/integration@1.4.3 - - @backstage/backend-tasks@0.5.1-next.0 - - @backstage/catalog-client@1.4.0 - - @backstage/catalog-model@1.2.1 - - @backstage/plugin-adr-backend@0.3.2-next.0 - - @backstage/plugin-app-backend@0.3.44-next.0 - - @backstage/plugin-auth-node@0.2.13-next.0 - - @backstage/plugin-azure-devops-backend@0.3.23-next.0 - - @backstage/plugin-azure-sites-backend@0.1.6-next.0 - - @backstage/plugin-badges-backend@0.1.38-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.0 - - @backstage/plugin-code-coverage-backend@0.2.10-next.0 - - @backstage/plugin-events-backend@0.2.5-next.0 - - @backstage/plugin-events-node@0.2.5-next.0 - - @backstage/plugin-explore-backend@0.0.6-next.0 - - @backstage/plugin-jenkins-backend@0.1.34-next.0 - - @backstage/plugin-kafka-backend@0.2.37-next.0 - - @backstage/plugin-lighthouse-backend@0.1.2-next.0 - - @backstage/plugin-linguist-backend@0.2.1-next.0 - - @backstage/plugin-permission-backend@0.5.19-next.0 - - @backstage/plugin-permission-common@0.7.4 - - @backstage/plugin-permission-node@0.7.7-next.0 - - @backstage/plugin-playlist-backend@0.2.7-next.0 - - @backstage/plugin-proxy-backend@0.2.38-next.0 - - @backstage/plugin-rollbar-backend@0.1.41-next.0 - - @backstage/plugin-search-backend@1.2.5-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.5-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.5-next.0 - - @backstage/plugin-search-backend-node@1.1.5-next.0 - - @backstage/plugin-search-common@1.2.2 - - @backstage/plugin-tech-insights-backend@0.5.10-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.28-next.0 - - @backstage/plugin-tech-insights-node@0.4.2-next.0 - - @backstage/plugin-techdocs-backend@1.6.1-next.0 - - @backstage/plugin-todo-backend@0.1.41-next.0 - -## 0.2.81 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.12.0 - - @backstage/plugin-catalog-backend@1.8.0 - - @backstage/catalog-client@1.4.0 - - @backstage/plugin-todo-backend@0.1.40 - - @backstage/plugin-permission-node@0.7.6 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.4 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27 - - @backstage/plugin-auth-node@0.2.12 - - @backstage/plugin-techdocs-backend@1.6.0 - - @backstage/backend-tasks@0.5.0 - - @backstage/plugin-tech-insights-backend@0.5.9 - - @backstage/plugin-adr-backend@0.3.1 - - @backstage/plugin-auth-backend@0.18.1 - - @backstage/backend-common@0.18.3 - - @backstage/plugin-linguist-backend@0.2.0 - - @backstage/plugin-catalog-node@1.3.4 - - @backstage/catalog-model@1.2.1 - - @backstage/plugin-events-backend@0.2.4 - - @backstage/plugin-app-backend@0.3.43 - - @backstage/plugin-events-node@0.2.4 - - @backstage/integration@1.4.3 - - @backstage/plugin-azure-devops-backend@0.3.22 - - @backstage/plugin-azure-sites-backend@0.1.5 - - @backstage/plugin-code-coverage-backend@0.2.9 - - @backstage/plugin-entity-feedback-backend@0.1.1 - - @backstage/plugin-explore-backend@0.0.5 - - @backstage/plugin-graphql-backend@0.1.33 - - @backstage/plugin-jenkins-backend@0.1.33 - - @backstage/plugin-kubernetes-backend@0.9.4 - - @backstage/plugin-permission-backend@0.5.18 - - @backstage/plugin-permission-common@0.7.4 - - @backstage/plugin-playlist-backend@0.2.6 - - @backstage/plugin-proxy-backend@0.2.37 - - @backstage/plugin-rollbar-backend@0.1.40 - - @backstage/plugin-lighthouse-backend@0.1.1 - - @backstage/config@1.0.7 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.11 - - @backstage/plugin-badges-backend@0.1.37 - - example-app@0.2.81 - - @backstage/plugin-search-backend@1.2.4 - - @backstage/plugin-kafka-backend@0.2.36 - - @backstage/plugin-search-backend-module-pg@0.5.4 - - @backstage/plugin-search-backend-node@1.1.4 - - @backstage/plugin-search-common@1.2.2 - - @backstage/plugin-tech-insights-node@0.4.1 - -## 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 - -- Updated dependencies - - @backstage/catalog-client@1.4.0-next.0 - - @backstage/plugin-todo-backend@0.1.40-next.0 - - @backstage/plugin-scaffolder-backend@1.11.1-next.0 - - @backstage/plugin-catalog-backend@1.8.0-next.0 - - @backstage/plugin-tech-insights-backend@0.5.9-next.0 - - @backstage/plugin-linguist-backend@0.2.0-next.0 - - @backstage/plugin-adr-backend@0.3.1-next.0 - - @backstage/backend-tasks@0.4.4-next.0 - - @backstage/plugin-techdocs-backend@1.5.4-next.0 - - @backstage/backend-common@0.18.3-next.0 - - @backstage/catalog-model@1.2.1-next.0 - - @backstage/plugin-events-backend@0.2.4-next.0 - - @backstage/plugin-catalog-node@1.3.4-next.0 - - @backstage/plugin-app-backend@0.3.43-next.0 - - @backstage/plugin-events-node@0.2.4-next.0 - - @backstage/plugin-proxy-backend@0.2.37-next.0 - - @backstage/plugin-auth-backend@0.18.1-next.0 - - @backstage/plugin-badges-backend@0.1.37-next.0 - - @backstage/plugin-code-coverage-backend@0.2.9-next.0 - - @backstage/plugin-entity-feedback-backend@0.1.1-next.0 - - @backstage/plugin-jenkins-backend@0.1.33-next.0 - - @backstage/plugin-kubernetes-backend@0.9.4-next.0 - - @backstage/plugin-lighthouse-backend@0.1.1-next.0 - - @backstage/plugin-playlist-backend@0.2.6-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.0 - - example-app@0.2.81-next.0 - - @backstage/config@1.0.6 - - @backstage/integration@1.4.2 - - @backstage/plugin-auth-node@0.2.12-next.0 - - @backstage/plugin-azure-devops-backend@0.3.22-next.0 - - @backstage/plugin-azure-sites-backend@0.1.5-next.0 - - @backstage/plugin-explore-backend@0.0.5-next.0 - - @backstage/plugin-graphql-backend@0.1.33-next.0 - - @backstage/plugin-kafka-backend@0.2.36-next.0 - - @backstage/plugin-permission-backend@0.5.18-next.0 - - @backstage/plugin-permission-common@0.7.3 - - @backstage/plugin-permission-node@0.7.6-next.0 - - @backstage/plugin-rollbar-backend@0.1.40-next.0 - - @backstage/plugin-search-backend@1.2.4-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.4-next.0 - - @backstage/plugin-search-backend-node@1.1.4-next.0 - - @backstage/plugin-search-common@1.2.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.0 - - @backstage/plugin-tech-insights-node@0.4.1-next.0 - -## 0.2.80 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2 - - @backstage/plugin-playlist-backend@0.2.5 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.3 - - @backstage/backend-common@0.18.2 - - @backstage/plugin-kubernetes-backend@0.9.3 - - @backstage/plugin-lighthouse-backend@0.1.0 - - @backstage/plugin-code-coverage-backend@0.2.8 - - @backstage/plugin-azure-devops-backend@0.3.21 - - @backstage/plugin-azure-sites-backend@0.1.4 - - @backstage/plugin-adr-backend@0.3.0 - - @backstage/plugin-tech-insights-backend@0.5.8 - - @backstage/plugin-tech-insights-node@0.4.0 - - @backstage/plugin-entity-feedback-backend@0.1.0 - - @backstage/plugin-search-backend@1.2.3 - - @backstage/plugin-techdocs-backend@1.5.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.10 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26 - - @backstage/plugin-scaffolder-backend@1.11.0 - - @backstage/plugin-events-backend@0.2.3 - - @backstage/plugin-kafka-backend@0.2.35 - - @backstage/plugin-proxy-backend@0.2.36 - - @backstage/plugin-app-backend@0.3.42 - - @backstage/catalog-model@1.2.0 - - @backstage/plugin-auth-backend@0.18.0 - - @backstage/plugin-linguist-backend@0.1.0 - - @backstage/plugin-events-node@0.2.3 - - example-app@0.2.80 - - @backstage/plugin-catalog-node@1.3.3 - - @backstage/backend-tasks@0.4.3 - - @backstage/catalog-client@1.3.1 - - @backstage/config@1.0.6 - - @backstage/integration@1.4.2 - - @backstage/plugin-auth-node@0.2.11 - - @backstage/plugin-badges-backend@0.1.36 - - @backstage/plugin-explore-backend@0.0.4 - - @backstage/plugin-graphql-backend@0.1.32 - - @backstage/plugin-jenkins-backend@0.1.32 - - @backstage/plugin-permission-backend@0.5.17 - - @backstage/plugin-permission-common@0.7.3 - - @backstage/plugin-permission-node@0.7.5 - - @backstage/plugin-rollbar-backend@0.1.39 - - @backstage/plugin-search-backend-module-pg@0.5.3 - - @backstage/plugin-search-backend-node@1.1.3 - - @backstage/plugin-search-common@1.2.1 - - @backstage/plugin-todo-backend@0.1.39 - -## 0.2.80-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-lighthouse-backend@0.1.0-next.0 - - @backstage/backend-common@0.18.2-next.2 - - @backstage/plugin-catalog-backend@1.7.2-next.2 - - @backstage/plugin-search-backend@1.2.3-next.2 - - @backstage/plugin-scaffolder-backend@1.11.0-next.2 - - @backstage/plugin-events-backend@0.2.3-next.2 - - @backstage/plugin-kafka-backend@0.2.35-next.2 - - @backstage/plugin-proxy-backend@0.2.36-next.2 - - @backstage/plugin-app-backend@0.3.42-next.2 - - @backstage/catalog-model@1.2.0-next.1 - - @backstage/plugin-kubernetes-backend@0.9.3-next.2 - - @backstage/plugin-events-node@0.2.3-next.2 - - @backstage/plugin-catalog-node@1.3.3-next.2 - - @backstage/backend-tasks@0.4.3-next.2 - - @backstage/plugin-auth-backend@0.17.5-next.2 - - @backstage/plugin-auth-node@0.2.11-next.2 - - @backstage/plugin-permission-node@0.7.5-next.2 - - @backstage/plugin-playlist-backend@0.2.5-next.2 - - @backstage/plugin-rollbar-backend@0.1.39-next.2 - - @backstage/plugin-search-backend-module-pg@0.5.3-next.2 - - @backstage/plugin-tech-insights-backend@0.5.8-next.2 - - @backstage/plugin-techdocs-backend@1.5.3-next.2 - - example-app@0.2.80-next.2 - - @backstage/catalog-client@1.3.1-next.1 - - @backstage/config@1.0.6 - - @backstage/integration@1.4.2 - - @backstage/plugin-adr-backend@0.2.7-next.2 - - @backstage/plugin-azure-devops-backend@0.3.21-next.2 - - @backstage/plugin-azure-sites-backend@0.1.4-next.2 - - @backstage/plugin-badges-backend@0.1.36-next.2 - - @backstage/plugin-code-coverage-backend@0.2.8-next.2 - - @backstage/plugin-explore-backend@0.0.4-next.2 - - @backstage/plugin-graphql-backend@0.1.32-next.2 - - @backstage/plugin-jenkins-backend@0.1.32-next.2 - - @backstage/plugin-permission-backend@0.5.17-next.2 - - @backstage/plugin-permission-common@0.7.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.2 - - @backstage/plugin-search-backend-node@1.1.3-next.2 - - @backstage/plugin-search-common@1.2.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.2 - - @backstage/plugin-tech-insights-node@0.4.0-next.2 - - @backstage/plugin-todo-backend@0.1.39-next.2 - -## 0.2.80-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2-next.1 - - @backstage/plugin-tech-insights-backend@0.5.8-next.1 - - @backstage/plugin-tech-insights-node@0.4.0-next.1 - - @backstage/plugin-azure-devops-backend@0.3.21-next.1 - - @backstage/backend-common@0.18.2-next.1 - - @backstage/plugin-kubernetes-backend@0.9.3-next.1 - - @backstage/plugin-scaffolder-backend@1.11.0-next.1 - - @backstage/plugin-playlist-backend@0.2.5-next.1 - - example-app@0.2.80-next.1 - - @backstage/backend-tasks@0.4.3-next.1 - - @backstage/catalog-client@1.3.1-next.0 - - @backstage/catalog-model@1.1.6-next.0 - - @backstage/config@1.0.6 - - @backstage/integration@1.4.2 - - @backstage/plugin-adr-backend@0.2.7-next.1 - - @backstage/plugin-app-backend@0.3.42-next.1 - - @backstage/plugin-auth-backend@0.17.5-next.1 - - @backstage/plugin-auth-node@0.2.11-next.1 - - @backstage/plugin-azure-sites-backend@0.1.4-next.1 - - @backstage/plugin-badges-backend@0.1.36-next.1 - - @backstage/plugin-catalog-node@1.3.3-next.1 - - @backstage/plugin-code-coverage-backend@0.2.8-next.1 - - @backstage/plugin-events-backend@0.2.3-next.1 - - @backstage/plugin-events-node@0.2.3-next.1 - - @backstage/plugin-explore-backend@0.0.4-next.1 - - @backstage/plugin-graphql-backend@0.1.32-next.1 - - @backstage/plugin-jenkins-backend@0.1.32-next.1 - - @backstage/plugin-kafka-backend@0.2.35-next.1 - - @backstage/plugin-permission-backend@0.5.17-next.1 - - @backstage/plugin-permission-common@0.7.3 - - @backstage/plugin-permission-node@0.7.5-next.1 - - @backstage/plugin-proxy-backend@0.2.36-next.1 - - @backstage/plugin-rollbar-backend@0.1.39-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.1 - - @backstage/plugin-search-backend@1.2.3-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.3-next.1 - - @backstage/plugin-search-backend-node@1.1.3-next.1 - - @backstage/plugin-search-common@1.2.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.1 - - @backstage/plugin-techdocs-backend@1.5.3-next.1 - - @backstage/plugin-todo-backend@0.1.39-next.1 - -## 0.2.80-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.9.3-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.0 - - @backstage/plugin-scaffolder-backend@1.11.0-next.0 - - @backstage/catalog-model@1.1.6-next.0 - - example-app@0.2.80-next.0 - - @backstage/plugin-techdocs-backend@1.5.3-next.0 - - @backstage/backend-common@0.18.2-next.0 - - @backstage/plugin-app-backend@0.3.42-next.0 - - @backstage/catalog-client@1.3.1-next.0 - - @backstage/plugin-adr-backend@0.2.7-next.0 - - @backstage/plugin-auth-backend@0.17.5-next.0 - - @backstage/plugin-badges-backend@0.1.36-next.0 - - @backstage/plugin-catalog-backend@1.7.2-next.0 - - @backstage/plugin-catalog-node@1.3.3-next.0 - - @backstage/plugin-code-coverage-backend@0.2.8-next.0 - - @backstage/plugin-jenkins-backend@0.1.32-next.0 - - @backstage/plugin-kafka-backend@0.2.35-next.0 - - @backstage/plugin-playlist-backend@0.2.5-next.0 - - @backstage/plugin-tech-insights-backend@0.5.8-next.0 - - @backstage/plugin-todo-backend@0.1.39-next.0 - - @backstage/backend-tasks@0.4.3-next.0 - - @backstage/plugin-auth-node@0.2.11-next.0 - - @backstage/plugin-events-backend@0.2.3-next.0 - - @backstage/plugin-permission-node@0.7.5-next.0 - - @backstage/plugin-rollbar-backend@0.1.39-next.0 - - @backstage/plugin-search-backend-module-pg@0.5.3-next.0 - - @backstage/plugin-azure-devops-backend@0.3.21-next.0 - - @backstage/plugin-azure-sites-backend@0.1.4-next.0 - - @backstage/plugin-explore-backend@0.0.4-next.0 - - @backstage/plugin-graphql-backend@0.1.32-next.0 - - @backstage/plugin-permission-backend@0.5.17-next.0 - - @backstage/plugin-proxy-backend@0.2.36-next.0 - - @backstage/plugin-search-backend@1.2.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.0 - - @backstage/plugin-search-backend-node@1.1.3-next.0 - - @backstage/plugin-tech-insights-node@0.3.10-next.0 - - @backstage/plugin-events-node@0.2.3-next.0 - -## 0.2.79 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.10.0 - - @backstage/backend-common@0.18.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.8 - - @backstage/plugin-adr-backend@0.2.5 - - @backstage/catalog-model@1.1.5 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.1 - - @backstage/plugin-search-backend-node@1.1.1 - - @backstage/catalog-client@1.3.0 - - @backstage/plugin-explore-backend@0.0.2 - - @backstage/backend-tasks@0.4.1 - - @backstage/plugin-events-backend@0.2.1 - - @backstage/plugin-catalog-node@1.3.1 - - @backstage/plugin-app-backend@0.3.40 - - @backstage/plugin-code-coverage-backend@0.2.6 - - @backstage/plugin-catalog-backend@1.7.0 - - @backstage/plugin-tech-insights-backend@0.5.6 - - @backstage/plugin-kubernetes-backend@0.9.1 - - @backstage/config@1.0.6 - - @backstage/plugin-search-backend@1.2.1 - - @backstage/plugin-events-node@0.2.1 - - example-app@0.2.79 - - @backstage/integration@1.4.2 - - @backstage/plugin-auth-backend@0.17.3 - - @backstage/plugin-auth-node@0.2.9 - - @backstage/plugin-azure-devops-backend@0.3.19 - - @backstage/plugin-azure-sites-backend@0.1.2 - - @backstage/plugin-badges-backend@0.1.34 - - @backstage/plugin-graphql-backend@0.1.30 - - @backstage/plugin-jenkins-backend@0.1.30 - - @backstage/plugin-kafka-backend@0.2.33 - - @backstage/plugin-permission-backend@0.5.15 - - @backstage/plugin-permission-common@0.7.3 - - @backstage/plugin-permission-node@0.7.3 - - @backstage/plugin-playlist-backend@0.2.3 - - @backstage/plugin-proxy-backend@0.2.34 - - @backstage/plugin-rollbar-backend@0.1.37 - - @backstage/plugin-search-backend-module-pg@0.5.1 - - @backstage/plugin-search-common@1.2.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.24 - - @backstage/plugin-tech-insights-node@0.3.8 - - @backstage/plugin-techdocs-backend@1.5.1 - - @backstage/plugin-todo-backend@0.1.37 - -## 0.2.79-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-adr-backend@0.2.5-next.2 - - @backstage/backend-common@0.18.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.8-next.2 - - @backstage/plugin-scaffolder-backend@1.10.0-next.2 - - @backstage/backend-tasks@0.4.1-next.1 - - @backstage/catalog-client@1.3.0-next.2 - - @backstage/plugin-catalog-backend@1.7.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.1-next.2 - - @backstage/plugin-events-backend@0.2.1-next.1 - - @backstage/plugin-app-backend@0.3.40-next.1 - - @backstage/plugin-kubernetes-backend@0.9.1-next.2 - - @backstage/plugin-catalog-node@1.3.1-next.2 - - @backstage/plugin-events-node@0.2.1-next.1 - - @backstage/plugin-auth-backend@0.17.3-next.2 - - @backstage/plugin-auth-node@0.2.9-next.1 - - @backstage/plugin-permission-node@0.7.3-next.1 - - @backstage/plugin-playlist-backend@0.2.3-next.2 - - @backstage/plugin-rollbar-backend@0.1.37-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.1-next.2 - - @backstage/plugin-tech-insights-backend@0.5.6-next.2 - - @backstage/plugin-techdocs-backend@1.5.1-next.2 - - example-app@0.2.79-next.2 - - @backstage/plugin-azure-devops-backend@0.3.19-next.1 - - @backstage/plugin-azure-sites-backend@0.1.2-next.1 - - @backstage/plugin-badges-backend@0.1.34-next.2 - - @backstage/plugin-code-coverage-backend@0.2.6-next.2 - - @backstage/plugin-explore-backend@0.0.2-next.2 - - @backstage/plugin-graphql-backend@0.1.30-next.2 - - @backstage/plugin-jenkins-backend@0.1.30-next.2 - - @backstage/plugin-kafka-backend@0.2.33-next.2 - - @backstage/plugin-permission-backend@0.5.15-next.1 - - @backstage/plugin-proxy-backend@0.2.34-next.1 - - @backstage/plugin-search-backend@1.2.1-next.2 - - @backstage/plugin-search-backend-node@1.1.1-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.24-next.1 - - @backstage/plugin-tech-insights-node@0.3.8-next.1 - - @backstage/plugin-todo-backend@0.1.37-next.2 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/config@1.0.6-next.0 - - @backstage/integration@1.4.2-next.0 - - @backstage/plugin-permission-common@0.7.3-next.0 - - @backstage/plugin-search-common@1.2.1-next.0 - -## 0.2.79-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.10.0-next.1 - - @backstage/backend-common@0.18.0-next.0 - - @backstage/plugin-explore-backend@0.0.2-next.1 - - @backstage/plugin-events-backend@0.2.1-next.0 - - @backstage/plugin-app-backend@0.3.40-next.0 - - @backstage/plugin-tech-insights-backend@0.5.6-next.1 - - @backstage/config@1.0.6-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.1 - - @backstage/plugin-catalog-node@1.3.1-next.1 - - @backstage/plugin-events-node@0.2.1-next.0 - - example-app@0.2.79-next.1 - - @backstage/backend-tasks@0.4.1-next.0 - - @backstage/catalog-client@1.3.0-next.1 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/integration@1.4.2-next.0 - - @backstage/plugin-auth-backend@0.17.3-next.1 - - @backstage/plugin-auth-node@0.2.9-next.0 - - @backstage/plugin-azure-devops-backend@0.3.19-next.0 - - @backstage/plugin-azure-sites-backend@0.1.2-next.0 - - @backstage/plugin-badges-backend@0.1.34-next.1 - - @backstage/plugin-code-coverage-backend@0.2.6-next.1 - - @backstage/plugin-graphql-backend@0.1.30-next.1 - - @backstage/plugin-jenkins-backend@0.1.30-next.1 - - @backstage/plugin-kafka-backend@0.2.33-next.1 - - @backstage/plugin-kubernetes-backend@0.9.1-next.1 - - @backstage/plugin-permission-backend@0.5.15-next.0 - - @backstage/plugin-permission-common@0.7.3-next.0 - - @backstage/plugin-permission-node@0.7.3-next.0 - - @backstage/plugin-playlist-backend@0.2.3-next.1 - - @backstage/plugin-proxy-backend@0.2.34-next.0 - - @backstage/plugin-rollbar-backend@0.1.37-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.8-next.1 - - @backstage/plugin-search-backend@1.2.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.1-next.1 - - @backstage/plugin-search-backend-module-pg@0.5.1-next.1 - - @backstage/plugin-search-backend-node@1.1.1-next.1 - - @backstage/plugin-search-common@1.2.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.24-next.0 - - @backstage/plugin-tech-insights-node@0.3.8-next.0 - - @backstage/plugin-techdocs-backend@1.5.1-next.1 - - @backstage/plugin-todo-backend@0.1.37-next.1 - -## 0.2.79-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.5-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.1-next.0 - - @backstage/plugin-search-backend-node@1.1.1-next.0 - - @backstage/catalog-client@1.3.0-next.0 - - @backstage/plugin-explore-backend@0.0.2-next.0 - - @backstage/plugin-code-coverage-backend@0.2.6-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.8-next.0 - - @backstage/plugin-scaffolder-backend@1.9.1-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.0 - - @backstage/plugin-search-backend@1.2.1-next.0 - - example-app@0.2.79-next.0 - - @backstage/backend-common@0.17.0 - - @backstage/backend-tasks@0.4.0 - - @backstage/config@1.0.5 - - @backstage/integration@1.4.1 - - @backstage/plugin-app-backend@0.3.39 - - @backstage/plugin-auth-backend@0.17.3-next.0 - - @backstage/plugin-auth-node@0.2.8 - - @backstage/plugin-azure-devops-backend@0.3.18 - - @backstage/plugin-azure-sites-backend@0.1.1 - - @backstage/plugin-badges-backend@0.1.34-next.0 - - @backstage/plugin-catalog-node@1.3.1-next.0 - - @backstage/plugin-events-backend@0.2.0 - - @backstage/plugin-events-node@0.2.0 - - @backstage/plugin-graphql-backend@0.1.30-next.0 - - @backstage/plugin-jenkins-backend@0.1.30-next.0 - - @backstage/plugin-kafka-backend@0.2.33-next.0 - - @backstage/plugin-kubernetes-backend@0.9.1-next.0 - - @backstage/plugin-permission-backend@0.5.14 - - @backstage/plugin-permission-common@0.7.2 - - @backstage/plugin-permission-node@0.7.2 - - @backstage/plugin-playlist-backend@0.2.3-next.0 - - @backstage/plugin-proxy-backend@0.2.33 - - @backstage/plugin-rollbar-backend@0.1.36 - - @backstage/plugin-search-backend-module-pg@0.5.1-next.0 - - @backstage/plugin-search-common@1.2.0 - - @backstage/plugin-tech-insights-backend@0.5.6-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23 - - @backstage/plugin-tech-insights-node@0.3.7 - - @backstage/plugin-techdocs-backend@1.5.1-next.0 - - @backstage/plugin-todo-backend@0.1.37-next.0 - -## 0.2.78 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.9.0 - - @backstage/plugin-azure-devops-backend@0.3.18 - - @backstage/plugin-kubernetes-backend@0.9.0 - - @backstage/plugin-catalog-backend@1.6.0 - - @backstage/catalog-client@1.2.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7 - - @backstage/plugin-search-backend@1.2.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.0 - - @backstage/plugin-search-backend-node@1.1.0 - - @backstage/plugin-playlist-backend@0.2.2 - - @backstage/plugin-search-backend-module-pg@0.5.0 - - @backstage/backend-common@0.17.0 - - @backstage/plugin-app-backend@0.3.39 - - @backstage/plugin-catalog-node@1.3.0 - - @backstage/plugin-events-backend@0.2.0 - - @backstage/backend-tasks@0.4.0 - - @backstage/plugin-permission-backend@0.5.14 - - @backstage/plugin-permission-common@0.7.2 - - @backstage/plugin-permission-node@0.7.2 - - @backstage/plugin-kafka-backend@0.2.32 - - @backstage/plugin-jenkins-backend@0.1.29 - - @backstage/plugin-events-node@0.2.0 - - @backstage/integration@1.4.1 - - @backstage/plugin-auth-backend@0.17.2 - - @backstage/plugin-auth-node@0.2.8 - - @backstage/plugin-azure-sites-backend@0.1.1 - - @backstage/plugin-code-coverage-backend@0.2.5 - - @backstage/plugin-graphql-backend@0.1.29 - - @backstage/plugin-proxy-backend@0.2.33 - - @backstage/plugin-rollbar-backend@0.1.36 - - @backstage/plugin-techdocs-backend@1.5.0 - - @backstage/plugin-todo-backend@0.1.36 - - @backstage/plugin-explore-backend@0.0.1 - - @backstage/plugin-search-common@1.2.0 - - example-app@0.2.78 - - @backstage/plugin-badges-backend@0.1.33 - - @backstage/plugin-tech-insights-backend@0.5.5 - - @backstage/catalog-model@1.1.4 - - @backstage/config@1.0.5 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23 - - @backstage/plugin-tech-insights-node@0.3.7 - -## 0.2.78-next.4 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.3 - - @backstage/plugin-scaffolder-backend@1.9.0-next.3 - - @backstage/backend-tasks@0.4.0-next.3 - - @backstage/plugin-permission-backend@0.5.14-next.3 - - @backstage/plugin-permission-common@0.7.2-next.2 - - @backstage/plugin-permission-node@0.7.2-next.3 - - @backstage/plugin-playlist-backend@0.2.2-next.4 - - @backstage/plugin-search-backend@1.2.0-next.3 - - @backstage/plugin-kubernetes-backend@0.8.1-next.4 - - @backstage/backend-common@0.17.0-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.0-next.3 - - @backstage/plugin-techdocs-backend@1.5.0-next.3 - - example-app@0.2.78-next.4 - - @backstage/catalog-client@1.2.0-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/plugin-app-backend@0.3.39-next.3 - - @backstage/plugin-auth-backend@0.17.2-next.3 - - @backstage/plugin-auth-node@0.2.8-next.3 - - @backstage/plugin-azure-devops-backend@0.3.18-next.3 - - @backstage/plugin-azure-sites-backend@0.1.1-next.3 - - @backstage/plugin-badges-backend@0.1.33-next.3 - - @backstage/plugin-catalog-node@1.3.0-next.3 - - @backstage/plugin-code-coverage-backend@0.2.5-next.3 - - @backstage/plugin-events-backend@0.2.0-next.3 - - @backstage/plugin-events-node@0.2.0-next.3 - - @backstage/plugin-explore-backend@0.0.1-next.2 - - @backstage/plugin-graphql-backend@0.1.29-next.3 - - @backstage/plugin-jenkins-backend@0.1.29-next.3 - - @backstage/plugin-kafka-backend@0.2.32-next.3 - - @backstage/plugin-proxy-backend@0.2.33-next.3 - - @backstage/plugin-rollbar-backend@0.1.36-next.3 - - @backstage/plugin-search-backend-module-pg@0.4.3-next.3 - - @backstage/plugin-search-backend-node@1.1.0-next.3 - - @backstage/plugin-search-common@1.2.0-next.3 - - @backstage/plugin-tech-insights-backend@0.5.5-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.3 - - @backstage/plugin-tech-insights-node@0.3.7-next.3 - - @backstage/plugin-todo-backend@0.1.36-next.3 - -## 0.2.78-next.3 - -### Patch Changes - -- Updated dependencies - - example-app@0.2.78-next.3 - - @backstage/backend-common@0.17.0-next.2 - - @backstage/backend-tasks@0.4.0-next.2 - - @backstage/catalog-client@1.2.0-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/plugin-app-backend@0.3.39-next.2 - - @backstage/plugin-auth-backend@0.17.2-next.2 - - @backstage/plugin-auth-node@0.2.8-next.2 - - @backstage/plugin-azure-devops-backend@0.3.18-next.2 - - @backstage/plugin-azure-sites-backend@0.1.1-next.2 - - @backstage/plugin-badges-backend@0.1.33-next.2 - - @backstage/plugin-catalog-backend@1.6.0-next.2 - - @backstage/plugin-catalog-node@1.3.0-next.2 - - @backstage/plugin-code-coverage-backend@0.2.5-next.2 - - @backstage/plugin-events-backend@0.2.0-next.2 - - @backstage/plugin-events-node@0.2.0-next.2 - - @backstage/plugin-explore-backend@0.0.1-next.1 - - @backstage/plugin-graphql-backend@0.1.29-next.2 - - @backstage/plugin-jenkins-backend@0.1.29-next.2 - - @backstage/plugin-kafka-backend@0.2.32-next.2 - - @backstage/plugin-kubernetes-backend@0.8.1-next.3 - - @backstage/plugin-permission-backend@0.5.14-next.2 - - @backstage/plugin-permission-common@0.7.2-next.1 - - @backstage/plugin-permission-node@0.7.2-next.2 - - @backstage/plugin-playlist-backend@0.2.2-next.3 - - @backstage/plugin-proxy-backend@0.2.33-next.2 - - @backstage/plugin-rollbar-backend@0.1.36-next.2 - - @backstage/plugin-scaffolder-backend@1.9.0-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.2 - - @backstage/plugin-search-backend@1.2.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.0-next.2 - - @backstage/plugin-search-backend-module-pg@0.4.3-next.2 - - @backstage/plugin-search-backend-node@1.1.0-next.2 - - @backstage/plugin-search-common@1.2.0-next.2 - - @backstage/plugin-tech-insights-backend@0.5.5-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.2 - - @backstage/plugin-tech-insights-node@0.3.7-next.2 - - @backstage/plugin-techdocs-backend@1.4.2-next.2 - - @backstage/plugin-todo-backend@0.1.36-next.2 - -## 0.2.78-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-azure-devops-backend@0.3.18-next.2 - - @backstage/plugin-search-backend@1.2.0-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.1.0-next.2 - - @backstage/plugin-search-backend-node@1.1.0-next.2 - - @backstage/plugin-catalog-backend@1.6.0-next.2 - - @backstage/plugin-playlist-backend@0.2.2-next.2 - - @backstage/plugin-search-backend-module-pg@0.4.3-next.2 - - @backstage/plugin-app-backend@0.3.39-next.2 - - @backstage/plugin-catalog-node@1.3.0-next.2 - - @backstage/plugin-events-backend@0.2.0-next.2 - - @backstage/plugin-scaffolder-backend@1.9.0-next.2 - - @backstage/backend-common@0.17.0-next.2 - - @backstage/plugin-search-common@1.2.0-next.2 - - example-app@0.2.78-next.2 - - @backstage/plugin-techdocs-backend@1.4.2-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.2 - - @backstage/backend-tasks@0.4.0-next.2 - - @backstage/plugin-auth-backend@0.17.2-next.2 - - @backstage/plugin-auth-node@0.2.8-next.2 - - @backstage/plugin-azure-sites-backend@0.1.1-next.2 - - @backstage/plugin-badges-backend@0.1.33-next.2 - - @backstage/plugin-code-coverage-backend@0.2.5-next.2 - - @backstage/plugin-explore-backend@0.0.1-next.1 - - @backstage/plugin-graphql-backend@0.1.29-next.2 - - @backstage/plugin-jenkins-backend@0.1.29-next.2 - - @backstage/plugin-kafka-backend@0.2.32-next.2 - - @backstage/plugin-kubernetes-backend@0.8.1-next.2 - - @backstage/plugin-permission-backend@0.5.14-next.2 - - @backstage/plugin-permission-node@0.7.2-next.2 - - @backstage/plugin-proxy-backend@0.2.33-next.2 - - @backstage/plugin-rollbar-backend@0.1.36-next.2 - - @backstage/plugin-tech-insights-backend@0.5.5-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.2 - - @backstage/plugin-tech-insights-node@0.3.7-next.2 - - @backstage/plugin-todo-backend@0.1.36-next.2 - - @backstage/catalog-client@1.2.0-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/plugin-events-node@0.2.0-next.2 - - @backstage/plugin-permission-common@0.7.2-next.1 - -## 0.2.78-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.17.0-next.1 - - @backstage/plugin-catalog-backend@1.6.0-next.1 - - @backstage/plugin-kafka-backend@0.2.32-next.1 - - @backstage/backend-tasks@0.4.0-next.1 - - @backstage/plugin-search-backend-node@1.0.5-next.1 - - @backstage/plugin-jenkins-backend@0.1.29-next.1 - - @backstage/plugin-scaffolder-backend@1.8.1-next.1 - - @backstage/plugin-explore-backend@0.0.1-next.0 - - @backstage/plugin-proxy-backend@0.2.33-next.1 - - @backstage/plugin-app-backend@0.3.39-next.1 - - @backstage/plugin-auth-backend@0.17.2-next.1 - - @backstage/plugin-auth-node@0.2.8-next.1 - - @backstage/plugin-azure-devops-backend@0.3.18-next.1 - - @backstage/plugin-azure-sites-backend@0.1.1-next.1 - - @backstage/plugin-badges-backend@0.1.33-next.1 - - @backstage/plugin-catalog-node@1.2.2-next.1 - - @backstage/plugin-code-coverage-backend@0.2.5-next.1 - - @backstage/plugin-events-backend@0.2.0-next.1 - - @backstage/plugin-graphql-backend@0.1.29-next.1 - - @backstage/plugin-kubernetes-backend@0.8.1-next.1 - - @backstage/plugin-permission-backend@0.5.14-next.1 - - @backstage/plugin-permission-node@0.7.2-next.1 - - @backstage/plugin-playlist-backend@0.2.2-next.1 - - @backstage/plugin-rollbar-backend@0.1.36-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.1 - - @backstage/plugin-search-backend@1.1.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.1 - - @backstage/plugin-search-backend-module-pg@0.4.3-next.1 - - @backstage/plugin-tech-insights-backend@0.5.5-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.1 - - @backstage/plugin-tech-insights-node@0.3.7-next.1 - - @backstage/plugin-techdocs-backend@1.4.2-next.1 - - @backstage/plugin-todo-backend@0.1.36-next.1 - - example-app@0.2.78-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/catalog-client@1.2.0-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/plugin-events-node@0.2.0-next.1 - - @backstage/plugin-permission-common@0.7.2-next.1 - - @backstage/plugin-search-common@1.1.2-next.1 - -## 0.2.78-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.8.1-next.0 - - @backstage/catalog-client@1.2.0-next.0 - - @backstage/plugin-catalog-backend@1.6.0-next.0 - - @backstage/plugin-events-backend@0.2.0-next.0 - - @backstage/plugin-search-backend-node@1.0.5-next.0 - - @backstage/plugin-events-node@0.2.0-next.0 - - @backstage/backend-common@0.16.1-next.0 - - @backstage/integration@1.4.1-next.0 - - @backstage/plugin-app-backend@0.3.39-next.0 - - @backstage/plugin-auth-backend@0.17.2-next.0 - - @backstage/plugin-auth-node@0.2.8-next.0 - - @backstage/plugin-azure-devops-backend@0.3.18-next.0 - - @backstage/plugin-azure-sites-backend@0.1.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.5-next.0 - - @backstage/plugin-graphql-backend@0.1.29-next.0 - - @backstage/plugin-jenkins-backend@0.1.29-next.0 - - @backstage/plugin-permission-backend@0.5.14-next.0 - - @backstage/plugin-permission-common@0.7.2-next.0 - - @backstage/plugin-permission-node@0.7.2-next.0 - - @backstage/plugin-playlist-backend@0.2.2-next.0 - - @backstage/plugin-proxy-backend@0.2.33-next.0 - - @backstage/plugin-rollbar-backend@0.1.36-next.0 - - @backstage/plugin-techdocs-backend@1.4.2-next.0 - - @backstage/plugin-todo-backend@0.1.36-next.0 - - @backstage/plugin-kubernetes-backend@0.8.1-next.0 - - example-app@0.2.78-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.7-next.0 - - @backstage/plugin-badges-backend@0.1.33-next.0 - - @backstage/plugin-catalog-node@1.2.2-next.0 - - @backstage/plugin-tech-insights-backend@0.5.5-next.0 - - @backstage/backend-tasks@0.3.8-next.0 - - @backstage/catalog-model@1.1.4-next.0 - - @backstage/config@1.0.5-next.0 - - @backstage/plugin-kafka-backend@0.2.32-next.0 - - @backstage/plugin-search-backend@1.1.2-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.5-next.0 - - @backstage/plugin-search-backend-module-pg@0.4.3-next.0 - - @backstage/plugin-search-common@1.1.2-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.23-next.0 - - @backstage/plugin-tech-insights-node@0.3.7-next.0 - -## 0.2.77 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0 - - @backstage/plugin-auth-backend@0.17.1 - - @backstage/plugin-catalog-backend@1.5.1 - - @backstage/plugin-techdocs-backend@1.4.1 - - @backstage/plugin-scaffolder-backend@1.8.0 - - @backstage/integration@1.4.0 - - @backstage/backend-tasks@0.3.7 - - @backstage/plugin-playlist-backend@0.2.1 - - @backstage/plugin-azure-devops-backend@0.3.17 - - @backstage/catalog-model@1.1.3 - - @backstage/plugin-auth-node@0.2.7 - - @backstage/plugin-permission-common@0.7.1 - - @backstage/plugin-code-coverage-backend@0.2.4 - - @backstage/plugin-events-backend@0.1.0 - - @backstage/plugin-events-node@0.1.0 - - @backstage/plugin-kubernetes-backend@0.8.0 - - @backstage/plugin-tech-insights-backend@0.5.4 - - @backstage/plugin-tech-insights-node@0.3.6 - - @backstage/plugin-azure-sites-backend@0.1.0 - - example-app@0.2.77 - - @backstage/plugin-app-backend@0.3.38 - - @backstage/plugin-badges-backend@0.1.32 - - @backstage/plugin-catalog-node@1.2.1 - - @backstage/plugin-graphql-backend@0.1.28 - - @backstage/plugin-jenkins-backend@0.1.28 - - @backstage/plugin-kafka-backend@0.2.31 - - @backstage/plugin-permission-backend@0.5.13 - - @backstage/plugin-permission-node@0.7.1 - - @backstage/plugin-proxy-backend@0.2.32 - - @backstage/plugin-rollbar-backend@0.1.35 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.6 - - @backstage/plugin-search-backend@1.1.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.4 - - @backstage/plugin-search-backend-module-pg@0.4.2 - - @backstage/plugin-search-backend-node@1.0.4 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22 - - @backstage/plugin-todo-backend@0.1.35 - - @backstage/catalog-client@1.1.2 - - @backstage/config@1.0.4 - - @backstage/plugin-search-common@1.1.1 - -## 0.2.77-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.17.1-next.1 - - @backstage/backend-common@0.16.0-next.1 - - @backstage/plugin-scaffolder-backend@1.8.0-next.2 - - @backstage/plugin-code-coverage-backend@0.2.4-next.1 - - @backstage/plugin-kubernetes-backend@0.8.0-next.1 - - @backstage/plugin-tech-insights-backend@0.5.4-next.1 - - example-app@0.2.77-next.2 - - @backstage/backend-tasks@0.3.7-next.1 - - @backstage/plugin-app-backend@0.3.38-next.1 - - @backstage/plugin-auth-node@0.2.7-next.1 - - @backstage/plugin-azure-devops-backend@0.3.17-next.2 - - @backstage/plugin-azure-sites-backend@0.1.0-next.1 - - @backstage/plugin-badges-backend@0.1.32-next.1 - - @backstage/plugin-catalog-backend@1.5.1-next.1 - - @backstage/plugin-graphql-backend@0.1.28-next.1 - - @backstage/plugin-jenkins-backend@0.1.28-next.1 - - @backstage/plugin-kafka-backend@0.2.31-next.1 - - @backstage/plugin-permission-backend@0.5.13-next.1 - - @backstage/plugin-permission-node@0.7.1-next.1 - - @backstage/plugin-playlist-backend@0.2.1-next.2 - - @backstage/plugin-proxy-backend@0.2.32-next.1 - - @backstage/plugin-rollbar-backend@0.1.35-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.2 - - @backstage/plugin-search-backend@1.1.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.4-next.1 - - @backstage/plugin-search-backend-module-pg@0.4.2-next.1 - - @backstage/plugin-search-backend-node@1.0.4-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22-next.1 - - @backstage/plugin-tech-insights-node@0.3.6-next.1 - - @backstage/plugin-techdocs-backend@1.4.1-next.1 - - @backstage/plugin-todo-backend@0.1.35-next.1 - - @backstage/catalog-client@1.1.2-next.0 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/plugin-permission-common@0.7.1-next.0 - - @backstage/plugin-search-common@1.1.1-next.0 - -## 0.2.77-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.8.0-next.1 - - @backstage/plugin-playlist-backend@0.2.1-next.1 - - @backstage/plugin-azure-devops-backend@0.3.17-next.1 - - example-app@0.2.77-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.1 - -## 0.2.77-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0-next.0 - - @backstage/plugin-catalog-backend@1.5.1-next.0 - - @backstage/plugin-techdocs-backend@1.4.1-next.0 - - @backstage/plugin-scaffolder-backend@1.8.0-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/plugin-auth-backend@0.17.1-next.0 - - @backstage/backend-tasks@0.3.7-next.0 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/plugin-auth-node@0.2.7-next.0 - - @backstage/plugin-permission-common@0.7.1-next.0 - - @backstage/plugin-tech-insights-backend@0.5.4-next.0 - - @backstage/plugin-tech-insights-node@0.3.6-next.0 - - @backstage/plugin-azure-sites-backend@0.1.0-next.0 - - @backstage/plugin-kubernetes-backend@0.8.0-next.0 - - example-app@0.2.77-next.0 - - @backstage/plugin-app-backend@0.3.38-next.0 - - @backstage/plugin-azure-devops-backend@0.3.17-next.0 - - @backstage/plugin-badges-backend@0.1.32-next.0 - - @backstage/plugin-code-coverage-backend@0.2.4-next.0 - - @backstage/plugin-graphql-backend@0.1.28-next.0 - - @backstage/plugin-jenkins-backend@0.1.28-next.0 - - @backstage/plugin-kafka-backend@0.2.31-next.0 - - @backstage/plugin-permission-backend@0.5.13-next.0 - - @backstage/plugin-permission-node@0.7.1-next.0 - - @backstage/plugin-playlist-backend@0.2.1-next.0 - - @backstage/plugin-proxy-backend@0.2.32-next.0 - - @backstage/plugin-rollbar-backend@0.1.35-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.6-next.0 - - @backstage/plugin-search-backend@1.1.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.4-next.0 - - @backstage/plugin-search-backend-module-pg@0.4.2-next.0 - - @backstage/plugin-search-backend-node@1.0.4-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.22-next.0 - - @backstage/plugin-todo-backend@0.1.35-next.0 - - @backstage/catalog-client@1.1.2-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/plugin-search-common@1.1.1-next.0 - -## 0.2.76 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.2 - - @backstage/backend-common@0.15.2 - - @backstage/plugin-catalog-backend@1.5.0 - - @backstage/plugin-scaffolder-backend@1.7.0 - - @backstage/plugin-auth-node@0.2.6 - - @backstage/backend-tasks@0.3.6 - - @backstage/plugin-permission-node@0.7.0 - - @backstage/plugin-auth-backend@0.17.0 - - @backstage/plugin-permission-common@0.7.0 - - @backstage/plugin-tech-insights-backend@0.5.3 - - @backstage/plugin-search-backend@1.1.0 - - @backstage/catalog-client@1.1.1 - - @backstage/plugin-playlist-backend@0.2.0 - - @backstage/plugin-jenkins-backend@0.1.27 - - @backstage/plugin-app-backend@0.3.37 - - @backstage/plugin-badges-backend@0.1.31 - - @backstage/plugin-graphql-backend@0.1.27 - - @backstage/plugin-permission-backend@0.5.12 - - @backstage/plugin-rollbar-backend@0.1.34 - - @backstage/plugin-kubernetes-backend@0.7.3 - - @backstage/plugin-search-common@1.1.0 - - @backstage/plugin-search-backend-node@1.0.3 - - @backstage/plugin-search-backend-module-pg@0.4.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.3 - - @backstage/plugin-techdocs-backend@1.4.0 - - @backstage/plugin-tech-insights-node@0.3.5 - - example-app@0.2.76 - - @backstage/plugin-code-coverage-backend@0.2.3 - - @backstage/plugin-kafka-backend@0.2.30 - - @backstage/plugin-todo-backend@0.1.34 - - @backstage/plugin-azure-devops-backend@0.3.16 - - @backstage/plugin-proxy-backend@0.2.31 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.5 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.21 - - @backstage/config@1.0.3 - - @backstage/integration@1.3.2 - -## 0.2.76-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.5.0-next.2 - - @backstage/backend-tasks@0.3.6-next.2 - - @backstage/backend-common@0.15.2-next.2 - - @backstage/plugin-permission-common@0.7.0-next.2 - - @backstage/plugin-permission-node@0.7.0-next.2 - - @backstage/plugin-scaffolder-backend@1.7.0-next.2 - - @backstage/plugin-playlist-backend@0.2.0-next.2 - - @backstage/plugin-badges-backend@0.1.31-next.2 - - @backstage/plugin-graphql-backend@0.1.27-next.2 - - @backstage/plugin-permission-backend@0.5.12-next.2 - - @backstage/plugin-rollbar-backend@0.1.34-next.2 - - @backstage/plugin-search-backend@1.1.0-next.2 - - @backstage/plugin-tech-insights-backend@0.5.3-next.2 - - @backstage/plugin-techdocs-backend@1.4.0-next.2 - - example-app@0.2.76-next.2 - - @backstage/plugin-search-backend-node@1.0.3-next.2 - - @backstage/plugin-tech-insights-node@0.3.5-next.2 - - @backstage/plugin-app-backend@0.3.37-next.2 - - @backstage/plugin-auth-backend@0.17.0-next.2 - - @backstage/plugin-auth-node@0.2.6-next.2 - - @backstage/plugin-azure-devops-backend@0.3.16-next.2 - - @backstage/plugin-code-coverage-backend@0.2.3-next.2 - - @backstage/plugin-jenkins-backend@0.1.27-next.2 - - @backstage/plugin-kafka-backend@0.2.30-next.2 - - @backstage/plugin-kubernetes-backend@0.7.3-next.2 - - @backstage/plugin-proxy-backend@0.2.31-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.5-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.3-next.2 - - @backstage/plugin-search-backend-module-pg@0.4.1-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.21-next.2 - - @backstage/plugin-todo-backend@0.1.34-next.2 - - @backstage/plugin-search-common@1.1.0-next.2 - - @backstage/catalog-client@1.1.1-next.2 - - @backstage/catalog-model@1.1.2-next.2 - - @backstage/config@1.0.3-next.2 - - @backstage/integration@1.3.2-next.2 - -## 0.2.76-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.17.0-next.1 - - @backstage/plugin-search-backend@1.1.0-next.1 - - @backstage/catalog-client@1.1.1-next.1 - - @backstage/backend-common@0.15.2-next.1 - - @backstage/plugin-scaffolder-backend@1.7.0-next.1 - - @backstage/plugin-search-common@1.1.0-next.1 - - @backstage/plugin-search-backend-node@1.0.3-next.1 - - @backstage/plugin-search-backend-module-pg@0.4.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.3-next.1 - - @backstage/plugin-kubernetes-backend@0.7.3-next.1 - - @backstage/plugin-tech-insights-backend@0.5.3-next.1 - - example-app@0.2.76-next.1 - - @backstage/backend-tasks@0.3.6-next.1 - - @backstage/catalog-model@1.1.2-next.1 - - @backstage/config@1.0.3-next.1 - - @backstage/integration@1.3.2-next.1 - - @backstage/plugin-app-backend@0.3.37-next.1 - - @backstage/plugin-auth-node@0.2.6-next.1 - - @backstage/plugin-azure-devops-backend@0.3.16-next.1 - - @backstage/plugin-badges-backend@0.1.31-next.1 - - @backstage/plugin-catalog-backend@1.4.1-next.1 - - @backstage/plugin-code-coverage-backend@0.2.3-next.1 - - @backstage/plugin-graphql-backend@0.1.27-next.1 - - @backstage/plugin-jenkins-backend@0.1.27-next.1 - - @backstage/plugin-kafka-backend@0.2.30-next.1 - - @backstage/plugin-permission-backend@0.5.12-next.1 - - @backstage/plugin-permission-common@0.6.5-next.1 - - @backstage/plugin-permission-node@0.6.6-next.1 - - @backstage/plugin-playlist-backend@0.1.1-next.1 - - @backstage/plugin-proxy-backend@0.2.31-next.1 - - @backstage/plugin-rollbar-backend@0.1.34-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.5-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.21-next.1 - - @backstage/plugin-tech-insights-node@0.3.5-next.1 - - @backstage/plugin-techdocs-backend@1.3.1-next.1 - - @backstage/plugin-todo-backend@0.1.34-next.1 - -## 0.2.76-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.2-next.0 - - @backstage/plugin-scaffolder-backend@1.7.0-next.0 - - @backstage/plugin-auth-backend@0.17.0-next.0 - - @backstage/plugin-catalog-backend@1.4.1-next.0 - - @backstage/plugin-jenkins-backend@0.1.27-next.0 - - @backstage/plugin-app-backend@0.3.37-next.0 - - @backstage/plugin-tech-insights-node@0.3.5-next.0 - - example-app@0.2.76-next.0 - - @backstage/catalog-client@1.1.1-next.0 - - @backstage/plugin-badges-backend@0.1.31-next.0 - - @backstage/plugin-code-coverage-backend@0.2.3-next.0 - - @backstage/plugin-kafka-backend@0.2.30-next.0 - - @backstage/plugin-kubernetes-backend@0.7.3-next.0 - - @backstage/plugin-playlist-backend@0.1.1-next.0 - - @backstage/plugin-tech-insights-backend@0.5.3-next.0 - - @backstage/plugin-techdocs-backend@1.3.1-next.0 - - @backstage/plugin-todo-backend@0.1.34-next.0 - - @backstage/backend-common@0.15.2-next.0 - - @backstage/backend-tasks@0.3.6-next.0 - - @backstage/plugin-auth-node@0.2.6-next.0 - - @backstage/plugin-permission-node@0.6.6-next.0 - - @backstage/plugin-rollbar-backend@0.1.34-next.0 - - @backstage/plugin-search-backend-module-pg@0.4.1-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.5-next.0 - - @backstage/config@1.0.3-next.0 - - @backstage/integration@1.3.2-next.0 - - @backstage/plugin-azure-devops-backend@0.3.16-next.0 - - @backstage/plugin-graphql-backend@0.1.27-next.0 - - @backstage/plugin-permission-backend@0.5.12-next.0 - - @backstage/plugin-permission-common@0.6.5-next.0 - - @backstage/plugin-proxy-backend@0.2.31-next.0 - - @backstage/plugin-search-backend@1.0.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.3-next.0 - - @backstage/plugin-search-backend-node@1.0.3-next.0 - - @backstage/plugin-search-common@1.0.2-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.21-next.0 - -## 0.2.75 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.1 - - @backstage/plugin-scaffolder-backend@1.6.0 - - @backstage/plugin-auth-node@0.2.5 - - @backstage/plugin-permission-node@0.6.5 - - @backstage/plugin-kubernetes-backend@0.7.2 - - @backstage/plugin-kafka-backend@0.2.29 - - @backstage/plugin-proxy-backend@0.2.30 - - @backstage/plugin-auth-backend@0.16.0 - - @backstage/integration@1.3.1 - - @backstage/plugin-catalog-backend@1.4.0 - - @backstage/plugin-azure-devops-backend@0.3.15 - - @backstage/plugin-search-backend-node@1.0.2 - - @backstage/plugin-tech-insights-node@0.3.4 - - @backstage/backend-tasks@0.3.5 - - @backstage/plugin-techdocs-backend@1.3.0 - - @backstage/catalog-client@1.1.0 - - @backstage/catalog-model@1.1.1 - - @backstage/config@1.0.2 - - @backstage/plugin-permission-common@0.6.4 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.4 - - @backstage/plugin-search-backend-module-pg@0.4.0 - - @backstage/plugin-jenkins-backend@0.1.26 - - @backstage/plugin-playlist-backend@0.1.0 - - @backstage/plugin-app-backend@0.3.36 - - @backstage/plugin-graphql-backend@0.1.26 - - @backstage/plugin-rollbar-backend@0.1.33 - - @backstage/plugin-code-coverage-backend@0.2.2 - - @backstage/plugin-permission-backend@0.5.11 - - @backstage/plugin-todo-backend@0.1.33 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.2 - - @backstage/plugin-tech-insights-backend@0.5.2 - - @backstage/plugin-badges-backend@0.1.30 - - example-app@0.2.75 - - @backstage/plugin-search-backend@1.0.2 - - @backstage/plugin-search-common@1.0.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20 - -## 0.2.75-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-client@1.1.0-next.2 - - @backstage/catalog-model@1.1.1-next.0 - - @backstage/config@1.0.2-next.0 - - @backstage/integration@1.3.1-next.2 - - @backstage/plugin-permission-common@0.6.4-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.4-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.3 - - @backstage/plugin-auth-backend@0.16.0-next.3 - - @backstage/backend-common@0.15.1-next.3 - - @backstage/plugin-scaffolder-backend@1.6.0-next.3 - - @backstage/plugin-badges-backend@0.1.30-next.1 - - @backstage/plugin-code-coverage-backend@0.2.2-next.2 - - @backstage/plugin-jenkins-backend@0.1.26-next.3 - - @backstage/plugin-kubernetes-backend@0.7.2-next.3 - - @backstage/plugin-tech-insights-backend@0.5.2-next.2 - - @backstage/plugin-techdocs-backend@1.3.0-next.2 - - @backstage/plugin-todo-backend@0.1.33-next.2 - - example-app@0.2.75-next.3 - - @backstage/plugin-kafka-backend@0.2.29-next.1 - - @backstage/backend-tasks@0.3.5-next.1 - - @backstage/plugin-app-backend@0.3.36-next.3 - - @backstage/plugin-auth-node@0.2.5-next.3 - - @backstage/plugin-azure-devops-backend@0.3.15-next.2 - - @backstage/plugin-graphql-backend@0.1.26-next.3 - - @backstage/plugin-permission-backend@0.5.11-next.2 - - @backstage/plugin-permission-node@0.6.5-next.3 - - @backstage/plugin-proxy-backend@0.2.30-next.2 - - @backstage/plugin-rollbar-backend@0.1.33-next.3 - - @backstage/plugin-search-backend@1.0.2-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.2 - - @backstage/plugin-search-backend-module-pg@0.4.0-next.2 - - @backstage/plugin-search-backend-node@1.0.2-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20-next.1 - - @backstage/plugin-tech-insights-node@0.3.4-next.1 - -## 0.2.75-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.7.2-next.2 - - @backstage/backend-common@0.15.1-next.2 - - @backstage/integration@1.3.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.2 - - @backstage/plugin-scaffolder-backend@1.6.0-next.2 - - @backstage/plugin-auth-node@0.2.5-next.2 - - @backstage/plugin-techdocs-backend@1.3.0-next.1 - - @backstage/plugin-jenkins-backend@0.1.26-next.2 - - @backstage/catalog-client@1.0.5-next.1 - - @backstage/plugin-app-backend@0.3.36-next.2 - - @backstage/plugin-auth-backend@0.16.0-next.2 - - @backstage/plugin-azure-devops-backend@0.3.15-next.1 - - @backstage/plugin-code-coverage-backend@0.2.2-next.1 - - @backstage/plugin-graphql-backend@0.1.26-next.2 - - @backstage/plugin-permission-backend@0.5.11-next.1 - - @backstage/plugin-permission-common@0.6.4-next.1 - - @backstage/plugin-permission-node@0.6.5-next.2 - - @backstage/plugin-proxy-backend@0.2.30-next.1 - - @backstage/plugin-rollbar-backend@0.1.33-next.2 - - @backstage/plugin-todo-backend@0.1.33-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.1 - - example-app@0.2.75-next.2 - -## 0.2.75-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-node@0.2.5-next.1 - - @backstage/plugin-permission-node@0.6.5-next.1 - - @backstage/backend-common@0.15.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.1 - - @backstage/plugin-auth-backend@0.16.0-next.1 - - @backstage/plugin-scaffolder-backend@1.6.0-next.1 - - @backstage/plugin-search-backend-node@1.0.2-next.1 - - @backstage/plugin-app-backend@0.3.36-next.1 - - @backstage/plugin-graphql-backend@0.1.26-next.1 - - @backstage/plugin-jenkins-backend@0.1.26-next.1 - - @backstage/plugin-rollbar-backend@0.1.33-next.1 - - @backstage/plugin-search-backend-module-pg@0.4.0-next.1 - - @backstage/plugin-kubernetes-backend@0.7.2-next.1 - - @backstage/plugin-tech-insights-backend@0.5.2-next.1 - - example-app@0.2.75-next.1 - -## 0.2.75-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.1-next.0 - - @backstage/plugin-scaffolder-backend@1.6.0-next.0 - - @backstage/plugin-kafka-backend@0.2.29-next.0 - - @backstage/plugin-proxy-backend@0.2.30-next.0 - - @backstage/plugin-azure-devops-backend@0.3.15-next.0 - - @backstage/plugin-search-backend-node@1.0.2-next.0 - - @backstage/plugin-tech-insights-node@0.3.4-next.0 - - @backstage/backend-tasks@0.3.5-next.0 - - @backstage/plugin-catalog-backend@1.3.2-next.0 - - @backstage/plugin-search-backend-module-pg@0.4.0-next.0 - - @backstage/catalog-client@1.0.5-next.0 - - @backstage/integration@1.3.1-next.0 - - @backstage/plugin-app-backend@0.3.36-next.0 - - @backstage/plugin-auth-backend@0.15.2-next.0 - - @backstage/plugin-auth-node@0.2.5-next.0 - - @backstage/plugin-code-coverage-backend@0.2.2-next.0 - - @backstage/plugin-graphql-backend@0.1.26-next.0 - - @backstage/plugin-jenkins-backend@0.1.26-next.0 - - @backstage/plugin-permission-backend@0.5.11-next.0 - - @backstage/plugin-permission-common@0.6.4-next.0 - - @backstage/plugin-permission-node@0.6.5-next.0 - - @backstage/plugin-rollbar-backend@0.1.33-next.0 - - @backstage/plugin-techdocs-backend@1.2.2-next.0 - - @backstage/plugin-todo-backend@0.1.33-next.0 - - @backstage/plugin-tech-insights-backend@0.5.2-next.0 - - @backstage/plugin-badges-backend@0.1.30-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.2-next.0 - - @backstage/plugin-kubernetes-backend@0.7.2-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.4-next.0 - - @backstage/plugin-search-backend@1.0.2-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.20-next.0 - - example-app@0.2.75-next.0 - - @backstage/plugin-search-common@1.0.1-next.0 - -## 0.2.74 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.0 - - @backstage/plugin-kubernetes-backend@0.7.1 - - @backstage/integration@1.3.0 - - @backstage/plugin-scaffolder-backend@1.5.0 - - @backstage/plugin-auth-backend@0.15.1 - - @backstage/plugin-graphql-backend@0.1.25 - - @backstage/backend-tasks@0.3.4 - - @backstage/plugin-tech-insights-node@0.3.3 - - @backstage/plugin-catalog-backend@1.3.1 - - example-app@0.2.74 - - @backstage/plugin-app-backend@0.3.35 - - @backstage/plugin-auth-node@0.2.4 - - @backstage/plugin-azure-devops-backend@0.3.14 - - @backstage/plugin-badges-backend@0.1.29 - - @backstage/plugin-code-coverage-backend@0.2.1 - - @backstage/plugin-jenkins-backend@0.1.25 - - @backstage/plugin-kafka-backend@0.2.28 - - @backstage/plugin-permission-backend@0.5.10 - - @backstage/plugin-permission-node@0.6.4 - - @backstage/plugin-proxy-backend@0.2.29 - - @backstage/plugin-rollbar-backend@0.1.32 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.3 - - @backstage/plugin-search-backend@1.0.1 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.1 - - @backstage/plugin-search-backend-module-pg@0.3.6 - - @backstage/plugin-search-backend-node@1.0.1 - - @backstage/plugin-tech-insights-backend@0.5.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.19 - - @backstage/plugin-techdocs-backend@1.2.1 - - @backstage/plugin-todo-backend@0.1.32 - -## 0.2.74-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.0-next.0 - - @backstage/integration@1.3.0-next.0 - - @backstage/plugin-scaffolder-backend@1.5.0-next.0 - - @backstage/backend-tasks@0.3.4-next.0 - - @backstage/plugin-kubernetes-backend@0.7.1-next.0 - - @backstage/plugin-tech-insights-node@0.3.3-next.0 - - @backstage/plugin-app-backend@0.3.35-next.0 - - @backstage/plugin-auth-backend@0.15.1-next.0 - - @backstage/plugin-auth-node@0.2.4-next.0 - - @backstage/plugin-azure-devops-backend@0.3.14-next.0 - - @backstage/plugin-badges-backend@0.1.29-next.0 - - @backstage/plugin-catalog-backend@1.3.1-next.0 - - @backstage/plugin-code-coverage-backend@0.2.1-next.0 - - @backstage/plugin-graphql-backend@0.1.25-next.0 - - @backstage/plugin-jenkins-backend@0.1.25-next.0 - - @backstage/plugin-kafka-backend@0.2.28-next.0 - - @backstage/plugin-permission-backend@0.5.10-next.0 - - @backstage/plugin-permission-node@0.6.4-next.0 - - @backstage/plugin-proxy-backend@0.2.29-next.0 - - @backstage/plugin-rollbar-backend@0.1.32-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.3-next.0 - - @backstage/plugin-search-backend@1.0.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.1-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.6-next.0 - - @backstage/plugin-search-backend-node@1.0.1-next.0 - - @backstage/plugin-tech-insights-backend@0.5.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.19-next.0 - - @backstage/plugin-techdocs-backend@1.2.1-next.0 - - @backstage/plugin-todo-backend@0.1.32-next.0 - - example-app@0.2.74-next.0 - -## 0.2.73 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-code-coverage-backend@0.2.0 - - @backstage/plugin-catalog-backend@1.3.0 - - @backstage/plugin-tech-insights-backend@0.5.0 - - @backstage/backend-common@0.14.1 - - @backstage/catalog-model@1.1.0 - - @backstage/plugin-kubernetes-backend@0.7.0 - - @backstage/plugin-search-backend@1.0.0 - - @backstage/plugin-search-backend-node@1.0.0 - - @backstage/plugin-search-common@1.0.0 - - @backstage/plugin-search-backend-module-elasticsearch@1.0.0 - - @backstage/plugin-scaffolder-backend@1.4.0 - - @backstage/plugin-auth-backend@0.15.0 - - @backstage/plugin-jenkins-backend@0.1.24 - - @backstage/plugin-proxy-backend@0.2.28 - - @backstage/plugin-search-backend-module-pg@0.3.5 - - @backstage/integration@1.2.2 - - @backstage/catalog-client@1.0.4 - - @backstage/plugin-app-backend@0.3.34 - - @backstage/plugin-auth-node@0.2.3 - - @backstage/plugin-azure-devops-backend@0.3.13 - - @backstage/plugin-graphql-backend@0.1.24 - - @backstage/plugin-permission-backend@0.5.9 - - @backstage/plugin-permission-common@0.6.3 - - @backstage/plugin-permission-node@0.6.3 - - @backstage/plugin-rollbar-backend@0.1.31 - - @backstage/plugin-techdocs-backend@1.2.0 - - @backstage/plugin-todo-backend@0.1.31 - - @backstage/backend-tasks@0.3.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18 - - @backstage/plugin-tech-insights-node@0.3.2 - - @backstage/plugin-kafka-backend@0.2.27 - - @backstage/plugin-badges-backend@0.1.28 - - example-app@0.2.73 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.2 - -## 0.2.73-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-code-coverage-backend@0.2.0-next.3 - - @backstage/plugin-catalog-backend@1.3.0-next.3 - - @backstage/plugin-kubernetes-backend@0.7.0-next.3 - - @backstage/plugin-proxy-backend@0.2.28-next.1 - - @backstage/backend-common@0.14.1-next.3 - - @backstage/plugin-scaffolder-backend@1.4.0-next.3 - - @backstage/catalog-client@1.0.4-next.2 - - @backstage/integration@1.2.2-next.3 - - @backstage/plugin-app-backend@0.3.34-next.3 - - @backstage/plugin-auth-backend@0.15.0-next.3 - - @backstage/plugin-auth-node@0.2.3-next.2 - - @backstage/plugin-azure-devops-backend@0.3.13-next.1 - - @backstage/plugin-graphql-backend@0.1.24-next.1 - - @backstage/plugin-jenkins-backend@0.1.24-next.3 - - @backstage/plugin-permission-backend@0.5.9-next.2 - - @backstage/plugin-permission-common@0.6.3-next.1 - - @backstage/plugin-permission-node@0.6.3-next.2 - - @backstage/plugin-rollbar-backend@0.1.31-next.1 - - @backstage/plugin-techdocs-backend@1.2.0-next.3 - - @backstage/plugin-todo-backend@0.1.31-next.2 - - @backstage/backend-tasks@0.3.3-next.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.2 - - @backstage/plugin-tech-insights-backend@0.5.0-next.3 - - @backstage/plugin-tech-insights-node@0.3.2-next.1 - - @backstage/catalog-model@1.1.0-next.3 - - @backstage/plugin-search-backend-module-elasticsearch@0.2.0-next.2 - - @backstage/plugin-search-backend-node@0.6.3-next.2 - - @backstage/plugin-search-backend@0.5.4-next.2 - - example-app@0.2.73-next.3 - -## 0.2.73-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.7.0-next.2 - - @backstage/plugin-tech-insights-backend@0.5.0-next.2 - - @backstage/plugin-jenkins-backend@0.1.24-next.2 - - @backstage/plugin-search-backend-module-pg@0.3.5-next.2 - - @backstage/plugin-scaffolder-backend@1.4.0-next.2 - - @backstage/plugin-auth-backend@0.15.0-next.2 - - @backstage/catalog-model@1.1.0-next.2 - - @backstage/plugin-kafka-backend@0.2.27-next.2 - - @backstage/backend-common@0.14.1-next.2 - - @backstage/backend-tasks@0.3.3-next.2 - - @backstage/plugin-app-backend@0.3.34-next.2 - - @backstage/plugin-catalog-backend@1.2.1-next.2 - - @backstage/plugin-code-coverage-backend@0.1.32-next.2 - - @backstage/plugin-techdocs-backend@1.2.0-next.2 - - @backstage/plugin-badges-backend@0.1.28-next.2 - - @backstage/integration@1.2.2-next.2 - - example-app@0.2.73-next.2 - -## 0.2.73-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.4.0-next.1 - - @backstage/plugin-auth-backend@0.15.0-next.1 - - @backstage/catalog-model@1.1.0-next.1 - - @backstage/backend-common@0.14.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@0.2.0-next.1 - - @backstage/plugin-catalog-backend@1.2.1-next.1 - - @backstage/plugin-techdocs-backend@1.2.0-next.1 - - example-app@0.2.73-next.1 - - @backstage/backend-tasks@0.3.3-next.1 - - @backstage/catalog-client@1.0.4-next.1 - - @backstage/integration@1.2.2-next.1 - - @backstage/plugin-app-backend@0.3.34-next.1 - - @backstage/plugin-auth-node@0.2.3-next.1 - - @backstage/plugin-badges-backend@0.1.28-next.1 - - @backstage/plugin-code-coverage-backend@0.1.32-next.1 - - @backstage/plugin-jenkins-backend@0.1.24-next.1 - - @backstage/plugin-kafka-backend@0.2.27-next.1 - - @backstage/plugin-kubernetes-backend@0.7.0-next.1 - - @backstage/plugin-permission-backend@0.5.9-next.1 - - @backstage/plugin-permission-common@0.6.3-next.0 - - @backstage/plugin-permission-node@0.6.3-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.1 - - @backstage/plugin-search-backend@0.5.4-next.1 - - @backstage/plugin-search-backend-module-pg@0.3.5-next.1 - - @backstage/plugin-search-backend-node@0.6.3-next.1 - - @backstage/plugin-tech-insights-backend@0.4.2-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.1 - - @backstage/plugin-todo-backend@0.1.31-next.1 - -## 0.2.73-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-tech-insights-backend@0.4.2-next.0 - - @backstage/backend-common@0.14.1-next.0 - - @backstage/catalog-model@1.1.0-next.0 - - @backstage/plugin-scaffolder-backend@1.4.0-next.0 - - @backstage/plugin-auth-backend@0.14.2-next.0 - - @backstage/plugin-kubernetes-backend@0.7.0-next.0 - - @backstage/integration@1.2.2-next.0 - - @backstage/plugin-azure-devops-backend@0.3.13-next.0 - - example-app@0.2.73-next.0 - - @backstage/backend-tasks@0.3.3-next.0 - - @backstage/plugin-app-backend@0.3.34-next.0 - - @backstage/plugin-auth-node@0.2.3-next.0 - - @backstage/plugin-badges-backend@0.1.28-next.0 - - @backstage/plugin-catalog-backend@1.2.1-next.0 - - @backstage/plugin-code-coverage-backend@0.1.32-next.0 - - @backstage/plugin-graphql-backend@0.1.24-next.0 - - @backstage/plugin-jenkins-backend@0.1.24-next.0 - - @backstage/plugin-kafka-backend@0.2.27-next.0 - - @backstage/plugin-permission-backend@0.5.9-next.0 - - @backstage/plugin-permission-node@0.6.3-next.0 - - @backstage/plugin-proxy-backend@0.2.28-next.0 - - @backstage/plugin-rollbar-backend@0.1.31-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.2-next.0 - - @backstage/plugin-search-backend@0.5.4-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.6-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.5-next.0 - - @backstage/plugin-search-backend-node@0.6.3-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.18-next.0 - - @backstage/plugin-tech-insights-node@0.3.2-next.0 - - @backstage/plugin-techdocs-backend@1.1.3-next.0 - - @backstage/plugin-todo-backend@0.1.31-next.0 - - @backstage/catalog-client@1.0.4-next.0 - -## 0.2.72 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-tech-insights-backend@0.4.1 - - @backstage/plugin-catalog-backend@1.2.0 - - @backstage/plugin-auth-backend@0.14.1 - - @backstage/plugin-scaffolder-backend@1.3.0 - - @backstage/backend-tasks@0.3.2 - - @backstage/plugin-permission-node@0.6.2 - - @backstage/plugin-kubernetes-backend@0.6.0 - - @backstage/backend-common@0.14.0 - - @backstage/plugin-search-backend@0.5.3 - - @backstage/plugin-auth-node@0.2.2 - - @backstage/integration@1.2.1 - - @backstage/plugin-jenkins-backend@0.1.23 - - @backstage/plugin-search-backend-node@0.6.2 - - @backstage/catalog-client@1.0.3 - - @backstage/plugin-app-backend@0.3.33 - - @backstage/plugin-azure-devops-backend@0.3.12 - - @backstage/plugin-code-coverage-backend@0.1.31 - - @backstage/plugin-graphql-backend@0.1.23 - - @backstage/plugin-permission-backend@0.5.8 - - @backstage/plugin-permission-common@0.6.2 - - @backstage/plugin-rollbar-backend@0.1.30 - - @backstage/plugin-techdocs-backend@1.1.2 - - @backstage/plugin-todo-backend@0.1.30 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.5 - - @backstage/plugin-search-backend-module-pg@0.3.4 - - @backstage/catalog-model@1.0.3 - - @backstage/plugin-tech-insights-node@0.3.1 - - example-app@0.2.72 - - @backstage/plugin-badges-backend@0.1.27 - - @backstage/plugin-kafka-backend@0.2.26 - - @backstage/plugin-proxy-backend@0.2.27 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.17 - -## 0.2.72-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@1.3.0-next.2 - - @backstage/backend-common@0.14.0-next.2 - - @backstage/plugin-search-backend@0.5.3-next.2 - - @backstage/plugin-auth-backend@0.14.1-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.5-next.2 - - @backstage/integration@1.2.1-next.2 - - @backstage/plugin-techdocs-backend@1.1.2-next.2 - - @backstage/plugin-search-backend-node@0.6.2-next.2 - - example-app@0.2.72-next.2 - - @backstage/backend-tasks@0.3.2-next.2 - - @backstage/plugin-app-backend@0.3.33-next.2 - - @backstage/plugin-auth-node@0.2.2-next.2 - - @backstage/plugin-azure-devops-backend@0.3.12-next.2 - - @backstage/plugin-badges-backend@0.1.27-next.2 - - @backstage/plugin-catalog-backend@1.2.0-next.2 - - @backstage/plugin-code-coverage-backend@0.1.31-next.2 - - @backstage/plugin-graphql-backend@0.1.23-next.2 - - @backstage/plugin-jenkins-backend@0.1.23-next.2 - - @backstage/plugin-kafka-backend@0.2.26-next.2 - - @backstage/plugin-kubernetes-backend@0.6.0-next.2 - - @backstage/plugin-permission-backend@0.5.8-next.2 - - @backstage/plugin-permission-node@0.6.2-next.2 - - @backstage/plugin-proxy-backend@0.2.27-next.1 - - @backstage/plugin-rollbar-backend@0.1.30-next.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.1-next.1 - - @backstage/plugin-search-backend-module-pg@0.3.4-next.2 - - @backstage/plugin-tech-insights-backend@0.4.1-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.17-next.1 - - @backstage/plugin-tech-insights-node@0.3.1-next.1 - - @backstage/plugin-todo-backend@0.1.30-next.2 - -## 0.2.72-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-tech-insights-backend@0.4.1-next.1 - - @backstage/plugin-auth-backend@0.14.1-next.1 - - @backstage/plugin-jenkins-backend@0.1.23-next.1 - - @backstage/backend-tasks@0.3.2-next.1 - - @backstage/backend-common@0.13.6-next.1 - - @backstage/catalog-client@1.0.3-next.0 - - @backstage/integration@1.2.1-next.1 - - @backstage/plugin-app-backend@0.3.33-next.1 - - @backstage/plugin-auth-node@0.2.2-next.1 - - @backstage/plugin-azure-devops-backend@0.3.12-next.1 - - @backstage/plugin-catalog-backend@1.2.0-next.1 - - @backstage/plugin-code-coverage-backend@0.1.31-next.1 - - @backstage/plugin-graphql-backend@0.1.23-next.1 - - @backstage/plugin-permission-backend@0.5.8-next.1 - - @backstage/plugin-permission-common@0.6.2-next.0 - - @backstage/plugin-permission-node@0.6.2-next.1 - - @backstage/plugin-rollbar-backend@0.1.30-next.1 - - @backstage/plugin-scaffolder-backend@1.3.0-next.1 - - @backstage/plugin-techdocs-backend@1.1.2-next.1 - - @backstage/plugin-todo-backend@0.1.30-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.5-next.1 - - @backstage/plugin-search-backend-node@0.6.2-next.1 - - @backstage/catalog-model@1.0.3-next.0 - - @backstage/plugin-badges-backend@0.1.27-next.1 - - example-app@0.2.72-next.1 - - @backstage/plugin-search-backend@0.5.3-next.1 - - @backstage/plugin-kafka-backend@0.2.26-next.1 - - @backstage/plugin-kubernetes-backend@0.6.0-next.1 - - @backstage/plugin-search-backend-module-pg@0.3.4-next.1 - -## 0.2.72-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-tasks@0.3.2-next.0 - - @backstage/plugin-scaffolder-backend@1.3.0-next.0 - - @backstage/plugin-kubernetes-backend@0.6.0-next.0 - - @backstage/backend-common@0.13.6-next.0 - - @backstage/plugin-auth-backend@0.14.1-next.0 - - @backstage/integration@1.2.1-next.0 - - @backstage/plugin-search-backend-node@0.6.2-next.0 - - @backstage/plugin-catalog-backend@1.2.0-next.0 - - @backstage/plugin-auth-node@0.2.2-next.0 - - @backstage/plugin-techdocs-backend@1.1.2-next.0 - - example-app@0.2.72-next.0 - - @backstage/plugin-app-backend@0.3.33-next.0 - - @backstage/plugin-azure-devops-backend@0.3.12-next.0 - - @backstage/plugin-badges-backend@0.1.27-next.0 - - @backstage/plugin-code-coverage-backend@0.1.31-next.0 - - @backstage/plugin-graphql-backend@0.1.23-next.0 - - @backstage/plugin-jenkins-backend@0.1.23-next.0 - - @backstage/plugin-kafka-backend@0.2.26-next.0 - - @backstage/plugin-permission-backend@0.5.8-next.0 - - @backstage/plugin-permission-node@0.6.2-next.0 - - @backstage/plugin-proxy-backend@0.2.27-next.0 - - @backstage/plugin-rollbar-backend@0.1.30-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.1-next.0 - - @backstage/plugin-search-backend@0.5.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.5-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.4-next.0 - - @backstage/plugin-tech-insights-backend@0.4.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.17-next.0 - - @backstage/plugin-tech-insights-node@0.3.1-next.0 - - @backstage/plugin-todo-backend@0.1.30-next.0 - -## 0.2.71 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3 - - @backstage/plugin-auth-backend@0.14.0 - - @backstage/plugin-kubernetes-backend@0.5.1 - - @backstage/plugin-catalog-backend@1.1.2 - - @backstage/plugin-tech-insights-backend@0.4.0 - - @backstage/plugin-scaffolder-backend@1.2.0 - - @backstage/backend-tasks@0.3.1 - - @backstage/integration@1.2.0 - - @backstage/plugin-tech-insights-node@0.3.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.16 - - @backstage/plugin-rollbar-backend@0.1.29 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.4 - - @backstage/config@1.0.1 - - @backstage/plugin-app-backend@0.3.32 - - @backstage/plugin-techdocs-backend@1.1.1 - - @backstage/plugin-search-backend-node@0.6.1 - - @backstage/plugin-search-backend-module-pg@0.3.3 - - @backstage/plugin-jenkins-backend@0.1.22 - - @backstage/plugin-search-backend@0.5.2 - - @backstage/plugin-auth-node@0.2.1 - - @backstage/plugin-azure-devops-backend@0.3.11 - - example-app@0.2.71 - - @backstage/catalog-client@1.0.2 - - @backstage/catalog-model@1.0.2 - - @backstage/plugin-badges-backend@0.1.26 - - @backstage/plugin-code-coverage-backend@0.1.30 - - @backstage/plugin-graphql-backend@0.1.22 - - @backstage/plugin-kafka-backend@0.2.25 - - @backstage/plugin-permission-backend@0.5.7 - - @backstage/plugin-permission-common@0.6.1 - - @backstage/plugin-permission-node@0.6.1 - - @backstage/plugin-proxy-backend@0.2.26 - - @backstage/plugin-todo-backend@0.1.29 - -## 0.2.71-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.2 - - @backstage/plugin-kubernetes-backend@0.5.1-next.1 - - @backstage/plugin-catalog-backend@1.1.2-next.2 - - @backstage/backend-tasks@0.3.1-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.4.0-next.1 - - @backstage/plugin-scaffolder-backend@1.2.0-next.1 - - @backstage/config@1.0.1-next.0 - - @backstage/plugin-search-backend-node@0.6.1-next.1 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.4-next.1 - - @backstage/plugin-search-backend-module-pg@0.3.3-next.1 - - @backstage/plugin-azure-devops-backend@0.3.11-next.1 - - example-app@0.2.71-next.2 - - @backstage/catalog-model@1.0.2-next.0 - - @backstage/integration@1.2.0-next.1 - - @backstage/plugin-app-backend@0.3.32-next.1 - - @backstage/plugin-auth-backend@0.13.1-next.2 - - @backstage/plugin-auth-node@0.2.1-next.1 - - @backstage/plugin-badges-backend@0.1.26-next.1 - - @backstage/plugin-code-coverage-backend@0.1.30-next.1 - - @backstage/plugin-graphql-backend@0.1.22-next.1 - - @backstage/plugin-jenkins-backend@0.1.22-next.1 - - @backstage/plugin-kafka-backend@0.2.25-next.1 - - @backstage/plugin-permission-backend@0.5.7-next.1 - - @backstage/plugin-permission-common@0.6.1-next.0 - - @backstage/plugin-permission-node@0.6.1-next.1 - - @backstage/plugin-proxy-backend@0.2.26-next.1 - - @backstage/plugin-rollbar-backend@0.1.29-next.2 - - @backstage/plugin-search-backend@0.5.2-next.1 - - @backstage/plugin-tech-insights-backend@0.4.0-next.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.16-next.2 - - @backstage/plugin-tech-insights-node@0.3.0-next.2 - - @backstage/plugin-techdocs-backend@1.1.1-next.1 - - @backstage/plugin-todo-backend@0.1.29-next.1 - - @backstage/catalog-client@1.0.2-next.0 - -## 0.2.71-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.13.1-next.1 - - @backstage/plugin-tech-insights-backend@0.4.0-next.1 - - @backstage/backend-common@0.13.3-next.1 - - @backstage/plugin-tech-insights-node@0.3.0-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.16-next.1 - - @backstage/plugin-catalog-backend@1.1.2-next.1 - - @backstage/plugin-rollbar-backend@0.1.29-next.1 - - example-app@0.2.71-next.1 - -## 0.2.71-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.0 - - @backstage/plugin-scaffolder-backend@1.2.0-next.0 - - @backstage/plugin-kubernetes-backend@0.5.1-next.0 - - @backstage/integration@1.2.0-next.0 - - @backstage/plugin-catalog-backend@1.1.2-next.0 - - @backstage/plugin-app-backend@0.3.32-next.0 - - @backstage/plugin-auth-backend@0.13.1-next.0 - - @backstage/plugin-rollbar-backend@0.1.29-next.0 - - @backstage/plugin-techdocs-backend@1.1.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.4-next.0 - - @backstage/plugin-jenkins-backend@0.1.22-next.0 - - @backstage/plugin-search-backend@0.5.2-next.0 - - @backstage/backend-tasks@0.3.1-next.0 - - @backstage/plugin-auth-node@0.2.1-next.0 - - example-app@0.2.71-next.0 - - @backstage/plugin-azure-devops-backend@0.3.11-next.0 - - @backstage/plugin-badges-backend@0.1.26-next.0 - - @backstage/plugin-code-coverage-backend@0.1.30-next.0 - - @backstage/plugin-graphql-backend@0.1.22-next.0 - - @backstage/plugin-kafka-backend@0.2.25-next.0 - - @backstage/plugin-permission-backend@0.5.7-next.0 - - @backstage/plugin-permission-node@0.6.1-next.0 - - @backstage/plugin-proxy-backend@0.2.26-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.7-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.3-next.0 - - @backstage/plugin-search-backend-node@0.6.1-next.0 - - @backstage/plugin-tech-insights-backend@0.3.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.16-next.0 - - @backstage/plugin-tech-insights-node@0.2.10-next.0 - - @backstage/plugin-todo-backend@0.1.29-next.0 - -## 0.2.70 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0 - - @backstage/plugin-techdocs-backend@1.1.0 - - @backstage/plugin-scaffolder-backend@1.1.0 - - @backstage/integration@1.1.0 - - @backstage/plugin-search-backend@0.5.0 - - @backstage/plugin-auth-backend@0.13.0 - - @backstage/backend-tasks@0.3.0 - - @backstage/plugin-permission-common@0.6.0 - - @backstage/plugin-permission-node@0.6.0 - - @backstage/catalog-model@1.0.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.15 - - @backstage/plugin-kafka-backend@0.2.24 - - @backstage/plugin-auth-node@0.2.0 - - @backstage/plugin-jenkins-backend@0.1.20 - - @backstage/plugin-badges-backend@0.1.25 - - @backstage/plugin-tech-insights-node@0.2.9 - - @backstage/plugin-todo-backend@0.1.28 - - @backstage/backend-common@0.13.2 - - @backstage/plugin-kubernetes-backend@0.5.0 - - @backstage/plugin-search-backend-node@0.6.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.3 - - @backstage/plugin-search-backend-module-pg@0.3.2 - - @backstage/plugin-permission-backend@0.5.6 - - @backstage/plugin-tech-insights-backend@0.3.0 - - @backstage/plugin-azure-devops-backend@0.3.10 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.6 - - example-app@0.2.70 - - @backstage/catalog-client@1.0.1 - - @backstage/plugin-app-backend@0.3.31 - - @backstage/plugin-code-coverage-backend@0.1.29 - - @backstage/plugin-graphql-backend@0.1.21 - - @backstage/plugin-proxy-backend@0.2.25 - - @backstage/plugin-rollbar-backend@0.1.28 - -## 0.2.70-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.13.0-next.2 - - @backstage/plugin-catalog-backend@1.1.0-next.3 - - @backstage/plugin-kafka-backend@0.2.24-next.1 - - @backstage/plugin-search-backend@0.5.0-next.2 - - @backstage/plugin-permission-common@0.6.0-next.1 - - @backstage/plugin-permission-node@0.6.0-next.2 - - @backstage/plugin-jenkins-backend@0.1.20-next.2 - - @backstage/plugin-todo-backend@0.1.28-next.2 - - @backstage/backend-common@0.13.2-next.2 - - @backstage/plugin-kubernetes-backend@0.5.0-next.1 - - @backstage/plugin-search-backend-node@0.6.0-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.6-next.2 - - @backstage/integration@1.1.0-next.2 - - @backstage/plugin-techdocs-backend@1.1.0-next.2 - - example-app@0.2.70-next.2 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.3-next.1 - - @backstage/plugin-search-backend-module-pg@0.3.2-next.1 - - @backstage/plugin-app-backend@0.3.31-next.1 - -## 0.2.70-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0-next.1 - - @backstage/plugin-techdocs-backend@1.0.1-next.1 - - @backstage/plugin-scaffolder-backend@1.1.0-next.1 - - @backstage/integration@1.1.0-next.1 - - @backstage/plugin-search-backend@0.5.0-next.1 - - @backstage/backend-tasks@0.3.0-next.1 - - @backstage/plugin-permission-common@0.6.0-next.0 - - @backstage/plugin-permission-node@0.6.0-next.1 - - @backstage/plugin-badges-backend@0.1.25-next.1 - - @backstage/plugin-tech-insights-node@0.2.9-next.1 - - @backstage/plugin-permission-backend@0.5.6-next.1 - - @backstage/backend-common@0.13.2-next.1 - - @backstage/plugin-auth-backend@0.13.0-next.1 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.15-next.1 - - @backstage/plugin-tech-insights-backend@0.3.0-next.1 - - @backstage/plugin-jenkins-backend@0.1.20-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.6-next.1 - - @backstage/plugin-code-coverage-backend@0.1.29-next.1 - - @backstage/plugin-todo-backend@0.1.28-next.1 - - example-app@0.2.70-next.1 - -## 0.2.70-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.0.1-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.15-next.0 - - @backstage/plugin-search-backend@0.5.0-next.0 - - @backstage/plugin-auth-node@0.2.0-next.0 - - @backstage/plugin-auth-backend@0.13.0-next.0 - - @backstage/plugin-catalog-backend@1.0.1-next.0 - - @backstage/plugin-search-backend-node@0.5.3-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.3-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.2-next.0 - - @backstage/backend-common@0.13.2-next.0 - - @backstage/integration@1.0.1-next.0 - - @backstage/plugin-tech-insights-backend@0.2.11-next.0 - - @backstage/plugin-techdocs-backend@1.0.1-next.0 - - @backstage/plugin-jenkins-backend@0.1.20-next.0 - - example-app@0.2.70-next.0 - - @backstage/catalog-client@1.0.1-next.0 - - @backstage/plugin-badges-backend@0.1.25-next.0 - - @backstage/plugin-code-coverage-backend@0.1.29-next.0 - - @backstage/plugin-kafka-backend@0.2.24-next.0 - - @backstage/plugin-kubernetes-backend@0.4.14-next.0 - - @backstage/plugin-scaffolder-backend@1.0.1-next.0 - - @backstage/plugin-todo-backend@0.1.28-next.0 - - @backstage/plugin-app-backend@0.3.31-next.0 - - @backstage/plugin-permission-backend@0.5.6-next.0 - - @backstage/plugin-permission-node@0.5.6-next.0 - - @backstage/backend-tasks@0.2.2-next.0 - - @backstage/plugin-azure-devops-backend@0.3.10-next.0 - - @backstage/plugin-graphql-backend@0.1.21-next.0 - - @backstage/plugin-proxy-backend@0.2.25-next.0 - - @backstage/plugin-rollbar-backend@0.1.28-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.6-next.0 - - @backstage/plugin-tech-insights-node@0.2.9-next.0 - -## 0.2.69 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-app-backend@0.3.30 - - @backstage/plugin-azure-devops-backend@0.3.9 - - @backstage/plugin-badges-backend@0.1.24 - - @backstage/plugin-catalog-backend@1.0.0 - - @backstage/plugin-jenkins-backend@0.1.19 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.5 - - @backstage/plugin-tech-insights-backend@0.2.10 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.14 - - @backstage/plugin-todo-backend@0.1.27 - - @backstage/plugin-kubernetes-backend@0.4.13 - - @backstage/plugin-scaffolder-backend@1.0.0 - - @backstage/backend-common@0.13.1 - - @backstage/backend-tasks@0.2.1 - - @backstage/plugin-auth-backend@0.12.2 - - @backstage/plugin-code-coverage-backend@0.1.28 - - @backstage/catalog-model@1.0.0 - - @backstage/integration@1.0.0 - - @backstage/catalog-client@1.0.0 - - @backstage/config@1.0.0 - - @backstage/plugin-techdocs-backend@1.0.0 - - @backstage/plugin-permission-common@0.5.3 - - @backstage/plugin-search-backend-node@0.5.2 - - example-app@0.2.69 - - @backstage/plugin-auth-node@0.1.6 - - @backstage/plugin-graphql-backend@0.1.20 - - @backstage/plugin-kafka-backend@0.2.23 - - @backstage/plugin-permission-backend@0.5.5 - - @backstage/plugin-permission-node@0.5.5 - - @backstage/plugin-proxy-backend@0.2.24 - - @backstage/plugin-rollbar-backend@0.1.27 - - @backstage/plugin-search-backend@0.4.8 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.2 - - @backstage/plugin-tech-insights-node@0.2.8 - -## 0.2.68 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.0 - - @backstage/backend-tasks@0.2.0 - - @backstage/plugin-app-backend@0.3.29 - - @backstage/plugin-auth-backend@0.12.1 - - @backstage/plugin-catalog-backend@0.24.0 - - @backstage/plugin-scaffolder-backend@0.18.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.4 - - @backstage/plugin-kubernetes-backend@0.4.12 - - @backstage/plugin-rollbar-backend@0.1.26 - - @backstage/plugin-techdocs-backend@0.14.2 - - @backstage/catalog-model@0.13.0 - - @backstage/plugin-badges-backend@0.1.23 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.1 - - @backstage/plugin-search-backend-module-pg@0.3.1 - - @backstage/plugin-search-backend-node@0.5.1 - - @backstage/plugin-search-backend@0.4.7 - - @backstage/catalog-client@0.9.0 - - example-app@0.2.68 - - @backstage/plugin-auth-node@0.1.5 - - @backstage/plugin-azure-devops-backend@0.3.8 - - @backstage/plugin-code-coverage-backend@0.1.27 - - @backstage/plugin-graphql-backend@0.1.19 - - @backstage/plugin-jenkins-backend@0.1.18 - - @backstage/plugin-kafka-backend@0.2.22 - - @backstage/plugin-permission-backend@0.5.4 - - @backstage/plugin-permission-node@0.5.4 - - @backstage/plugin-proxy-backend@0.2.23 - - @backstage/plugin-tech-insights-backend@0.2.9 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.13 - - @backstage/plugin-tech-insights-node@0.2.7 - - @backstage/plugin-todo-backend@0.1.26 - -## 0.2.68-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.0-next.0 - - @backstage/backend-tasks@0.2.0-next.0 - - @backstage/plugin-app-backend@0.3.29-next.0 - - @backstage/plugin-auth-backend@0.12.1-next.0 - - @backstage/plugin-catalog-backend@0.24.0-next.0 - - @backstage/plugin-scaffolder-backend@0.18.0-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.4-next.0 - - @backstage/plugin-kubernetes-backend@0.4.12-next.0 - - @backstage/plugin-rollbar-backend@0.1.26-next.0 - - @backstage/plugin-techdocs-backend@0.14.2-next.0 - - @backstage/catalog-model@0.13.0-next.0 - - @backstage/plugin-badges-backend@0.1.23-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.1-next.0 - - @backstage/plugin-search-backend-module-pg@0.3.1-next.0 - - @backstage/plugin-search-backend-node@0.5.1-next.0 - - @backstage/plugin-search-backend@0.4.7-next.0 - - @backstage/catalog-client@0.9.0-next.0 - - @backstage/plugin-auth-node@0.1.5-next.0 - - @backstage/plugin-azure-devops-backend@0.3.8-next.0 - - @backstage/plugin-code-coverage-backend@0.1.27-next.0 - - @backstage/plugin-graphql-backend@0.1.19-next.0 - - @backstage/plugin-jenkins-backend@0.1.18-next.0 - - @backstage/plugin-kafka-backend@0.2.22-next.0 - - @backstage/plugin-permission-backend@0.5.4-next.0 - - @backstage/plugin-permission-node@0.5.4-next.0 - - @backstage/plugin-proxy-backend@0.2.23-next.0 - - @backstage/plugin-tech-insights-backend@0.2.9-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.13-next.0 - - @backstage/plugin-tech-insights-node@0.2.7-next.0 - - @backstage/plugin-todo-backend@0.1.26-next.0 - - example-app@0.2.68-next.0 - -## 0.2.67 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@0.12.0 - - @backstage/catalog-client@0.8.0 - - @backstage/plugin-catalog-backend@0.23.0 - - @backstage/backend-common@0.12.0 - - @backstage/plugin-scaffolder-backend@0.17.3 - - @backstage/plugin-techdocs-backend@0.14.1 - - @backstage/plugin-auth-backend@0.12.0 - - @backstage/plugin-badges-backend@0.1.22 - - @backstage/plugin-code-coverage-backend@0.1.26 - - @backstage/plugin-jenkins-backend@0.1.17 - - @backstage/plugin-todo-backend@0.1.25 - - @backstage/integration@0.8.0 - - @backstage/plugin-permission-common@0.5.2 - - @backstage/plugin-permission-node@0.5.3 - - @backstage/plugin-search-backend-node@0.5.0 - - @backstage/plugin-search-backend-module-pg@0.3.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.1.0 - - @backstage/plugin-tech-insights-backend@0.2.8 - - example-app@0.2.67 - - @backstage/plugin-auth-node@0.1.4 - - @backstage/plugin-kafka-backend@0.2.21 - - @backstage/plugin-kubernetes-backend@0.4.11 - - @backstage/backend-tasks@0.1.10 - - @backstage/plugin-app-backend@0.3.28 - - @backstage/plugin-azure-devops-backend@0.3.7 - - @backstage/plugin-graphql-backend@0.1.18 - - @backstage/plugin-permission-backend@0.5.3 - - @backstage/plugin-proxy-backend@0.2.22 - - @backstage/plugin-rollbar-backend@0.1.25 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.3 - - @backstage/plugin-search-backend@0.4.6 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.12 - - @backstage/plugin-tech-insights-node@0.2.6 - -## 0.2.66 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.11.0 - - @backstage/plugin-catalog-backend@0.22.0 - - @backstage/plugin-scaffolder-backend@0.17.0 - - @backstage/plugin-graphql-backend@0.1.17 - - @backstage/plugin-auth-backend@0.11.0 - - @backstage/plugin-kubernetes-backend@0.4.10 - - @backstage/plugin-code-coverage-backend@0.1.25 - - @backstage/plugin-jenkins-backend@0.1.16 - - @backstage/plugin-tech-insights-backend@0.2.7 - - @backstage/plugin-todo-backend@0.1.24 - - @backstage/catalog-model@0.11.0 - - @backstage/catalog-client@0.7.2 - - @backstage/plugin-badges-backend@0.1.21 - - @backstage/backend-tasks@0.1.9 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.2 - - @backstage/plugin-techdocs-backend@0.14.0 - - @backstage/plugin-permission-node@0.5.2 - - @backstage/integration@0.7.5 - - example-app@0.2.66 - - @backstage/plugin-app-backend@0.3.27 - - @backstage/plugin-auth-node@0.1.3 - - @backstage/plugin-azure-devops-backend@0.3.6 - - @backstage/plugin-kafka-backend@0.2.20 - - @backstage/plugin-permission-backend@0.5.2 - - @backstage/plugin-proxy-backend@0.2.21 - - @backstage/plugin-rollbar-backend@0.1.24 - - @backstage/plugin-search-backend@0.4.5 - - @backstage/plugin-search-backend-module-pg@0.2.9 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.11 - - @backstage/plugin-tech-insights-node@0.2.5 - -## 0.2.66 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.10.9 - - @backstage/backend-tasks@0.1.8 - - @backstage/catalog-client@0.7.1 - - @backstage/catalog-model@0.10.1 - - @backstage/config@0.1.15 - - @backstage/integration@0.7.4 - - @backstage/plugin-app-backend@0.3.26 - - @backstage/plugin-auth-backend@0.10.2 - - @backstage/plugin-auth-node@0.1.2 - - @backstage/plugin-azure-devops-backend@0.3.5 - - @backstage/plugin-badges-backend@0.1.20 - - @backstage/plugin-catalog-backend@0.21.5 - - @backstage/plugin-code-coverage-backend@0.1.24 - - @backstage/plugin-graphql-backend@0.1.16 - - @backstage/plugin-jenkins-backend@0.1.15 - - @backstage/plugin-kafka-backend@0.2.19 - - @backstage/plugin-kubernetes-backend@0.4.9 - - @backstage/plugin-permission-backend@0.5.1 - - @backstage/plugin-permission-common@0.5.1 - - @backstage/plugin-permission-node@0.5.1 - - @backstage/plugin-proxy-backend@0.2.20 - - @backstage/plugin-rollbar-backend@0.1.23 - - @backstage/plugin-scaffolder-backend@0.16.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.1 - - @backstage/plugin-search-backend@0.4.4 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.10 - - @backstage/plugin-search-backend-module-pg@0.2.8 - - @backstage/plugin-search-backend-node@0.4.7 - - @backstage/plugin-tech-insights-backend@0.2.6 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.10 - - @backstage/plugin-tech-insights-node@0.2.4 - - @backstage/plugin-techdocs-backend@0.13.5 - - @backstage/plugin-todo-backend@0.1.23 - -## 0.2.65 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-techdocs-backend@0.13.4 - - @backstage/plugin-catalog-backend@0.21.4 - - @backstage/backend-common@0.10.8 - - @backstage/catalog-client@0.7.0 - - @backstage/integration@0.7.3 - - @backstage/plugin-auth-backend@0.10.1 - - @backstage/plugin-auth-node@0.1.1 - - @backstage/plugin-permission-backend@0.5.0 - - @backstage/plugin-permission-common@0.5.0 - - @backstage/plugin-rollbar-backend@0.1.22 - - @backstage/plugin-scaffolder-backend@0.16.0 - - @backstage/backend-tasks@0.1.7 - - @backstage/catalog-model@0.10.0 - - @backstage/config@0.1.14 - - @backstage/plugin-app-backend@0.3.25 - - @backstage/plugin-azure-devops-backend@0.3.4 - - @backstage/plugin-badges-backend@0.1.19 - - @backstage/plugin-code-coverage-backend@0.1.23 - - @backstage/plugin-graphql-backend@0.1.15 - - @backstage/plugin-jenkins-backend@0.1.14 - - @backstage/plugin-kafka-backend@0.2.18 - - @backstage/plugin-kubernetes-backend@0.4.8 - - @backstage/plugin-permission-node@0.5.0 - - @backstage/plugin-proxy-backend@0.2.19 - - @backstage/plugin-scaffolder-backend-module-rails@0.3.0 - - @backstage/plugin-search-backend@0.4.3 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.9 - - @backstage/plugin-search-backend-module-pg@0.2.7 - - @backstage/plugin-search-backend-node@0.4.6 - - @backstage/plugin-tech-insights-backend@0.2.5 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.9 - - @backstage/plugin-tech-insights-node@0.2.3 - - @backstage/plugin-todo-backend@0.1.22 - - example-app@0.2.65 - -## 0.2.64 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-client@0.6.0 - - @backstage/plugin-auth-backend@0.10.0 - - @backstage/backend-common@0.10.7 - - @backstage/backend-tasks@0.1.6 - - @backstage/plugin-app-backend@0.3.24 - - @backstage/plugin-catalog-backend@0.21.3 - - @backstage/plugin-code-coverage-backend@0.1.22 - - @backstage/plugin-scaffolder-backend@0.15.24 - - @backstage/plugin-search-backend-module-pg@0.2.6 - - @backstage/plugin-tech-insights-backend@0.2.4 - - @backstage/plugin-techdocs-backend@0.13.3 - - @backstage/plugin-auth-node@0.1.0 - - @backstage/plugin-permission-backend@0.4.3 - - @backstage/plugin-search-backend@0.4.2 - - @backstage/plugin-badges-backend@0.1.18 - - @backstage/plugin-jenkins-backend@0.1.13 - - @backstage/plugin-todo-backend@0.1.21 - - @backstage/plugin-permission-node@0.4.3 - - example-app@0.2.64 - - @backstage/plugin-azure-devops-backend@0.3.3 - - @backstage/plugin-graphql-backend@0.1.14 - - @backstage/plugin-kafka-backend@0.2.17 - - @backstage/plugin-kubernetes-backend@0.4.7 - - @backstage/plugin-proxy-backend@0.2.18 - - @backstage/plugin-rollbar-backend@0.1.21 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.6 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.8 - - @backstage/plugin-tech-insights-node@0.2.2 - -## 0.2.64-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.10.0-next.0 - - @backstage/backend-common@0.10.7-next.0 - - @backstage/backend-tasks@0.1.6-next.0 - - @backstage/plugin-app-backend@0.3.24-next.0 - - @backstage/plugin-catalog-backend@0.21.3-next.0 - - @backstage/plugin-code-coverage-backend@0.1.22-next.0 - - @backstage/plugin-scaffolder-backend@0.15.24-next.0 - - @backstage/plugin-search-backend-module-pg@0.2.6-next.0 - - @backstage/plugin-tech-insights-backend@0.2.4-next.0 - - @backstage/plugin-techdocs-backend@0.13.3-next.0 - - example-app@0.2.64-next.0 - - @backstage/plugin-azure-devops-backend@0.3.3-next.0 - - @backstage/plugin-badges-backend@0.1.18-next.0 - - @backstage/plugin-graphql-backend@0.1.14-next.0 - - @backstage/plugin-jenkins-backend@0.1.13-next.0 - - @backstage/plugin-kafka-backend@0.2.17-next.0 - - @backstage/plugin-kubernetes-backend@0.4.7-next.0 - - @backstage/plugin-permission-backend@0.4.3-next.0 - - @backstage/plugin-permission-node@0.4.3-next.0 - - @backstage/plugin-proxy-backend@0.2.18-next.0 - - @backstage/plugin-rollbar-backend@0.1.21-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.6-next.0 - - @backstage/plugin-search-backend@0.4.2-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.8-next.0 - - @backstage/plugin-tech-insights-node@0.2.2-next.0 - - @backstage/plugin-todo-backend@0.1.21-next.0 - -## 0.2.63 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.9.0 - - @backstage/plugin-rollbar-backend@0.1.20 - - @backstage/plugin-catalog-backend@0.21.2 - - @backstage/plugin-scaffolder-backend@0.15.23 - - @backstage/plugin-proxy-backend@0.2.17 - - @backstage/backend-common@0.10.6 - - example-app@0.2.63 - - @backstage/backend-tasks@0.1.5 - - @backstage/plugin-app-backend@0.3.23 - - @backstage/plugin-azure-devops-backend@0.3.2 - - @backstage/plugin-badges-backend@0.1.17 - - @backstage/plugin-code-coverage-backend@0.1.21 - - @backstage/plugin-graphql-backend@0.1.13 - - @backstage/plugin-jenkins-backend@0.1.12 - - @backstage/plugin-kafka-backend@0.2.16 - - @backstage/plugin-kubernetes-backend@0.4.6 - - @backstage/plugin-permission-backend@0.4.2 - - @backstage/plugin-permission-node@0.4.2 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.5 - - @backstage/plugin-search-backend@0.4.1 - - @backstage/plugin-search-backend-module-pg@0.2.5 - - @backstage/plugin-tech-insights-backend@0.2.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.7 - - @backstage/plugin-tech-insights-node@0.2.1 - - @backstage/plugin-techdocs-backend@0.13.2 - - @backstage/plugin-todo-backend@0.1.20 - -## 0.2.63-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.9.0-next.1 - - @backstage/backend-common@0.10.6-next.0 - - example-app@0.2.63-next.1 - - @backstage/plugin-catalog-backend@0.21.2-next.1 - - @backstage/plugin-techdocs-backend@0.13.2-next.0 - - @backstage/backend-tasks@0.1.5-next.0 - - @backstage/plugin-app-backend@0.3.23-next.0 - - @backstage/plugin-azure-devops-backend@0.3.2-next.0 - - @backstage/plugin-badges-backend@0.1.17-next.0 - - @backstage/plugin-code-coverage-backend@0.1.21-next.0 - - @backstage/plugin-graphql-backend@0.1.13-next.0 - - @backstage/plugin-jenkins-backend@0.1.12-next.0 - - @backstage/plugin-kafka-backend@0.2.16-next.0 - - @backstage/plugin-kubernetes-backend@0.4.6-next.0 - - @backstage/plugin-permission-backend@0.4.2-next.1 - - @backstage/plugin-permission-node@0.4.2-next.1 - - @backstage/plugin-proxy-backend@0.2.17-next.1 - - @backstage/plugin-rollbar-backend@0.1.20-next.1 - - @backstage/plugin-scaffolder-backend@0.15.23-next.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.5-next.1 - - @backstage/plugin-search-backend@0.4.1-next.1 - - @backstage/plugin-search-backend-module-pg@0.2.5-next.0 - - @backstage/plugin-tech-insights-backend@0.2.3-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.7-next.0 - - @backstage/plugin-tech-insights-node@0.2.1-next.0 - - @backstage/plugin-todo-backend@0.1.20-next.0 - -## 0.2.63-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.9.0-next.0 - - @backstage/plugin-rollbar-backend@0.1.20-next.0 - - @backstage/plugin-catalog-backend@0.21.2-next.0 - - @backstage/plugin-scaffolder-backend@0.15.23-next.0 - - @backstage/plugin-proxy-backend@0.2.17-next.0 - - @backstage/plugin-permission-backend@0.4.2-next.0 - - @backstage/plugin-permission-node@0.4.2-next.0 - - @backstage/plugin-search-backend@0.4.1-next.0 - - example-app@0.2.63-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.5-next.0 - -## 0.2.62 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-node@0.4.5 - - @backstage/plugin-catalog-backend@0.21.1 - - @backstage/plugin-scaffolder-backend@0.15.22 - - @backstage/plugin-kubernetes-backend@0.4.5 - - @backstage/plugin-auth-backend@0.8.0 - - @backstage/plugin-search-backend@0.4.0 - - @backstage/plugin-tech-insights-backend@0.2.2 - - @backstage/plugin-techdocs-backend@0.13.1 - - @backstage/backend-common@0.10.5 - - example-app@0.2.62 - - @backstage/plugin-permission-backend@0.4.1 - - @backstage/plugin-permission-node@0.4.1 - -## 0.2.61 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.7.0 - - @backstage/plugin-permission-backend@0.4.0 - - @backstage/plugin-catalog-backend@0.21.0 - - @backstage/plugin-kubernetes-backend@0.4.4 - - @backstage/integration@0.7.2 - - @backstage/plugin-permission-common@0.4.0 - - @backstage/plugin-search-backend@0.3.1 - - @backstage/plugin-techdocs-backend@0.13.0 - - @backstage/backend-common@0.10.4 - - @backstage/config@0.1.13 - - @backstage/plugin-app-backend@0.3.22 - - @backstage/plugin-permission-node@0.4.0 - - @backstage/plugin-scaffolder-backend@0.15.21 - - @backstage/plugin-tech-insights-backend@0.2.0 - - @backstage/plugin-tech-insights-node@0.2.0 - - @backstage/catalog-model@0.9.10 - - example-app@0.2.61 - - @backstage/backend-tasks@0.1.4 - - @backstage/catalog-client@0.5.5 - - @backstage/plugin-azure-devops-backend@0.3.1 - - @backstage/plugin-badges-backend@0.1.16 - - @backstage/plugin-code-coverage-backend@0.1.20 - - @backstage/plugin-graphql-backend@0.1.12 - - @backstage/plugin-jenkins-backend@0.1.11 - - @backstage/plugin-kafka-backend@0.2.15 - - @backstage/plugin-proxy-backend@0.2.16 - - @backstage/plugin-rollbar-backend@0.1.19 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.4 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.8 - - @backstage/plugin-search-backend-module-pg@0.2.4 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.6 - - @backstage/plugin-todo-backend@0.1.19 - -## 0.2.61-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.7.0-next.0 - - @backstage/plugin-permission-backend@0.4.0-next.0 - - @backstage/plugin-catalog-backend@0.21.0-next.0 - - @backstage/plugin-permission-common@0.4.0-next.0 - - @backstage/backend-common@0.10.4-next.0 - - @backstage/config@0.1.13-next.0 - - @backstage/plugin-app-backend@0.3.22-next.0 - - @backstage/plugin-permission-node@0.4.0-next.0 - - @backstage/plugin-tech-insights-backend@0.2.0-next.0 - - @backstage/plugin-tech-insights-node@0.2.0-next.0 - - @backstage/catalog-model@0.9.10-next.0 - - example-app@0.2.61-next.0 - - @backstage/plugin-scaffolder-backend@0.15.21-next.0 - - @backstage/backend-tasks@0.1.4-next.0 - - @backstage/catalog-client@0.5.5-next.0 - - @backstage/integration@0.7.2-next.0 - - @backstage/plugin-azure-devops-backend@0.3.1-next.0 - - @backstage/plugin-badges-backend@0.1.16-next.0 - - @backstage/plugin-code-coverage-backend@0.1.20-next.0 - - @backstage/plugin-graphql-backend@0.1.12-next.0 - - @backstage/plugin-jenkins-backend@0.1.11-next.0 - - @backstage/plugin-kafka-backend@0.2.15-next.0 - - @backstage/plugin-kubernetes-backend@0.4.4-next.0 - - @backstage/plugin-proxy-backend@0.2.16-next.0 - - @backstage/plugin-rollbar-backend@0.1.19-next.0 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.4-next.0 - - @backstage/plugin-search-backend@0.3.1-next.0 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.8-next.0 - - @backstage/plugin-search-backend-module-pg@0.2.4-next.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.6-next.0 - - @backstage/plugin-techdocs-backend@0.12.4-next.0 - - @backstage/plugin-todo-backend@0.1.19-next.0 - -## 0.2.60 - -### Patch Changes - -- Updated dependencies - - @backstage/config@0.1.12 - - @backstage/plugin-scaffolder-backend@0.15.20 - - @backstage/integration@0.7.1 - - @backstage/backend-common@0.10.3 - - @backstage/plugin-todo-backend@0.1.18 - - @backstage/plugin-catalog-backend@0.20.0 - - @backstage/plugin-tech-insights-backend@0.1.5 - - @backstage/plugin-permission-node@0.3.0 - - @backstage/plugin-auth-backend@0.6.2 - - @backstage/plugin-code-coverage-backend@0.1.19 - - @backstage/plugin-search-backend-node@0.4.4 - - @backstage/plugin-techdocs-backend@0.12.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.5 - - @backstage/plugin-permission-backend@0.3.0 - - @backstage/plugin-graphql-backend@0.1.11 - - @backstage/plugin-kubernetes-backend@0.4.3 - - example-app@0.2.60 - - @backstage/backend-tasks@0.1.3 - - @backstage/catalog-client@0.5.4 - - @backstage/catalog-model@0.9.9 - - @backstage/plugin-badges-backend@0.1.15 - - @backstage/plugin-kafka-backend@0.2.14 - - @backstage/plugin-permission-common@0.3.1 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.3 - -## 0.2.59 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-rollbar-backend@0.1.18 - - @backstage/plugin-auth-backend@0.6.0 - - @backstage/backend-common@0.10.1 - - @backstage/plugin-app-backend@0.3.21 - - @backstage/plugin-catalog-backend@0.19.4 - - @backstage/plugin-scaffolder-backend@0.15.19 - - @backstage/integration@0.7.0 - - @backstage/plugin-techdocs-backend@0.12.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.4 - - @backstage/plugin-permission-backend@0.2.3 - - @backstage/plugin-permission-node@0.2.3 - - @backstage/plugin-code-coverage-backend@0.1.18 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.2 - - @backstage/plugin-todo-backend@0.1.17 - -## 0.2.58 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.10.0 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.1 - - @backstage/catalog-client@0.5.3 - - @backstage/plugin-rollbar-backend@0.1.17 - - @backstage/plugin-auth-backend@0.5.2 - - @backstage/plugin-permission-common@0.3.0 - - @backstage/plugin-search-backend@0.3.0 - - @backstage/plugin-techdocs-backend@0.12.1 - - @backstage/plugin-jenkins-backend@0.1.10 - - @backstage/plugin-permission-node@0.2.2 - - example-app@0.2.58 - - @backstage/plugin-app-backend@0.3.20 - - @backstage/plugin-azure-devops-backend@0.2.6 - - @backstage/plugin-badges-backend@0.1.14 - - @backstage/plugin-catalog-backend@0.19.3 - - @backstage/plugin-code-coverage-backend@0.1.17 - - @backstage/plugin-graphql-backend@0.1.10 - - @backstage/plugin-kafka-backend@0.2.13 - - @backstage/plugin-kubernetes-backend@0.4.1 - - @backstage/plugin-permission-backend@0.2.2 - - @backstage/plugin-proxy-backend@0.2.15 - - @backstage/plugin-scaffolder-backend@0.15.18 - - @backstage/plugin-search-backend-module-pg@0.2.3 - - @backstage/plugin-tech-insights-backend@0.1.4 - - @backstage/plugin-tech-insights-node@0.1.2 - - @backstage/plugin-todo-backend@0.1.16 - -## 0.2.57 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-search-backend-module-elasticsearch@0.0.7 - - @backstage/plugin-catalog-backend@0.19.2 - - @backstage/plugin-scaffolder-backend@0.15.17 - - @backstage/backend-common@0.9.14 - - @backstage/plugin-azure-devops-backend@0.2.5 - - @backstage/plugin-auth-backend@0.5.1 - - @backstage/catalog-model@0.9.8 - - example-app@0.2.57 - -## 0.2.56 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.5.0 - - @backstage/plugin-scaffolder-backend@0.15.16 - - @backstage/plugin-kubernetes-backend@0.4.0 - - @backstage/backend-common@0.9.13 - - @backstage/plugin-catalog-backend@0.19.1 - - @backstage/plugin-search-backend@0.2.8 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.6 - - @backstage/plugin-search-backend-module-pg@0.2.2 - - @backstage/plugin-techdocs-backend@0.12.0 - - @backstage/plugin-todo-backend@0.1.15 - - @backstage/plugin-scaffolder-backend-module-rails@0.2.0 - - @backstage/plugin-azure-devops-backend@0.2.4 - - example-app@0.2.56 - -## 0.2.55 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@0.6.10 - - @backstage/plugin-scaffolder-backend@0.15.15 - - @backstage/plugin-auth-backend@0.4.10 - - @backstage/plugin-kubernetes-backend@0.3.20 - - @backstage/plugin-badges-backend@0.1.13 - - @backstage/plugin-catalog-backend@0.19.0 - - @backstage/plugin-code-coverage-backend@0.1.16 - - @backstage/plugin-jenkins-backend@0.1.9 - - @backstage/plugin-tech-insights-backend@0.1.3 - - @backstage/plugin-techdocs-backend@0.11.0 - - @backstage/plugin-todo-backend@0.1.14 - - @backstage/backend-common@0.9.12 - - @backstage/plugin-azure-devops-backend@0.2.3 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.2 - - @backstage/plugin-tech-insights-node@0.1.1 - - example-app@0.2.55 - -## 0.2.54 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.3.19 - - @backstage/plugin-tech-insights-backend@0.1.2 - - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.1 - - @backstage/plugin-auth-backend@0.4.9 - - @backstage/plugin-scaffolder-backend@0.15.14 - - @backstage/plugin-catalog-backend@0.18.0 - - @backstage/plugin-kafka-backend@0.2.12 - - @backstage/backend-common@0.9.11 - - @backstage/plugin-azure-devops-backend@0.2.2 - - @backstage/plugin-badges-backend@0.1.12 - - @backstage/plugin-code-coverage-backend@0.1.15 - - @backstage/plugin-jenkins-backend@0.1.8 - - @backstage/plugin-proxy-backend@0.2.14 - - @backstage/plugin-rollbar-backend@0.1.16 - - @backstage/plugin-search-backend@0.2.7 - - @backstage/plugin-techdocs-backend@0.10.9 - -## 0.2.52 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.9.9 - - @backstage/plugin-jenkins-backend@0.1.7 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.5 - - @backstage/plugin-scaffolder-backend@0.15.12 - - @backstage/plugin-azure-devops-backend@0.2.0 - - @backstage/catalog-client@0.5.1 - - @backstage/plugin-auth-backend@0.4.7 - - @backstage/plugin-catalog-backend@0.17.3 - - @backstage/plugin-scaffolder-backend-module-rails@0.1.7 - -## 0.2.50 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.4.4 - - @backstage/integration@0.6.8 - - @backstage/plugin-scaffolder-backend@0.15.8 - - @backstage/plugin-catalog-backend@0.17.0 - - @backstage/plugin-azure-devops-backend@0.1.2 - - @backstage/plugin-code-coverage-backend@0.1.13 - - @backstage/plugin-kubernetes-backend@0.3.17 - - example-app@0.2.50 - -## 0.2.49 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@0.16.0 - - @backstage/catalog-model@0.9.4 - - @backstage/plugin-proxy-backend@0.2.13 - - @backstage/plugin-auth-backend@0.4.3 - - @backstage/backend-common@0.9.6 - - @backstage/catalog-client@0.5.0 - - @backstage/integration@0.6.7 - - @backstage/plugin-scaffolder-backend@0.15.7 - - example-app@0.2.49 - - @backstage/plugin-badges-backend@0.1.11 - - @backstage/plugin-code-coverage-backend@0.1.12 - - @backstage/plugin-jenkins-backend@0.1.6 - - @backstage/plugin-techdocs-backend@0.10.4 - - @backstage/plugin-todo-backend@0.1.13 - -## 0.2.48 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.9.5 - - @backstage/plugin-catalog-backend@0.15.0 - - @backstage/plugin-azure-devops-backend@0.1.1 - - @backstage/integration@0.6.6 - - @backstage/plugin-auth-backend@0.4.2 - - example-app@0.2.48 - -## 0.2.47 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@0.14.0 - - @backstage/integration@0.6.5 - - @backstage/catalog-client@0.4.0 - - @backstage/catalog-model@0.9.3 - - @backstage/backend-common@0.9.4 - - @backstage/config@0.1.10 - - @backstage/plugin-kafka-backend@0.2.10 - - @backstage/plugin-kubernetes-backend@0.3.16 - - @backstage/plugin-rollbar-backend@0.1.15 - - @backstage/plugin-search-backend-module-pg@0.2.1 - - example-app@0.2.47 - - @backstage/plugin-auth-backend@0.4.1 - - @backstage/plugin-badges-backend@0.1.10 - - @backstage/plugin-code-coverage-backend@0.1.11 - - @backstage/plugin-jenkins-backend@0.1.5 - - @backstage/plugin-scaffolder-backend@0.15.6 - - @backstage/plugin-techdocs-backend@0.10.3 - - @backstage/plugin-todo-backend@0.1.12 - -## 0.2.46 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.4.0 - - @backstage/plugin-scaffolder-backend@0.15.5 - - @backstage/backend-common@0.9.3 - - @backstage/plugin-catalog-backend@0.13.8 - - @backstage/plugin-techdocs-backend@0.10.2 - - @backstage/integration@0.6.4 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.4 - - example-app@0.2.46 - -## 0.2.44 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@0.13.6 - - @backstage/plugin-scaffolder-backend@0.15.3 - - @backstage/plugin-techdocs-backend@0.10.1 - - @backstage/plugin-auth-backend@0.3.24 - - @backstage/integration@0.6.3 - - @backstage/plugin-search-backend@0.2.6 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.3 - - @backstage/plugin-search-backend-module-pg@0.2.0 - - @backstage/plugin-search-backend-node@0.4.2 - - @backstage/catalog-model@0.9.1 - - @backstage/backend-common@0.9.1 - - example-app@0.2.44 - -## 0.2.43 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.9.0 - - @backstage/plugin-catalog-backend@0.13.5 - - @backstage/plugin-search-backend-module-pg@0.1.3 - - @backstage/plugin-auth-backend@0.3.23 - - @backstage/plugin-scaffolder-backend@0.15.2 - - @backstage/integration@0.6.2 - - @backstage/config@0.1.8 - - @backstage/plugin-kubernetes-backend@0.3.15 - - @backstage/plugin-techdocs-backend@0.10.0 - - @backstage/plugin-jenkins-backend@0.1.4 - - @backstage/plugin-app-backend@0.3.16 - - @backstage/plugin-badges-backend@0.1.9 - - @backstage/plugin-code-coverage-backend@0.1.10 - - @backstage/plugin-graphql-backend@0.1.9 - - @backstage/plugin-kafka-backend@0.2.9 - - @backstage/plugin-proxy-backend@0.2.12 - - @backstage/plugin-rollbar-backend@0.1.14 - - @backstage/plugin-scaffolder-backend-module-rails@0.1.5 - - @backstage/plugin-search-backend@0.2.5 - - @backstage/plugin-todo-backend@0.1.11 - - example-app@0.2.43 - -## 0.2.41 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-auth-backend@0.3.20 - - @backstage/integration@0.6.0 - - @backstage/plugin-scaffolder-backend@0.15.0 - - @backstage/backend-common@0.8.9 - - @backstage/plugin-kubernetes-backend@0.3.14 - - @backstage/plugin-search-backend-module-elasticsearch@0.0.2 - - @backstage/plugin-search-backend-module-pg@0.1.1 - - @backstage/plugin-catalog-backend@0.13.2 - - @backstage/plugin-code-coverage-backend@0.1.9 - - @backstage/plugin-scaffolder-backend-module-rails@0.1.4 - - @backstage/plugin-techdocs-backend@0.9.2 - - @backstage/plugin-todo-backend@0.1.9 - - example-app@0.2.41 - -## 0.2.38 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-kubernetes-backend@0.3.11 - - @backstage/catalog-client@0.3.17 - - @backstage/plugin-auth-backend@0.3.18 - - @backstage/plugin-jenkins-backend@0.1.2 - - @backstage/backend-common@0.8.7 - - @backstage/plugin-techdocs-backend@0.9.0 - - @backstage/plugin-scaffolder-backend@0.14.1 - -## 0.2.37 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.8.6 - - @backstage/plugin-scaffolder-backend@0.14.0 - - @backstage/plugin-catalog-backend@0.13.0 - - @backstage/plugin-auth-backend@0.3.17 - - @backstage/plugin-scaffolder-backend-module-rails@0.1.3 - - @backstage/plugin-search-backend-node@0.4.0 - - @backstage/plugin-techdocs-backend@0.8.7 - - @backstage/plugin-app-backend@0.3.15 - - @backstage/plugin-kubernetes-backend@0.3.10 - - @backstage/plugin-rollbar-backend@0.1.13 - - example-app@0.2.37 - - @backstage/plugin-search-backend@0.2.3 - -## 0.2.36 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@0.5.8 - - @backstage/plugin-scaffolder-backend@0.13.0 - - @backstage/catalog-model@0.9.0 - - @backstage/plugin-catalog-backend@0.12.0 - - @backstage/backend-common@0.8.5 - - @backstage/plugin-search-backend-node@0.3.0 - - example-app@0.2.36 - - @backstage/plugin-scaffolder-backend-module-rails@0.1.2 - - @backstage/catalog-client@0.3.16 - - @backstage/plugin-auth-backend@0.3.16 - - @backstage/plugin-badges-backend@0.1.8 - - @backstage/plugin-code-coverage-backend@0.1.8 - - @backstage/plugin-kafka-backend@0.2.8 - - @backstage/plugin-kubernetes-backend@0.3.9 - - @backstage/plugin-techdocs-backend@0.8.6 - - @backstage/plugin-todo-backend@0.1.8 - - @backstage/plugin-search-backend@0.2.2 - -## 0.2.35 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-scaffolder-backend@0.12.4 - - @backstage/backend-common@0.8.4 - - @backstage/plugin-auth-backend@0.3.15 - - @backstage/plugin-catalog-backend@0.11.0 - - @backstage/plugin-techdocs-backend@0.8.5 - - @backstage/catalog-client@0.3.15 - - @backstage/plugin-kafka-backend@0.2.7 - -## 0.2.32 - -### Patch Changes - -- Updated dependencies [9c63be545] -- Updated dependencies [92963779b] -- Updated dependencies [27a9b503a] -- Updated dependencies [66c6bfebd] -- Updated dependencies [55a253de2] -- Updated dependencies [70bc30c5b] -- Updated dependencies [db1c8f93b] -- Updated dependencies [5aff84759] -- Updated dependencies [f26e6008f] -- Updated dependencies [eda9dbd5f] -- Updated dependencies [4f8cf50fe] -- Updated dependencies [875809a59] - - @backstage/plugin-catalog-backend@0.10.2 - - @backstage/backend-common@0.8.2 - - @backstage/catalog-model@0.8.2 - - @backstage/plugin-scaffolder-backend@0.12.0 - - @backstage/catalog-client@0.3.13 - - @backstage/plugin-search-backend-node@0.2.0 - - @backstage/plugin-search-backend@0.2.0 - - @backstage/plugin-proxy-backend@0.2.9 - - example-app@0.2.32 - -## 0.2.30 - -### Patch Changes - -- Updated dependencies [0fd4ea443] -- Updated dependencies [add62a455] -- Updated dependencies [260aaa684] -- Updated dependencies [704875e26] - - @backstage/plugin-catalog-backend@0.10.0 - - @backstage/catalog-client@0.3.12 - - @backstage/catalog-model@0.8.0 - - @backstage/plugin-scaffolder-backend@0.11.4 - - example-app@0.2.30 - - @backstage/plugin-auth-backend@0.3.12 - - @backstage/plugin-badges-backend@0.1.6 - - @backstage/plugin-code-coverage-backend@0.1.6 - - @backstage/plugin-kafka-backend@0.2.6 - - @backstage/plugin-kubernetes-backend@0.3.8 - - @backstage/plugin-techdocs-backend@0.8.2 - - @backstage/plugin-todo-backend@0.1.6 - -## 0.2.28 - -### Patch Changes - -- Updated dependencies [062bbf90f] -- Updated dependencies [22fd8ce2a] -- Updated dependencies [10c008a3a] -- Updated dependencies [82ca1ac22] -- Updated dependencies [f9fb4a205] -- Updated dependencies [9a207f052] -- Updated dependencies [16be1d093] -- Updated dependencies [fd39d4662] -- Updated dependencies [f9f9d633d] - - @backstage/plugin-scaffolder-backend@0.11.1 - - @backstage/backend-common@0.8.0 - - @backstage/catalog-model@0.7.9 - - @backstage/plugin-catalog-backend@0.9.0 - - @backstage/plugin-kubernetes-backend@0.3.7 - - example-app@0.2.28 - - @backstage/plugin-app-backend@0.3.13 - - @backstage/plugin-auth-backend@0.3.10 - - @backstage/plugin-badges-backend@0.1.4 - - @backstage/plugin-code-coverage-backend@0.1.5 - - @backstage/plugin-graphql-backend@0.1.8 - - @backstage/plugin-kafka-backend@0.2.5 - - @backstage/plugin-proxy-backend@0.2.8 - - @backstage/plugin-rollbar-backend@0.1.11 - - @backstage/plugin-search-backend@0.1.5 - - @backstage/plugin-techdocs-backend@0.8.1 - - @backstage/plugin-todo-backend@0.1.5 - -## 0.2.27 - -### Patch Changes - -- Updated dependencies [e0bfd3d44] -- Updated dependencies [e0bfd3d44] -- Updated dependencies [e0bfd3d44] -- Updated dependencies [38ca05168] -- Updated dependencies [b219821a0] -- Updated dependencies [69eefb5ae] -- Updated dependencies [f53fba29f] -- Updated dependencies [75c8cec39] -- Updated dependencies [227439a72] -- Updated dependencies [cdb3426e5] -- Updated dependencies [d8b81fd28] -- Updated dependencies [d1b1306d9] - - @backstage/plugin-scaffolder-backend@0.11.0 - - @backstage/backend-common@0.7.0 - - @backstage/plugin-techdocs-backend@0.8.0 - - @backstage/plugin-catalog-backend@0.8.2 - - @backstage/plugin-kubernetes-backend@0.3.6 - - @backstage/plugin-proxy-backend@0.2.7 - - @backstage/catalog-model@0.7.8 - - @backstage/config@0.1.5 - - @backstage/catalog-client@0.3.11 - - example-app@0.2.27 - - @backstage/plugin-app-backend@0.3.12 - - @backstage/plugin-auth-backend@0.3.9 - - @backstage/plugin-badges-backend@0.1.3 - - @backstage/plugin-code-coverage-backend@0.1.4 - - @backstage/plugin-graphql-backend@0.1.7 - - @backstage/plugin-kafka-backend@0.2.4 - - @backstage/plugin-rollbar-backend@0.1.10 - - @backstage/plugin-search-backend@0.1.4 - - @backstage/plugin-todo-backend@0.1.4 - -## 0.2.25 - -### Patch Changes - -- Updated dependencies [b9b2b4b76] -- Updated dependencies [84c54474d] -- Updated dependencies [49574a8a3] -- Updated dependencies [d367f63b5] -- Updated dependencies [5fe62f124] -- Updated dependencies [09b5fcf2e] -- Updated dependencies [55b2fc0c0] -- Updated dependencies [c42cd1daa] -- Updated dependencies [b42531cfe] -- Updated dependencies [c2306f898] - - @backstage/plugin-search-backend@0.1.3 - - @backstage/plugin-search-backend-node@0.1.3 - - @backstage/plugin-scaffolder-backend@0.10.0 - - @backstage/plugin-rollbar-backend@0.1.9 - - @backstage/backend-common@0.6.3 - - @backstage/plugin-catalog-backend@0.8.0 - - @backstage/plugin-code-coverage-backend@0.1.2 - - @backstage/plugin-kubernetes-backend@0.3.5 - - example-app@0.2.25 - -## 0.2.22 - -### Patch Changes - -- Updated dependencies [f03a52f5b] -- Updated dependencies [676ede643] -- Updated dependencies [1ac6a5233] -- Updated dependencies [2ab6f3ff0] -- Updated dependencies [0d55dcc74] -- Updated dependencies [29e1789e1] -- Updated dependencies [f1b2c1d2c] -- Updated dependencies [60e463c8d] -- Updated dependencies [676ede643] -- Updated dependencies [b196a4569] -- Updated dependencies [8488a1a96] -- Updated dependencies [37e3a69f5] -- Updated dependencies [6b2d54fd6] -- Updated dependencies [44590510d] -- Updated dependencies [164cc4c53] - - @backstage/plugin-kafka-backend@0.2.3 - - @backstage/plugin-catalog-backend@0.7.0 - - @backstage/plugin-kubernetes-backend@0.3.3 - - @backstage/plugin-scaffolder-backend@0.9.4 - - @backstage/plugin-auth-backend@0.3.7 - - @backstage/catalog-client@0.3.9 - - @backstage/plugin-todo-backend@0.1.3 - - @backstage/catalog-model@0.7.5 - - @backstage/backend-common@0.6.1 - -## 0.2.21 - -### Patch Changes - -- Updated dependencies [a2a3c7803] -- Updated dependencies [9f2e51e89] -- Updated dependencies [4d248725e] -- Updated dependencies [aaeb7ecf3] -- Updated dependencies [449776cd6] -- Updated dependencies [91e87c055] -- Updated dependencies [36d933ec5] -- Updated dependencies [113d3d59e] -- Updated dependencies [f47e11427] -- Updated dependencies [c862b3f36] - - @backstage/plugin-kubernetes-backend@0.3.2 - - @backstage/plugin-scaffolder-backend@0.9.3 - - @backstage/plugin-search-backend@0.1.2 - - @backstage/plugin-search-backend-node@0.1.2 - - @backstage/plugin-techdocs-backend@0.7.0 - - @backstage/plugin-auth-backend@0.3.6 - - @backstage/plugin-todo-backend@0.1.2 - - @backstage/plugin-catalog-backend@0.6.7 - - example-app@0.2.21 - -## 0.2.20 - -### Patch Changes - -- Updated dependencies [010aed784] -- Updated dependencies [8686eb38c] -- Updated dependencies [e7baa0d2e] -- Updated dependencies [8b4f7e42a] -- Updated dependencies [8686eb38c] -- Updated dependencies [0434853a5] -- Updated dependencies [4bc98a5b9] -- Updated dependencies [d2f4efc5d] -- Updated dependencies [8686eb38c] -- Updated dependencies [424742dc1] -- Updated dependencies [1f98a6ff8] -- Updated dependencies [8b5e59750] -- Updated dependencies [8686eb38c] - - @backstage/plugin-catalog-backend@0.6.6 - - @backstage/catalog-client@0.3.8 - - @backstage/plugin-techdocs-backend@0.6.5 - - @backstage/plugin-scaffolder-backend@0.9.2 - - @backstage/backend-common@0.6.0 - - @backstage/config@0.1.4 - - @backstage/plugin-auth-backend@0.3.5 - - @backstage/plugin-kubernetes-backend@0.3.1 - - example-app@0.2.20 - - @backstage/plugin-app-backend@0.3.10 - - @backstage/plugin-graphql-backend@0.1.6 - - @backstage/plugin-kafka-backend@0.2.2 - - @backstage/plugin-proxy-backend@0.2.6 - - @backstage/plugin-rollbar-backend@0.1.8 - - @backstage/plugin-todo-backend@0.1.1 - -## 0.2.19 - -### Patch Changes - -- Updated dependencies [5d7834baf] -- Updated dependencies [9ef5a126d] -- Updated dependencies [d7245b733] -- Updated dependencies [393b623ae] -- Updated dependencies [d7245b733] -- Updated dependencies [0b42fff22] -- Updated dependencies [0b42fff22] -- Updated dependencies [2ef5bc7ea] -- Updated dependencies [c532c1682] -- Updated dependencies [761698831] -- Updated dependencies [aa095e469] -- Updated dependencies [761698831] -- Updated dependencies [f98f212e4] -- Updated dependencies [9581ff0b4] -- Updated dependencies [93c62c755] -- Updated dependencies [02d78290a] -- Updated dependencies [a501128db] -- Updated dependencies [8de9963f0] -- Updated dependencies [5f1b7ea35] -- Updated dependencies [2e57922de] -- Updated dependencies [e2c1b3fb6] - - @backstage/plugin-kubernetes-backend@0.3.0 - - @backstage/plugin-catalog-backend@0.6.5 - - @backstage/backend-common@0.5.6 - - @backstage/plugin-app-backend@0.3.9 - - @backstage/plugin-scaffolder-backend@0.9.1 - - @backstage/catalog-model@0.7.4 - - @backstage/catalog-client@0.3.7 - - @backstage/plugin-techdocs-backend@0.6.4 - - @backstage/plugin-auth-backend@0.3.4 - - example-app@0.2.19 - -## 0.2.18 - -### Patch Changes - -- Updated dependencies [12d8f27a6] -- Updated dependencies [52b5bc3e2] -- Updated dependencies [ecdd407b1] -- Updated dependencies [4fbc9df79] -- Updated dependencies [12d8f27a6] -- Updated dependencies [497859088] -- Updated dependencies [1987c9341] -- Updated dependencies [f31b76b44] -- Updated dependencies [15eee03bc] -- Updated dependencies [f43192207] -- Updated dependencies [8adb48df4] -- Updated dependencies [e3adec2bd] -- Updated dependencies [9ce68b677] -- Updated dependencies [8106c9528] -- Updated dependencies [d0ed25196] -- Updated dependencies [96ccc8f69] -- Updated dependencies [3af994c81] - - @backstage/plugin-scaffolder-backend@0.9.0 - - @backstage/plugin-techdocs-backend@0.6.3 - - @backstage/plugin-catalog-backend@0.6.4 - - @backstage/plugin-kafka-backend@0.2.1 - - @backstage/catalog-model@0.7.3 - - @backstage/backend-common@0.5.5 - - @backstage/plugin-proxy-backend@0.2.5 - - @backstage/plugin-auth-backend@0.3.3 - - @backstage/plugin-kubernetes-backend@0.2.8 - - example-app@0.2.18 - -## 0.2.17 - -### Patch Changes - -- Updated dependencies [a70af22a2] -- Updated dependencies [ec504e7b4] -- Updated dependencies [a5f42cf66] -- Updated dependencies [f37992797] -- Updated dependencies [bad21a085] -- Updated dependencies [1c06cb312] -- Updated dependencies [2499f6cde] -- Updated dependencies [a1f5e6545] - - @backstage/plugin-kubernetes-backend@0.2.7 - - @backstage/plugin-auth-backend@0.3.2 - - @backstage/plugin-scaffolder-backend@0.8.0 - - @backstage/plugin-techdocs-backend@0.6.2 - - @backstage/catalog-model@0.7.2 - - @backstage/plugin-app-backend@0.3.8 - - @backstage/plugin-catalog-backend@0.6.3 - - @backstage/config@0.1.3 - - example-app@0.2.17 - -## 0.2.15 - -### Patch Changes - -- Updated dependencies [1deb31141] -- Updated dependencies [6ed2b47d6] -- Updated dependencies [77ad0003a] -- Updated dependencies [d2441aee3] -- Updated dependencies [727f0deec] -- Updated dependencies [fb53eb7cb] -- Updated dependencies [07bafa248] -- Updated dependencies [ffffea8e6] -- Updated dependencies [f3fbfb452] -- Updated dependencies [615103a63] -- Updated dependencies [84364b35c] -- Updated dependencies [82b2c11b6] -- Updated dependencies [965e200c6] -- Updated dependencies [5a5163519] -- Updated dependencies [82b2c11b6] -- Updated dependencies [08142b256] -- Updated dependencies [08142b256] - - @backstage/plugin-auth-backend@0.3.0 - - @backstage/plugin-scaffolder-backend@0.7.0 - - @backstage/plugin-catalog-backend@0.6.1 - - @backstage/plugin-app-backend@0.3.7 - - example-app@0.2.15 - - @backstage/backend-common@0.5.3 - - @backstage/plugin-techdocs-backend@0.6.0 - -## 0.2.14 - -### Patch Changes - -- Updated dependencies [c777df180] -- Updated dependencies [2430ee7c2] -- Updated dependencies [3149bfe63] -- Updated dependencies [6e612ce25] -- Updated dependencies [e44925723] -- Updated dependencies [9d6ef14bc] -- Updated dependencies [a26668913] -- Updated dependencies [025e122c3] -- Updated dependencies [e9aab60c7] -- Updated dependencies [24e47ef1e] -- Updated dependencies [7881f2117] -- Updated dependencies [529d16d27] -- Updated dependencies [cdea0baf1] -- Updated dependencies [11cb5ef94] - - @backstage/plugin-techdocs-backend@0.5.5 - - @backstage/backend-common@0.5.2 - - @backstage/plugin-catalog-backend@0.6.0 - - @backstage/catalog-model@0.7.1 - - example-app@0.2.14 - - @backstage/plugin-scaffolder-backend@0.6.0 - - @backstage/plugin-app-backend@0.3.6 - -## 0.2.13 - -### Patch Changes - -- Updated dependencies [26a3a6cf0] -- Updated dependencies [681111228] -- Updated dependencies [664dd08c9] -- Updated dependencies [9dd057662] -- Updated dependencies [234e7d985] -- Updated dependencies [d7b1d317f] -- Updated dependencies [a91aa6bf2] -- Updated dependencies [39b05b9ae] -- Updated dependencies [4eaa06057] - - @backstage/backend-common@0.5.1 - - @backstage/plugin-scaffolder-backend@0.5.2 - - @backstage/plugin-kubernetes-backend@0.2.6 - - @backstage/plugin-catalog-backend@0.5.5 - - @backstage/plugin-kafka-backend@0.2.0 - - @backstage/plugin-auth-backend@0.2.12 - - example-app@0.2.13 - - @backstage/plugin-app-backend@0.3.5 - -## 0.2.12 - -### Patch Changes - -- Updated dependencies [def2307f3] -- Updated dependencies [d54857099] -- Updated dependencies [0b135e7e0] -- Updated dependencies [318a6af9f] -- Updated dependencies [294a70cab] -- Updated dependencies [ac7be581a] -- Updated dependencies [0ea032763] -- Updated dependencies [5345a1f98] -- Updated dependencies [ed6baab66] -- Updated dependencies [ad838c02f] -- Updated dependencies [a5e27d5c1] -- Updated dependencies [0643a3336] -- Updated dependencies [a2291d7cc] -- Updated dependencies [f9ba00a1c] -- Updated dependencies [09a370426] -- Updated dependencies [a93f42213] - - @backstage/catalog-model@0.7.0 - - @backstage/plugin-catalog-backend@0.5.4 - - @backstage/plugin-kubernetes-backend@0.2.5 - - @backstage/backend-common@0.5.0 - - @backstage/plugin-scaffolder-backend@0.5.0 - - @backstage/plugin-techdocs-backend@0.5.4 - - @backstage/plugin-auth-backend@0.2.11 - - example-app@0.2.12 - - @backstage/plugin-kafka-backend@0.1.1 - - @backstage/plugin-app-backend@0.3.4 - - @backstage/plugin-graphql-backend@0.1.5 - - @backstage/plugin-proxy-backend@0.2.4 - - @backstage/plugin-rollbar-backend@0.1.7 - -## 0.2.11 - -### Patch Changes - -- cc068c0d6: Bump the gitbeaker dependencies to 28.x. - - To update your own installation, go through the `package.json` files of all of - your packages, and ensure that all dependencies on `@gitbeaker/node` or - `@gitbeaker/core` are at version `^28.0.2`. Then run `yarn install` at the root - of your repo. - -- Updated dependencies [68ad5af51] -- Updated dependencies [5a9a7e7c2] -- Updated dependencies [f3b064e1c] -- Updated dependencies [94fdf4955] -- Updated dependencies [cc068c0d6] -- Updated dependencies [ade6b3bdf] -- Updated dependencies [468579734] -- Updated dependencies [cb7af51e7] -- Updated dependencies [abbee6fff] -- Updated dependencies [147fadcb9] -- Updated dependencies [711ba55a2] - - @backstage/plugin-techdocs-backend@0.5.3 - - @backstage/plugin-kubernetes-backend@0.2.4 - - @backstage/catalog-model@0.6.1 - - @backstage/plugin-catalog-backend@0.5.3 - - @backstage/plugin-scaffolder-backend@0.4.1 - - @backstage/plugin-auth-backend@0.2.10 - - @backstage/backend-common@0.4.3 - -## 0.2.10 - -### Patch Changes - -- Updated dependencies [5eb8c9b9e] -- Updated dependencies [7e3451700] - - @backstage/plugin-scaffolder-backend@0.4.0 - -## 0.2.8 - -### Patch Changes - -- 7cfcd58ee: use node 14 for backend Dockerfile -- Updated dependencies [19554f6d6] -- Updated dependencies [33a82a713] -- Updated dependencies [5de26b9a6] -- Updated dependencies [30d6c78fb] -- Updated dependencies [5084e5039] -- Updated dependencies [a8573e53b] -- Updated dependencies [aed8f7f12] - - @backstage/plugin-scaffolder-backend@0.3.6 - - @backstage/plugin-catalog-backend@0.5.1 - - @backstage/plugin-techdocs-backend@0.5.0 - - example-app@0.2.8 - -## 0.2.7 - -### Patch Changes - -- Updated dependencies [c6eeefa35] -- Updated dependencies [fb386b760] -- Updated dependencies [c911061b7] -- Updated dependencies [7c3ffc0cd] -- Updated dependencies [dae4f3983] -- Updated dependencies [7b15cc271] -- Updated dependencies [e7496dc3e] -- Updated dependencies [1d1c2860f] -- Updated dependencies [0e6298f7e] -- Updated dependencies [8dd0a906d] -- Updated dependencies [4eafdec4a] -- Updated dependencies [6b37c95bf] -- Updated dependencies [8c31c681c] -- Updated dependencies [7b98e7fee] -- Updated dependencies [ac3560b42] -- Updated dependencies [94c65a9d4] -- Updated dependencies [0097057ed] - - @backstage/plugin-catalog-backend@0.5.0 - - @backstage/catalog-model@0.6.0 - - @backstage/plugin-techdocs-backend@0.4.0 - - @backstage/plugin-auth-backend@0.2.7 - - @backstage/backend-common@0.4.1 - - @backstage/plugin-scaffolder-backend@0.3.5 - - example-app@0.2.7 - - @backstage/plugin-kubernetes-backend@0.2.3 - -## 0.2.6 - -### Patch Changes - -- 1e22f8e0b: Unify `dockerode` library and type dependency versions -- Updated dependencies [6e8bb3ac0] -- Updated dependencies [e708679d7] -- Updated dependencies [047c018c9] -- Updated dependencies [38e24db00] -- Updated dependencies [e3bd9fc2f] -- Updated dependencies [12bbd748c] -- Updated dependencies [38d63fbe1] -- Updated dependencies [1e22f8e0b] -- Updated dependencies [83b6e0c1f] -- Updated dependencies [e3bd9fc2f] - - @backstage/plugin-catalog-backend@0.4.0 - - @backstage/backend-common@0.4.0 - - @backstage/config@0.1.2 - - @backstage/plugin-scaffolder-backend@0.3.4 - - @backstage/plugin-techdocs-backend@0.3.2 - - @backstage/catalog-model@0.5.0 - - example-app@0.2.6 - - @backstage/plugin-app-backend@0.3.3 - - @backstage/plugin-auth-backend@0.2.6 - - @backstage/plugin-graphql-backend@0.1.4 - - @backstage/plugin-kubernetes-backend@0.2.2 - - @backstage/plugin-proxy-backend@0.2.3 - - @backstage/plugin-rollbar-backend@0.1.5 - -## 0.2.5 - -### Patch Changes - -- Updated dependencies [ae95c7ff3] -- Updated dependencies [b4488ddb0] -- Updated dependencies [612368274] -- Updated dependencies [6a6c7c14e] -- Updated dependencies [08835a61d] -- Updated dependencies [a9fd599f7] -- Updated dependencies [e42402b47] -- Updated dependencies [bcc211a08] -- Updated dependencies [3619ea4c4] - - @backstage/plugin-techdocs-backend@0.3.1 - - @backstage/plugin-catalog-backend@0.3.0 - - @backstage/backend-common@0.3.3 - - @backstage/plugin-proxy-backend@0.2.2 - - @backstage/catalog-model@0.4.0 - - @backstage/plugin-kubernetes-backend@0.2.1 - - @backstage/plugin-app-backend@0.3.2 - - example-app@0.2.5 - - @backstage/plugin-auth-backend@0.2.5 - - @backstage/plugin-scaffolder-backend@0.3.3 - -## 0.2.4 - -### Patch Changes - -- Updated dependencies [50eff1d00] -- Updated dependencies [ff1301d28] -- Updated dependencies [4b53294a6] -- Updated dependencies [3aa7efb3f] -- Updated dependencies [1ec19a3f4] -- Updated dependencies [ab94c9542] -- Updated dependencies [3a201c5d5] -- Updated dependencies [2daf18e80] -- Updated dependencies [069cda35f] -- Updated dependencies [b3d4e4e57] -- Updated dependencies [700a212b4] - - @backstage/plugin-auth-backend@0.2.4 - - @backstage/plugin-app-backend@0.3.1 - - @backstage/plugin-techdocs-backend@0.3.0 - - @backstage/backend-common@0.3.2 - - @backstage/plugin-catalog-backend@0.2.3 - - @backstage/catalog-model@0.3.1 - - @backstage/plugin-rollbar-backend@0.1.4 - - example-app@0.2.4 - -## 0.2.3 - -### Patch Changes - -- Updated dependencies [1166fcc36] -- Updated dependencies [bff3305aa] -- Updated dependencies [0c2121240] -- Updated dependencies [ef2831dde] -- Updated dependencies [1185919f3] -- Updated dependencies [475fc0aaa] -- Updated dependencies [b47dce06f] -- Updated dependencies [5a1d8dca3] - - @backstage/catalog-model@0.3.0 - - @backstage/plugin-kubernetes-backend@0.2.0 - - @backstage/backend-common@0.3.1 - - @backstage/plugin-catalog-backend@0.2.2 - - @backstage/plugin-scaffolder-backend@0.3.2 - - example-app@0.2.3 - - @backstage/plugin-auth-backend@0.2.3 - - @backstage/plugin-techdocs-backend@0.2.2 - -## 0.2.2 - -### Patch Changes - -- Updated dependencies [1722cb53c] -- Updated dependencies [1722cb53c] -- Updated dependencies [1722cb53c] -- Updated dependencies [f531d307c] -- Updated dependencies [3efd03c0e] -- Updated dependencies [7b37e6834] -- Updated dependencies [8e2effb53] -- Updated dependencies [d33f5157c] - - @backstage/backend-common@0.3.0 - - @backstage/plugin-app-backend@0.3.0 - - @backstage/plugin-catalog-backend@0.2.1 - - example-app@0.2.2 - - @backstage/plugin-scaffolder-backend@0.3.1 - - @backstage/plugin-auth-backend@0.2.2 - - @backstage/plugin-graphql-backend@0.1.3 - - @backstage/plugin-kubernetes-backend@0.1.3 - - @backstage/plugin-proxy-backend@0.2.1 - - @backstage/plugin-rollbar-backend@0.1.3 - - @backstage/plugin-sentry-backend@0.1.3 - - @backstage/plugin-techdocs-backend@0.2.1 - -## 0.2.1 - -### Patch Changes - -- Updated dependencies [752808090] -- Updated dependencies [462876399] -- Updated dependencies [59166e5ec] -- Updated dependencies [33b7300eb] - - @backstage/plugin-auth-backend@0.2.1 - - @backstage/plugin-scaffolder-backend@0.3.0 - - @backstage/backend-common@0.2.1 - - example-app@0.2.1 - -## 0.2.0 - -### Patch Changes - -- 440a17b39: Bump @backstage/catalog-backend and pass the now required UrlReader interface to the plugin -- 6840a68df: Pass GitHub token into Scaffolder GitHub Preparer -- 8c2b76e45: **BREAKING CHANGE** - - The existing loading of additional config files like `app-config.development.yaml` using APP_ENV or NODE_ENV has been removed. - Instead, the CLI and backend process now accept one or more `--config` flags to load config files. - - Without passing any flags, `app-config.yaml` and, if it exists, `app-config.local.yaml` will be loaded. - If passing any `--config ` flags, only those files will be loaded, **NOT** the default `app-config.yaml` one. - - The old behaviour of for example `APP_ENV=development` can be replicated using the following flags: - - ```bash - --config ../../app-config.yaml --config ../../app-config.development.yaml - ``` - -- 7bbeb049f: Change loadBackendConfig to return the config directly -- Updated dependencies [28edd7d29] -- Updated dependencies [819a70229] -- Updated dependencies [3a4236570] -- Updated dependencies [3e254503d] -- Updated dependencies [6d29605db] -- Updated dependencies [e0be86b6f] -- Updated dependencies [f70a52868] -- Updated dependencies [12b5fe940] -- Updated dependencies [5249594c5] -- Updated dependencies [56e4eb589] -- Updated dependencies [b4e5466e1] -- Updated dependencies [6f1768c0f] -- Updated dependencies [e37c0a005] -- Updated dependencies [3472c8be7] -- Updated dependencies [57d555eb2] -- Updated dependencies [61db1ddc6] -- Updated dependencies [81cb94379] -- Updated dependencies [1687b8fbb] -- Updated dependencies [a768a07fb] -- Updated dependencies [a768a07fb] -- Updated dependencies [f00ca3cb8] -- Updated dependencies [0c370c979] -- Updated dependencies [ce1f55398] -- Updated dependencies [e6b00e3af] -- Updated dependencies [9226c2aaa] -- Updated dependencies [6d97d2d6f] -- Updated dependencies [99710b102] -- Updated dependencies [6579769df] -- Updated dependencies [002860e7a] -- Updated dependencies [5adfc005e] -- Updated dependencies [33454c0f2] -- Updated dependencies [183e2a30d] -- Updated dependencies [948052cbb] -- Updated dependencies [65d722455] -- Updated dependencies [b652bf2cc] -- Updated dependencies [4036ff59d] -- Updated dependencies [991a950e0] -- Updated dependencies [512d70973] -- Updated dependencies [8c2b76e45] -- Updated dependencies [8bdf0bcf5] -- Updated dependencies [c926765a2] -- Updated dependencies [5a920c6e4] -- Updated dependencies [2f62e1804] -- Updated dependencies [440a17b39] -- Updated dependencies [fa56f4615] -- Updated dependencies [8afce088a] -- Updated dependencies [4c4eab81b] -- Updated dependencies [22ff8fba5] -- Updated dependencies [36a71d278] -- Updated dependencies [b3d57961c] -- Updated dependencies [6840a68df] -- Updated dependencies [a5cb46bac] -- Updated dependencies [49d70ccab] -- Updated dependencies [1c8c43756] -- Updated dependencies [26e69ab1a] -- Updated dependencies [5e4551e3a] -- Updated dependencies [e142a2767] -- Updated dependencies [e7f5471fd] -- Updated dependencies [e3d063ffa] -- Updated dependencies [440a17b39] -- Updated dependencies [7bbeb049f] - - @backstage/plugin-app-backend@0.2.0 - - @backstage/plugin-auth-backend@0.2.0 - - @backstage/catalog-model@0.2.0 - - @backstage/plugin-scaffolder-backend@0.2.0 - - @backstage/plugin-techdocs-backend@0.2.0 - - @backstage/plugin-catalog-backend@0.2.0 - - @backstage/plugin-proxy-backend@0.2.0 - - @backstage/backend-common@0.2.0 - - example-app@0.2.0 - - @backstage/plugin-graphql-backend@0.1.2 - - @backstage/plugin-kubernetes-backend@0.1.2 - - @backstage/plugin-rollbar-backend@0.1.2 - - @backstage/plugin-sentry-backend@0.1.2 diff --git a/packages/backend-legacy/README.md b/packages/backend-legacy/README.md deleted file mode 100644 index 0de555fe70..0000000000 --- a/packages/backend-legacy/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# example-backend-legacy - -This package is an EXAMPLE of a Backstage backend using the old backend system. - -The main purpose of this package is to provide a test bed for Backstage plugins -that have a backend part. Feel free to experiment locally or within your fork -by adding dependencies and routes to this backend, to try things out. - -By running the `@backstage/create-app` script, you get your own separate Backstage backend. - -## Development - -To run the example backend, first go to the project root and run - -```bash -yarn install -``` - -You should only need to do this once. - -After that, go to the `packages/backend-legacy` directory and run - -```bash -yarn start -``` - -If you want to override any configuration locally, for example adding any secrets, -you can do so in `app-config.local.yaml`. - -The backend starts up on port 7007 per default. - -### Debugging - -The backend is a node process that can be inspected to allow breakpoints and live debugging. To enable this, pass the `--inspect` flag to [backend:dev](https://backstage.io/docs/tooling/cli/build-system#backend-development). - -To debug the backend in [Visual Studio Code](https://code.visualstudio.com/): - -- Enable Auto Attach (⌘ + Shift + P > Toggle Auto Attach > Only With Flag) -- Open a VSCode terminal (Control + `) -- Run the backend from the VSCode terminal: `yarn start-backend:legacy --inspect` - -## Populating The Catalog - -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/#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`. - -## Authentication - -We chose [Passport](http://www.passportjs.org/) as authentication platform due to its comprehensive set of supported authentication [strategies](http://www.passportjs.org/packages/). - -Read more about the [auth-backend](https://github.com/backstage/backstage/blob/master/plugins/auth-backend/README.md) and [how to add a new provider](https://github.com/backstage/backstage/blob/master/docs/auth/add-auth-provider.md) - -## Documentation - -- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md) -- [Backstage Documentation](https://backstage.io/docs) diff --git a/packages/backend-legacy/catalog-info.yaml b/packages/backend-legacy/catalog-info.yaml deleted file mode 100644 index a0acd6c653..0000000000 --- a/packages/backend-legacy/catalog-info.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: example-backend-legacy - title: example-backend-legacy -spec: - lifecycle: experimental - type: backstage-backend - owner: maintainers diff --git a/packages/backend-legacy/knip-report.md b/packages/backend-legacy/knip-report.md deleted file mode 100644 index fa173dea2b..0000000000 --- a/packages/backend-legacy/knip-report.md +++ /dev/null @@ -1,27 +0,0 @@ -# Knip report - -## Unused dependencies (12) - -| Name | Location | Severity | -| :------------------------------------------------- | :----------- | :------- | -| @backstage/plugin-scaffolder-backend-module-gitlab | package.json | error | -| @backstage/plugin-scaffolder-backend-module-rails | package.json | error | -| @backstage/plugin-search-backend-module-catalog | package.json | error | -| @backstage/plugin-signals-backend | package.json | error | -| azure-devops-node-api | package.json | error | -| @gitbeaker/node | package.json | error | -| better-sqlite3 | package.json | error | -| @octokit/rest | package.json | error | -| dockerode | package.json | error | -| mysql2 | package.json | error | -| luxon | package.json | error | -| pg | package.json | error | - -## Unused devDependencies (3) - -| Name | Location | Severity | -| :------------------------------- | :----------- | :------- | -| @types/express-serve-static-core | package.json | error | -| @types/dockerode | package.json | error | -| @types/luxon | package.json | error | - diff --git a/packages/backend-legacy/package.json b/packages/backend-legacy/package.json deleted file mode 100644 index b39c1192b7..0000000000 --- a/packages/backend-legacy/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "example-backend-legacy", - "version": "0.2.109", - "backstage": { - "role": "backend" - }, - "private": true, - "keywords": [ - "backstage" - ], - "homepage": "https://backstage.io", - "repository": { - "type": "git", - "url": "https://github.com/backstage/backstage", - "directory": "packages/backend-legacy" - }, - "license": "Apache-2.0", - "main": "dist/index.cjs.js", - "types": "src/index.ts", - "files": [ - "dist" - ], - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint": "backstage-cli package lint", - "start": "backstage-cli package start", - "test": "backstage-cli package test" - }, - "dependencies": { - "@backstage/backend-common": "^0.25.0", - "@backstage/backend-defaults": "workspace:^", - "@backstage/backend-plugin-api": "workspace:^", - "@backstage/catalog-client": "workspace:^", - "@backstage/catalog-model": "workspace:^", - "@backstage/config": "workspace:^", - "@backstage/integration": "workspace:^", - "@backstage/plugin-auth-backend": "workspace:^", - "@backstage/plugin-auth-node": "workspace:^", - "@backstage/plugin-catalog-backend": "workspace:^", - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^", - "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", - "@backstage/plugin-catalog-node": "workspace:^", - "@backstage/plugin-events-backend": "workspace:^", - "@backstage/plugin-events-node": "workspace:^", - "@backstage/plugin-kubernetes-backend": "workspace:^", - "@backstage/plugin-permission-backend": "workspace:^", - "@backstage/plugin-permission-common": "workspace:^", - "@backstage/plugin-permission-node": "workspace:^", - "@backstage/plugin-scaffolder-backend": "workspace:^", - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "workspace:^", - "@backstage/plugin-scaffolder-backend-module-gitlab": "workspace:^", - "@backstage/plugin-scaffolder-backend-module-rails": "workspace:^", - "@backstage/plugin-search-backend": "workspace:^", - "@backstage/plugin-search-backend-module-catalog": "workspace:^", - "@backstage/plugin-search-backend-module-elasticsearch": "workspace:^", - "@backstage/plugin-search-backend-module-explore": "workspace:^", - "@backstage/plugin-search-backend-module-pg": "workspace:^", - "@backstage/plugin-search-backend-module-techdocs": "workspace:^", - "@backstage/plugin-search-backend-node": "workspace:^", - "@backstage/plugin-signals-backend": "workspace:^", - "@backstage/plugin-signals-node": "workspace:^", - "@backstage/plugin-techdocs-backend": "workspace:^", - "@gitbeaker/node": "^35.1.0", - "@octokit/rest": "^19.0.3", - "azure-devops-node-api": "^14.0.0", - "better-sqlite3": "^11.0.0", - "dockerode": "^4.0.0", - "express": "^4.17.1", - "express-prom-bundle": "^7.0.0", - "express-promise-router": "^4.1.0", - "luxon": "^3.0.0", - "mysql2": "^3.0.0", - "pg": "^8.11.3", - "pg-connection-string": "^2.3.0", - "prom-client": "^15.0.0", - "winston": "^3.2.1" - }, - "devDependencies": { - "@backstage/cli": "workspace:^", - "@types/dockerode": "^3.3.0", - "@types/express": "^4.17.6", - "@types/express-serve-static-core": "^4.17.5", - "@types/luxon": "^3.0.0" - } -} diff --git a/packages/backend-legacy/src/index.test.ts b/packages/backend-legacy/src/index.test.ts deleted file mode 100644 index 8b41455b27..0000000000 --- a/packages/backend-legacy/src/index.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { PluginEnvironment } from './types'; - -describe('test', () => { - it('unbreaks the test runner', () => { - const unbreaker = {} as PluginEnvironment; - expect(unbreaker).toBeTruthy(); - }); -}); diff --git a/packages/backend-legacy/src/index.ts b/packages/backend-legacy/src/index.ts deleted file mode 100644 index 0ff6c08f84..0000000000 --- a/packages/backend-legacy/src/index.ts +++ /dev/null @@ -1,158 +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. - */ - -/* - * Hi! - * - * Note that this is an EXAMPLE Backstage backend. Please check the README. - * - * Happy hacking! - */ - -import Router from 'express-promise-router'; -import { - CacheManager, - createLegacyAuthAdapters, - createServiceBuilder, - DatabaseManager, - getRootLogger, - HostDiscovery, - loadBackendConfig, - notFoundHandler, - ServerTokenManager, - useHotMemoize, -} from '@backstage/backend-common'; -import { Config } from '@backstage/config'; -import healthcheck from './plugins/healthcheck'; -import { metricsHandler, metricsInit } from './metrics'; -import authPlugin from './plugins/auth'; -import catalog from './plugins/catalog'; -import events from './plugins/events'; -import kubernetes from './plugins/kubernetes'; -import scaffolder from './plugins/scaffolder'; -import permission from './plugins/permission'; -import { PluginEnvironment } from './types'; -import { ServerPermissionClient } from '@backstage/plugin-permission-node'; -import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; -import { DefaultEventsService } from '@backstage/plugin-events-node'; -import { DefaultSignalsService } from '@backstage/plugin-signals-node'; -import { UrlReaders } from '@backstage/backend-defaults/urlReader'; -import { DefaultSchedulerService } from '@backstage/backend-defaults/scheduler'; - -function makeCreateEnv(config: Config) { - const root = getRootLogger(); - const reader = UrlReaders.default({ logger: root, config }); - const discovery = HostDiscovery.fromConfig(config); - const tokenManager = ServerTokenManager.fromConfig(config, { logger: root }); - const { auth } = createLegacyAuthAdapters({ - auth: undefined, - discovery, - tokenManager, - }); - const permissions = ServerPermissionClient.fromConfig(config, { - discovery, - auth, - }); - const databaseManager = DatabaseManager.fromConfig(config, { logger: root }); - const cacheManager = CacheManager.fromConfig(config); - const identity = DefaultIdentityClient.create({ - discovery, - }); - - const eventsService = DefaultEventsService.create({ logger: root, config }); - - const signalsService = DefaultSignalsService.create({ - events: eventsService, - }); - - root.info(`Created UrlReader ${reader}`); - - return (plugin: string): PluginEnvironment => { - const logger = root.child({ type: 'plugin', plugin }); - const database = databaseManager.forPlugin(plugin); - const cache = cacheManager.forPlugin(plugin); - const scheduler = DefaultSchedulerService.create({ - logger, - database, - }); - - return { - logger, - cache, - database, - config, - reader, - events: eventsService, - discovery, - tokenManager, - permissions, - scheduler, - identity, - signals: signalsService, - }; - }; -} - -async function main() { - metricsInit(); - const logger = getRootLogger(); - - logger.info( - `You are running an example backend, which is supposed to be mainly used for contributing back to Backstage. ` + - `Do NOT deploy this to production. Read more here https://backstage.io/docs/getting-started/`, - ); - - const config = await loadBackendConfig({ - argv: process.argv, - logger, - }); - - const createEnv = makeCreateEnv(config); - - const healthcheckEnv = useHotMemoize(module, () => createEnv('healthcheck')); - const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); - const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder')); - const authEnv = useHotMemoize(module, () => createEnv('auth')); - const kubernetesEnv = useHotMemoize(module, () => createEnv('kubernetes')); - const permissionEnv = useHotMemoize(module, () => createEnv('permission')); - const eventsEnv = useHotMemoize(module, () => createEnv('events')); - - const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)); - apiRouter.use('/events', await events(eventsEnv)); - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); - apiRouter.use('/auth', await authPlugin(authEnv)); - apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); - apiRouter.use('/permission', await permission(permissionEnv)); - apiRouter.use(notFoundHandler()); - - const service = createServiceBuilder(module) - .loadConfig(config) - .addRouter('', await healthcheck(healthcheckEnv)) - .addRouter('', metricsHandler()) - .addRouter('/api', apiRouter); - - await service.start().catch(err => { - logger.error(err); - process.exit(1); - }); -} - -module.hot?.accept(); -main().catch(error => { - console.error('Backend failed to start up', error); - process.exit(1); -}); diff --git a/packages/backend-legacy/src/metrics.ts b/packages/backend-legacy/src/metrics.ts deleted file mode 100644 index 8834022cd9..0000000000 --- a/packages/backend-legacy/src/metrics.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { useHotCleanup } from '@backstage/backend-common'; -import { RequestHandler, Request } from 'express'; -import promBundle from 'express-prom-bundle'; -import prom from 'prom-client'; -import * as url from 'url'; - -/** - * Experimental Prometheus metrics used to benchmark the performance of the - * software catalog. Use this at your own risk. - */ -const rootRegEx = new RegExp('^/([^/]*)/.*'); -const apiRegEx = new RegExp('^/api/([^/]*)/.*'); - -function normalizePath(req: Request): string { - const path = url.parse(req.originalUrl || req.url).pathname || '/'; - - // Capture /api/ and the plugin name - if (apiRegEx.test(path)) { - return path.replace(apiRegEx, '/api/$1'); - } - - // Only the first path segment at root level - return path.replace(rootRegEx, '/$1'); -} - -export function metricsInit(): void { - prom.collectDefaultMetrics({ prefix: 'backstage_' }); -} - -/** - * Adds a /metrics endpoint, register default runtime metrics and instrument the router. - */ -export function metricsHandler(): RequestHandler { - // We can only initialize the metrics once and have to clean them up between hot reloads - useHotCleanup(module, () => prom.register.clear()); - - return promBundle({ - includeMethod: true, - includePath: true, - // Using includePath alone is problematic, as it will include path labels with high - // cardinality (e.g. path params). Instead we would have to template them. However, this - // is difficult, as every backend plugin might use different routes. Instead we only take - // the first directory of the path, to have at least an idea how each plugin performs: - normalizePath, - promClient: { collectDefaultMetrics: {} }, - }); -} diff --git a/packages/backend-legacy/src/plugins/DemoEventBasedEntityProvider.ts b/packages/backend-legacy/src/plugins/DemoEventBasedEntityProvider.ts deleted file mode 100644 index 11d073400a..0000000000 --- a/packages/backend-legacy/src/plugins/DemoEventBasedEntityProvider.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - EntityProvider, - EntityProviderConnection, -} from '@backstage/plugin-catalog-node'; -import { EventParams, EventsService } from '@backstage/plugin-events-node'; -import { Logger } from 'winston'; - -export class DemoEventBasedEntityProvider implements EntityProvider { - private readonly logger: Logger; - private readonly events: EventsService; - private readonly topics: string[]; - - constructor(opts: { - events: EventsService; - logger: Logger; - topics: string[]; - }) { - this.events = opts.events; - this.logger = opts.logger; - this.topics = opts.topics; - } - - async subscribe() { - await this.events.subscribe({ - id: 'DemoEventBasedEntityProvider', - topics: this.topics, - onEvent: async (params: EventParams): Promise => { - this.logger.info( - `onEvent: topic=${params.topic}, metadata=${JSON.stringify( - params.metadata, - )}, payload=${JSON.stringify(params.eventPayload)}`, - ); - }, - }); - } - - async connect(_: EntityProviderConnection): Promise { - // not doing anything here - } - - getProviderName(): string { - return DemoEventBasedEntityProvider.name; - } -} diff --git a/packages/backend-legacy/src/plugins/auth.ts b/packages/backend-legacy/src/plugins/auth.ts deleted file mode 100644 index 0d92315f92..0000000000 --- a/packages/backend-legacy/src/plugins/auth.ts +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - DEFAULT_NAMESPACE, - stringifyEntityRef, -} from '@backstage/catalog-model'; -import { - createRouter, - providers, - defaultAuthProviderFactories, -} from '@backstage/plugin-auth-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - config: env.config, - database: env.database, - discovery: env.discovery, - tokenManager: env.tokenManager, - providerFactories: { - ...defaultAuthProviderFactories, - - // NOTE: DO NOT add this many resolvers in your own instance! - // It is important that each real user always gets resolved to - // the same sign-in identity. The code below will not do that. - // It is here for demo purposes only. - github: providers.github.create({ - signIn: { - async resolver({ result: { fullProfile } }, ctx) { - const userId = fullProfile.username; - if (!userId) { - throw new Error( - `GitHub user profile does not contain a username`, - ); - } - - const userEntityRef = stringifyEntityRef({ - kind: 'User', - name: userId, - namespace: DEFAULT_NAMESPACE, - }); - - return ctx.issueToken({ - claims: { - sub: userEntityRef, - ent: [userEntityRef], - }, - }); - }, - }, - }), - gitlab: providers.gitlab.create({ - signIn: { - async resolver({ result: { fullProfile } }, ctx) { - return ctx.signInWithCatalogUser({ - entityRef: { - name: fullProfile.id, - }, - }); - }, - }, - }), - microsoft: providers.microsoft.create({ - signIn: { - resolver: - providers.microsoft.resolvers.emailMatchingUserEntityAnnotation(), - }, - }), - google: providers.google.create({ - signIn: { - resolver: - providers.google.resolvers.emailLocalPartMatchingUserEntityName(), - }, - }), - okta: providers.okta.create({ - signIn: { - resolver: - providers.okta.resolvers.emailMatchingUserEntityAnnotation(), - }, - }), - bitbucket: providers.bitbucket.create({ - signIn: { - resolver: - providers.bitbucket.resolvers.usernameMatchingUserEntityAnnotation(), - }, - }), - onelogin: providers.onelogin.create({ - signIn: { - async resolver({ result: { fullProfile } }, ctx) { - return ctx.signInWithCatalogUser({ - entityRef: { - name: fullProfile.id, - }, - }); - }, - }, - }), - - bitbucketServer: providers.bitbucketServer.create({ - signIn: { - resolver: - providers.bitbucketServer.resolvers.emailMatchingUserEntityProfileEmail(), - }, - }), - - // This is an example of how to configure the OAuth2Proxy provider as well - // as how to sign a user in without a matching user entity in the catalog. - // You can try it out using `` - myproxy: providers.oauth2Proxy.create({ - signIn: { - async resolver({ result }, ctx) { - const entityRef = stringifyEntityRef({ - kind: 'user', - namespace: DEFAULT_NAMESPACE, - name: result.getHeader('x-forwarded-user')!, - }); - return ctx.issueToken({ - claims: { - sub: entityRef, - ent: [entityRef], - }, - }); - }, - }, - }), - }, - }); -} diff --git a/packages/backend-legacy/src/plugins/catalog.ts b/packages/backend-legacy/src/plugins/catalog.ts deleted file mode 100644 index c83d5844d1..0000000000 --- a/packages/backend-legacy/src/plugins/catalog.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; -import { ScaffolderEntitiesProcessor } from '@backstage/plugin-catalog-backend-module-scaffolder-entity-model'; -import { UnprocessedEntitiesModule } from '@backstage/plugin-catalog-backend-module-unprocessed'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; -import { DemoEventBasedEntityProvider } from './DemoEventBasedEntityProvider'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const builder = CatalogBuilder.create(env); - builder.addProcessor(new ScaffolderEntitiesProcessor()); - - const demoProvider = new DemoEventBasedEntityProvider({ - events: env.events, - logger: env.logger, - topics: ['example'], - }); - await demoProvider.subscribe(); - builder.addEntityProvider(demoProvider); - - const { processingEngine, router } = await builder.build(); - - const unprocessed = UnprocessedEntitiesModule.create({ - database: await env.database.getClient(), - router, - permissions: env.permissions, - discovery: env.discovery, - }); - - unprocessed.registerRoutes(); - - await processingEngine.start(); - return router; -} diff --git a/packages/backend-legacy/src/plugins/events.ts b/packages/backend-legacy/src/plugins/events.ts deleted file mode 100644 index fd60a9bb14..0000000000 --- a/packages/backend-legacy/src/plugins/events.ts +++ /dev/null @@ -1,34 +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 { HttpPostIngressEventPublisher } from '@backstage/plugin-events-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const eventsRouter = Router(); - - const http = HttpPostIngressEventPublisher.fromConfig({ - config: env.config, - events: env.events, - logger: env.logger, - }); - http.bind(eventsRouter); - - return eventsRouter; -} diff --git a/packages/backend-legacy/src/plugins/healthcheck.ts b/packages/backend-legacy/src/plugins/healthcheck.ts deleted file mode 100644 index d229584e13..0000000000 --- a/packages/backend-legacy/src/plugins/healthcheck.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createStatusCheckRouter } from '@backstage/backend-common'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createStatusCheckRouter({ - logger: env.logger, - path: '/healthcheck', - }); -} diff --git a/packages/backend-legacy/src/plugins/kubernetes.ts b/packages/backend-legacy/src/plugins/kubernetes.ts deleted file mode 100644 index 5581083879..0000000000 --- a/packages/backend-legacy/src/plugins/kubernetes.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; -import { CatalogClient } from '@backstage/catalog-client'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const catalogApi = new CatalogClient({ discoveryApi: env.discovery }); - const { router } = await KubernetesBuilder.createBuilder({ - logger: env.logger, - config: env.config, - catalogApi, - permissions: env.permissions, - discovery: env.discovery, - }).build(); - return router; -} diff --git a/packages/backend-legacy/src/plugins/permission.ts b/packages/backend-legacy/src/plugins/permission.ts deleted file mode 100644 index fd0a989f06..0000000000 --- a/packages/backend-legacy/src/plugins/permission.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; -import { createRouter } from '@backstage/plugin-permission-backend'; -import { - AuthorizeResult, - PolicyDecision, -} from '@backstage/plugin-permission-common'; -import { - PermissionPolicy, - PolicyQuery, -} from '@backstage/plugin-permission-node'; -import { Router } from 'express'; -import { PluginEnvironment } from '../types'; - -class ExamplePermissionPolicy implements PermissionPolicy { - async handle( - _request: PolicyQuery, - _user?: BackstageIdentityResponse, - ): Promise { - // some logic to determine if the user is allowed to access the resource - - return { - result: AuthorizeResult.ALLOW, - }; - } -} - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - config: env.config, - logger: env.logger, - discovery: env.discovery, - policy: new ExamplePermissionPolicy(), - identity: env.identity, - }); -} diff --git a/packages/backend-legacy/src/plugins/scaffolder.ts b/packages/backend-legacy/src/plugins/scaffolder.ts deleted file mode 100644 index a2aa104406..0000000000 --- a/packages/backend-legacy/src/plugins/scaffolder.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { CatalogClient } from '@backstage/catalog-client'; -import { - createBuiltinActions, - createRouter, -} from '@backstage/plugin-scaffolder-backend'; -import { Router } from 'express'; -import type { PluginEnvironment } from '../types'; -import { ScmIntegrations } from '@backstage/integration'; -import { createConfluenceToMarkdownAction } from '@backstage/plugin-scaffolder-backend-module-confluence-to-markdown'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const catalogClient = new CatalogClient({ - discoveryApi: env.discovery, - }); - - const integrations = ScmIntegrations.fromConfig(env.config); - - const builtInActions = createBuiltinActions({ - integrations, - config: env.config, - catalogClient, - reader: env.reader, - }); - - const actions = [ - ...builtInActions, - createConfluenceToMarkdownAction({ - integrations, - config: env.config, - reader: env.reader, - }), - ]; - - return await createRouter({ - logger: env.logger, - config: env.config, - database: env.database, - catalogClient: catalogClient, - reader: env.reader, - discovery: env.discovery, - scheduler: env.scheduler, - permissions: env.permissions, - actions, - }); -} diff --git a/packages/backend-legacy/src/types.ts b/packages/backend-legacy/src/types.ts deleted file mode 100644 index 42a162259f..0000000000 --- a/packages/backend-legacy/src/types.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Logger } from 'winston'; -import { Config } from '@backstage/config'; -import { PluginCacheManager, TokenManager } from '@backstage/backend-common'; -import { IdentityApi } from '@backstage/plugin-auth-node'; -import { PermissionEvaluator } from '@backstage/plugin-permission-common'; -import { EventsService } from '@backstage/plugin-events-node'; -import { SignalsService } from '@backstage/plugin-signals-node'; -import { - UrlReaderService, - SchedulerService, - DatabaseService, - DiscoveryService, -} from '@backstage/backend-plugin-api'; - -export type PluginEnvironment = { - logger: Logger; - cache: PluginCacheManager; - database: DatabaseService; - config: Config; - reader: UrlReaderService; - discovery: DiscoveryService; - tokenManager: TokenManager; - permissions: PermissionEvaluator; - scheduler: SchedulerService; - identity: IdentityApi; - events: EventsService; - signals: SignalsService; -}; diff --git a/packages/canon/package.json b/packages/canon/package.json index a67c3d58f8..f343d9d123 100644 --- a/packages/canon/package.json +++ b/packages/canon/package.json @@ -41,26 +41,26 @@ "test": "backstage-cli package test" }, "dependencies": { - "@base-ui-components/react": "^1.0.0-alpha.5", - "@remixicon/react": "^4.5.0", + "@base-ui-components/react": "^1.0.0-alpha.7", + "@remixicon/react": "^4.6.0", + "@tanstack/react-table": "^8.21.3", "clsx": "^2.1.1" }, "devDependencies": { "@backstage/cli": "workspace:^", - "@storybook/addon-essentials": "^8.6.8", - "@storybook/addon-interactions": "^8.6.8", + "@storybook/addon-essentials": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.6.8", + "@storybook/addon-themes": "^8.6.12", "@storybook/addon-webpack5-compiler-swc": "^3.0.0", - "@storybook/blocks": "^8.6.8", - "@storybook/react": "^8.6.8", - "@storybook/react-webpack5": "^8.6.8", - "@storybook/test": "^8.6.8", - "@tanstack/react-table": "^8.21.2", + "@storybook/blocks": "^8.6.12", + "@storybook/react": "^8.6.12", + "@storybook/react-webpack5": "^8.6.12", + "@storybook/test": "^8.6.12", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "chalk": "^5.4.1", - "eslint-plugin-storybook": "^0.11.4", + "eslint-plugin-storybook": "^0.12.0", "glob": "^11.0.1", "globals": "^15.11.0", "lightningcss": "^1.29.1", @@ -68,7 +68,7 @@ "react": "^18.0.2", "react-dom": "^18.0.2", "react-router-dom": "^6.3.0", - "storybook": "^8.6.8" + "storybook": "^8.6.12" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", diff --git a/packages/catalog-client/report-testUtils.api.md b/packages/catalog-client/report-testUtils.api.md index 88d14b4f7a..bb6a8dd469 100644 --- a/packages/catalog-client/report-testUtils.api.md +++ b/packages/catalog-client/report-testUtils.api.md @@ -16,6 +16,7 @@ import { GetEntityAncestorsRequest } from '@backstage/catalog-client'; import { GetEntityAncestorsResponse } from '@backstage/catalog-client'; import { GetEntityFacetsRequest } from '@backstage/catalog-client'; import { GetEntityFacetsResponse } from '@backstage/catalog-client'; +import { GetLocationsResponse } from '@backstage/catalog-client'; import { Location as Location_2 } from '@backstage/catalog-client'; import { QueryEntitiesRequest } from '@backstage/catalog-client'; import { QueryEntitiesResponse } from '@backstage/catalog-client'; @@ -53,6 +54,8 @@ export class InMemoryCatalogClient implements CatalogApi { // (undocumented) getLocationByRef(_locationRef: string): Promise; // (undocumented) + getLocations(_request?: {}): Promise; + // (undocumented) queryEntities(request?: QueryEntitiesRequest): Promise; // (undocumented) refreshEntity(_entityRef: string): Promise; diff --git a/packages/catalog-client/report.api.md b/packages/catalog-client/report.api.md index 203028edce..0a37ed7e42 100644 --- a/packages/catalog-client/report.api.md +++ b/packages/catalog-client/report.api.md @@ -62,6 +62,10 @@ export interface CatalogApi { locationRef: string, options?: CatalogRequestOptions, ): Promise; + getLocations( + request?: {}, + options?: CatalogRequestOptions, + ): Promise; queryEntities( request?: QueryEntitiesRequest, options?: CatalogRequestOptions, @@ -136,6 +140,10 @@ export class CatalogClient implements CatalogApi { locationRef: string, options?: CatalogRequestOptions, ): Promise; + getLocations( + request?: {}, + options?: CatalogRequestOptions, + ): Promise; queryEntities( request?: QueryEntitiesRequest, options?: CatalogRequestOptions, @@ -250,6 +258,12 @@ export interface GetEntityFacetsResponse { >; } +// @public +export interface GetLocationsResponse { + // (undocumented) + items: Location_2[]; +} + // @public type Location_2 = { id: string; diff --git a/packages/catalog-client/src/CatalogClient.test.ts b/packages/catalog-client/src/CatalogClient.test.ts index ea61634a8b..abafeb18a5 100644 --- a/packages/catalog-client/src/CatalogClient.test.ts +++ b/packages/catalog-client/src/CatalogClient.test.ts @@ -24,6 +24,7 @@ import { QueryEntitiesResponse, } from './types/api'; import { DiscoveryApi } from './types/discovery'; +import { GetLocations200ResponseInner } from './schema/openapi'; const server = setupServer(); const token = 'fake-token'; @@ -593,6 +594,88 @@ describe('CatalogClient', () => { }); }); + describe('getLocations', () => { + const defaultResponse = [ + { + data: { + id: '42', + type: 'url', + target: 'https://example.com', + }, + }, + { + data: { + id: '43', + type: 'url', + target: 'https://example.com', + }, + }, + ] satisfies GetLocations200ResponseInner[]; + + beforeEach(() => { + server.use( + rest.get(`${mockBaseUrl}/locations`, (_, res, ctx) => { + return res(ctx.json(defaultResponse)); + }), + ); + }); + + it('should return locations from correct endpoint', async () => { + const response = await client.getLocations({}, { token }); + expect(response).toEqual({ + items: [ + { + id: '42', + type: 'url', + target: 'https://example.com', + }, + { + id: '43', + type: 'url', + target: 'https://example.com', + }, + ], + }); + }); + + it('should return empty list with empty result', async () => { + server.use( + rest.get(`${mockBaseUrl}/locations`, (_, res, ctx) => { + return res(ctx.json([])); + }), + ); + + const response = await client.getLocations({}, { token }); + expect(response).toEqual({ items: [] }); + }); + + it('should forward token', async () => { + expect.assertions(1); + + server.use( + rest.get(`${mockBaseUrl}/locations`, (req, res, ctx) => { + expect(req.headers.get('authorization')).toBe(`Bearer ${token}`); + return res(ctx.json(defaultResponse)); + }), + ); + + await client.getLocations({}, { token }); + }); + + it('should not forward token if omitted', async () => { + expect.assertions(1); + + server.use( + rest.get(`${mockBaseUrl}/locations`, (req, res, ctx) => { + expect(req.headers.get('authorization')).toBeNull(); + return res(ctx.json(defaultResponse)); + }), + ); + + await client.getLocations(); + }); + }); + describe('getLocationById', () => { const defaultResponse = { data: { diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index e820716945..b3f8df1aa6 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -36,6 +36,7 @@ import { GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, + GetLocationsResponse, Location, QueryEntitiesRequest, QueryEntitiesResponse, @@ -75,6 +76,21 @@ export class CatalogClient implements CatalogApi { ); } + /** + * {@inheritdoc CatalogApi.getLocations} + */ + async getLocations( + request?: {}, + options?: CatalogRequestOptions, + ): Promise { + const res = await this.requestRequired( + await this.apiClient.getLocations(request ?? {}, options), + ); + return { + items: res.map(item => item.data), + }; + } + /** * {@inheritdoc CatalogApi.getLocationById} */ diff --git a/packages/catalog-client/src/testUtils/InMemoryCatalogClient.ts b/packages/catalog-client/src/testUtils/InMemoryCatalogClient.ts index 13ce190e88..a7dd333729 100644 --- a/packages/catalog-client/src/testUtils/InMemoryCatalogClient.ts +++ b/packages/catalog-client/src/testUtils/InMemoryCatalogClient.ts @@ -28,6 +28,7 @@ import { GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, + GetLocationsResponse, Location, QueryEntitiesRequest, QueryEntitiesResponse, @@ -228,6 +229,10 @@ export class InMemoryCatalogClient implements CatalogApi { }; } + async getLocations(_request?: {}): Promise { + throw new NotImplementedError('Method not implemented.'); + } + async getLocationById(_id: string): Promise { throw new NotImplementedError('Method not implemented.'); } diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index 85cea17660..c999b29390 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -349,6 +349,15 @@ export type Location = { target: string; }; +/** + * The response type for {@link CatalogClient.getLocations} + * + * @public + */ +export interface GetLocationsResponse { + items: Location[]; +} + /** * The request type for {@link CatalogClient.addLocation}. * @@ -590,6 +599,17 @@ export interface CatalogApi { // Locations + /** + * List locations + * + * @param request - Request parameters + * @param options - Additional options + */ + getLocations( + request?: {}, + options?: CatalogRequestOptions, + ): Promise; + /** * Gets a registered location by its ID. * diff --git a/packages/catalog-client/src/types/index.ts b/packages/catalog-client/src/types/index.ts index 9bf35886c8..73b16f4554 100644 --- a/packages/catalog-client/src/types/index.ts +++ b/packages/catalog-client/src/types/index.ts @@ -31,6 +31,7 @@ export type { GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, + GetLocationsResponse, Location, ValidateEntityResponse, QueryEntitiesCursorRequest, diff --git a/packages/integration/config.d.ts b/packages/integration/config.d.ts index 8205e0c71e..9e47e9a0ff 100644 --- a/packages/integration/config.d.ts +++ b/packages/integration/config.d.ts @@ -51,12 +51,13 @@ export interface Config { /** * The credentials to use for requests. If multiple credentials are specified the first one that matches the organization is used. - * If not organization matches the first credential without an organization is used. + * If no organization matches the first credential without an organization is used. * * If no credentials are specified at all, either a default credential (for Azure DevOps) or anonymous access (for Azure DevOps Server) is used. * @deepVisibility secret */ credentials?: { + organizations?: string[]; clientId?: string; clientSecret?: string; tenantId?: string; diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index efc9c5146c..dd0ec788a3 100644 --- a/plugins/auth-backend-module-github-provider/package.json +++ b/plugins/auth-backend-module-github-provider/package.json @@ -44,6 +44,7 @@ "@backstage/cli": "workspace:^", "@backstage/plugin-auth-backend": "workspace:^", "@backstage/types": "workspace:^", + "@types/passport-github2": "^1.2.4", "supertest": "^7.0.0" }, "configSchema": "config.d.ts" diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index 0e01bf038c..bf91780c34 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -84,64 +84,6 @@ export interface Config { }; }; - /** - * The available auth-provider options and attributes - * @additionalProperties true - */ - providers?: { - /** @visibility frontend */ - saml?: { - entryPoint: string; - logoutUrl?: string; - issuer: string; - /** - * @visibility secret - */ - cert: string; - audience?: string; - /** - * @visibility secret - */ - privateKey?: string; - authnContext?: string[]; - identifierFormat?: string; - /** - * @visibility secret - */ - decryptionPvk?: string; - signatureAlgorithm?: 'sha256' | 'sha512'; - digestAlgorithm?: string; - acceptedClockSkewMs?: number; - }; - /** @visibility frontend */ - auth0?: { - [authEnv: string]: { - clientId: string; - /** - * @visibility secret - */ - clientSecret: string; - domain: string; - callbackUrl?: string; - audience?: string; - connection?: string; - connectionScope?: string; - }; - }; - /** @visibility frontend */ - onelogin?: { - [authEnv: string]: { - clientId: string; - /** - * @visibility secret - */ - clientSecret: string; - issuer: string; - callbackUrl?: string; - }; - }; - }; - /** * The backstage token expiration. */ diff --git a/plugins/auth-backend/knip-report.md b/plugins/auth-backend/knip-report.md index fd6926afb9..2661c35327 100644 --- a/plugins/auth-backend/knip-report.md +++ b/plugins/auth-backend/knip-report.md @@ -1,34 +1,2 @@ # Knip report -## Unused dependencies (14) - -| Name | Location | Severity | -| :---------------------- | :----------- | :------- | -| passport-google-oauth20 | package.json | error | -| passport-onelogin-oauth | package.json | error | -| google-auth-library | package.json | error | -| passport-microsoft | package.json | error | -| passport-github2 | package.json | error | -| passport-auth0 | package.json | error | -| openid-client | package.json | error | -| compression | package.json | error | -| node-cache | package.json | error | -| fs-extra | package.json | error | -| winston | package.json | error | -| morgan | package.json | error | -| cors | package.json | error | -| yn | package.json | error | - -## Unused devDependencies (8) - -| Name | Location | Severity | -| :----------------------------- | :----------- | :------- | -| @types/passport-google-oauth20 | package.json | error | -| @types/passport-microsoft | package.json | error | -| @types/passport-strategy | package.json | error | -| @types/passport-github2 | package.json | error | -| @types/passport-auth0 | package.json | error | -| @types/passport-saml | package.json | error | -| @types/body-parser | package.json | error | -| @types/xml2js | package.json | error | - diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 84441992e3..e6da6d2eb6 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -43,79 +43,36 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", - "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", - "@backstage/plugin-auth-backend-module-atlassian-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-auth0-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-bitbucket-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-github-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-google-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-microsoft-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-oauth2-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-oidc-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-okta-provider": "workspace:^", - "@backstage/plugin-auth-backend-module-onelogin-provider": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", "@backstage/types": "workspace:^", "@google-cloud/firestore": "^7.0.0", - "@node-saml/passport-saml": "^5.0.0", - "@types/express": "^4.17.6", - "@types/passport": "^1.0.3", - "compression": "^1.7.4", "connect-session-knex": "^4.0.0", "cookie-parser": "^1.4.5", - "cors": "^2.8.5", "express": "^4.17.1", "express-promise-router": "^4.1.0", "express-session": "^1.17.1", - "fs-extra": "^11.2.0", - "google-auth-library": "^9.0.0", "jose": "^5.0.0", "knex": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "minimatch": "^9.0.0", - "morgan": "^1.10.0", - "node-cache": "^5.1.2", - "openid-client": "^5.2.1", "passport": "^0.7.0", - "passport-auth0": "^1.4.3", - "passport-github2": "^0.1.12", - "passport-google-oauth20": "^2.0.0", - "passport-microsoft": "^1.0.0", - "passport-oauth2": "^1.6.1", - "passport-onelogin-oauth": "^0.0.1", - "uuid": "^11.0.0", - "winston": "^3.2.1", - "yn": "^4.0.0" + "uuid": "^11.0.0" }, "devDependencies": { "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", - "@types/body-parser": "^1.19.0", + "@backstage/plugin-auth-backend-module-google-provider": "workspace:^", "@types/cookie-parser": "^1.4.2", + "@types/express": "^4.17.6", "@types/express-session": "^1.17.2", - "@types/passport-auth0": "^1.0.5", - "@types/passport-github2": "^1.2.4", - "@types/passport-google-oauth20": "^2.0.3", - "@types/passport-microsoft": "^1.0.0", - "@types/passport-saml": "^1.1.3", - "@types/passport-strategy": "^0.2.35", - "@types/xml2js": "^0.4.7", - "msw": "^1.0.0", + "@types/passport": "^1.0.3", "supertest": "^7.0.0" }, "configSchema": "config.d.ts" diff --git a/plugins/auth-backend/report.api.md b/plugins/auth-backend/report.api.md index fb35ea2905..127961d664 100644 --- a/plugins/auth-backend/report.api.md +++ b/plugins/auth-backend/report.api.md @@ -3,675 +3,9 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AuthOwnershipResolver } from '@backstage/plugin-auth-node'; -import { AuthProviderConfig as AuthProviderConfig_2 } from '@backstage/plugin-auth-node'; -import { AuthProviderFactory as AuthProviderFactory_2 } from '@backstage/plugin-auth-node'; -import { AuthProviderRouteHandlers as AuthProviderRouteHandlers_2 } from '@backstage/plugin-auth-node'; -import { AuthResolverCatalogUserQuery as AuthResolverCatalogUserQuery_2 } from '@backstage/plugin-auth-node'; -import { AuthResolverContext as AuthResolverContext_2 } from '@backstage/plugin-auth-node'; -import { AuthService } from '@backstage/backend-plugin-api'; -import { AwsAlbResult as AwsAlbResult_2 } from '@backstage/plugin-auth-backend-module-aws-alb-provider'; -import { AzureEasyAuthResult } from '@backstage/plugin-auth-backend-module-azure-easyauth-provider'; import { BackendFeature } from '@backstage/backend-plugin-api'; -import { BackstageSignInResult } from '@backstage/plugin-auth-node'; -import { CacheService } from '@backstage/backend-plugin-api'; -import { CatalogApi } from '@backstage/catalog-client'; -import { ClientAuthResponse } from '@backstage/plugin-auth-node'; -import { cloudflareAccessSignInResolvers } from '@backstage/plugin-auth-backend-module-cloudflare-access-provider'; -import { Config } from '@backstage/config'; -import { CookieConfigurer as CookieConfigurer_2 } from '@backstage/plugin-auth-node'; -import { DatabaseService } from '@backstage/backend-plugin-api'; -import { decodeOAuthState } from '@backstage/plugin-auth-node'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; -import { encodeOAuthState } from '@backstage/plugin-auth-node'; -import { Entity } from '@backstage/catalog-model'; -import express from 'express'; -import { GcpIapResult as GcpIapResult_2 } from '@backstage/plugin-auth-backend-module-gcp-iap-provider'; -import { GcpIapTokenInfo as GcpIapTokenInfo_2 } from '@backstage/plugin-auth-backend-module-gcp-iap-provider'; -import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import { OAuth2ProxyResult as OAuth2ProxyResult_2 } from '@backstage/plugin-auth-backend-module-oauth2-proxy-provider'; -import { OAuthEnvironmentHandler as OAuthEnvironmentHandler_2 } from '@backstage/plugin-auth-node'; -import { OAuthState as OAuthState_2 } from '@backstage/plugin-auth-node'; -import { OidcAuthResult as OidcAuthResult_2 } from '@backstage/plugin-auth-backend-module-oidc-provider'; -import { prepareBackstageIdentityResponse as prepareBackstageIdentityResponse_2 } from '@backstage/plugin-auth-node'; -import { Profile } from 'passport'; -import { ProfileInfo as ProfileInfo_2 } from '@backstage/plugin-auth-node'; -import { RootConfigService } from '@backstage/backend-plugin-api'; -import { SignInInfo as SignInInfo_2 } from '@backstage/plugin-auth-node'; -import { SignInResolver as SignInResolver_2 } from '@backstage/plugin-auth-node'; -import { TokenManager } from '@backstage/backend-common'; -import { TokenParams as TokenParams_2 } from '@backstage/plugin-auth-node'; -import { UserEntity } from '@backstage/catalog-model'; -import { WebMessageResponse as WebMessageResponse_2 } from '@backstage/plugin-auth-node'; - -// @public @deprecated -export type AuthHandler = ( - input: TAuthResult, - context: AuthResolverContext_2, -) => Promise; - -// @public @deprecated -export type AuthHandlerResult = { - profile: ProfileInfo_2; -}; // @public const authPlugin: BackendFeature; export default authPlugin; - -// @public @deprecated (undocumented) -export type AuthProviderConfig = AuthProviderConfig_2; - -// @public @deprecated (undocumented) -export type AuthProviderFactory = AuthProviderFactory_2; - -// @public @deprecated (undocumented) -export type AuthProviderRouteHandlers = AuthProviderRouteHandlers_2; - -// @public @deprecated (undocumented) -export type AuthResolverCatalogUserQuery = AuthResolverCatalogUserQuery_2; - -// @public @deprecated (undocumented) -export type AuthResolverContext = AuthResolverContext_2; - -// @public @deprecated (undocumented) -export type AuthResponse = ClientAuthResponse; - -// @public @deprecated -export type AwsAlbResult = AwsAlbResult_2; - -// @public @deprecated (undocumented) -export type BitbucketOAuthResult = { - fullProfile: BitbucketPassportProfile; - params: { - id_token?: string; - scope: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; -}; - -// @public @deprecated (undocumented) -export type BitbucketPassportProfile = Profile & { - id?: string; - displayName?: string; - username?: string; - avatarUrl?: string; - _json?: { - links?: { - avatar?: { - href?: string; - }; - }; - }; -}; - -// @public @deprecated (undocumented) -export type BitbucketServerOAuthResult = { - fullProfile: Profile; - params: { - scope: string; - access_token?: string; - token_type?: string; - expires_in?: number; - }; - accessToken: string; - refreshToken?: string; -}; - -// @public @deprecated -export class CatalogIdentityClient { - constructor(options: { - catalogApi: CatalogApi; - tokenManager?: TokenManager; - discovery: DiscoveryService; - auth?: AuthService; - httpAuth?: HttpAuthService; - }); - findUser(query: { annotations: Record }): Promise; - resolveCatalogMembership(query: { - entityRefs: string[]; - logger?: LoggerService; - }): Promise; -} - -// @public @deprecated -export type CloudflareAccessClaims = { - aud: string[]; - email: string; - exp: number; - iat: number; - nonce: string; - identity_nonce: string; - sub: string; - iss: string; - custom: string; -}; - -// @public @deprecated -export type CloudflareAccessGroup = { - id: string; - name: string; - email: string; -}; - -// @public @deprecated -export type CloudflareAccessIdentityProfile = { - id: string; - name: string; - email: string; - groups: CloudflareAccessGroup[]; -}; - -// @public @deprecated (undocumented) -export type CloudflareAccessResult = { - claims: CloudflareAccessClaims; - cfIdentity: CloudflareAccessIdentityProfile; - expiresInSeconds?: number; - token: string; -}; - -// @public @deprecated (undocumented) -export type CookieConfigurer = CookieConfigurer_2; - -// @public @deprecated -export function createAuthProviderIntegration< - TCreateOptions extends unknown[], - TResolvers extends { - [name in string]: (...args: any[]) => SignInResolver_2; - }, ->(config: { - create: (...args: TCreateOptions) => AuthProviderFactory_2; - resolvers?: TResolvers; -}): Readonly<{ - create: (...args: TCreateOptions) => AuthProviderFactory_2; - resolvers: Readonly; -}>; - -// @public @deprecated (undocumented) -export function createOriginFilter(config: Config): (origin: string) => boolean; - -// @public @deprecated (undocumented) -export function createRouter(options: RouterOptions): Promise; - -// @public @deprecated -export const defaultAuthProviderFactories: { - [providerId: string]: AuthProviderFactory_2; -}; - -// @public @deprecated (undocumented) -export type EasyAuthResult = AzureEasyAuthResult; - -// @public @deprecated (undocumented) -export const encodeState: typeof encodeOAuthState; - -// @public @deprecated (undocumented) -export const ensuresXRequestedWith: (req: express.Request) => boolean; - -// @public @deprecated -export type GcpIapResult = GcpIapResult_2; - -// @public @deprecated -export type GcpIapTokenInfo = GcpIapTokenInfo_2; - -// @public @deprecated -export function getDefaultOwnershipEntityRefs(entity: Entity): string[]; - -// @public @deprecated (undocumented) -export type GithubOAuthResult = { - fullProfile: Profile; - params: { - scope: string; - expires_in?: string; - refresh_token_expires_in?: string; - }; - accessToken: string; - refreshToken?: string; -}; - -// @public @deprecated (undocumented) -export type OAuth2ProxyResult = OAuth2ProxyResult_2; - -// @public @deprecated (undocumented) -export class OAuthAdapter implements AuthProviderRouteHandlers_2 { - constructor(handlers: OAuthHandlers, options: OAuthAdapterOptions); - // (undocumented) - frameHandler(req: express.Request, res: express.Response): Promise; - // (undocumented) - static fromConfig( - config: AuthProviderConfig_2, - handlers: OAuthHandlers, - options: Pick< - OAuthAdapterOptions, - 'providerId' | 'persistScopes' | 'callbackUrl' - >, - ): OAuthAdapter; - // (undocumented) - logout(req: express.Request, res: express.Response): Promise; - // (undocumented) - refresh(req: express.Request, res: express.Response): Promise; - // (undocumented) - start(req: express.Request, res: express.Response): Promise; -} - -// @public @deprecated (undocumented) -export type OAuthAdapterOptions = { - providerId: string; - persistScopes?: boolean; - appOrigin: string; - baseUrl: string; - cookieConfigurer: CookieConfigurer_2; - isOriginAllowed: (origin: string) => boolean; - callbackUrl: string; -}; - -// @public @deprecated (undocumented) -export const OAuthEnvironmentHandler: typeof OAuthEnvironmentHandler_2; - -// @public @deprecated (undocumented) -export interface OAuthHandlers { - handler(req: express.Request): Promise<{ - response: OAuthResponse; - refreshToken?: string; - }>; - logout?(req: OAuthLogoutRequest): Promise; - refresh?(req: OAuthRefreshRequest): Promise<{ - response: OAuthResponse; - refreshToken?: string; - }>; - start(req: OAuthStartRequest): Promise; -} - -// @public @deprecated (undocumented) -export type OAuthLogoutRequest = express.Request<{}> & { - refreshToken: string; -}; - -// @public @deprecated (undocumented) -export type OAuthProviderInfo = { - accessToken: string; - idToken?: string; - expiresInSeconds?: number; - scope: string; -}; - -// @public @deprecated -export type OAuthProviderOptions = { - clientId: string; - clientSecret: string; - callbackUrl: string; -}; - -// @public @deprecated (undocumented) -export type OAuthRefreshRequest = express.Request<{}> & { - scope: string; - refreshToken: string; -}; - -// @public @deprecated (undocumented) -export type OAuthResponse = { - profile: ProfileInfo_2; - providerInfo: OAuthProviderInfo; - backstageIdentity?: BackstageSignInResult; -}; - -// @public @deprecated (undocumented) -export type OAuthResult = { - fullProfile: Profile; - params: { - id_token?: string; - scope: string; - token_type?: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; -}; - -// @public @deprecated (undocumented) -export type OAuthStartRequest = express.Request<{}> & { - scope: string; - state: OAuthState; -}; - -// @public @deprecated (undocumented) -export type OAuthStartResponse = { - url: string; - status?: number; -}; - -// @public @deprecated (undocumented) -export type OAuthState = OAuthState_2; - -// @public @deprecated (undocumented) -export type OidcAuthResult = OidcAuthResult_2; - -// @public @deprecated (undocumented) -export const postMessageResponse: ( - res: express.Response, - appOrigin: string, - response: WebMessageResponse, -) => void; - -// @public @deprecated (undocumented) -export const prepareBackstageIdentityResponse: typeof prepareBackstageIdentityResponse_2; - -// @public @deprecated (undocumented) -export type ProfileInfo = ProfileInfo_2; - -// @public @deprecated (undocumented) -export type ProviderFactories = { - [s: string]: AuthProviderFactory_2; -}; - -// @public @deprecated -export const providers: Readonly<{ - atlassian: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - auth0: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - awsAlb: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - bitbucket: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - userIdMatchingUserEntityAnnotation: () => SignInResolver_2; - usernameMatchingUserEntityAnnotation: () => SignInResolver_2; - }>; - }>; - bitbucketServer: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - emailMatchingUserEntityProfileEmail: () => SignInResolver_2; - }>; - }>; - cfAccess: Readonly<{ - create: (options: { - authHandler?: AuthHandler; - signIn: { - resolver: SignInResolver_2; - }; - cache?: CacheService; - }) => AuthProviderFactory_2; - resolvers: Readonly; - }>; - gcpIap: Readonly<{ - create: (options: { - authHandler?: AuthHandler; - signIn: { - resolver: SignInResolver_2; - }; - }) => AuthProviderFactory_2; - resolvers: never; - }>; - github: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - stateEncoder?: StateEncoder; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - usernameMatchingUserEntityName: () => SignInResolver_2; - }>; - }>; - gitlab: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - google: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - emailMatchingUserEntityProfileEmail: () => SignInResolver_2; - emailLocalPartMatchingUserEntityName: () => SignInResolver_2; - emailMatchingUserEntityAnnotation: () => SignInResolver_2; - }>; - }>; - microsoft: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - emailMatchingUserEntityProfileEmail: () => SignInResolver_2; - emailLocalPartMatchingUserEntityName: () => SignInResolver_2; - userIdMatchingUserEntityAnnotation: () => SignInResolver_2; - emailMatchingUserEntityAnnotation: () => SignInResolver_2; - }>; - }>; - oauth2: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - oauth2Proxy: Readonly<{ - create: (options: { - authHandler?: AuthHandler; - signIn: { - resolver: SignInResolver_2; - }; - }) => AuthProviderFactory_2; - resolvers: never; - }>; - oidc: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - emailLocalPartMatchingUserEntityName: () => SignInResolver_2; - emailMatchingUserEntityProfileEmail: () => SignInResolver_2; - }>; - }>; - okta: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - emailLocalPartMatchingUserEntityName: () => SignInResolver_2; - emailMatchingUserEntityProfileEmail: () => SignInResolver_2; - emailMatchingUserEntityAnnotation(): SignInResolver_2; - }>; - }>; - onelogin: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; - saml: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn?: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: Readonly<{ - nameIdMatchingUserEntityName(): SignInResolver_2; - }>; - }>; - easyAuth: Readonly<{ - create: ( - options?: - | { - authHandler?: AuthHandler; - signIn: { - resolver: SignInResolver_2; - }; - } - | undefined, - ) => AuthProviderFactory_2; - resolvers: never; - }>; -}>; - -// @public @deprecated (undocumented) -export const readState: typeof decodeOAuthState; - -// @public @deprecated (undocumented) -export interface RouterOptions { - // (undocumented) - auth?: AuthService; - // (undocumented) - catalogApi?: CatalogApi; - // (undocumented) - config: RootConfigService; - // (undocumented) - database: DatabaseService; - // (undocumented) - disableDefaultProviderFactories?: boolean; - // (undocumented) - discovery: DiscoveryService; - // (undocumented) - httpAuth?: HttpAuthService; - // (undocumented) - logger: LoggerService; - // (undocumented) - ownershipResolver?: AuthOwnershipResolver; - // (undocumented) - providerFactories?: ProviderFactories; - // (undocumented) - tokenFactoryAlgorithm?: string; - // (undocumented) - tokenManager?: TokenManager; -} - -// @public @deprecated (undocumented) -export type SamlAuthResult = { - fullProfile: any; -}; - -// @public @deprecated (undocumented) -export type SignInInfo = SignInInfo_2; - -// @public @deprecated (undocumented) -export type SignInResolver = SignInResolver_2; - -// @public @deprecated (undocumented) -export type StateEncoder = (req: OAuthStartRequest) => Promise<{ - encodedState: string; -}>; - -// @public @deprecated (undocumented) -export type TokenParams = TokenParams_2; - -// @public @deprecated (undocumented) -export const verifyNonce: (req: express.Request, providerId: string) => void; - -// @public @deprecated (undocumented) -export type WebMessageResponse = WebMessageResponse_2; ``` diff --git a/plugins/auth-backend/src/authPlugin.ts b/plugins/auth-backend/src/authPlugin.ts index 89b7e9a780..f3877d48cd 100644 --- a/plugins/auth-backend/src/authPlugin.ts +++ b/plugins/auth-backend/src/authPlugin.ts @@ -24,7 +24,7 @@ import { AuthProviderFactory, authProvidersExtensionPoint, } from '@backstage/plugin-auth-node'; -import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; +import { catalogServiceRef } from '@backstage/plugin-catalog-node'; import { createRouter } from './service/router'; /** @@ -66,8 +66,7 @@ export const authPlugin = createBackendPlugin({ database: coreServices.database, discovery: coreServices.discovery, auth: coreServices.auth, - httpAuth: coreServices.httpAuth, - catalogApi: catalogServiceRef, + catalog: catalogServiceRef, }, async init({ httpRouter, @@ -76,8 +75,7 @@ export const authPlugin = createBackendPlugin({ database, discovery, auth, - httpAuth, - catalogApi, + catalog, }) { const router = await createRouter({ logger, @@ -85,10 +83,8 @@ export const authPlugin = createBackendPlugin({ database, discovery, auth, - httpAuth, - catalogApi, + catalog, providerFactories: Object.fromEntries(providers), - disableDefaultProviderFactories: true, ownershipResolver, }); httpRouter.addAuthPolicy({ diff --git a/plugins/auth-backend/src/database/AuthDatabase.ts b/plugins/auth-backend/src/database/AuthDatabase.ts index 43b48401e2..a09f28c1cd 100644 --- a/plugins/auth-backend/src/database/AuthDatabase.ts +++ b/plugins/auth-backend/src/database/AuthDatabase.ts @@ -14,12 +14,10 @@ * limitations under the License. */ -import { DatabaseManager } from '@backstage/backend-common'; import { DatabaseService, resolvePackagePath, } from '@backstage/backend-plugin-api'; -import { ConfigReader } from '@backstage/config'; import { Knex } from 'knex'; const migrationsDir = resolvePackagePath( @@ -39,21 +37,6 @@ export class AuthDatabase { return new AuthDatabase(database); } - /** @internal */ - static forTesting(): AuthDatabase { - const config = new ConfigReader({ - backend: { - database: { - client: 'better-sqlite3', - connection: ':memory:', - useNullAsDefault: true, - }, - }, - }); - const database = DatabaseManager.fromConfig(config).forPlugin('auth'); - return new AuthDatabase(database); - } - static async runMigrations(knex: Knex): Promise { await knex.migrate.latest({ directory: migrationsDir, diff --git a/plugins/auth-backend/src/identity/KeyStores.test.ts b/plugins/auth-backend/src/identity/KeyStores.test.ts index 0d4ffac4d8..13818ff79c 100644 --- a/plugins/auth-backend/src/identity/KeyStores.test.ts +++ b/plugins/auth-backend/src/identity/KeyStores.test.ts @@ -20,9 +20,13 @@ import { DatabaseKeyStore } from './DatabaseKeyStore'; import { FirestoreKeyStore } from './FirestoreKeyStore'; import { KeyStores } from './KeyStores'; import { MemoryKeyStore } from './MemoryKeyStore'; -import { mockServices } from '@backstage/backend-test-utils'; +import { mockServices, TestDatabases } from '@backstage/backend-test-utils'; + +jest.setTimeout(60_000); describe('KeyStores', () => { + const databases = TestDatabases.create(); + const defaultConfigOptions = { auth: { keyStore: { @@ -32,65 +36,77 @@ describe('KeyStores', () => { }; const defaultConfig = new ConfigReader(defaultConfigOptions); - it('reads auth section from config', async () => { - const configSpy = jest.spyOn(defaultConfig, 'getOptionalConfig'); - const keyStore = await KeyStores.fromConfig(defaultConfig, { - logger: mockServices.logger.mock(), - database: AuthDatabase.forTesting(), - }); + it.each(databases.eachSupportedId())( + 'reads auth section from config, %p', + async databaseId => { + const knex = await databases.init(databaseId); + const configSpy = jest.spyOn(defaultConfig, 'getOptionalConfig'); + const keyStore = await KeyStores.fromConfig(defaultConfig, { + logger: mockServices.logger.mock(), + database: AuthDatabase.create(mockServices.database({ knex })), + }); - expect(keyStore).toBeInstanceOf(MemoryKeyStore); - expect(configSpy).toHaveBeenCalledWith('auth.keyStore'); - expect( - defaultConfig - .getOptionalConfig('auth.keyStore') - ?.getOptionalString('provider'), - ).toBe(defaultConfigOptions.auth.keyStore.provider); - }); + expect(keyStore).toBeInstanceOf(MemoryKeyStore); + expect(configSpy).toHaveBeenCalledWith('auth.keyStore'); + expect( + defaultConfig + .getOptionalConfig('auth.keyStore') + ?.getOptionalString('provider'), + ).toBe(defaultConfigOptions.auth.keyStore.provider); + }, + ); - it('can handle without auth config', async () => { - const keyStore = await KeyStores.fromConfig(new ConfigReader({}), { - logger: mockServices.logger.mock(), - database: AuthDatabase.forTesting(), - }); - expect(keyStore).toBeInstanceOf(DatabaseKeyStore); - }); + it.each(databases.eachSupportedId())( + 'can handle without auth config, %p', + async databaseId => { + const knex = await databases.init(databaseId); + const keyStore = await KeyStores.fromConfig(new ConfigReader({}), { + logger: mockServices.logger.mock(), + database: AuthDatabase.create(mockServices.database({ knex })), + }); + expect(keyStore).toBeInstanceOf(DatabaseKeyStore); + }, + ); - it('can handle additional provider config', async () => { - jest.spyOn(FirestoreKeyStore, 'verifyConnection').mockResolvedValue(); - const createSpy = jest.spyOn(FirestoreKeyStore, 'create'); + it.each(databases.eachSupportedId())( + 'can handle additional provider config, %p', + async databaseId => { + const knex = await databases.init(databaseId); + jest.spyOn(FirestoreKeyStore, 'verifyConnection').mockResolvedValue(); + const createSpy = jest.spyOn(FirestoreKeyStore, 'create'); - const configOptions = { - auth: { - keyStore: { - provider: 'firestore', - firestore: { - projectId: 'my-project', - keyFilename: 'cred.json', - path: 'my-path', - timeout: 100, - host: 'localhost', - port: 8088, - ssl: false, + const configOptions = { + auth: { + keyStore: { + provider: 'firestore', + firestore: { + projectId: 'my-project', + keyFilename: 'cred.json', + path: 'my-path', + timeout: 100, + host: 'localhost', + port: 8088, + ssl: false, + }, }, }, - }, - }; - const config = new ConfigReader(configOptions); - const keyStore = await KeyStores.fromConfig(config, { - logger: mockServices.logger.mock(), - database: AuthDatabase.forTesting(), - }); + }; + const config = new ConfigReader(configOptions); + const keyStore = await KeyStores.fromConfig(config, { + logger: mockServices.logger.mock(), + database: AuthDatabase.create(mockServices.database({ knex })), + }); - expect(keyStore).toBeInstanceOf(FirestoreKeyStore); - expect(createSpy).toHaveBeenCalledWith( - configOptions.auth.keyStore.firestore, - ); - expect( - config - .getOptionalConfig('auth.keyStore') - ?.getOptionalConfig('firestore') - ?.getOptionalString('projectId'), - ).toBe(configOptions.auth.keyStore.firestore.projectId); - }); + expect(keyStore).toBeInstanceOf(FirestoreKeyStore); + expect(createSpy).toHaveBeenCalledWith( + configOptions.auth.keyStore.firestore, + ); + expect( + config + .getOptionalConfig('auth.keyStore') + ?.getOptionalConfig('firestore') + ?.getOptionalString('projectId'), + ).toBe(configOptions.auth.keyStore.firestore.projectId); + }, + ); }); diff --git a/plugins/auth-backend/src/identity/index.ts b/plugins/auth-backend/src/identity/index.ts deleted file mode 100644 index 6ea025aae9..0000000000 --- a/plugins/auth-backend/src/identity/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { bindOidcRouter } from './router'; -export { TokenFactory } from './TokenFactory'; -export { DatabaseKeyStore } from './DatabaseKeyStore'; -export { MemoryKeyStore } from './MemoryKeyStore'; -export { FirestoreKeyStore } from './FirestoreKeyStore'; -export { KeyStores } from './KeyStores'; -export type { KeyStore, TokenParams } from './types'; -export { UserInfoDatabaseHandler } from './UserInfoDatabaseHandler'; diff --git a/plugins/auth-backend/src/identity/types.ts b/plugins/auth-backend/src/identity/types.ts index 059b9fca84..0693a2aba0 100644 --- a/plugins/auth-backend/src/identity/types.ts +++ b/plugins/auth-backend/src/identity/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { TokenParams as _TokenParams } from '@backstage/plugin-auth-node'; +import { TokenParams } from '@backstage/plugin-auth-node'; /** Represents any form of serializable JWK */ export interface AnyJWK extends Record { @@ -24,12 +24,6 @@ export interface AnyJWK extends Record { kty: string; } -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type TokenParams = _TokenParams; - /** * A TokenIssuer is able to issue verifiable ID Tokens on demand. */ @@ -37,7 +31,7 @@ export type TokenIssuer = { /** * Issues a new ID Token */ - issueToken(params: _TokenParams): Promise; + issueToken(params: TokenParams): Promise; /** * List all public keys that are currently being used to sign tokens, or have been used diff --git a/plugins/auth-backend/src/index.ts b/plugins/auth-backend/src/index.ts index 6c3f866031..1d453bde45 100644 --- a/plugins/auth-backend/src/index.ts +++ b/plugins/auth-backend/src/index.ts @@ -21,17 +21,3 @@ */ export { authPlugin as default } from './authPlugin'; -export * from './service'; -export type { TokenParams } from './identity'; -export * from './providers'; - -// flow package provides 2 functions -// ensuresXRequestedWith and postMessageResponse to safely handle CORS requests for login. The WebMessageResponse type in flow is used to type the response from the login-popup -export * from './lib/flow'; - -// OAuth wrapper over a passport or a custom `strategy`. -export * from './lib/oauth'; - -export * from './lib/catalog'; - -export { getDefaultOwnershipEntityRefs } from './lib/resolvers'; diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts index 749b684d6e..ddfa792fa1 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { TokenManager } from '@backstage/backend-common'; import { RELATION_MEMBER_OF, UserEntityV1alpha1, @@ -24,15 +23,12 @@ import { CatalogIdentityClient } from './CatalogIdentityClient'; import { mockServices } from '@backstage/backend-test-utils'; describe('CatalogIdentityClient', () => { - const tokenManager: jest.Mocked = { - getToken: jest.fn(), - authenticate: jest.fn(), - }; + const auth = mockServices.auth({ pluginId: 'auth' }); afterEach(() => jest.resetAllMocks()); it('findUser passes through the correct search params', async () => { - const catalogApi = catalogServiceMock({ + const catalog = catalogServiceMock({ entities: [ { apiVersion: 'backstage.io/v1beta1', @@ -46,27 +42,26 @@ describe('CatalogIdentityClient', () => { }, ], }); - jest.spyOn(catalogApi, 'getEntities'); + jest.spyOn(catalog, 'getEntities'); - tokenManager.getToken.mockResolvedValue({ token: 'my-token' }); const client = new CatalogIdentityClient({ - discovery: mockServices.discovery(), - catalogApi, - tokenManager, + catalog, + auth, }); await client.findUser({ annotations: { key: 'value' } }); - expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect(catalog.getEntities).toHaveBeenCalledWith( { filter: { kind: 'user', 'metadata.annotations.key': 'value', }, }, - { token: 'my-token' }, + { + credentials: await auth.getOwnServiceCredentials(), + }, ); - expect(tokenManager.getToken).toHaveBeenCalledWith(); }); it('resolveCatalogMembership resolves membership', async () => { @@ -105,21 +100,19 @@ describe('CatalogIdentityClient', () => { ], }, ]; - const catalogApi = catalogServiceMock({ entities: mockUsers }); - jest.spyOn(catalogApi, 'getEntities'); - tokenManager.getToken.mockResolvedValue({ token: 'my-token' }); + const catalog = catalogServiceMock({ entities: mockUsers }); + jest.spyOn(catalog, 'getEntities'); const client = new CatalogIdentityClient({ - discovery: {} as any, - catalogApi, - tokenManager, + catalog, + auth, }); const claims = await client.resolveCatalogMembership({ entityRefs: ['inigom', 'User:default/imontoya', 'User:reality/mpatinkin'], }); - expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect(catalog.getEntities).toHaveBeenCalledWith( { filter: [ { @@ -139,7 +132,9 @@ describe('CatalogIdentityClient', () => { }, ], }, - { token: 'my-token' }, + { + credentials: await auth.getOwnServiceCredentials(), + }, ); expect(claims).toMatchObject([ diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts index 252cae88af..bdec031e6a 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts @@ -14,14 +14,9 @@ * limitations under the License. */ -import { - AuthService, - DiscoveryService, - HttpAuthService, - LoggerService, -} from '@backstage/backend-plugin-api'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; import { ConflictError, NotFoundError } from '@backstage/errors'; -import { CatalogApi } from '@backstage/catalog-client'; +import { CatalogService } from '@backstage/plugin-catalog-node'; import { CompoundEntityRef, parseEntityRef, @@ -29,38 +24,17 @@ import { stringifyEntityRef, UserEntity, } from '@backstage/catalog-model'; -import { - TokenManager, - createLegacyAuthAdapters, -} from '@backstage/backend-common'; /** * A catalog client tailored for reading out identity data from the catalog. - * - * @public - * @deprecated Use the provided `AuthResolverContext` instead, see https://backstage.io/docs/auth/identity-resolver#building-custom-resolvers */ export class CatalogIdentityClient { - private readonly catalogApi: CatalogApi; + private readonly catalog: CatalogService; private readonly auth: AuthService; - constructor(options: { - catalogApi: CatalogApi; - tokenManager?: TokenManager; - discovery: DiscoveryService; - auth?: AuthService; - httpAuth?: HttpAuthService; - }) { - this.catalogApi = options.catalogApi; - - const { auth } = createLegacyAuthAdapters({ - auth: options.auth, - httpAuth: options.httpAuth, - discovery: options.discovery, - tokenManager: options.tokenManager, - }); - - this.auth = auth; + constructor(options: { catalog: CatalogService; auth: AuthService }) { + this.catalog = options.catalog; + this.auth = options.auth; } /** @@ -78,12 +52,10 @@ export class CatalogIdentityClient { filter[`metadata.annotations.${key}`] = value; } - const { token } = await this.auth.getPluginRequestToken({ - onBehalfOf: await this.auth.getOwnServiceCredentials(), - targetPluginId: 'catalog', - }); - - const { items } = await this.catalogApi.getEntities({ filter }, { token }); + const { items } = await this.catalog.getEntities( + { filter }, + { credentials: await this.auth.getOwnServiceCredentials() }, + ); if (items.length !== 1) { if (items.length > 1) { @@ -129,13 +101,11 @@ export class CatalogIdentityClient { 'metadata.name': ref.name, })); - const { token } = await this.auth.getPluginRequestToken({ - onBehalfOf: await this.auth.getOwnServiceCredentials(), - targetPluginId: 'catalog', - }); - - const entities = await this.catalogApi - .getEntities({ filter }, { token }) + const entities = await this.catalog + .getEntities( + { filter }, + { credentials: await this.auth.getOwnServiceCredentials() }, + ) .then(r => r.items); if (entityRefs.length !== entities.length) { diff --git a/plugins/auth-backend/src/lib/catalog/index.ts b/plugins/auth-backend/src/lib/catalog/index.ts deleted file mode 100644 index f0f5b10808..0000000000 --- a/plugins/auth-backend/src/lib/catalog/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { CatalogIdentityClient } from './CatalogIdentityClient'; diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts deleted file mode 100644 index a61d51b27b..0000000000 --- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { - safelyEncodeURIComponent, - ensuresXRequestedWith, - postMessageResponse, -} from './authFlowHelpers'; -import { WebMessageResponse } from './types'; - -describe('oauth helpers', () => { - describe('safelyEncodeURIComponent', () => { - it('encodes all occurrences of single quotes', () => { - expect(safelyEncodeURIComponent("a'ö'b")).toBe('a%27%C3%B6%27b'); - }); - }); - - describe('postMessageResponse', () => { - const appOrigin = 'http://localhost:3000'; - it('should post a message back with payload success', () => { - const mockResponse = { - end: jest.fn().mockReturnThis(), - setHeader: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - const data: WebMessageResponse = { - type: 'authorization_response', - response: { - providerInfo: { - accessToken: 'ACCESS_TOKEN', - idToken: 'ID_TOKEN', - expiresInSeconds: 10, - scope: 'email', - }, - profile: { - email: 'foo@bar.com', - }, - backstageIdentity: { - token: 'a.b.c', - identity: { - type: 'user', - ownershipEntityRefs: [], - userEntityRef: 'a', - }, - }, - }, - }; - const encoded = safelyEncodeURIComponent(JSON.stringify(data)); - - postMessageResponse(mockResponse, appOrigin, data); - expect(mockResponse.setHeader).toHaveBeenCalledTimes(3); - expect(mockResponse.end).toHaveBeenCalledTimes(1); - expect(mockResponse.end).toHaveBeenCalledWith( - expect.stringContaining(encoded), - ); - }); - - it('should post a message back with payload error', () => { - const mockResponse = { - end: jest.fn().mockReturnThis(), - setHeader: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - const data: WebMessageResponse = { - type: 'authorization_response', - error: new Error('Unknown error occurred'), - }; - const encoded = safelyEncodeURIComponent(JSON.stringify(data)); - - postMessageResponse(mockResponse, appOrigin, data); - expect(mockResponse.setHeader).toHaveBeenCalledTimes(3); - expect(mockResponse.end).toHaveBeenCalledTimes(1); - expect(mockResponse.end).toHaveBeenCalledWith( - expect.stringContaining(encoded), - ); - }); - - it('should call postMessage twice but only one of them with target *', () => { - let responseBody = ''; - - const mockResponse = { - end: jest.fn(body => { - responseBody = body; - return this; - }), - setHeader: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - const data: WebMessageResponse = { - type: 'authorization_response', - response: { - providerInfo: { - accessToken: 'ACCESS_TOKEN', - idToken: 'ID_TOKEN', - expiresInSeconds: 10, - scope: 'email', - }, - profile: { - email: 'foo@bar.com', - }, - backstageIdentity: { - token: 'a.b.c', - identity: { - type: 'user', - ownershipEntityRefs: [], - userEntityRef: 'a', - }, - }, - }, - }; - postMessageResponse(mockResponse, appOrigin, data); - expect(responseBody.match(/.postMessage\(/g)).toHaveLength(2); - expect( - responseBody.match(/.postMessage\([a-zA-Z.()]*, \'\*\'\)/g), - ).toHaveLength(1); - - const errData: WebMessageResponse = { - type: 'authorization_response', - error: new Error('Unknown error occurred'), - }; - postMessageResponse(mockResponse, appOrigin, errData); - expect(responseBody.match(/.postMessage\(/g)).toHaveLength(2); - expect( - responseBody.match(/.postMessage\([a-zA-Z.()]*, \'\*\'\)/g), - ).toHaveLength(1); - }); - - it('handles single quotes and unicode chars safely', () => { - const mockResponse = { - end: jest.fn().mockReturnThis(), - setHeader: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - const data: WebMessageResponse = { - type: 'authorization_response', - response: { - providerInfo: { - accessToken: 'ACCESS_TOKEN', - idToken: 'ID_TOKEN', - expiresInSeconds: 10, - scope: 'email', - }, - profile: { - email: 'foo@bar.com', - displayName: "Adam l'Hôpital", - }, - backstageIdentity: { - token: 'a.b.c', - identity: { - type: 'user', - ownershipEntityRefs: [], - userEntityRef: 'a', - }, - }, - }, - }; - - postMessageResponse(mockResponse, appOrigin, data); - expect(mockResponse.setHeader).toHaveBeenCalledTimes(3); - expect(mockResponse.end).toHaveBeenCalledTimes(1); - expect(mockResponse.end).toHaveBeenCalledWith( - expect.stringContaining('Adam%20l%27H%C3%B4pital'), - ); - }); - }); - - describe('ensuresXRequestedWith', () => { - it('should return false if no header present', () => { - const mockRequest = { - header: () => jest.fn(), - } as unknown as express.Request; - expect(ensuresXRequestedWith(mockRequest)).toBe(false); - }); - - it('should return false if header present with incorrect value', () => { - const mockRequest = { - header: () => 'INVALID', - } as unknown as express.Request; - expect(ensuresXRequestedWith(mockRequest)).toBe(false); - }); - - it('should return true if header present with correct value', () => { - const mockRequest = { - header: () => 'XMLHttpRequest', - } as unknown as express.Request; - expect(ensuresXRequestedWith(mockRequest)).toBe(true); - }); - }); -}); diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts deleted file mode 100644 index 2f1770a3d4..0000000000 --- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import crypto from 'crypto'; -import { WebMessageResponse } from './types'; - -export const safelyEncodeURIComponent = (value: string) => { - // Note the g at the end of the regex; all occurrences of single quotes must - // be replaced, which encodeURIComponent does not do itself by default - return encodeURIComponent(value).replace(/'/g, '%27'); -}; - -/** - * @public - * @deprecated Use `sendWebMessageResponse` from `@backstage/plugin-auth-node` instead - */ -export const postMessageResponse = ( - res: express.Response, - appOrigin: string, - response: WebMessageResponse, -) => { - const jsonData = JSON.stringify(response); - const base64Data = safelyEncodeURIComponent(jsonData); - const base64Origin = safelyEncodeURIComponent(appOrigin); - - // NOTE: It is absolutely imperative that we use the safe encoder above, to - // be sure that the js code below does not allow the injection of malicious - // data. - - // TODO: Make target app origin configurable globally - - // - // postMessage fails silently if the targetOrigin is disallowed. - // So 2 postMessages are sent from the popup to the parent window. - // First, the origin being used to post the actual authorization response is - // shared with the parent window with a postMessage with targetOrigin '*'. - // Second, the actual authorization response is sent with the app origin - // as the targetOrigin. - // If the first message was received but the actual auth response was - // never received, the event listener can conclude that targetOrigin - // was disallowed, indicating potential misconfiguration. - // - const script = ` - var authResponse = decodeURIComponent('${base64Data}'); - var origin = decodeURIComponent('${base64Origin}'); - var originInfo = {'type': 'config_info', 'targetOrigin': origin}; - (window.opener || window.parent).postMessage(originInfo, '*'); - (window.opener || window.parent).postMessage(JSON.parse(authResponse), origin); - setTimeout(() => { - window.close(); - }, 100); // same as the interval of the core-app-api lib/loginPopup.ts (to address race conditions) - `; - const hash = crypto.createHash('sha256').update(script).digest('base64'); - - res.setHeader('Content-Type', 'text/html'); - res.setHeader('X-Frame-Options', 'sameorigin'); - res.setHeader('Content-Security-Policy', `script-src 'sha256-${hash}'`); - res.end(``); -}; - -/** - * @public - * @deprecated Use inline logic to check that the `X-Requested-With` header is set to `'XMLHttpRequest'` instead. - */ -export const ensuresXRequestedWith = (req: express.Request) => { - const requiredHeader = req.header('X-Requested-With'); - if (!requiredHeader || requiredHeader !== 'XMLHttpRequest') { - return false; - } - return true; -}; diff --git a/plugins/auth-backend/src/lib/flow/index.ts b/plugins/auth-backend/src/lib/flow/index.ts deleted file mode 100644 index f7b4491edb..0000000000 --- a/plugins/auth-backend/src/lib/flow/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { ensuresXRequestedWith, postMessageResponse } from './authFlowHelpers'; - -export type { WebMessageResponse } from './types'; diff --git a/plugins/auth-backend/src/lib/flow/types.ts b/plugins/auth-backend/src/lib/flow/types.ts deleted file mode 100644 index 36f3033b21..0000000000 --- a/plugins/auth-backend/src/lib/flow/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { WebMessageResponse as _WebMessageResponse } from '@backstage/plugin-auth-node'; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type WebMessageResponse = _WebMessageResponse; diff --git a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.test.ts b/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.test.ts deleted file mode 100644 index 5c5de6a890..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AuthResolverContext } from '@backstage/plugin-auth-node'; -import { AuthHandler } from '../../providers'; -import { OAuthResult } from '../oauth'; -import { PassportProfile } from '../passport/types'; -import { adaptLegacyOAuthHandler } from './adaptLegacyOAuthHandler'; - -describe('adaptLegacyOAuthHandler', () => { - it('should pass through undefined', () => { - expect(adaptLegacyOAuthHandler(undefined)).toBeUndefined(); - }); - - it('should convert an old auth handler to a new profile transform', () => { - const authHandler: AuthHandler = jest.fn(); - const profileTransform = adaptLegacyOAuthHandler(authHandler); - - profileTransform?.( - { - fullProfile: { id: 'id' } as PassportProfile, - session: { - accessToken: 'token', - expiresInSeconds: 3, - scope: 'sco pe', - tokenType: 'bear', - idToken: 'id-token', - refreshToken: 'refresh-token', - }, - }, - { ctx: 'ctx' } as unknown as AuthResolverContext, - ); - - expect(authHandler).toHaveBeenCalledWith( - { - fullProfile: { id: 'id' }, - accessToken: 'token', - params: { - scope: 'sco pe', - id_token: 'id-token', - expires_in: 3, - token_type: 'bear', - }, - }, - { ctx: 'ctx' }, - ); - }); -}); diff --git a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.ts b/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.ts deleted file mode 100644 index 3b8eca0a95..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthHandler.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - OAuthAuthenticatorResult, - ProfileTransform, -} from '@backstage/plugin-auth-node'; -import { AuthHandler } from '../../providers'; -import { OAuthResult } from '../oauth'; -import { PassportProfile } from '../passport/types'; - -/** @internal */ -export function adaptLegacyOAuthHandler( - authHandler?: AuthHandler, -): ProfileTransform> | undefined { - return ( - authHandler && - (async (result, ctx) => - authHandler( - { - fullProfile: result.fullProfile, - accessToken: result.session.accessToken, - params: { - scope: result.session.scope, - id_token: result.session.idToken, - token_type: result.session.tokenType, - expires_in: result.session.expiresInSeconds!, - }, - }, - ctx, - )) - ); -} diff --git a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.test.ts b/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.test.ts deleted file mode 100644 index 749cf96cbb..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - AuthResolverContext, - PassportProfile, -} from '@backstage/plugin-auth-node'; -import { adaptLegacyOAuthSignInResolver } from './adaptLegacyOAuthSignInResolver'; - -describe('adaptLegacyOAuthSignInResolver', () => { - it('should pass through undefined', () => { - expect(adaptLegacyOAuthSignInResolver(undefined)).toBeUndefined(); - }); - - it('should convert a legacy resolver to a new one', () => { - const legacyResolver = jest.fn(); - - const newResolver = adaptLegacyOAuthSignInResolver(legacyResolver); - - newResolver?.( - { - profile: { email: 'em@i.l' }, - result: { - fullProfile: { id: 'id' } as PassportProfile, - session: { - accessToken: 'token', - expiresInSeconds: 3, - scope: 'sco pe', - tokenType: 'bear', - idToken: 'id-token', - refreshToken: 'refresh-token', - }, - }, - }, - { ctx: 'ctx' } as unknown as AuthResolverContext, - ); - - expect(legacyResolver).toHaveBeenCalledWith( - { - profile: { email: 'em@i.l' }, - result: { - fullProfile: { id: 'id' }, - accessToken: 'token', - refreshToken: 'refresh-token', - params: { - scope: 'sco pe', - id_token: 'id-token', - expires_in: 3, - token_type: 'bear', - }, - }, - }, - { ctx: 'ctx' }, - ); - }); -}); diff --git a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.ts b/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.ts deleted file mode 100644 index e671a62d52..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptLegacyOAuthSignInResolver.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - OAuthAuthenticatorResult, - PassportProfile, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { OAuthResult } from '../oauth'; - -/** @internal */ -export function adaptLegacyOAuthSignInResolver( - signInResolver?: SignInResolver, -): SignInResolver> | undefined { - return ( - signInResolver && - (async (input, ctx) => - signInResolver( - { - profile: input.profile, - result: { - fullProfile: input.result.fullProfile, - accessToken: input.result.session.accessToken, - refreshToken: input.result.session.refreshToken, - params: { - scope: input.result.session.scope, - id_token: input.result.session.idToken, - token_type: input.result.session.tokenType, - expires_in: input.result.session.expiresInSeconds!, - }, - }, - }, - ctx, - )) - ); -} diff --git a/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.test.ts b/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.test.ts deleted file mode 100644 index 521dcf6395..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - AuthResolverContext, - PassportProfile, -} from '@backstage/plugin-auth-node'; -import { adaptOAuthSignInResolverToLegacy } from './adaptOAuthSignInResolverToLegacy'; - -describe('adaptOAuthSignInResolverToLegacy', () => { - it('should pass through an empty object', () => { - const legacyResolvers = adaptOAuthSignInResolverToLegacy({}); - expect(legacyResolvers).toEqual({}); - - // @ts-expect-error - legacyResolvers.missing?.(); - }); - - it('should adapt a collection of sign-in resolvers', () => { - const resolverA = jest.fn(); - const resolverB = jest.fn(); - - const legacyResolvers = adaptOAuthSignInResolverToLegacy({ - resolverA, - resolverB, - }); - - const legacyResolverA = legacyResolvers.resolverA(); - legacyResolverA( - { - profile: { email: 'em@i.l' }, - result: { - fullProfile: { id: 'id' } as PassportProfile, - accessToken: 'token', - refreshToken: 'refresh-token', - params: { - scope: 'sco pe', - id_token: 'id-token', - expires_in: 3, - token_type: 'bear', - }, - }, - }, - { ctx: 'ctx' } as unknown as AuthResolverContext, - ); - - expect(resolverA).toHaveBeenCalledWith( - { - profile: { email: 'em@i.l' }, - result: { - fullProfile: { id: 'id' } as PassportProfile, - session: { - accessToken: 'token', - expiresInSeconds: 3, - scope: 'sco pe', - tokenType: 'bear', - idToken: 'id-token', - refreshToken: 'refresh-token', - }, - }, - }, - { ctx: 'ctx' }, - ); - - expect(resolverB).not.toHaveBeenCalled(); - legacyResolvers.resolverB()( - { profile: {}, result: { params: {} } } as any, - {} as any, - ); - expect(resolverB).toHaveBeenCalled(); - }); -}); diff --git a/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.ts b/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.ts deleted file mode 100644 index 8be6049348..0000000000 --- a/plugins/auth-backend/src/lib/legacy/adaptOAuthSignInResolverToLegacy.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - OAuthAuthenticatorResult, - PassportProfile, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { OAuthResult } from '../oauth'; - -/** @internal */ -export function adaptOAuthSignInResolverToLegacy< - TKeys extends string, ->(resolvers: { - [key in TKeys]: SignInResolver>; -}): { [key in TKeys]: () => SignInResolver } { - const legacyResolvers = {} as { - [key in TKeys]: () => SignInResolver; - }; - for (const name of Object.keys(resolvers) as TKeys[]) { - const resolver = resolvers[name]; - legacyResolvers[name] = () => async (input, ctx) => - resolver( - { - profile: input.profile, - result: { - fullProfile: input.result.fullProfile, - session: { - accessToken: input.result.accessToken, - expiresInSeconds: input.result.params.expires_in, - scope: input.result.params.scope, - idToken: input.result.params.id_token, - tokenType: input.result.params.token_type ?? 'bearer', - refreshToken: input.result.refreshToken, - }, - }, - }, - ctx, - ); - } - return legacyResolvers; -} diff --git a/plugins/auth-backend/src/lib/legacy/index.ts b/plugins/auth-backend/src/lib/legacy/index.ts deleted file mode 100644 index 8bd8b5c62e..0000000000 --- a/plugins/auth-backend/src/lib/legacy/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { adaptLegacyOAuthHandler } from './adaptLegacyOAuthHandler'; -export { adaptLegacyOAuthSignInResolver } from './adaptLegacyOAuthSignInResolver'; -export { adaptOAuthSignInResolverToLegacy } from './adaptOAuthSignInResolverToLegacy'; diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts deleted file mode 100644 index 48163e6e82..0000000000 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts +++ /dev/null @@ -1,549 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { THOUSAND_DAYS_MS, TEN_MINUTES_MS, OAuthAdapter } from './OAuthAdapter'; -import { encodeState } from './helpers'; -import { OAuthHandlers, OAuthLogoutRequest } from './types'; -import { CookieConfigurer, OAuthState } from '@backstage/plugin-auth-node'; - -const mockResponseData = { - providerInfo: { - accessToken: 'ACCESS_TOKEN', - token: 'ID_TOKEN', - expiresInSeconds: 10, - scope: 'email', - }, - profile: { - email: 'foo@bar.com', - }, - backstageIdentity: { - token: - 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', - }, -}; - -describe('OAuthAdapter', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - class MyAuthProvider implements OAuthHandlers { - async start() { - return { - url: '/url', - status: 301, - }; - } - async handler() { - return { - response: mockResponseData, - refreshToken: 'token', - }; - } - async refresh() { - return { - response: mockResponseData, - refreshToken: 'token', - }; - } - async logout(_: OAuthLogoutRequest) {} - } - const providerInstance = new MyAuthProvider(); - const mockCookieConfig: ReturnType = { - domain: 'domain.org', - path: '/auth/test-provider', - secure: false, - }; - const mockCookieConfigurer = jest.fn().mockReturnValue(mockCookieConfig); - - const oAuthProviderOptions = { - providerId: 'test-provider', - appOrigin: 'http://localhost:3000', - baseUrl: 'http://domain.org/auth', - cookieConfigurer: mockCookieConfigurer, - tokenIssuer: { - issueToken: async () => 'my-id-token', - listPublicKeys: async () => ({ keys: [] }), - }, - isOriginAllowed: () => false, - callbackUrl: 'http://domain.org/auth/test-provider/handler/frame', - }; - - const defaultState = { nonce: 'nonce', env: 'development' }; - - const createEncodedQueryMockRequest = (state: any) => { - return { - cookies: { - 'test-provider-nonce': 'nonce', - }, - query: { - state: encodeState(state), - }, - } as unknown as express.Request; - }; - - const mockResponse = { - cookie: jest.fn().mockReturnThis(), - end: jest.fn().mockReturnThis(), - setHeader: jest.fn().mockReturnThis(), - statusCode: jest.fn().mockReturnThis(), - redirect: jest.fn().mockReturnThis(), - status: jest.fn().mockReturnThis(), - json: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - const mockStartRequest = { - query: { - scope: 'user', - env: 'development', - }, - } as unknown as express.Request; - - const expectedStartAuthCookieData = { - httpOnly: true, - path: '/auth/test-provider/handler', - maxAge: TEN_MINUTES_MS, - domain: 'domain.org', - sameSite: 'lax', - secure: false, - }; - - it('sets the correct headers in start', async () => { - const oauthProvider = new OAuthAdapter( - providerInstance, - oAuthProviderOptions, - ); - - await oauthProvider.start(mockStartRequest, mockResponse); - // nonce cookie checks - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - `${oAuthProviderOptions.providerId}-nonce`, - expect.any(String), - expect.objectContaining(expectedStartAuthCookieData), - ); - expect(mockResponse.setHeader).toHaveBeenCalledTimes(2); - expect(mockResponse.setHeader).toHaveBeenCalledWith('Location', '/url'); - expect(mockResponse.setHeader).toHaveBeenCalledWith('Content-Length', '0'); - expect(mockResponse.statusCode).toEqual(301); - expect(mockResponse.end).toHaveBeenCalledTimes(1); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const refreshCookieData = { - ...expectedStartAuthCookieData, - path: '/auth/test-provider', - maxAge: THOUSAND_DAYS_MS, - }; - - it('sets the refresh cookie if refresh is enabled', async () => { - const oauthProvider = new OAuthAdapter(providerInstance, { - ...oAuthProviderOptions, - isOriginAllowed: () => false, - }); - - const mockRequest = createEncodedQueryMockRequest(defaultState); - - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - expect.stringContaining('test-provider-refresh-token'), - expect.stringContaining('token'), - expect.objectContaining(refreshCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - it('sets the refresh cookie if refresh is enabled with redirect', async () => { - const oauthProvider = new OAuthAdapter(providerInstance, { - ...oAuthProviderOptions, - isOriginAllowed: () => false, - }); - - const state = { - ...defaultState, - redirectUrl: 'http://localhost:3000', - flow: 'redirect', - }; - const mockRequest = createEncodedQueryMockRequest(state); - - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockResponse.redirect).toHaveBeenCalledTimes(1); - }); - - it('persists scope through cookie if enabled', async () => { - const handlers = { - start: jest.fn(async (_req: { state: OAuthState }) => ({ - url: '/url', - status: 301, - })), - handler: jest.fn(async () => ({ response: mockResponseData })), - refresh: jest.fn(async () => ({ response: mockResponseData })), - }; - const oauthProvider = new OAuthAdapter(handlers, { - ...oAuthProviderOptions, - persistScopes: true, - }); - - // First we test the /start request, making sure state is set - await oauthProvider.start(mockStartRequest, mockResponse); - - expect(handlers.start).toHaveBeenCalledTimes(1); - expect(handlers.start).toHaveBeenCalledWith({ - ...mockStartRequest, - scope: 'user', - state: { - nonce: expect.any(String), - env: 'development', - scope: 'user', - }, - }); - - // Then test the /handler, making sure the granted scope cookie is set - const providedState = handlers.start.mock.calls[0][0].state; - const mockHandleReq = { - cookies: { - 'test-provider-nonce': providedState.nonce, - }, - query: { - state: encodeState(providedState), - }, - } as unknown as express.Request; - const mockHandleRes = { - cookie: jest.fn().mockReturnThis(), - setHeader: jest.fn().mockReturnThis(), - end: jest.fn().mockReturnThis(), - redirect: jest.fn().mockReturnThis(), - } as unknown as express.Response; - - await oauthProvider.frameHandler(mockHandleReq, mockHandleRes); - expect(mockHandleRes.cookie).toHaveBeenCalledTimes(1); - expect(mockHandleRes.cookie).toHaveBeenCalledWith( - 'test-provider-granted-scope', - 'user', - expect.objectContaining(refreshCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - - // Then make sure scopes are forwarded correctly during refresh - const mockRefreshReq = { - query: { scope: 'ignore-me' }, - cookies: { - 'test-provider-granted-scope': 'user', - 'test-provider-refresh-token': 'refresh-token', - }, - header: jest.fn().mockReturnValue('XMLHttpRequest'), - } as unknown as express.Request; - const mockRefreshRes = { - status: jest.fn().mockReturnThis(), - json: jest.fn().mockReturnThis(), - redirect: jest.fn().mockReturnThis(), - } as unknown as express.Response; - await oauthProvider.refresh(mockRefreshReq, mockRefreshRes); - expect(handlers.refresh).toHaveBeenCalledTimes(1); - expect(handlers.refresh).toHaveBeenCalledWith( - expect.objectContaining({ - scope: 'user', - refreshToken: 'refresh-token', - }), - ); - expect(mockRefreshRes.redirect).not.toHaveBeenCalled(); - }); - - const mockRequestWithHeader = { - header: () => 'XMLHttpRequest', - cookies: { - 'test-provider-refresh-token': 'token', - }, - query: {}, - get: jest.fn(), - } as unknown as express.Request; - - it('removes refresh cookie and calls logout handler when logging out', async () => { - const logoutSpy = jest.spyOn(providerInstance, 'logout'); - const oauthProvider = new OAuthAdapter(providerInstance, { - ...oAuthProviderOptions, - isOriginAllowed: () => false, - }); - - await oauthProvider.logout(mockRequestWithHeader, mockResponse); - expect(mockRequestWithHeader.get).toHaveBeenCalledTimes(1); - expect(logoutSpy).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - expect.stringContaining('test-provider-refresh-token'), - '', - expect.objectContaining({ path: '/auth/test-provider' }), - ); - expect(mockResponse.end).toHaveBeenCalledTimes(1); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - it('gets new access-token when refreshing', async () => { - const oauthProvider = new OAuthAdapter(providerInstance, { - ...oAuthProviderOptions, - isOriginAllowed: () => false, - }); - - await oauthProvider.refresh(mockRequestWithHeader, mockResponse); - expect(mockResponse.json).toHaveBeenCalledTimes(1); - expect(mockResponse.json).toHaveBeenCalledWith({ - ...mockResponseData, - backstageIdentity: { - token: mockResponseData.backstageIdentity.token, - identity: { - type: 'user', - userEntityRef: 'user:default/jimmymarkum', - ownershipEntityRefs: ['user:default/jimmymarkum'], - }, - }, - }); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - it('sets new access-token when old cookie exists', async () => { - const oauthProvider = new OAuthAdapter(providerInstance, { - ...oAuthProviderOptions, - isOriginAllowed: () => false, - }); - - const mockRequest = { - ...mockRequestWithHeader, - cookies: { - 'test-provider-refresh-token': 'old-token', - }, - } as unknown as express.Request; - - await oauthProvider.refresh(mockRequest, mockResponse); - expect(mockRequest.get).toHaveBeenCalledTimes(1); - expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - 'test-provider-refresh-token', - 'token', - expect.objectContaining(refreshCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - it('sets the correct nonce cookie configuration', async () => { - const config = { - baseUrl: 'http://domain.org/auth', - appUrl: 'http://domain.org', - isOriginAllowed: () => false, - }; - - const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { - ...oAuthProviderOptions, - }); - - await oauthProvider.start(mockStartRequest, mockResponse); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - `${oAuthProviderOptions.providerId}-nonce`, - expect.any(String), - expect.objectContaining(expectedStartAuthCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const config = { - baseUrl: 'http://domain.org/auth', - appUrl: 'http://domain.org', - isOriginAllowed: () => false, - }; - - const mockStartRequestWithOrigin = { - query: { - scope: 'user', - env: 'development', - origin: 'http://other.domain', - }, - } as unknown as express.Request; - - it('sets the correct nonce cookie configuration using origin from request', async () => { - const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { - ...oAuthProviderOptions, - callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', - }); - - await oauthProvider.start(mockStartRequestWithOrigin, mockResponse); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - `${oAuthProviderOptions.providerId}-nonce`, - expect.any(String), - expect.objectContaining({ - ...expectedStartAuthCookieData, - secure: true, - sameSite: 'none', - }), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const secureCookieData = { - ...refreshCookieData, - secure: true, - sameSite: 'lax', - maxAge: THOUSAND_DAYS_MS, - }; - - it('sets the correct cookie configuration using an secure callbackUrl', async () => { - const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { - ...oAuthProviderOptions, - callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', - }); - - const mockRequest = createEncodedQueryMockRequest(defaultState); - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - expect.stringContaining('test-provider-refresh-token'), - expect.stringContaining('token'), - expect.objectContaining(secureCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const secureSameSiteNoneCookieData = { - ...secureCookieData, - sameSite: 'none', - }; - - it('sets the correct cookie configuration when on different domains and secure', async () => { - const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { - ...oAuthProviderOptions, - callbackUrl: 'https://authdomain.org/auth/test-provider/handler/frame', - }); - - const mockRequest = createEncodedQueryMockRequest(defaultState); - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - expect.stringContaining('test-provider-refresh-token'), - expect.stringContaining('token'), - expect.objectContaining({ - ...secureSameSiteNoneCookieData, - domain: 'authdomain.org', - }), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const configOriginAllowed = { - ...config, - isOriginAllowed: () => true, - }; - - it('sets the correct cookie configuration using origin from state', async () => { - const oauthProvider = OAuthAdapter.fromConfig( - configOriginAllowed, - providerInstance, - { - ...oAuthProviderOptions, - callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', - }, - ); - - const mockRequest = createEncodedQueryMockRequest({ - ...defaultState, - origin: 'http://other.domain', - }); - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - expect.stringContaining('test-provider-refresh-token'), - expect.stringContaining('token'), - expect.objectContaining(secureSameSiteNoneCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - const mockRequestWithGetMockReturn = { - header: () => 'XMLHttpRequest', - cookies: { - 'test-provider-refresh-token': 'old-token', - }, - query: {}, - get: jest.fn().mockReturnValue('http://other.domain'), - } as unknown as express.Request; - - it('sets the correct cookie configuration using origin from header', async () => { - const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { - ...oAuthProviderOptions, - callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', - }); - - await oauthProvider.refresh(mockRequestWithGetMockReturn, mockResponse); - expect(mockRequestWithGetMockReturn.get).toHaveBeenCalledTimes(1); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).toHaveBeenCalledTimes(1); - expect(mockResponse.cookie).toHaveBeenCalledWith( - 'test-provider-refresh-token', - 'token', - expect.objectContaining(secureSameSiteNoneCookieData), - ); - expect(mockResponse.redirect).not.toHaveBeenCalled(); - }); - - it('executed a response redirect when flow query string is set to "redirect"', async () => { - const handlers = { - start: jest.fn(async (_req: { state: OAuthState }) => ({ - url: '/url', - status: 301, - })), - handler: jest.fn(async () => ({ response: mockResponseData })), - refresh: jest.fn(async () => ({ response: mockResponseData })), - }; - const configWithNoPopupEnabled = { - ...configOriginAllowed, - }; - const oauthProvider = OAuthAdapter.fromConfig( - configWithNoPopupEnabled, - handlers, - { - ...oAuthProviderOptions, - callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', - }, - ); - - const state = { - ...defaultState, - origin: 'http://other.domain', - redirectUrl: 'http://domain.org', - flow: 'redirect', - }; - - const mockRequest = { - ...createEncodedQueryMockRequest(state), - get: jest.fn().mockReturnValue('http://other.domain'), - } as unknown as express.Request; - - await oauthProvider.frameHandler(mockRequest, mockResponse); - expect(mockRequest.get).not.toHaveBeenCalled(); - expect(mockCookieConfigurer).not.toHaveBeenCalled(); - expect(mockResponse.cookie).not.toHaveBeenCalled(); - expect(mockResponse.redirect).toHaveBeenCalledTimes(1); - expect(mockResponse.redirect).toHaveBeenCalledWith('http://domain.org'); - }); -}); diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts deleted file mode 100644 index b5c3642024..0000000000 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express, { CookieOptions } from 'express'; -import crypto from 'crypto'; -import { URL } from 'url'; -import { - AuthProviderConfig, - AuthProviderRouteHandlers, - BackstageIdentityResponse, - BackstageSignInResult, - CookieConfigurer, - OAuthState, -} from '@backstage/plugin-auth-node'; -import { - AuthenticationError, - InputError, - isError, - NotAllowedError, -} from '@backstage/errors'; -import { defaultCookieConfigurer, readState, verifyNonce } from './helpers'; -import { - postMessageResponse, - ensuresXRequestedWith, - WebMessageResponse, -} from '../flow'; -import { - OAuthHandlers, - OAuthStartRequest, - OAuthRefreshRequest, - OAuthLogoutRequest, -} from './types'; -import { prepareBackstageIdentityResponse } from '../../providers/prepareBackstageIdentityResponse'; - -export const THOUSAND_DAYS_MS = 1000 * 24 * 60 * 60 * 1000; -export const TEN_MINUTES_MS = 600 * 1000; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type OAuthAdapterOptions = { - providerId: string; - persistScopes?: boolean; - appOrigin: string; - baseUrl: string; - cookieConfigurer: CookieConfigurer; - isOriginAllowed: (origin: string) => boolean; - callbackUrl: string; -}; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export class OAuthAdapter implements AuthProviderRouteHandlers { - static fromConfig( - config: AuthProviderConfig, - handlers: OAuthHandlers, - options: Pick< - OAuthAdapterOptions, - 'providerId' | 'persistScopes' | 'callbackUrl' - >, - ): OAuthAdapter { - const { appUrl, baseUrl, isOriginAllowed } = config; - const { origin: appOrigin } = new URL(appUrl); - - const cookieConfigurer = config.cookieConfigurer ?? defaultCookieConfigurer; - - return new OAuthAdapter(handlers, { - ...options, - appOrigin, - baseUrl, - cookieConfigurer, - isOriginAllowed, - }); - } - - private readonly baseCookieOptions: CookieOptions; - - constructor( - private readonly handlers: OAuthHandlers, - private readonly options: OAuthAdapterOptions, - ) { - this.baseCookieOptions = { - httpOnly: true, - sameSite: 'lax', - }; - } - - async start(req: express.Request, res: express.Response): Promise { - // retrieve scopes from request - const scope = req.query.scope?.toString() ?? ''; - const env = req.query.env?.toString(); - const origin = req.query.origin?.toString(); - const redirectUrl = req.query.redirectUrl?.toString(); - const flow = req.query.flow?.toString(); - - if (!env) { - throw new InputError('No env provided in request query parameters'); - } - - const cookieConfig = this.getCookieConfig(origin); - - const nonce = crypto.randomBytes(16).toString('base64'); - // set a nonce cookie before redirecting to oauth provider - this.setNonceCookie(res, nonce, cookieConfig); - - const state: OAuthState = { nonce, env, origin, redirectUrl, flow }; - - // If scopes are persisted then we pass them through the state so that we - // can set the cookie on successful auth - if (this.options.persistScopes) { - state.scope = scope; - } - const forwardReq = Object.assign(req, { scope, state }); - - const { url, status } = await this.handlers.start( - forwardReq as OAuthStartRequest, - ); - - res.statusCode = status || 302; - res.setHeader('Location', url); - res.setHeader('Content-Length', '0'); - res.end(); - } - - async frameHandler( - req: express.Request, - res: express.Response, - ): Promise { - let appOrigin = this.options.appOrigin; - - try { - const state: OAuthState = readState(req.query.state?.toString() ?? ''); - - if (state.origin) { - try { - appOrigin = new URL(state.origin).origin; - } catch { - throw new NotAllowedError('App origin is invalid, failed to parse'); - } - if (!this.options.isOriginAllowed(appOrigin)) { - throw new NotAllowedError(`Origin '${appOrigin}' is not allowed`); - } - } - - // verify nonce cookie and state cookie on callback - verifyNonce(req, this.options.providerId); - - const { response, refreshToken } = await this.handlers.handler(req); - - const cookieConfig = this.getCookieConfig(appOrigin); - - // Store the scope that we have been granted for this session. This is useful if - // the provider does not return granted scopes on refresh or if they are normalized. - if (this.options.persistScopes && state.scope) { - this.setGrantedScopeCookie(res, state.scope, cookieConfig); - response.providerInfo.scope = state.scope; - } - - if (refreshToken) { - // set new refresh token - this.setRefreshTokenCookie(res, refreshToken, cookieConfig); - } - - const identity = await this.populateIdentity(response.backstageIdentity); - - const responseObj: WebMessageResponse = { - type: 'authorization_response', - response: { ...response, backstageIdentity: identity }, - }; - - if (state.flow === 'redirect') { - if (!state.redirectUrl) { - throw new InputError( - 'No redirectUrl provided in request query parameters', - ); - } - res.redirect(state.redirectUrl); - return undefined; - } - // post message back to popup if successful - return postMessageResponse(res, appOrigin, responseObj); - } catch (error) { - const { name, message } = isError(error) - ? error - : new Error('Encountered invalid error'); // Being a bit safe and not forwarding the bad value - // post error message back to popup if failure - return postMessageResponse(res, appOrigin, { - type: 'authorization_response', - error: { name, message }, - }); - } - } - - async logout(req: express.Request, res: express.Response): Promise { - if (!ensuresXRequestedWith(req)) { - throw new AuthenticationError('Invalid X-Requested-With header'); - } - - if (this.handlers.logout) { - const refreshToken = this.getRefreshTokenFromCookie(req); - const revokeRequest: OAuthLogoutRequest = Object.assign(req, { - refreshToken, - }); - await this.handlers.logout(revokeRequest); - } - - // remove refresh token cookie if it is set - const origin = req.get('origin'); - const cookieConfig = this.getCookieConfig(origin); - this.removeRefreshTokenCookie(res, cookieConfig); - - res.status(200).end(); - } - - async refresh(req: express.Request, res: express.Response): Promise { - if (!ensuresXRequestedWith(req)) { - throw new AuthenticationError('Invalid X-Requested-With header'); - } - - if (!this.handlers.refresh) { - throw new InputError( - `Refresh token is not supported for provider ${this.options.providerId}`, - ); - } - - try { - const refreshToken = this.getRefreshTokenFromCookie(req); - - // throw error if refresh token is missing in the request - if (!refreshToken) { - throw new InputError('Missing session cookie'); - } - - let scope = req.query.scope?.toString() ?? ''; - if (this.options.persistScopes) { - scope = this.getGrantedScopeFromCookie(req); - } - const forwardReq = Object.assign(req, { scope, refreshToken }); - - // get new access_token - const { response, refreshToken: newRefreshToken } = - await this.handlers.refresh(forwardReq as OAuthRefreshRequest); - - const backstageIdentity = await this.populateIdentity( - response.backstageIdentity, - ); - - if (newRefreshToken && newRefreshToken !== refreshToken) { - const origin = req.get('origin'); - const cookieConfig = this.getCookieConfig(origin); - this.setRefreshTokenCookie(res, newRefreshToken, cookieConfig); - } - - res.status(200).json({ ...response, backstageIdentity }); - } catch (error) { - throw new AuthenticationError('Refresh failed', error); - } - } - - /** - * If the response from the OAuth provider includes a Backstage identity, we - * make sure it's populated with all the information we can derive from the user ID. - */ - private async populateIdentity( - identity?: BackstageSignInResult, - ): Promise { - if (!identity) { - return undefined; - } - if (!identity.token) { - throw new InputError(`Identity response must return a token`); - } - - return prepareBackstageIdentityResponse(identity); - } - - private setNonceCookie = ( - res: express.Response, - nonce: string, - cookieConfig: ReturnType, - ) => { - res.cookie(`${this.options.providerId}-nonce`, nonce, { - maxAge: TEN_MINUTES_MS, - ...this.baseCookieOptions, - ...cookieConfig, - path: `${cookieConfig.path}/handler`, - }); - }; - - private setGrantedScopeCookie = ( - res: express.Response, - scope: string, - cookieConfig: ReturnType, - ) => { - res.cookie(`${this.options.providerId}-granted-scope`, scope, { - maxAge: THOUSAND_DAYS_MS, - ...this.baseCookieOptions, - ...cookieConfig, - }); - }; - - private getRefreshTokenFromCookie = (req: express.Request) => { - return req.cookies[`${this.options.providerId}-refresh-token`]; - }; - - private getGrantedScopeFromCookie = (req: express.Request) => { - return req.cookies[`${this.options.providerId}-granted-scope`]; - }; - - private setRefreshTokenCookie = ( - res: express.Response, - refreshToken: string, - cookieConfig: ReturnType, - ) => { - res.cookie(`${this.options.providerId}-refresh-token`, refreshToken, { - maxAge: THOUSAND_DAYS_MS, - ...this.baseCookieOptions, - ...cookieConfig, - }); - }; - - private removeRefreshTokenCookie = ( - res: express.Response, - cookieConfig: ReturnType, - ) => { - res.cookie(`${this.options.providerId}-refresh-token`, '', { - maxAge: 0, - ...this.baseCookieOptions, - ...cookieConfig, - }); - }; - - private getCookieConfig = (origin?: string) => { - return this.options.cookieConfigurer({ - providerId: this.options.providerId, - baseUrl: this.options.baseUrl, - callbackUrl: this.options.callbackUrl, - appOrigin: origin ?? this.options.appOrigin, - }); - }; -} diff --git a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts b/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts deleted file mode 100644 index c9244eb29e..0000000000 --- a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { OAuthEnvironmentHandler as _OAuthEnvironmentHandler } from '@backstage/plugin-auth-node'; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export const OAuthEnvironmentHandler = _OAuthEnvironmentHandler; diff --git a/plugins/auth-backend/src/lib/oauth/helpers.test.ts b/plugins/auth-backend/src/lib/oauth/helpers.test.ts deleted file mode 100644 index c8db34e2cc..0000000000 --- a/plugins/auth-backend/src/lib/oauth/helpers.test.ts +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { - verifyNonce, - encodeState, - readState, - defaultCookieConfigurer, -} from './helpers'; - -describe('OAuthProvider Utils', () => { - describe('encodeState', () => { - it('should serialized values', () => { - const state = { - nonce: '123', - env: 'development', - origin: 'https://example.com', - }; - - const encoded = encodeState(state); - expect(encoded).toBe( - Buffer.from( - 'nonce=123&env=development&origin=https%3A%2F%2Fexample.com', - ).toString('hex'), - ); - - expect(readState(encoded)).toEqual(state); - }); - - it('should not include undefined values', () => { - const state = { nonce: '123', env: 'development', origin: undefined }; - - const encoded = encodeState(state); - expect(encoded).toBe( - Buffer.from('nonce=123&env=development').toString('hex'), - ); - - expect(readState(encoded)).toEqual(state); - }); - }); - - describe('verifyNonce', () => { - it('should throw error if cookie nonce missing', () => { - const state = { nonce: 'NONCE', env: 'development' }; - const mockRequest = { - cookies: {}, - query: { - state: encodeState(state), - }, - } as unknown as express.Request; - expect(() => { - verifyNonce(mockRequest, 'providera'); - }).toThrow('Auth response is missing cookie nonce'); - }); - - it('should throw error if state nonce missing', () => { - const mockRequest = { - cookies: { - 'providera-nonce': 'NONCE', - }, - query: {}, - } as unknown as express.Request; - expect(() => { - verifyNonce(mockRequest, 'providera'); - }).toThrow('OAuth state is invalid, missing env'); - }); - - it('should throw error if nonce mismatch', () => { - const state = { nonce: 'NONCEB', env: 'development' }; - const mockRequest = { - cookies: { - 'providera-nonce': 'NONCEA', - }, - query: { - state: encodeState(state), - }, - } as unknown as express.Request; - expect(() => { - verifyNonce(mockRequest, 'providera'); - }).toThrow('Invalid nonce'); - }); - - it('should not throw any error if nonce matches', () => { - const state = { nonce: 'NONCE', env: 'development' }; - const mockRequest = { - cookies: { - 'providera-nonce': 'NONCE', - }, - query: { - state: encodeState(state), - }, - } as unknown as express.Request; - expect(() => { - verifyNonce(mockRequest, 'providera'); - }).not.toThrow(); - }); - }); - - describe('defaultCookieConfigurer', () => { - it('should set the correct domain and path for a base url', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'http://domain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - domain: 'domain.org', - path: '/auth/test-provider', - secure: false, - }); - }); - - it('should set the correct domain and path for a url containing a frame handler', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'http://domain.org/auth/test-provider/handler/frame', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - domain: 'domain.org', - path: '/auth/test-provider', - secure: false, - }); - }); - - it('should set the secure flag if url is using https', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'https://domain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - secure: true, - }); - }); - - it('should set sameSite to lax for https on the same domain', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'https://domain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - sameSite: 'lax', - secure: true, - }); - }); - - it('should set sameSite to lax for http on the same domain', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'http://domain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - sameSite: 'lax', - secure: false, - }); - }); - - it('should set sameSite to lax if not secure and on different domains', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'http://authdomain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - sameSite: 'lax', - secure: false, - }); - }); - - it('should set sameSite to none if secure and on different domains', () => { - expect( - defaultCookieConfigurer({ - baseUrl: '', - providerId: 'test-provider', - callbackUrl: 'https://authdomain.org/auth', - appOrigin: 'http://domain.org', - }), - ).toMatchObject({ - sameSite: 'none', - secure: true, - }); - }); - }); -}); diff --git a/plugins/auth-backend/src/lib/oauth/helpers.ts b/plugins/auth-backend/src/lib/oauth/helpers.ts deleted file mode 100644 index fef6dd04ae..0000000000 --- a/plugins/auth-backend/src/lib/oauth/helpers.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { - CookieConfigurer, - OAuthState, - decodeOAuthState, - encodeOAuthState, -} from '@backstage/plugin-auth-node'; - -/** - * @public - * @deprecated Use `decodeOAuthState` from `@backstage/plugin-auth-node` instead - */ -export const readState = decodeOAuthState; - -/** - * @public - * @deprecated Use `encodeOAuthState` from `@backstage/plugin-auth-node` instead - */ -export const encodeState = encodeOAuthState; - -/** - * @public - * @deprecated Use inline logic to make sure the session and state nonce matches instead. - */ -export const verifyNonce = (req: express.Request, providerId: string) => { - const cookieNonce = req.cookies[`${providerId}-nonce`]; - const state: OAuthState = readState(req.query.state?.toString() ?? ''); - const stateNonce = state.nonce; - - if (!cookieNonce) { - throw new Error('Auth response is missing cookie nonce'); - } - if (stateNonce.length === 0) { - throw new Error('Auth response is missing state nonce'); - } - if (cookieNonce !== stateNonce) { - throw new Error('Invalid nonce'); - } -}; - -export const defaultCookieConfigurer: CookieConfigurer = ({ - callbackUrl, - providerId, - appOrigin, -}) => { - const { hostname: domain, pathname, protocol } = new URL(callbackUrl); - const secure = protocol === 'https:'; - - // For situations where the auth-backend is running on a - // different domain than the app, we set the SameSite attribute - // to 'none' to allow third-party access to the cookie, but - // only if it's in a secure context (https). - let sameSite: ReturnType['sameSite'] = 'lax'; - if (new URL(appOrigin).hostname !== domain && secure) { - sameSite = 'none'; - } - - // If the provider supports callbackUrls, the pathname will - // contain the complete path to the frame handler so we need - // to slice off the trailing part of the path. - const path = pathname.endsWith(`${providerId}/handler/frame`) - ? pathname.slice(0, -'/handler/frame'.length) - : `${pathname}/${providerId}`; - - return { domain, path, secure, sameSite }; -}; diff --git a/plugins/auth-backend/src/lib/oauth/index.ts b/plugins/auth-backend/src/lib/oauth/index.ts deleted file mode 100644 index 3643898bed..0000000000 --- a/plugins/auth-backend/src/lib/oauth/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { OAuthEnvironmentHandler } from './OAuthEnvironmentHandler'; -export type { OAuthAdapterOptions } from './OAuthAdapter'; -export { OAuthAdapter } from './OAuthAdapter'; -export { encodeState, verifyNonce, readState } from './helpers'; -export type { - OAuthHandlers, - OAuthProviderInfo, - OAuthProviderOptions, - OAuthResponse, - OAuthState, - OAuthStartRequest, - OAuthRefreshRequest, - OAuthLogoutRequest, - OAuthResult, -} from './types'; diff --git a/plugins/auth-backend/src/lib/oauth/types.ts b/plugins/auth-backend/src/lib/oauth/types.ts deleted file mode 100644 index 76689abcdc..0000000000 --- a/plugins/auth-backend/src/lib/oauth/types.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { Profile as PassportProfile } from 'passport'; -import { - BackstageSignInResult, - ProfileInfo, - OAuthState as _OAuthState, -} from '@backstage/plugin-auth-node'; -import { OAuthStartResponse } from '../../providers/types'; - -/** - * Common options for passport.js-based OAuth providers - * - * @public - * @deprecated No longer in use - */ -export type OAuthProviderOptions = { - /** - * Client ID of the auth provider. - */ - clientId: string; - /** - * Client Secret of the auth provider. - */ - clientSecret: string; - /** - * Callback URL to be passed to the auth provider to redirect to after the user signs in. - */ - callbackUrl: string; -}; - -/** - * @public - * @deprecated Use `OAuthAuthenticatorResult` from `@backstage/plugin-auth-node` instead - */ -export type OAuthResult = { - fullProfile: PassportProfile; - params: { - id_token?: string; - scope: string; - token_type?: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; -}; - -/** - * @public - * @deprecated Use `ClientAuthResponse` from `@backstage/plugin-auth-node` instead - */ -export type OAuthResponse = { - profile: ProfileInfo; - providerInfo: OAuthProviderInfo; - backstageIdentity?: BackstageSignInResult; -}; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type OAuthProviderInfo = { - /** - * An access token issued for the signed in user. - */ - accessToken: string; - /** - * (Optional) Id token issued for the signed in user. - */ - idToken?: string; - /** - * Expiry of the access token in seconds. - */ - expiresInSeconds?: number; - /** - * Scopes granted for the access token. - */ - scope: string; -}; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type OAuthState = _OAuthState; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type OAuthStartRequest = express.Request<{}> & { - scope: string; - state: OAuthState; -}; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type OAuthRefreshRequest = express.Request<{}> & { - scope: string; - refreshToken: string; -}; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type OAuthLogoutRequest = express.Request<{}> & { - refreshToken: string; -}; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export interface OAuthHandlers { - /** - * Initiate a sign in request with an auth provider. - */ - start(req: OAuthStartRequest): Promise; - - /** - * Handle the redirect from the auth provider when the user has signed in. - */ - handler(req: express.Request): Promise<{ - response: OAuthResponse; - refreshToken?: string; - }>; - - /** - * (Optional) Given a refresh token and scope fetches a new access token from the auth provider. - */ - refresh?(req: OAuthRefreshRequest): Promise<{ - response: OAuthResponse; - refreshToken?: string; - }>; - - /** - * (Optional) Sign out of the auth provider. - */ - logout?(req: OAuthLogoutRequest): Promise; -} diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts deleted file mode 100644 index d9e80263ee..0000000000 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { UnsecuredJWT } from 'jose'; -import passport from 'passport'; -import { InternalOAuthError } from 'passport-oauth2'; -import { - executeRedirectStrategy, - executeFrameHandlerStrategy, - executeRefreshTokenStrategy, - makeProfileInfo, -} from './PassportStrategyHelper'; -import { PassportProfile } from './types'; - -const mockRequest = {} as unknown as express.Request; - -describe('PassportStrategyHelper', () => { - describe('makeProfileInfo', () => { - it('retrieves email from passport profile', () => { - const profile: PassportProfile = { - emails: [{ value: 'email' }], - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo(profile); - - expect(profileInfo.email).toEqual('email'); - }); - - it('retrieves picture from passport profile avatarUrl', () => { - const profile: PassportProfile = { - avatarUrl: 'avatarUrl', - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo(profile); - - expect(profileInfo.picture).toEqual('avatarUrl'); - }); - - it('falls back to picture from passport profile photos field', () => { - const profile: PassportProfile = { - photos: [{ value: 'picture' }], - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo(profile); - - expect(profileInfo.picture).toEqual('picture'); - }); - - it('falls back to email from ID token', async () => { - const profile: PassportProfile = { - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo( - profile, - await new UnsecuredJWT({ email: 'email' }).encode(), - ); - - expect(profileInfo.email).toEqual('email'); - }); - - it('falls back to picture from ID token', async () => { - const profile: PassportProfile = { - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo( - profile, - await new UnsecuredJWT({ picture: 'picture' }).encode(), - ); - - expect(profileInfo.picture).toEqual('picture'); - }); - - it('falls back to name from ID token', async () => { - const profile: PassportProfile = { - provider: '', - id: '', - displayName: '', - }; - - const profileInfo = makeProfileInfo( - profile, - await new UnsecuredJWT({ name: 'name' }).encode(), - ); - - expect(profileInfo.displayName).toEqual('name'); - }); - - it('fails when attempting to fall back to invalid JWT', () => { - const profile: PassportProfile = { - provider: '', - id: '', - displayName: '', - }; - - expect(() => makeProfileInfo(profile, 'invalid JWT')).toThrow( - 'Failed to parse id token and get profile info', - ); - }); - }); - - class MyCustomRedirectStrategy extends passport.Strategy { - authenticate() { - this.redirect('a', 302); - } - } - - describe('executeRedirectStrategy', () => { - it('should call authenticate and resolve with OAuthStartResponse', async () => { - const mockStrategy = new MyCustomRedirectStrategy(); - const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); - const redirectStrategyPromise = executeRedirectStrategy( - mockRequest, - mockStrategy, - {}, - ); - expect(spyAuthenticate).toHaveBeenCalledTimes(1); - await expect(redirectStrategyPromise).resolves.toStrictEqual( - expect.objectContaining({ url: 'a', status: 302 }), - ); - }); - }); - - describe('executeFrameHandlerStrategy', () => { - class MyCustomAuthSuccessStrategy extends passport.Strategy { - authenticate() { - this.success( - { accessToken: 'ACCESS_TOKEN' }, - { refreshToken: 'REFRESH_TOKEN' }, - ); - } - } - class MyCustomAuthErrorStrategy extends passport.Strategy { - authenticate() { - this.error( - new InternalOAuthError('MyCustomAuth error', { - data: '{ "message": "Custom message" }', - }), - ); - } - } - class MyCustomAuthRedirectStrategy extends passport.Strategy { - authenticate() { - this.redirect('URL', 302); - } - } - class MyCustomAuthFailStrategy extends passport.Strategy { - authenticate() { - this.fail('challenge', 302); - } - } - - it('should resolve with user and info on success', async () => { - const mockStrategy = new MyCustomAuthSuccessStrategy(); - const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); - const frameHandlerStrategyPromise = executeFrameHandlerStrategy( - mockRequest, - mockStrategy, - ); - expect(spyAuthenticate).toHaveBeenCalledTimes(1); - await expect(frameHandlerStrategyPromise).resolves.toStrictEqual( - expect.objectContaining({ - result: { accessToken: 'ACCESS_TOKEN' }, - privateInfo: { refreshToken: 'REFRESH_TOKEN' }, - }), - ); - }); - - it('should reject on error', async () => { - const mockStrategy = new MyCustomAuthErrorStrategy(); - const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); - const frameHandlerStrategyPromise = executeFrameHandlerStrategy( - mockRequest, - mockStrategy, - ); - expect(spyAuthenticate).toHaveBeenCalledTimes(1); - await expect(frameHandlerStrategyPromise).rejects.toThrow( - 'Authentication failed, MyCustomAuth error - Custom message', - ); - }); - - it('should reject on redirect', async () => { - const mockStrategy = new MyCustomAuthRedirectStrategy(); - const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); - const frameHandlerStrategyPromise = executeFrameHandlerStrategy( - mockRequest, - mockStrategy, - ); - expect(spyAuthenticate).toHaveBeenCalledTimes(1); - await expect(frameHandlerStrategyPromise).rejects.toThrow( - 'Unexpected redirect', - ); - }); - - it('should reject on fail', async () => { - const mockStrategy = new MyCustomAuthFailStrategy(); - const spyAuthenticate = jest.spyOn(mockStrategy, 'authenticate'); - const frameHandlerStrategyPromise = executeFrameHandlerStrategy( - mockRequest, - mockStrategy, - ); - expect(spyAuthenticate).toHaveBeenCalledTimes(1); - await expect(frameHandlerStrategyPromise).rejects.toThrow(); - }); - }); - - describe('executeRefreshTokenStrategy', () => { - it('should resolve with a new access token, scope and expiry', async () => { - class MyCustomOAuth2Success { - getOAuthAccessToken( - _refreshToken: string, - _options: any, - callback: Function, - ) { - callback(null, 'ACCESS_TOKEN', 'REFRESH_TOKEN', { - scope: 'a', - expires_in: 10, - }); - } - } - class MyCustomRefreshTokenSuccess extends passport.Strategy { - _oauth2 = new MyCustomOAuth2Success(); - userProfile(_accessToken: string, callback: Function) { - callback(null, { - provider: 'a', - email: 'b', - name: 'c', - picture: 'd', - }); - } - } - - const mockStrategy = new MyCustomRefreshTokenSuccess(); - const refreshTokenPromise = executeRefreshTokenStrategy( - mockStrategy, - 'REFRESH_TOKEN', - 'a', - ); - await expect(refreshTokenPromise).resolves.toStrictEqual( - expect.objectContaining({ - accessToken: 'ACCESS_TOKEN', - params: expect.objectContaining({ scope: 'a', expires_in: 10 }), - }), - ); - }); - - it('should forward simple errors', async () => { - class MyCustomRefreshTokenSuccess extends passport.Strategy { - _oauth2 = new (class { - getOAuthAccessToken(_r: string, _o: any, cb: Function) { - cb(new Error('Unknown error')); - } - })(); - } - - await expect( - executeRefreshTokenStrategy( - new MyCustomRefreshTokenSuccess(), - 'REFRESH_TOKEN', - 'a', - ), - ).rejects.toThrow( - 'Failed to refresh access token; caused by Error: Unknown error', - ); - }); - - it('should forward string errors', async () => { - class MyCustomRefreshTokenSuccess extends passport.Strategy { - _oauth2 = new (class { - getOAuthAccessToken(_r: string, _o: any, cb: Function) { - cb('some silly string error'); - } - })(); - } - - await expect( - executeRefreshTokenStrategy( - new MyCustomRefreshTokenSuccess(), - 'REFRESH_TOKEN', - 'a', - ), - ).rejects.toThrow( - "Failed to refresh access token; caused by unknown error 'some silly string error'", - ); - }); - - it('should forward object errors', async () => { - class MyCustomRefreshTokenSuccess extends passport.Strategy { - _oauth2 = new (class { - getOAuthAccessToken(_r: string, _o: any, cb: Function) { - cb({ name: 'SomeError', message: 'some message' }); - } - })(); - } - - await expect( - executeRefreshTokenStrategy( - new MyCustomRefreshTokenSuccess(), - 'REFRESH_TOKEN', - 'a', - ), - ).rejects.toThrow( - 'Failed to refresh access token; caused by SomeError: some message', - ); - }); - - it('should reject with an error if access token missing in refresh callback', async () => { - class MyCustomOAuth2AccessTokenMissing { - getOAuthAccessToken( - _refreshToken: string, - _options: any, - callback: Function, - ) { - callback(null, ''); - } - } - class MyCustomRefreshTokenSuccess extends passport.Strategy { - _oauth2 = new MyCustomOAuth2AccessTokenMissing(); - } - - const mockStrategy = new MyCustomRefreshTokenSuccess(); - const refreshTokenPromise = executeRefreshTokenStrategy( - mockStrategy, - 'REFRESH_TOKEN', - 'a', - ); - await expect(refreshTokenPromise).rejects.toThrow( - 'Failed to refresh access token, no access token received', - ); - }); - }); -}); diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts deleted file mode 100644 index ef9284c1fb..0000000000 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import passport from 'passport'; -import { decodeJwt } from 'jose'; -import { InternalOAuthError } from 'passport-oauth2'; -import { ProfileInfo } from '@backstage/plugin-auth-node'; -import { PassportProfile } from './types'; -import { OAuthStartResponse } from '../../providers/types'; -import { ForwardedError } from '@backstage/errors'; - -export type PassportDoneCallback = ( - err?: Error, - response?: Res, - privateInfo?: Private, -) => void; - -export const makeProfileInfo = ( - profile: PassportProfile, - idToken?: string, -): ProfileInfo => { - let email: string | undefined = undefined; - if (profile.emails && profile.emails.length > 0) { - const [firstEmail] = profile.emails; - email = firstEmail.value; - } - - let picture: string | undefined = undefined; - if (profile.avatarUrl) { - picture = profile.avatarUrl; - } else if (profile.photos && profile.photos.length > 0) { - const [firstPhoto] = profile.photos; - picture = firstPhoto.value; - } - - let displayName: string | undefined = - profile.displayName ?? profile.username ?? profile.id; - - if ((!email || !picture || !displayName) && idToken) { - try { - const decoded = decodeJwt(idToken) as { - email?: string; - name?: string; - picture?: string; - }; - if (!email && decoded.email) { - email = decoded.email; - } - if (!picture && decoded.picture) { - picture = decoded.picture; - } - if (!displayName && decoded.name) { - displayName = decoded.name; - } - } catch (e) { - throw new ForwardedError( - `Failed to parse id token and get profile info`, - e, - ); - } - } - - return { - email, - picture, - displayName, - }; -}; - -export const executeRedirectStrategy = async ( - req: express.Request, - providerStrategy: passport.Strategy, - options: Record, -): Promise => { - return new Promise(resolve => { - const strategy = Object.create(providerStrategy); - strategy.redirect = (url: string, status?: number) => { - resolve({ url, status: status ?? undefined }); - }; - - strategy.authenticate(req, { ...options }); - }); -}; - -export const executeFrameHandlerStrategy = async ( - req: express.Request, - providerStrategy: passport.Strategy, - options?: Record, -) => { - return new Promise<{ result: Result; privateInfo: PrivateInfo }>( - (resolve, reject) => { - const strategy = Object.create(providerStrategy); - strategy.success = (result: any, privateInfo: any) => { - resolve({ result, privateInfo }); - }; - strategy.fail = ( - info: { type: 'success' | 'error'; message?: string }, - // _status: number, - ) => { - reject(new Error(`Authentication rejected, ${info.message ?? ''}`)); - }; - strategy.error = (error: InternalOAuthError) => { - let message = `Authentication failed, ${error.message}`; - - if (error.oauthError?.data) { - try { - const errorData = JSON.parse(error.oauthError.data); - - if (errorData.message) { - message += ` - ${errorData.message}`; - } - } catch (parseError) { - message += ` - ${error.oauthError}`; - } - } - - reject(new Error(message)); - }; - strategy.redirect = () => { - reject(new Error('Unexpected redirect')); - }; - strategy.authenticate(req, { ...(options ?? {}) }); - }, - ); -}; - -type RefreshTokenResponse = { - /** - * An access token issued for the signed in user. - */ - accessToken: string; - /** - * Optionally, the server can issue a new Refresh Token for the user - */ - refreshToken?: string; - params: any; -}; - -export const executeRefreshTokenStrategy = async ( - providerStrategy: passport.Strategy, - refreshToken: string, - scope: string, -): Promise => { - return new Promise((resolve, reject) => { - const anyStrategy = providerStrategy as any; - const OAuth2 = anyStrategy._oauth2.constructor; - const oauth2 = new OAuth2( - anyStrategy._oauth2._clientId, - anyStrategy._oauth2._clientSecret, - anyStrategy._oauth2._baseSite, - anyStrategy._oauth2._authorizeUrl, - anyStrategy._refreshURL || anyStrategy._oauth2._accessTokenUrl, - anyStrategy._oauth2._customHeaders, - ); - - oauth2.getOAuthAccessToken( - refreshToken, - { - scope, - grant_type: 'refresh_token', - }, - ( - err: Error | null, - accessToken: string, - newRefreshToken: string, - params: any, - ) => { - if (err) { - reject(new ForwardedError(`Failed to refresh access token`, err)); - } - if (!accessToken) { - reject( - new Error( - `Failed to refresh access token, no access token received`, - ), - ); - } - - resolve({ - accessToken, - refreshToken: newRefreshToken, - params, - }); - }, - ); - }); -}; - -type ProviderStrategy = { - userProfile(accessToken: string, callback: Function): void; -}; - -export const executeFetchUserProfileStrategy = async ( - providerStrategy: passport.Strategy, - accessToken: string, -): Promise => { - return new Promise((resolve, reject) => { - const anyStrategy = providerStrategy as unknown as ProviderStrategy; - anyStrategy.userProfile( - accessToken, - (error: Error, rawProfile: PassportProfile) => { - if (error) { - reject(error); - } else { - resolve(rawProfile); - } - }, - ); - }); -}; diff --git a/plugins/auth-backend/src/lib/passport/index.ts b/plugins/auth-backend/src/lib/passport/index.ts deleted file mode 100644 index 17ab71f51f..0000000000 --- a/plugins/auth-backend/src/lib/passport/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { - executeFetchUserProfileStrategy, - executeFrameHandlerStrategy, - executeRedirectStrategy, - executeRefreshTokenStrategy, - makeProfileInfo, -} from './PassportStrategyHelper'; -export type { PassportDoneCallback } from './PassportStrategyHelper'; diff --git a/plugins/auth-backend/src/lib/passport/types.ts b/plugins/auth-backend/src/lib/passport/types.ts deleted file mode 100644 index 55fe4543fc..0000000000 --- a/plugins/auth-backend/src/lib/passport/types.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import passport from 'passport'; - -export type PassportProfile = passport.Profile & { - avatarUrl?: string; -}; diff --git a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts index c51d99a558..4426cb7815 100644 --- a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts +++ b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.test.ts @@ -17,7 +17,6 @@ import { CatalogAuthResolverContext } from './CatalogAuthResolverContext'; import { mockServices } from '@backstage/backend-test-utils'; import { TokenIssuer } from '../../identity/types'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils'; import { NotFoundError } from '@backstage/errors'; @@ -26,17 +25,16 @@ describe('CatalogAuthResolverContext', () => { jest.clearAllMocks(); }); - const catalogApi = catalogServiceMock(); - jest.spyOn(catalogApi, 'getEntities'); + const catalog = catalogServiceMock(); + jest.spyOn(catalog, 'getEntities'); it('adds kind to filter when missing', async () => { + const auth = mockServices.auth(); const context = CatalogAuthResolverContext.create({ logger: mockServices.logger.mock(), - catalogApi, + catalog, tokenIssuer: {} as TokenIssuer, - discovery: {} as DiscoveryService, - auth: mockServices.auth(), - httpAuth: mockServices.httpAuth(), + auth, }); await expect( @@ -44,11 +42,11 @@ describe('CatalogAuthResolverContext', () => { filter: [{}, { kind: 'group' }, { KIND: 'USER' }], }), ).rejects.toThrow(NotFoundError); - expect(catalogApi.getEntities).toHaveBeenCalledWith( + expect(catalog.getEntities).toHaveBeenCalledWith( { filter: [{ kind: 'user' }, { kind: 'group' }, { KIND: 'USER' }], }, - { token: 'mock-service-token:{"sub":"plugin:test","target":"catalog"}' }, + { credentials: await auth.getOwnServiceCredentials() }, ); }); }); diff --git a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.ts b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.ts index 7f66179d81..bbf42c70eb 100644 --- a/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.ts +++ b/plugins/auth-backend/src/lib/resolvers/CatalogAuthResolverContext.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -import { TokenManager } from '@backstage/backend-common'; -import { CatalogApi } from '@backstage/catalog-client'; import { DEFAULT_NAMESPACE, Entity, @@ -24,12 +22,8 @@ import { stringifyEntityRef, } from '@backstage/catalog-model'; import { ConflictError, InputError, NotFoundError } from '@backstage/errors'; -import { - AuthService, - DiscoveryService, - HttpAuthService, - LoggerService, -} from '@backstage/backend-plugin-api'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; +import { CatalogService } from '@backstage/plugin-catalog-node'; import { TokenIssuer } from '../../identity/types'; import { AuthOwnershipResolver, @@ -37,18 +31,9 @@ import { AuthResolverContext, TokenParams, } from '@backstage/plugin-auth-node'; -import { CatalogIdentityClient } from '../catalog'; +import { CatalogIdentityClient } from '../catalog/CatalogIdentityClient'; -/** - * Uses the default ownership resolution logic to return an array - * of entity refs that the provided entity claims ownership through. - * - * A reference to the entity itself will also be included in the returned array. - * - * @public - * @deprecated use `ctx.resolveOwnershipEntityRefs(entity)` from the provided `AuthResolverContext` instead. - */ -export function getDefaultOwnershipEntityRefs(entity: Entity) { +function getDefaultOwnershipEntityRefs(entity: Entity) { const membershipRefs = entity.relations ?.filter( @@ -59,33 +44,24 @@ export function getDefaultOwnershipEntityRefs(entity: Entity) { return Array.from(new Set([stringifyEntityRef(entity), ...membershipRefs])); } -/** - * @internal - */ export class CatalogAuthResolverContext implements AuthResolverContext { static create(options: { logger: LoggerService; - catalogApi: CatalogApi; + catalog: CatalogService; tokenIssuer: TokenIssuer; - tokenManager?: TokenManager; - discovery: DiscoveryService; auth: AuthService; - httpAuth: HttpAuthService; ownershipResolver?: AuthOwnershipResolver; }): CatalogAuthResolverContext { const catalogIdentityClient = new CatalogIdentityClient({ - catalogApi: options.catalogApi, - tokenManager: options.tokenManager, - discovery: options.discovery, + catalog: options.catalog, auth: options.auth, - httpAuth: options.httpAuth, }); return new CatalogAuthResolverContext( options.logger, options.tokenIssuer, catalogIdentityClient, - options.catalogApi, + options.catalog, options.auth, options.ownershipResolver, ); @@ -95,7 +71,7 @@ export class CatalogAuthResolverContext implements AuthResolverContext { public readonly logger: LoggerService, public readonly tokenIssuer: TokenIssuer, public readonly catalogIdentityClient: CatalogIdentityClient, - private readonly catalogApi: CatalogApi, + private readonly catalog: CatalogService, private readonly auth: AuthService, private readonly ownershipResolver?: AuthOwnershipResolver, ) {} @@ -107,17 +83,15 @@ export class CatalogAuthResolverContext implements AuthResolverContext { async findCatalogUser(query: AuthResolverCatalogUserQuery) { let result: Entity[] | Entity | undefined = undefined; - const { token } = await this.auth.getPluginRequestToken({ - onBehalfOf: await this.auth.getOwnServiceCredentials(), - targetPluginId: 'catalog', - }); if ('entityRef' in query) { const entityRef = parseEntityRef(query.entityRef, { defaultKind: 'User', defaultNamespace: DEFAULT_NAMESPACE, }); - result = await this.catalogApi.getEntityByRef(entityRef, { token }); + result = await this.catalog.getEntityByRef(entityRef, { + credentials: await this.auth.getOwnServiceCredentials(), + }); } else if ('annotations' in query) { const filter: Record = { kind: 'user', @@ -125,7 +99,10 @@ export class CatalogAuthResolverContext implements AuthResolverContext { for (const [key, value] of Object.entries(query.annotations)) { filter[`metadata.annotations.${key}`] = value; } - const res = await this.catalogApi.getEntities({ filter }, { token }); + const res = await this.catalog.getEntities( + { filter }, + { credentials: await this.auth.getOwnServiceCredentials() }, + ); result = res.items; } else if ('filter' in query) { const filter = [query.filter].flat().map(value => { @@ -141,9 +118,9 @@ export class CatalogAuthResolverContext implements AuthResolverContext { } return value; }); - const res = await this.catalogApi.getEntities( + const res = await this.catalog.getEntities( { filter: filter }, - { token }, + { credentials: await this.auth.getOwnServiceCredentials() }, ); result = res.items; } else { diff --git a/plugins/auth-backend/src/lib/resolvers/index.ts b/plugins/auth-backend/src/lib/resolvers/index.ts deleted file mode 100644 index c1ca59cb25..0000000000 --- a/plugins/auth-backend/src/lib/resolvers/index.ts +++ /dev/null @@ -1,20 +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. - */ - -export { - CatalogAuthResolverContext, - getDefaultOwnershipEntityRefs, -} from './CatalogAuthResolverContext'; diff --git a/plugins/auth-backend/src/providers/atlassian/index.ts b/plugins/auth-backend/src/providers/atlassian/index.ts deleted file mode 100644 index f001463694..0000000000 --- a/plugins/auth-backend/src/providers/atlassian/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { atlassian } from './provider'; diff --git a/plugins/auth-backend/src/providers/atlassian/provider.ts b/plugins/auth-backend/src/providers/atlassian/provider.ts deleted file mode 100644 index 539f055f75..0000000000 --- a/plugins/auth-backend/src/providers/atlassian/provider.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { atlassianAuthenticator } from '@backstage/plugin-auth-backend-module-atlassian-provider'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; - -/** - * Auth provider integration for Atlassian auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const atlassian = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: atlassianAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/atlassian/strategy.ts b/plugins/auth-backend/src/providers/atlassian/strategy.ts deleted file mode 100644 index d07b09c5f8..0000000000 --- a/plugins/auth-backend/src/providers/atlassian/strategy.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import OAuth2Strategy, { InternalOAuthError } from 'passport-oauth2'; -import { Profile } from 'passport'; - -interface ProfileResponse { - account_id: string; - email: string; - name: string; - picture: string; - nickname: string; -} - -interface AtlassianStrategyOptions { - clientID: string; - clientSecret: string; - callbackURL: string; - scope: string; -} - -const defaultScopes = ['offline_access', 'read:me']; - -export default class AtlassianStrategy extends OAuth2Strategy { - private readonly profileURL: string; - - constructor( - options: AtlassianStrategyOptions, - verify: OAuth2Strategy.VerifyFunction, - ) { - if (!options.scope) { - throw new TypeError('Atlassian requires a scope option'); - } - - const scopes = options.scope.split(' '); - - const optionsWithURLs = { - ...options, - authorizationURL: `https://auth.atlassian.com/authorize`, - tokenURL: `https://auth.atlassian.com/oauth/token`, - scope: Array.from(new Set([...defaultScopes, ...scopes])), - }; - - super(optionsWithURLs, verify); - this.profileURL = 'https://api.atlassian.com/me'; - this.name = 'atlassian'; - - this._oauth2.useAuthorizationHeaderforGET(true); - } - - authorizationParams() { - return { - audience: 'api.atlassian.com', - prompt: 'consent', - }; - } - - userProfile( - accessToken: string, - done: (err?: Error | null, profile?: any) => void, - ): void { - this._oauth2.get(this.profileURL, accessToken, (err, body) => { - if (err) { - return done( - new InternalOAuthError( - 'Failed to fetch user profile', - err.statusCode, - ), - ); - } - - if (!body) { - return done( - new Error('Failed to fetch user profile, body cannot be empty'), - ); - } - - try { - const json = typeof body !== 'string' ? body.toString() : body; - const profile = AtlassianStrategy.parse(json); - return done(null, profile); - } catch (e) { - return done(new Error('Failed to parse user profile')); - } - }); - } - - static parse(json: string): Profile { - const resp = JSON.parse(json) as ProfileResponse; - - return { - id: resp.account_id, - provider: 'atlassian', - username: resp.nickname, - displayName: resp.name, - emails: [{ value: resp.email }], - photos: [{ value: resp.picture }], - }; - } -} diff --git a/plugins/auth-backend/src/providers/auth0/index.ts b/plugins/auth-backend/src/providers/auth0/index.ts deleted file mode 100644 index 94a08a5809..0000000000 --- a/plugins/auth-backend/src/providers/auth0/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { auth0 } from './provider'; diff --git a/plugins/auth-backend/src/providers/auth0/provider.ts b/plugins/auth-backend/src/providers/auth0/provider.ts deleted file mode 100644 index 9ae31b305d..0000000000 --- a/plugins/auth-backend/src/providers/auth0/provider.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { OAuthProviderOptions, OAuthResult } from '../../lib/oauth'; - -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - AuthResolverContext, - createOAuthProviderFactory, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { auth0Authenticator } from '@backstage/plugin-auth-backend-module-auth0-provider'; - -/** - * @public - * @deprecated The Auth0 auth provider was extracted to `@backstage/plugin-auth-backend-module-auth0-provider`. - */ -export type Auth0AuthProviderOptions = OAuthProviderOptions & { - domain: string; - signInResolver?: SignInResolver; - authHandler: AuthHandler; - resolverContext: AuthResolverContext; - audience?: string; - connection?: string; - connectionScope?: string; -}; - -/** - * Auth provider integration for auth0 auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const auth0 = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: auth0Authenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/auth0/strategy.ts b/plugins/auth-backend/src/providers/auth0/strategy.ts deleted file mode 100644 index cf5b522ec5..0000000000 --- a/plugins/auth-backend/src/providers/auth0/strategy.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import Auth0InternalStrategy from 'passport-auth0'; -import { StateStore } from 'passport-oauth2'; - -export interface Auth0StrategyOptionsWithRequest { - clientID: string; - clientSecret: string; - callbackURL: string; - domain: string; - passReqToCallback: true; - store: StateStore; -} - -export default class Auth0Strategy extends Auth0InternalStrategy { - constructor( - options: Auth0StrategyOptionsWithRequest, - verify: Auth0InternalStrategy.VerifyFunction, - ) { - const optionsWithURLs = { - ...options, - authorizationURL: `https://${options.domain}/authorize`, - tokenURL: `https://${options.domain}/oauth/token`, - userInfoURL: `https://${options.domain}/userinfo`, - apiUrl: `https://${options.domain}/api`, - }; - super(optionsWithURLs, verify); - } -} diff --git a/plugins/auth-backend/src/providers/aws-alb/index.ts b/plugins/auth-backend/src/providers/aws-alb/index.ts deleted file mode 100644 index 6784888b1f..0000000000 --- a/plugins/auth-backend/src/providers/aws-alb/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { awsAlb } from './provider'; -export type { AwsAlbResult } from './types'; diff --git a/plugins/auth-backend/src/providers/aws-alb/provider.ts b/plugins/auth-backend/src/providers/aws-alb/provider.ts deleted file mode 100644 index 18d4f42f32..0000000000 --- a/plugins/auth-backend/src/providers/aws-alb/provider.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - AwsAlbResult, - awsAlbAuthenticator, -} from '@backstage/plugin-auth-backend-module-aws-alb-provider'; -import { - SignInResolver, - createProxyAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; - -/** - * Auth provider integration for AWS ALB auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const awsAlb = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth - * response into the profile that will be presented to the user. The default - * implementation just provides the authenticated email that the IAP - * presented. - */ - authHandler?: AuthHandler; - /** - * Configures sign-in for this provider. - */ - signIn: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createProxyAuthProviderFactory({ - authenticator: awsAlbAuthenticator, - profileTransform: options?.authHandler, - signInResolver: options?.signIn?.resolver, - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/aws-alb/types.ts b/plugins/auth-backend/src/providers/aws-alb/types.ts deleted file mode 100644 index 2640a4a7be..0000000000 --- a/plugins/auth-backend/src/providers/aws-alb/types.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AwsAlbResult as _AwsAlbResult } from '@backstage/plugin-auth-backend-module-aws-alb-provider'; - -/** - * The result of the initial auth challenge. This is the input to the auth - * callbacks. - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-aws-alb-provider` instead - */ -export type AwsAlbResult = _AwsAlbResult; diff --git a/plugins/auth-backend/src/providers/azure-easyauth/index.ts b/plugins/auth-backend/src/providers/azure-easyauth/index.ts deleted file mode 100644 index de50e32745..0000000000 --- a/plugins/auth-backend/src/providers/azure-easyauth/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { easyAuth } from './provider'; -import { AzureEasyAuthResult } from '@backstage/plugin-auth-backend-module-azure-easyauth-provider'; - -/** - * @public - * @deprecated import AzureEasyAuthResult from `@backstage/plugin-auth-backend-module-azure-easyauth-provider` instead - */ -export type EasyAuthResult = AzureEasyAuthResult; diff --git a/plugins/auth-backend/src/providers/azure-easyauth/provider.ts b/plugins/auth-backend/src/providers/azure-easyauth/provider.ts deleted file mode 100644 index 202f99a7e1..0000000000 --- a/plugins/auth-backend/src/providers/azure-easyauth/provider.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - SignInResolver, - createProxyAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - AzureEasyAuthResult, - azureEasyAuthAuthenticator, -} from '@backstage/plugin-auth-backend-module-azure-easyauth-provider'; - -/** - * Auth provider integration for Azure EasyAuth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const easyAuth = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createProxyAuthProviderFactory({ - authenticator: azureEasyAuthAuthenticator, - profileTransform: options?.authHandler, - signInResolver: options?.signIn?.resolver, - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/bitbucket/index.ts b/plugins/auth-backend/src/providers/bitbucket/index.ts deleted file mode 100644 index 9d82c1066c..0000000000 --- a/plugins/auth-backend/src/providers/bitbucket/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { bitbucket } from './provider'; -export type { - BitbucketPassportProfile, - BitbucketOAuthResult, -} from './provider'; diff --git a/plugins/auth-backend/src/providers/bitbucket/provider.ts b/plugins/auth-backend/src/providers/bitbucket/provider.ts deleted file mode 100644 index 69ac2cf23b..0000000000 --- a/plugins/auth-backend/src/providers/bitbucket/provider.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - bitbucketAuthenticator, - bitbucketSignInResolvers, -} from '@backstage/plugin-auth-backend-module-bitbucket-provider'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { Profile as PassportProfile } from 'passport'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, - adaptOAuthSignInResolverToLegacy, -} from '../../lib/legacy'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; - -/** - * @public - * @deprecated The Bitbucket auth provider was extracted to `@backstage/plugin-auth-backend-module-bitbucket-provider`. - */ -export type BitbucketOAuthResult = { - fullProfile: BitbucketPassportProfile; - params: { - id_token?: string; - scope: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; -}; - -/** - * @public - * @deprecated The Bitbucket auth provider was extracted to `@backstage/plugin-auth-backend-module-bitbucket-provider`. - */ -export type BitbucketPassportProfile = PassportProfile & { - id?: string; - displayName?: string; - username?: string; - avatarUrl?: string; - _json?: { - links?: { - avatar?: { - href?: string; - }; - }; - }; -}; - -/** - * Auth provider integration for Bitbucket auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const bitbucket = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: bitbucketAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, - resolvers: adaptOAuthSignInResolverToLegacy({ - userIdMatchingUserEntityAnnotation: - bitbucketSignInResolvers.userIdMatchingUserEntityAnnotation(), - usernameMatchingUserEntityAnnotation: - bitbucketSignInResolvers.usernameMatchingUserEntityAnnotation(), - }), -}); diff --git a/plugins/auth-backend/src/providers/bitbucketServer/index.ts b/plugins/auth-backend/src/providers/bitbucketServer/index.ts deleted file mode 100644 index cef12cd50d..0000000000 --- a/plugins/auth-backend/src/providers/bitbucketServer/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { bitbucketServer } from './provider'; -export type { BitbucketServerOAuthResult } from './provider'; diff --git a/plugins/auth-backend/src/providers/bitbucketServer/provider.ts b/plugins/auth-backend/src/providers/bitbucketServer/provider.ts deleted file mode 100644 index c49cf5b7b1..0000000000 --- a/plugins/auth-backend/src/providers/bitbucketServer/provider.ts +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Profile as PassportProfile } from 'passport'; -import { - AuthResolverContext, - createOAuthProviderFactory, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { - bitbucketServerAuthenticator, - bitbucketServerSignInResolvers, -} from '@backstage/plugin-auth-backend-module-bitbucket-server-provider'; -import { OAuthProviderOptions } from '../../lib/oauth'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; - -/** - * @public - * @deprecated The Bitbucket Server auth provider was extracted to `@backstage/plugin-auth-backend-module-bitbucket-server-provider`. - */ -export type BitbucketServerOAuthResult = { - fullProfile: PassportProfile; - params: { - scope: string; - access_token?: string; - token_type?: string; - expires_in?: number; - }; - accessToken: string; - refreshToken?: string; -}; - -/** - * @public - * @deprecated The Bitbucket Server auth provider was extracted to `@backstage/plugin-auth-backend-module-bitbucket-server-provider`. - */ -export type BitbucketServerAuthProviderOptions = OAuthProviderOptions & { - host: string; - authorizationUrl: string; - tokenUrl: string; - authHandler: AuthHandler; - signInResolver?: SignInResolver; - resolverContext: AuthResolverContext; -}; - -export const bitbucketServer = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: bitbucketServerAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, - resolvers: { - /** - * Looks up the user by matching their email to the entity email. - */ - emailMatchingUserEntityProfileEmail: - (): SignInResolver => { - const resolver = - bitbucketServerSignInResolvers.emailMatchingUserEntityProfileEmail(); - return async (info, ctx) => { - return resolver( - { - profile: info.profile, - result: { - fullProfile: info.result.fullProfile, - session: { - accessToken: info.result.accessToken, - tokenType: info.result.params.token_type ?? 'bearer', - scope: info.result.params.scope, - expiresInSeconds: info.result.params.expires_in, - refreshToken: info.result.refreshToken, - }, - }, - }, - ctx, - ); - }; - }, - }, -}); diff --git a/plugins/auth-backend/src/providers/cloudflare-access/index.ts b/plugins/auth-backend/src/providers/cloudflare-access/index.ts deleted file mode 100644 index 19b56bd825..0000000000 --- a/plugins/auth-backend/src/providers/cloudflare-access/index.ts +++ /dev/null @@ -1,23 +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. - */ - -export { cfAccess } from './provider'; -export type { - CloudflareAccessClaims, - CloudflareAccessGroup, - CloudflareAccessResult, - CloudflareAccessIdentityProfile, -} from './provider'; diff --git a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts b/plugins/auth-backend/src/providers/cloudflare-access/provider.ts deleted file mode 100644 index 4710d60d47..0000000000 --- a/plugins/auth-backend/src/providers/cloudflare-access/provider.ts +++ /dev/null @@ -1,164 +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 { - cloudflareAccessSignInResolvers, - createCloudflareAccessAuthenticator, -} from '@backstage/plugin-auth-backend-module-cloudflare-access-provider'; -import { - SignInResolver, - createProxyAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; -import { CacheService } from '@backstage/backend-plugin-api'; - -/** - * CloudflareAccessClaims - * - * Can be used in externally provided auth handler or sign in resolver to - * enrich user profile for sign-in user entity - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-cloudflare-access-provider` instead - */ -export type CloudflareAccessClaims = { - /** - * `aud` identifies the application to which the JWT is issued. - */ - aud: string[]; - /** - * `email` contains the email address of the authenticated user. - */ - email: string; - /** - * iat and exp are the issuance and expiration timestamps. - */ - exp: number; - iat: number; - /** - * `nonce` is the session identifier. - */ - nonce: string; - /** - * `identity_nonce` is available in the Application Token and can be used to - * query all group membership for a given user. - */ - identity_nonce: string; - /** - * `sub` contains the identifier of the authenticated user. - */ - sub: string; - /** - * `iss` the issuer is the application’s Cloudflare Access Domain URL. - */ - iss: string; - /** - * `custom` contains SAML attributes in the Application Token specified by an - * administrator in the identity provider configuration. - */ - custom: string; -}; - -/** - * CloudflareAccessGroup - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-cloudflare-access-provider` instead - */ -export type CloudflareAccessGroup = { - /** - * Group id - */ - id: string; - /** - * Name of group as defined in Cloudflare zero trust dashboard - */ - name: string; - /** - * Access group email address - */ - email: string; -}; - -/** - * CloudflareAccessIdentityProfile - * - * Can be used in externally provided auth handler or sign in resolver to - * enrich user profile for sign-in user entity - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-cloudflare-access-provider` instead - */ -export type CloudflareAccessIdentityProfile = { - id: string; - name: string; - email: string; - groups: CloudflareAccessGroup[]; -}; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-cloudflare-access-provider` instead - */ -export type CloudflareAccessResult = { - claims: CloudflareAccessClaims; - cfIdentity: CloudflareAccessIdentityProfile; - expiresInSeconds?: number; - token: string; -}; - -/** - * Auth provider integration for Cloudflare Access auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const cfAccess = createAuthProviderIntegration({ - create(options: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - - /** - * Cache service object that was configured for the Backstage backend, - * should be provided via the backend auth plugin. - */ - cache?: CacheService; - }) { - return createProxyAuthProviderFactory({ - authenticator: createCloudflareAccessAuthenticator({ - cache: options.cache, - }), - profileTransform: options?.authHandler, - signInResolver: options?.signIn?.resolver, - signInResolverFactories: cloudflareAccessSignInResolvers, - }); - }, - resolvers: cloudflareAccessSignInResolvers, -}); diff --git a/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts b/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts deleted file mode 100644 index 2f7bb4a4ec..0000000000 --- a/plugins/auth-backend/src/providers/createAuthProviderIntegration.ts +++ /dev/null @@ -1,50 +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 { - AuthProviderFactory, - SignInResolver, -} from '@backstage/plugin-auth-node'; - -/** - * Creates a standardized representation of an integration with a third-party - * auth provider. - * - * The returned object facilitates the creation of provider instances, and - * supplies built-in sign-in resolvers for the specific provider. - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export function createAuthProviderIntegration< - TCreateOptions extends unknown[], - TResolvers extends - | { - [name in string]: (...args: any[]) => SignInResolver; - }, ->(config: { - create: (...args: TCreateOptions) => AuthProviderFactory; - resolvers?: TResolvers; -}): Readonly<{ - create: (...args: TCreateOptions) => AuthProviderFactory; - // If no resolvers are defined, this receives the type `never` - resolvers: Readonly; -}> { - return Object.freeze({ - ...config, - resolvers: Object.freeze(config.resolvers ?? ({} as any)), - }); -} diff --git a/plugins/auth-backend/src/providers/gcp-iap/index.ts b/plugins/auth-backend/src/providers/gcp-iap/index.ts deleted file mode 100644 index 12f76ec142..0000000000 --- a/plugins/auth-backend/src/providers/gcp-iap/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { gcpIap } from './provider'; -export type { GcpIapResult, GcpIapTokenInfo } from './types'; diff --git a/plugins/auth-backend/src/providers/gcp-iap/provider.ts b/plugins/auth-backend/src/providers/gcp-iap/provider.ts deleted file mode 100644 index f40cb4ed25..0000000000 --- a/plugins/auth-backend/src/providers/gcp-iap/provider.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { gcpIapAuthenticator } from '@backstage/plugin-auth-backend-module-gcp-iap-provider'; -import { - SignInResolver, - createProxyAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; -import { GcpIapResult } from './types'; - -/** - * Auth provider integration for Google Identity-Aware Proxy auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const gcpIap = createAuthProviderIntegration({ - create(options: { - /** - * The profile transformation function used to verify and convert the auth - * response into the profile that will be presented to the user. The default - * implementation just provides the authenticated email that the IAP - * presented. - */ - authHandler?: AuthHandler; - - /** - * Configures sign-in for this provider. - */ - signIn: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createProxyAuthProviderFactory({ - authenticator: gcpIapAuthenticator, - profileTransform: options?.authHandler, - signInResolver: options?.signIn?.resolver, - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/gcp-iap/types.ts b/plugins/auth-backend/src/providers/gcp-iap/types.ts deleted file mode 100644 index b1f69318fc..0000000000 --- a/plugins/auth-backend/src/providers/gcp-iap/types.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - GcpIapTokenInfo as _GcpIapTokenInfo, - GcpIapResult as _GcpIapResult, -} from '@backstage/plugin-auth-backend-module-gcp-iap-provider'; - -/** - * The data extracted from an IAP token. - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-gcp-iap-provider` instead - */ -export type GcpIapTokenInfo = _GcpIapTokenInfo; - -/** - * The result of the initial auth challenge. This is the input to the auth - * callbacks. - * - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-gcp-iap-provider` instead - */ -export type GcpIapResult = _GcpIapResult; diff --git a/plugins/auth-backend/src/providers/github/index.ts b/plugins/auth-backend/src/providers/github/index.ts deleted file mode 100644 index 2f4bb1f6cd..0000000000 --- a/plugins/auth-backend/src/providers/github/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { github } from './provider'; -export type { GithubOAuthResult } from './provider'; diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts deleted file mode 100644 index 6c6738ad57..0000000000 --- a/plugins/auth-backend/src/providers/github/provider.ts +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Profile as PassportProfile } from 'passport'; -import { AuthHandler, StateEncoder } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - createOAuthProviderFactory, - OAuthAuthenticatorResult, - ProfileTransform, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { githubAuthenticator } from '@backstage/plugin-auth-backend-module-github-provider'; - -/** - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export type GithubOAuthResult = { - fullProfile: PassportProfile; - params: { - scope: string; - expires_in?: string; - refresh_token_expires_in?: string; - }; - accessToken: string; - refreshToken?: string; -}; - -/** - * Auth provider integration for GitHub auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const github = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - - /** - * The state encoder used to encode the 'state' parameter on the OAuth request. - * - * It should return a string that takes the state params (from the request), url encodes the params - * and finally base64 encodes them. - * - * Providing your own stateEncoder will allow you to add addition parameters to the state field. - * - * It is typed as follows: - * `export type StateEncoder = (input: OAuthState) => Promise<{encodedState: string}>;` - * - * Note: the stateEncoder must encode a 'nonce' value and an 'env' value. Without this, the OAuth flow will fail - * (These two values will be set by the req.state by default) - * - * For more information, please see the helper module in ../../oauth/helpers #readState - */ - stateEncoder?: StateEncoder; - }) { - const authHandler = options?.authHandler; - const signInResolver = options?.signIn?.resolver; - return createOAuthProviderFactory({ - authenticator: githubAuthenticator, - profileTransform: - authHandler && - ((async (result, ctx) => - authHandler!( - { - fullProfile: result.fullProfile, - accessToken: result.session.accessToken, - params: { - scope: result.session.scope, - expires_in: result.session.expiresInSeconds - ? String(result.session.expiresInSeconds) - : '', - refresh_token_expires_in: result.session - .refreshTokenExpiresInSeconds - ? String(result.session.refreshTokenExpiresInSeconds) - : '', - }, - }, - ctx, - )) as ProfileTransform>), - signInResolver: - signInResolver && - ((async ({ profile, result }, ctx) => - signInResolver( - { - profile: profile, - result: { - fullProfile: result.fullProfile, - accessToken: result.session.accessToken, - refreshToken: result.session.refreshToken, - params: { - scope: result.session.scope, - expires_in: result.session.expiresInSeconds - ? String(result.session.expiresInSeconds) - : '', - refresh_token_expires_in: result.session - .refreshTokenExpiresInSeconds - ? String(result.session.refreshTokenExpiresInSeconds) - : '', - }, - }, - }, - ctx, - )) as SignInResolver>), - }); - }, - resolvers: { - /** - * Looks up the user by matching their GitHub username to the entity name. - */ - usernameMatchingUserEntityName: (): SignInResolver => { - return async (info, ctx) => { - const { fullProfile } = info.result; - - const userId = fullProfile.username; - if (!userId) { - throw new Error(`GitHub user profile does not contain a username`); - } - - return ctx.signInWithCatalogUser({ entityRef: { name: userId } }); - }; - }, - }, -}); diff --git a/plugins/auth-backend/src/providers/gitlab/index.ts b/plugins/auth-backend/src/providers/gitlab/index.ts deleted file mode 100644 index 9b60d1f18a..0000000000 --- a/plugins/auth-backend/src/providers/gitlab/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { gitlab } from './provider'; diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts deleted file mode 100644 index 503145a805..0000000000 --- a/plugins/auth-backend/src/providers/gitlab/provider.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AuthHandler } from '../types'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { gitlabAuthenticator } from '@backstage/plugin-auth-backend-module-gitlab-provider'; - -/** - * Auth provider integration for GitLab auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const gitlab = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: gitlabAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/google/index.ts b/plugins/auth-backend/src/providers/google/index.ts deleted file mode 100644 index 5e8c3236e4..0000000000 --- a/plugins/auth-backend/src/providers/google/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { google } from './provider'; diff --git a/plugins/auth-backend/src/providers/google/provider.test.ts b/plugins/auth-backend/src/providers/google/provider.test.ts deleted file mode 100644 index abde2b66d1..0000000000 --- a/plugins/auth-backend/src/providers/google/provider.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { googleAuthenticator } from '@backstage/plugin-auth-backend-module-google-provider'; -import { createOAuthProviderFactory } from '@backstage/plugin-auth-node'; -import { google } from './provider'; - -jest.mock('@backstage/plugin-auth-node', () => ({ - ...jest.requireActual('@backstage/plugin-auth-node'), - createOAuthProviderFactory: jest.fn(() => 'provider-factory'), -})); - -describe('createGoogleProvider', () => { - afterEach(() => jest.clearAllMocks()); - - it('should be created', async () => { - expect(google.create()).toBe('provider-factory'); - - expect(createOAuthProviderFactory).toHaveBeenCalledWith({ - authenticator: googleAuthenticator, - }); - }); - - it('should be created with sign-in resolver', async () => { - expect(google.create({ signIn: { resolver: jest.fn() } })).toBe( - 'provider-factory', - ); - - expect(createOAuthProviderFactory).toHaveBeenCalledWith({ - authenticator: googleAuthenticator, - signInResolver: expect.any(Function), - }); - }); - - it('should be created with sign-in resolver and auth handler', async () => { - expect( - google.create({ - signIn: { resolver: jest.fn() }, - authHandler: jest.fn(), - }), - ).toBe('provider-factory'); - - expect(createOAuthProviderFactory).toHaveBeenCalledWith({ - authenticator: googleAuthenticator, - signInResolver: expect.any(Function), - profileTransform: expect.any(Function), - }); - }); - - it('should have resolvers', () => { - expect(google.resolvers).toEqual({ - emailLocalPartMatchingUserEntityName: expect.any(Function), - emailMatchingUserEntityAnnotation: expect.any(Function), - emailMatchingUserEntityProfileEmail: expect.any(Function), - }); - }); -}); diff --git a/plugins/auth-backend/src/providers/google/provider.ts b/plugins/auth-backend/src/providers/google/provider.ts deleted file mode 100644 index 99a9c40ecb..0000000000 --- a/plugins/auth-backend/src/providers/google/provider.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - googleAuthenticator, - googleSignInResolvers, -} from '@backstage/plugin-auth-backend-module-google-provider'; -import { - SignInResolver, - commonSignInResolvers, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, - adaptOAuthSignInResolverToLegacy, -} from '../../lib/legacy'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; - -/** - * Auth provider integration for Google auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const google = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: googleAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, - resolvers: adaptOAuthSignInResolverToLegacy({ - emailLocalPartMatchingUserEntityName: - commonSignInResolvers.emailLocalPartMatchingUserEntityName(), - emailMatchingUserEntityProfileEmail: - commonSignInResolvers.emailMatchingUserEntityProfileEmail(), - emailMatchingUserEntityAnnotation: - googleSignInResolvers.emailMatchingUserEntityAnnotation(), - }), -}); diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts deleted file mode 100644 index b9543c275c..0000000000 --- a/plugins/auth-backend/src/providers/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export type { AwsAlbResult } from './aws-alb'; -export type { EasyAuthResult } from './azure-easyauth'; -export type { - BitbucketOAuthResult, - BitbucketPassportProfile, -} from './bitbucket'; -export type { BitbucketServerOAuthResult } from './bitbucketServer'; -export type { - CloudflareAccessClaims, - CloudflareAccessGroup, - CloudflareAccessResult, - CloudflareAccessIdentityProfile, -} from './cloudflare-access'; -export type { GithubOAuthResult } from './github'; -export type { OAuth2ProxyResult } from './oauth2-proxy'; -export type { OidcAuthResult } from './oidc'; -export type { SamlAuthResult } from './saml'; -export type { GcpIapResult, GcpIapTokenInfo } from './gcp-iap'; - -export { providers, defaultAuthProviderFactories } from './providers'; -export { createOriginFilter, type ProviderFactories } from './router'; - -export { createAuthProviderIntegration } from './createAuthProviderIntegration'; - -export type { - AuthProviderConfig, - AuthProviderRouteHandlers, - AuthProviderFactory, - AuthHandler, - AuthResolverCatalogUserQuery, - AuthResolverContext, - AuthHandlerResult, - SignInResolver, - SignInInfo, - CookieConfigurer, - StateEncoder, - AuthResponse, - ProfileInfo, - OAuthStartResponse, -} from './types'; - -export { prepareBackstageIdentityResponse } from './prepareBackstageIdentityResponse'; diff --git a/plugins/auth-backend/src/providers/microsoft/index.ts b/plugins/auth-backend/src/providers/microsoft/index.ts deleted file mode 100644 index 16dadc3bb0..0000000000 --- a/plugins/auth-backend/src/providers/microsoft/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { microsoft } from './provider'; diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts deleted file mode 100644 index f461fe8341..0000000000 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AuthHandler } from '../types'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - SignInResolver, - commonSignInResolvers, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, - adaptOAuthSignInResolverToLegacy, -} from '../../lib/legacy'; -import { - microsoftAuthenticator, - microsoftSignInResolvers, -} from '@backstage/plugin-auth-backend-module-microsoft-provider'; - -/** - * Auth provider integration for Microsoft auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const microsoft = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: microsoftAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, - resolvers: adaptOAuthSignInResolverToLegacy({ - emailLocalPartMatchingUserEntityName: - commonSignInResolvers.emailLocalPartMatchingUserEntityName(), - emailMatchingUserEntityProfileEmail: - commonSignInResolvers.emailMatchingUserEntityProfileEmail(), - emailMatchingUserEntityAnnotation: - microsoftSignInResolvers.emailMatchingUserEntityAnnotation(), - userIdMatchingUserEntityAnnotation: - microsoftSignInResolvers.userIdMatchingUserEntityAnnotation(), - }), -}); diff --git a/plugins/auth-backend/src/providers/oauth2-proxy/index.ts b/plugins/auth-backend/src/providers/oauth2-proxy/index.ts deleted file mode 100644 index 2e4e7d016f..0000000000 --- a/plugins/auth-backend/src/providers/oauth2-proxy/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { oauth2Proxy } from './provider'; -import { OAuth2ProxyResult as _OAuth2ProxyResult } from '@backstage/plugin-auth-backend-module-oauth2-proxy-provider'; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-backend-module-oauth2-proxy-provider` instead - */ -export type OAuth2ProxyResult = _OAuth2ProxyResult; diff --git a/plugins/auth-backend/src/providers/oauth2-proxy/provider.ts b/plugins/auth-backend/src/providers/oauth2-proxy/provider.ts deleted file mode 100644 index cbd02d18ea..0000000000 --- a/plugins/auth-backend/src/providers/oauth2-proxy/provider.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - SignInResolver, - createProxyAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - type OAuth2ProxyResult, - oauth2ProxyAuthenticator, -} from '@backstage/plugin-auth-backend-module-oauth2-proxy-provider'; - -/** - * Auth provider integration for oauth2-proxy auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const oauth2Proxy = createAuthProviderIntegration({ - create(options: { - /** - * Configure an auth handler to generate a profile for the user. - * - * The default implementation uses the value of the `X-Forwarded-Preferred-Username` - * header as the display name, falling back to `X-Forwarded-User`, and the value of - * the `X-Forwarded-Email` header as the email address. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createProxyAuthProviderFactory({ - authenticator: oauth2ProxyAuthenticator, - profileTransform: options?.authHandler, - signInResolver: options?.signIn?.resolver, - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/oauth2/index.ts b/plugins/auth-backend/src/providers/oauth2/index.ts deleted file mode 100644 index 14485e04ff..0000000000 --- a/plugins/auth-backend/src/providers/oauth2/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { oauth2 } from './provider'; diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts deleted file mode 100644 index b9ab928730..0000000000 --- a/plugins/auth-backend/src/providers/oauth2/provider.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { OAuthResult } from '../../lib/oauth'; -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { oauth2Authenticator } from '@backstage/plugin-auth-backend-module-oauth2-provider'; - -/** - * Auth provider integration for generic OAuth2 auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const oauth2 = createAuthProviderIntegration({ - create(options?: { - authHandler?: AuthHandler; - - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: oauth2Authenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/oidc/index.ts b/plugins/auth-backend/src/providers/oidc/index.ts deleted file mode 100644 index 501f223fb3..0000000000 --- a/plugins/auth-backend/src/providers/oidc/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { oidc } from './provider'; - -import { OidcAuthResult as OidcAuthResult_ } from '@backstage/plugin-auth-backend-module-oidc-provider'; - -/** - * @public - * @deprecated Use OidcAuthResult from `@backstage/plugin-auth-backend-module-oidc-provider` instead - */ -export type OidcAuthResult = OidcAuthResult_; diff --git a/plugins/auth-backend/src/providers/oidc/provider.test.ts b/plugins/auth-backend/src/providers/oidc/provider.test.ts deleted file mode 100644 index 773c5c8bb9..0000000000 --- a/plugins/auth-backend/src/providers/oidc/provider.test.ts +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright 2024 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - mockServices, - registerMswTestHooks, -} from '@backstage/backend-test-utils'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import { Config, ConfigReader } from '@backstage/config'; -import { - AuthProviderConfig, - AuthResolverContext, - CookieConfigurer, -} from '@backstage/plugin-auth-node'; -import express from 'express'; -import { JWK, SignJWT, exportJWK, generateKeyPair } from 'jose'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { oidc } from './provider'; - -describe('oidc.create', () => { - const userinfo = { - sub: 'test', - iss: 'https://oidc.test', - aud: 'clientId', - nonce: 'foo', - }; - const server = setupServer(); - registerMswTestHooks(server); - - let publicKey: JWK; - let tokenset: object; - let providerFactoryOptions: { - providerId: string; - globalConfig: AuthProviderConfig; - config: Config; - logger: LoggerService; - resolverContext: AuthResolverContext; - baseUrl: string; - appUrl: string; - isOriginAllowed: (origin: string) => boolean; - cookieConfigurer?: CookieConfigurer; - }; - - beforeAll(async () => { - const keyPair = await generateKeyPair('RS256'); - const privateKey = await exportJWK(keyPair.privateKey); - publicKey = await exportJWK(keyPair.publicKey); - publicKey.alg = privateKey.alg = 'RS256'; - - tokenset = { - id_token: await new SignJWT({ - iat: Date.now(), - exp: Date.now() + 10000, - ...userinfo, - }) - .setProtectedHeader({ alg: privateKey.alg, kid: privateKey.kid }) - .sign(keyPair.privateKey), - access_token: 'accessToken', - }; - }); - - beforeEach(() => { - server.use( - rest.get( - 'https://oidc.test/.well-known/openid-configuration', - (_req, res, ctx) => - res( - ctx.json({ - issuer: 'https://oidc.test', - token_endpoint: 'https://oidc.test/oauth2/token', - userinfo_endpoint: 'https://oidc.test/idp/userinfo.openid', - jwks_uri: 'https://oidc.test/jwks.json', - }), - ), - ), - rest.post('https://oidc.test/oauth2/token', (_req, res, ctx) => - res(ctx.json(tokenset)), - ), - rest.get('https://oidc.test/jwks.json', async (_req, res, ctx) => - res(ctx.json({ keys: [{ ...publicKey }] })), - ), - rest.get( - 'https://oidc.test/idp/userinfo.openid', - async (_req, res, ctx) => res(ctx.json(userinfo)), - ), - ); - providerFactoryOptions = { - providerId: 'myoidc', - baseUrl: 'http://backstage.test/api/auth', - appUrl: 'http://backstage.test', - isOriginAllowed: _ => true, - globalConfig: { - baseUrl: 'http://backstage.test/api/auth', - appUrl: 'http://backstage.test', - isOriginAllowed: _ => true, - }, - config: new ConfigReader({ - development: { - metadataUrl: 'https://oidc.test/.well-known/openid-configuration', - clientId: 'clientId', - clientSecret: 'clientSecret', - }, - }), - logger: mockServices.logger.mock(), - resolverContext: { - issueToken: jest.fn(), - findCatalogUser: jest.fn(), - signInWithCatalogUser: jest.fn(), - resolveOwnershipEntityRefs: jest.fn(), - }, - }; - }); - - it('invokes authHandler with tokenset and userinfo response', async () => { - const authHandler = jest.fn(); - const provider = oidc.create({ authHandler })(providerFactoryOptions); - const state = Buffer.from('nonce=foo&env=development').toString('hex'); - - await provider.frameHandler( - { - method: 'GET', - url: `http://backstage.test/api/auth/myoidc/handler/frame?code=blahblah&state=${state}`, - query: { state }, - cookies: { 'myoidc-nonce': 'foo' }, - session: { 'oidc:oidc.test': { state, nonce: 'foo' } }, - } as unknown as express.Request, - { setHeader: jest.fn(), end: jest.fn() } as unknown as express.Response, - ); - - expect(authHandler).toHaveBeenCalledWith( - { tokenset, userinfo }, - providerFactoryOptions.resolverContext, - ); - }); - - it('invokes sign-in resolver with tokenset and userinfo response', async () => { - const resolver = jest.fn(); - const provider = oidc.create({ signIn: { resolver } })( - providerFactoryOptions, - ); - const state = Buffer.from('nonce=foo&env=development').toString('hex'); - - await provider.frameHandler( - { - method: 'GET', - url: `http://backstage.test/api/auth/myoidc/handler/frame?code=blahblah&state=${state}`, - query: { state }, - cookies: { 'myoidc-nonce': 'foo' }, - session: { 'oidc:oidc.test': { state, nonce: 'foo' } }, - } as unknown as express.Request, - { setHeader: jest.fn(), end: jest.fn() } as unknown as express.Response, - ); - - expect(resolver).toHaveBeenCalledWith( - expect.objectContaining({ result: { tokenset, userinfo } }), - providerFactoryOptions.resolverContext, - ); - }); -}); diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts deleted file mode 100644 index 6caf97ef7c..0000000000 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AuthHandler } from '../types'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - createOAuthProviderFactory, - AuthResolverContext, - BackstageSignInResult, - OAuthAuthenticatorResult, - SignInInfo, - SignInResolver, -} from '@backstage/plugin-auth-node'; -import { - oidcAuthenticator, - OidcAuthResult, -} from '@backstage/plugin-auth-backend-module-oidc-provider'; -import { - commonByEmailLocalPartResolver, - commonByEmailResolver, -} from '../resolvers'; - -/** - * Auth provider integration for generic OpenID Connect auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const oidc = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider; convert user profile respones into - * Backstage identities. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - const authHandler = options?.authHandler; - const signInResolver = options?.signIn?.resolver; - return createOAuthProviderFactory({ - authenticator: oidcAuthenticator, - profileTransform: - authHandler && - (( - result: OAuthAuthenticatorResult, - context: AuthResolverContext, - ) => authHandler(result.fullProfile, context)), - signInResolver: - signInResolver && - (( - info: SignInInfo>, - context: AuthResolverContext, - ): Promise => - signInResolver( - { - result: info.result.fullProfile, - profile: info.profile, - }, - context, - )), - }); - }, - resolvers: { - /** - * Looks up the user by matching their email local part to the entity name. - */ - emailLocalPartMatchingUserEntityName: () => commonByEmailLocalPartResolver, - /** - * Looks up the user by matching their email to the entity email. - */ - emailMatchingUserEntityProfileEmail: () => commonByEmailResolver, - }, -}); diff --git a/plugins/auth-backend/src/providers/okta/index.ts b/plugins/auth-backend/src/providers/okta/index.ts deleted file mode 100644 index 3387fa3668..0000000000 --- a/plugins/auth-backend/src/providers/okta/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { okta } from './provider'; diff --git a/plugins/auth-backend/src/providers/okta/provider.ts b/plugins/auth-backend/src/providers/okta/provider.ts deleted file mode 100644 index 5746e12710..0000000000 --- a/plugins/auth-backend/src/providers/okta/provider.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { AuthHandler } from '../types'; -import { OAuthResult } from '../../lib/oauth'; - -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { oktaAuthenticator } from '@backstage/plugin-auth-backend-module-okta-provider'; -import { - commonByEmailLocalPartResolver, - commonByEmailResolver, -} from '../resolvers'; - -/** - * Auth provider integration for Okta auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const okta = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: oktaAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, - resolvers: { - /** - * Looks up the user by matching their email local part to the entity name. - */ - emailLocalPartMatchingUserEntityName: () => commonByEmailLocalPartResolver, - /** - * Looks up the user by matching their email to the entity email. - */ - emailMatchingUserEntityProfileEmail: () => commonByEmailResolver, - /** - * Looks up the user by matching their email to the `okta.com/email` annotation. - */ - emailMatchingUserEntityAnnotation(): SignInResolver { - return async (info, ctx) => { - const { profile } = info; - - if (!profile.email) { - throw new Error('Okta profile contained no email'); - } - - return ctx.signInWithCatalogUser({ - annotations: { - 'okta.com/email': profile.email, - }, - }); - }; - }, - }, -}); diff --git a/plugins/auth-backend/src/providers/onelogin/index.ts b/plugins/auth-backend/src/providers/onelogin/index.ts deleted file mode 100644 index 3f356029fb..0000000000 --- a/plugins/auth-backend/src/providers/onelogin/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { onelogin } from './provider'; diff --git a/plugins/auth-backend/src/providers/onelogin/provider.ts b/plugins/auth-backend/src/providers/onelogin/provider.ts deleted file mode 100644 index 808e6c15d3..0000000000 --- a/plugins/auth-backend/src/providers/onelogin/provider.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { oneLoginAuthenticator } from '@backstage/plugin-auth-backend-module-onelogin-provider'; -import { - SignInResolver, - createOAuthProviderFactory, -} from '@backstage/plugin-auth-node'; -import { - adaptLegacyOAuthHandler, - adaptLegacyOAuthSignInResolver, -} from '../../lib/legacy'; -import { OAuthResult } from '../../lib/oauth'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthHandler } from '../types'; - -/** - * Auth provider integration for OneLogin auth - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const onelogin = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return createOAuthProviderFactory({ - authenticator: oneLoginAuthenticator, - profileTransform: adaptLegacyOAuthHandler(options?.authHandler), - signInResolver: adaptLegacyOAuthSignInResolver(options?.signIn?.resolver), - }); - }, -}); diff --git a/plugins/auth-backend/src/providers/prepareBackstageIdentityResponse.ts b/plugins/auth-backend/src/providers/prepareBackstageIdentityResponse.ts deleted file mode 100644 index 1fa8f4a2fa..0000000000 --- a/plugins/auth-backend/src/providers/prepareBackstageIdentityResponse.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { prepareBackstageIdentityResponse as _prepareBackstageIdentityResponse } from '@backstage/plugin-auth-node'; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export const prepareBackstageIdentityResponse = - _prepareBackstageIdentityResponse; diff --git a/plugins/auth-backend/src/providers/providers.ts b/plugins/auth-backend/src/providers/providers.ts deleted file mode 100644 index ce513e6ac7..0000000000 --- a/plugins/auth-backend/src/providers/providers.ts +++ /dev/null @@ -1,88 +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 { atlassian } from './atlassian'; -import { auth0 } from './auth0'; -import { awsAlb } from './aws-alb'; -import { bitbucket } from './bitbucket'; -import { cfAccess } from './cloudflare-access'; -import { gcpIap } from './gcp-iap'; -import { github } from './github'; -import { gitlab } from './gitlab'; -import { google } from './google'; -import { microsoft } from './microsoft'; -import { oauth2 } from './oauth2'; -import { oauth2Proxy } from './oauth2-proxy'; -import { oidc } from './oidc'; -import { okta } from './okta'; -import { onelogin } from './onelogin'; -import { saml } from './saml'; -import { bitbucketServer } from './bitbucketServer'; -import { easyAuth } from './azure-easyauth'; -import { AuthProviderFactory } from '@backstage/plugin-auth-node'; - -/** - * All built-in auth provider integrations. - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const providers = Object.freeze({ - atlassian, - auth0, - awsAlb, - bitbucket, - bitbucketServer, - cfAccess, - gcpIap, - github, - gitlab, - google, - microsoft, - oauth2, - oauth2Proxy, - oidc, - okta, - onelogin, - saml, - easyAuth, -}); - -/** - * All auth provider factories that are installed by default. - * - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export const defaultAuthProviderFactories: { - [providerId: string]: AuthProviderFactory; -} = { - google: google.create(), - github: github.create(), - gitlab: gitlab.create(), - saml: saml.create(), - okta: okta.create(), - auth0: auth0.create(), - microsoft: microsoft.create(), - easyAuth: easyAuth.create(), - oauth2: oauth2.create(), - oidc: oidc.create(), - onelogin: onelogin.create(), - awsalb: awsAlb.create(), - bitbucket: bitbucket.create(), - bitbucketServer: bitbucketServer.create(), - atlassian: atlassian.create(), -}; diff --git a/plugins/auth-backend/src/providers/resolvers.ts b/plugins/auth-backend/src/providers/resolvers.ts deleted file mode 100644 index 54c78ff182..0000000000 --- a/plugins/auth-backend/src/providers/resolvers.ts +++ /dev/null @@ -1,58 +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 { SignInResolver } from '@backstage/plugin-auth-node'; - -/** - * A common sign-in resolver that looks up the user using the local part of - * their email address as the entity name. - */ -export const commonByEmailLocalPartResolver: SignInResolver = async ( - info, - ctx, -) => { - const { profile } = info; - - if (!profile.email) { - throw new Error('Login failed, user profile does not contain an email'); - } - const [localPart] = profile.email.split('@'); - - return ctx.signInWithCatalogUser({ - entityRef: { name: localPart }, - }); -}; - -/** - * A common sign-in resolver that looks up the user using their email address - * as email of the entity. - */ -export const commonByEmailResolver: SignInResolver = async ( - info, - ctx, -) => { - const { profile } = info; - - if (!profile.email) { - throw new Error('Login failed, user profile does not contain an email'); - } - - return ctx.signInWithCatalogUser({ - filter: { - 'spec.profile.email': profile.email, - }, - }); -}; diff --git a/plugins/auth-backend/src/providers/router.ts b/plugins/auth-backend/src/providers/router.ts index ceab20553d..d04347e7b3 100644 --- a/plugins/auth-backend/src/providers/router.ts +++ b/plugins/auth-backend/src/providers/router.ts @@ -14,30 +14,20 @@ * limitations under the License. */ -import { TokenManager } from '@backstage/backend-common'; -import { - AuthService, - DiscoveryService, - HttpAuthService, - LoggerService, -} from '@backstage/backend-plugin-api'; -import { CatalogApi, CatalogClient } from '@backstage/catalog-client'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import { assertError, NotFoundError } from '@backstage/errors'; import { AuthOwnershipResolver, AuthProviderFactory, } from '@backstage/plugin-auth-node'; +import { CatalogService } from '@backstage/plugin-catalog-node'; import express from 'express'; import Router from 'express-promise-router'; import { Minimatch } from 'minimatch'; import { CatalogAuthResolverContext } from '../lib/resolvers/CatalogAuthResolverContext'; import { TokenIssuer } from '../identity/types'; -/** - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ export type ProviderFactories = { [s: string]: AuthProviderFactory }; export function bindProviderRouters( @@ -48,13 +38,10 @@ export function bindProviderRouters( baseUrl: string; config: Config; logger: LoggerService; - discovery: DiscoveryService; auth: AuthService; - httpAuth: HttpAuthService; - tokenManager?: TokenManager; tokenIssuer: TokenIssuer; ownershipResolver?: AuthOwnershipResolver; - catalogApi?: CatalogApi; + catalog: CatalogService; }, ) { const { @@ -63,12 +50,9 @@ export function bindProviderRouters( baseUrl, config, logger, - discovery, auth, - httpAuth, - tokenManager, tokenIssuer, - catalogApi, + catalog, ownershipResolver, } = options; @@ -94,13 +78,9 @@ export function bindProviderRouters( logger, resolverContext: CatalogAuthResolverContext.create({ logger, - catalogApi: - catalogApi ?? new CatalogClient({ discoveryApi: discovery }), + catalog, tokenIssuer, - tokenManager, - discovery, auth, - httpAuth, ownershipResolver, }), }); @@ -148,10 +128,6 @@ export function bindProviderRouters( } } -/** - * @public - * @deprecated this export will be removed - */ export function createOriginFilter( config: Config, ): (origin: string) => boolean { diff --git a/plugins/auth-backend/src/providers/saml/index.ts b/plugins/auth-backend/src/providers/saml/index.ts deleted file mode 100644 index d59f7bf0a7..0000000000 --- a/plugins/auth-backend/src/providers/saml/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { saml } from './provider'; -export type { SamlAuthResult } from './provider'; diff --git a/plugins/auth-backend/src/providers/saml/provider.ts b/plugins/auth-backend/src/providers/saml/provider.ts deleted file mode 100644 index 7797de897b..0000000000 --- a/plugins/auth-backend/src/providers/saml/provider.ts +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import express from 'express'; -import { SamlConfig, VerifiedCallback } from '@node-saml/passport-saml'; -import { - Strategy as SamlStrategy, - Profile as SamlProfile, - VerifyWithoutRequest, -} from '@node-saml/passport-saml'; -import { - executeFrameHandlerStrategy, - executeRedirectStrategy, -} from '../../lib/passport'; -import { AuthHandler } from '../types'; -import { postMessageResponse } from '../../lib/flow'; -import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -import { AuthenticationError, isError } from '@backstage/errors'; -import { prepareBackstageIdentityResponse } from '../prepareBackstageIdentityResponse'; -import { - AuthProviderRouteHandlers, - AuthResolverContext, - ClientAuthResponse, - SignInResolver, -} from '@backstage/plugin-auth-node'; - -/** - * @public - * @deprecated Migrate the auth plugin to the new backend system https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin - */ -export type SamlAuthResult = { - fullProfile: any; -}; - -type Options = SamlConfig & { - signInResolver?: SignInResolver; - authHandler: AuthHandler; - resolverContext: AuthResolverContext; - appUrl: string; -}; - -export class SamlAuthProvider implements AuthProviderRouteHandlers { - private readonly strategy: SamlStrategy; - private readonly signInResolver?: SignInResolver; - private readonly authHandler: AuthHandler; - private readonly resolverContext: AuthResolverContext; - private readonly appUrl: string; - - constructor(options: Options) { - this.appUrl = options.appUrl; - this.signInResolver = options.signInResolver; - this.authHandler = options.authHandler; - this.resolverContext = options.resolverContext; - - const verifier: VerifyWithoutRequest = ( - profile: SamlProfile | null, - done: VerifiedCallback, - ) => { - // TODO: There's plenty more validation and profile handling to do here, - // this provider is currently only intended to validate the provider pattern - // for non-oauth auth flows. - // TODO: This flow doesn't issue an identity token that can be used to validate - // the identity of the user in other backends, which we need in some form. - done(null, { fullProfile: profile }); - }; - this.strategy = new SamlStrategy(options, verifier, verifier); - } - - async start(req: express.Request, res: express.Response): Promise { - const { url } = await executeRedirectStrategy(req, this.strategy, {}); - res.redirect(url); - } - - async frameHandler( - req: express.Request, - res: express.Response, - ): Promise { - try { - const { result } = await executeFrameHandlerStrategy( - req, - this.strategy, - ); - - const { profile } = await this.authHandler(result, this.resolverContext); - - const response: ClientAuthResponse<{}> = { - profile, - providerInfo: {}, - }; - - if (this.signInResolver) { - const signInResponse = await this.signInResolver( - { - result, - profile, - }, - this.resolverContext, - ); - - response.backstageIdentity = - prepareBackstageIdentityResponse(signInResponse); - } - - return postMessageResponse(res, this.appUrl, { - type: 'authorization_response', - response, - }); - } catch (error) { - const { name, message } = isError(error) - ? error - : new Error('Encountered invalid error'); // Being a bit safe and not forwarding the bad value - return postMessageResponse(res, this.appUrl, { - type: 'authorization_response', - error: { name, message }, - }); - } - } - - async logout(_req: express.Request, res: express.Response): Promise { - res.end(); - } -} - -type SignatureAlgorithm = 'sha1' | 'sha256' | 'sha512'; - -/** - * Auth provider integration for SAML auth - * - * @public - */ -export const saml = createAuthProviderIntegration({ - create(options?: { - /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. - */ - authHandler?: AuthHandler; - - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. - */ - signIn?: { - /** - * Maps an auth result to a Backstage identity for the user. - */ - resolver: SignInResolver; - }; - }) { - return ({ providerId, globalConfig, config, resolverContext }) => { - const authHandler: AuthHandler = options?.authHandler - ? options.authHandler - : async ({ fullProfile }) => ({ - profile: { - email: fullProfile.email, - displayName: fullProfile.displayName, - }, - }); - - return new SamlAuthProvider({ - callbackUrl: `${globalConfig.baseUrl}/${providerId}/handler/frame`, - entryPoint: config.getString('entryPoint'), - logoutUrl: config.getOptionalString('logoutUrl'), - audience: config.getString('audience'), - issuer: config.getString('issuer'), - idpCert: config.getString('cert'), - privateKey: config.getOptionalString('privateKey'), - authnContext: config.getOptionalStringArray('authnContext'), - identifierFormat: config.getOptionalString('identifierFormat'), - decryptionPvk: config.getOptionalString('decryptionPvk'), - signatureAlgorithm: config.getOptionalString('signatureAlgorithm') as - | SignatureAlgorithm - | undefined, - digestAlgorithm: config.getOptionalString('digestAlgorithm'), - acceptedClockSkewMs: config.getOptionalNumber('acceptedClockSkewMs'), - wantAuthnResponseSigned: config.getOptionalBoolean( - 'wantAuthnResponseSigned', - ), - wantAssertionsSigned: config.getOptionalBoolean('wantAssertionsSigned'), - appUrl: globalConfig.appUrl, - authHandler, - signInResolver: options?.signIn?.resolver, - resolverContext, - }); - }; - }, - resolvers: { - /** - * Looks up the user by matching their nameID to the entity name. - */ - nameIdMatchingUserEntityName(): SignInResolver { - return async (info, ctx) => { - const id = info.result.fullProfile.nameID; - - if (!id) { - throw new AuthenticationError('No nameID found in SAML response'); - } - - return ctx.signInWithCatalogUser({ - entityRef: { name: id }, - }); - }; - }, - }, -}); diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts deleted file mode 100644 index 40c693506e..0000000000 --- a/plugins/auth-backend/src/providers/types.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - AuthProviderConfig as _AuthProviderConfig, - AuthProviderRouteHandlers as _AuthProviderRouteHandlers, - AuthProviderFactory as _AuthProviderFactory, - AuthResolverCatalogUserQuery as _AuthResolverCatalogUserQuery, - AuthResolverContext as _AuthResolverContext, - ClientAuthResponse as _ClientAuthResponse, - CookieConfigurer as _CookieConfigurer, - ProfileInfo as _ProfileInfo, - SignInInfo as _SignInInfo, - SignInResolver as _SignInResolver, -} from '@backstage/plugin-auth-node'; -import { OAuthStartRequest } from '../lib/oauth/types'; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type AuthResolverCatalogUserQuery = _AuthResolverCatalogUserQuery; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type AuthResolverContext = _AuthResolverContext; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type CookieConfigurer = _CookieConfigurer; - -/** - * @public - * @deprecated Use `createOAuthAuthenticator` from `@backstage/plugin-auth-node` instead - */ -export type OAuthStartResponse = { - /** - * URL to redirect to - */ - url: string; - /** - * Status code to use for the redirect - */ - status?: number; -}; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type AuthProviderConfig = _AuthProviderConfig; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type AuthProviderRouteHandlers = _AuthProviderRouteHandlers; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type AuthProviderFactory = _AuthProviderFactory; - -/** - * @public - * @deprecated import `ClientAuthResponse` from `@backstage/plugin-auth-node` instead - */ -export type AuthResponse = _ClientAuthResponse; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type ProfileInfo = _ProfileInfo; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type SignInInfo = _SignInInfo; - -/** - * @public - * @deprecated import from `@backstage/plugin-auth-node` instead - */ -export type SignInResolver = _SignInResolver; - -/** - * The return type of an authentication handler. Must contain valid profile - * information. - * - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type AuthHandlerResult = { profile: _ProfileInfo }; - -/** - * The AuthHandler function is called every time the user authenticates using - * the provider. - * - * The handler should return a profile that represents the session for the user - * in the frontend. - * - * Throwing an error in the function will cause the authentication to fail, - * making it possible to use this function as a way to limit access to a certain - * group of users. - * - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type AuthHandler = ( - input: TAuthResult, - context: _AuthResolverContext, -) => Promise; - -/** - * @public - * @deprecated Use `createOAuthRouteHandlers` from `@backstage/plugin-auth-node` instead - */ -export type StateEncoder = ( - req: OAuthStartRequest, -) => Promise<{ encodedState: string }>; diff --git a/plugins/auth-backend/src/service/index.ts b/plugins/auth-backend/src/service/index.ts deleted file mode 100644 index d26055aa59..0000000000 --- a/plugins/auth-backend/src/service/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2024 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { createRouter, type RouterOptions } from './router'; diff --git a/plugins/auth-backend/src/service/router.ts b/plugins/auth-backend/src/service/router.ts index af34ffc310..1952e9d648 100644 --- a/plugins/auth-backend/src/service/router.ts +++ b/plugins/auth-backend/src/service/router.ts @@ -21,24 +21,16 @@ import { AuthService, DatabaseService, DiscoveryService, - HttpAuthService, LoggerService, RootConfigService, } from '@backstage/backend-plugin-api'; -import { defaultAuthProviderFactories } from '../providers'; import { AuthOwnershipResolver } from '@backstage/plugin-auth-node'; -import { - TokenManager, - createLegacyAuthAdapters, -} from '@backstage/backend-common'; +import { CatalogService } from '@backstage/plugin-catalog-node'; import { NotFoundError } from '@backstage/errors'; -import { CatalogApi } from '@backstage/catalog-client'; -import { - bindOidcRouter, - KeyStores, - TokenFactory, - UserInfoDatabaseHandler, -} from '../identity'; +import { bindOidcRouter } from '../identity/router'; +import { KeyStores } from '../identity/KeyStores'; +import { TokenFactory } from '../identity/TokenFactory'; +import { UserInfoDatabaseHandler } from '../identity/UserInfoDatabaseHandler'; import session from 'express-session'; import connectSessionKnex from 'connect-session-knex'; import passport from 'passport'; @@ -49,29 +41,18 @@ import { StaticTokenIssuer } from '../identity/StaticTokenIssuer'; import { StaticKeyStore } from '../identity/StaticKeyStore'; import { bindProviderRouters, ProviderFactories } from '../providers/router'; -/** - * @public - * @deprecated Please migrate to the new backend system as this will be removed in the future. - */ -export interface RouterOptions { +interface RouterOptions { logger: LoggerService; database: DatabaseService; config: RootConfigService; discovery: DiscoveryService; - tokenManager?: TokenManager; - auth?: AuthService; - httpAuth?: HttpAuthService; + auth: AuthService; tokenFactoryAlgorithm?: string; providerFactories?: ProviderFactories; - disableDefaultProviderFactories?: boolean; - catalogApi?: CatalogApi; + catalog: CatalogService; ownershipResolver?: AuthOwnershipResolver; } -/** - * @public - * @deprecated Please migrate to the new backend system as this will be removed in the future. - */ export async function createRouter( options: RouterOptions, ): Promise { @@ -84,8 +65,6 @@ export async function createRouter( providerFactories = {}, } = options; - const { auth, httpAuth } = createLegacyAuthAdapters(options); - const router = Router(); const appUrl = config.getString('app.baseUrl'); @@ -151,25 +130,17 @@ export async function createRouter( router.use(express.urlencoded({ extended: false })); router.use(express.json()); - const providers = options.disableDefaultProviderFactories - ? providerFactories - : { - ...defaultAuthProviderFactories, - ...providerFactories, - }; - bindProviderRouters(router, { - providers, + providers: providerFactories, appUrl, baseUrl: authUrl, tokenIssuer, ...options, - auth, - httpAuth, + auth: options.auth, }); bindOidcRouter(router, { - auth, + auth: options.auth, tokenIssuer, baseUrl: authUrl, userInfoDatabaseHandler, diff --git a/plugins/catalog-backend-module-unprocessed/README.md b/plugins/catalog-backend-module-unprocessed/README.md index f01347912d..21ab19ca72 100644 --- a/plugins/catalog-backend-module-unprocessed/README.md +++ b/plugins/catalog-backend-module-unprocessed/README.md @@ -19,19 +19,3 @@ In `packages/backend/src/index.ts` add the module: ```ts title="packages/backend/src/index.ts" backend.add(import('@backstage/plugin-catalog-backend-module-unprocessed')); ``` - -### Legacy Backend - -In `packages/backend/src/plugins/catalog.ts` import the module and initialize it after invoking `CatalogBuilder.build()`: - -```ts title="packages/backend/src/plugins/catalog.ts" -import { UnprocessedEntitiesModule } from '@backstage/plugin-catalog-backend-module-unprocessed'; - -//... - -const unprocessed = new UnprocessedEntitiesModule( - await env.database.getClient(), - router, -); -unprocessed.registerRoutes(); -``` diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json index 290c314760..88d4d6c3ae 100644 --- a/plugins/catalog-backend-module-unprocessed/package.json +++ b/plugins/catalog-backend-module-unprocessed/package.json @@ -33,7 +33,6 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/errors": "workspace:^", diff --git a/plugins/catalog-backend-module-unprocessed/report.api.md b/plugins/catalog-backend-module-unprocessed/report.api.md index 493082ac7c..85ddc0e3ac 100644 --- a/plugins/catalog-backend-module-unprocessed/report.api.md +++ b/plugins/catalog-backend-module-unprocessed/report.api.md @@ -4,27 +4,8 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; -import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { HttpRouterService } from '@backstage/backend-plugin-api'; -import { Knex } from 'knex'; -import { PermissionsService } from '@backstage/backend-plugin-api'; // @public const catalogModuleUnprocessedEntities: BackendFeature; export default catalogModuleUnprocessedEntities; - -// @public -export class UnprocessedEntitiesModule { - // (undocumented) - static create(options: { - router: Pick; - database: Knex; - discovery: DiscoveryService; - permissions: PermissionsService; - httpAuth?: HttpAuthService; - }): UnprocessedEntitiesModule; - // (undocumented) - registerRoutes(): void; -} ``` diff --git a/plugins/catalog-backend-module-unprocessed/src/UnprocessedEntitiesModule.ts b/plugins/catalog-backend-module-unprocessed/src/UnprocessedEntitiesModule.ts index 34aedd61af..ce25ba2bd1 100644 --- a/plugins/catalog-backend-module-unprocessed/src/UnprocessedEntitiesModule.ts +++ b/plugins/catalog-backend-module-unprocessed/src/UnprocessedEntitiesModule.ts @@ -22,7 +22,6 @@ import { } from './types'; import { Knex } from 'knex'; import { - DiscoveryService, HttpAuthService, HttpRouterService, PermissionsService, @@ -36,12 +35,11 @@ import { } from '@backstage/plugin-permission-common'; import { unprocessedEntitiesDeletePermission } from '@backstage/plugin-catalog-unprocessed-entities-common'; import { NotAllowedError } from '@backstage/errors'; -import { createLegacyAuthAdapters } from '@backstage/backend-common'; /** * Module providing Unprocessed Entities API endpoints * - * @public + * @internal */ export class UnprocessedEntitiesModule { private readonly moduleRouter; @@ -52,30 +50,24 @@ export class UnprocessedEntitiesModule { private readonly database: Knex, private readonly router: Pick, private readonly permissions: PermissionsService, - discovery: DiscoveryService, - httpAuth?: HttpAuthService, + httpAuth: HttpAuthService, ) { this.moduleRouter = Router(); this.router.use(this.moduleRouter); - this.httpAuth = createLegacyAuthAdapters({ - discovery, - httpAuth, - }).httpAuth; + this.httpAuth = httpAuth; } static create(options: { router: Pick; database: Knex; - discovery: DiscoveryService; permissions: PermissionsService; - httpAuth?: HttpAuthService; + httpAuth: HttpAuthService; }) { return new UnprocessedEntitiesModule( options.database, options.router, options.permissions, - options.discovery, options.httpAuth, ); } diff --git a/plugins/catalog-backend-module-unprocessed/src/index.ts b/plugins/catalog-backend-module-unprocessed/src/index.ts index 20132d9b27..912d69d8c0 100644 --- a/plugins/catalog-backend-module-unprocessed/src/index.ts +++ b/plugins/catalog-backend-module-unprocessed/src/index.ts @@ -21,4 +21,3 @@ */ export { catalogModuleUnprocessedEntities as default } from './module'; -export * from './UnprocessedEntitiesModule'; diff --git a/plugins/catalog-backend-module-unprocessed/src/module.ts b/plugins/catalog-backend-module-unprocessed/src/module.ts index bf1d50a634..1b46cb4448 100644 --- a/plugins/catalog-backend-module-unprocessed/src/module.ts +++ b/plugins/catalog-backend-module-unprocessed/src/module.ts @@ -36,7 +36,6 @@ export const catalogModuleUnprocessedEntities = createBackendModule({ router: coreServices.httpRouter, logger: coreServices.logger, httpAuth: coreServices.httpAuth, - discovery: coreServices.discovery, permissions: coreServices.permissions, permissionsRegistry: coreServices.permissionsRegistry, }, @@ -46,14 +45,12 @@ export const catalogModuleUnprocessedEntities = createBackendModule({ logger, permissions, httpAuth, - discovery, permissionsRegistry, }) { const module = UnprocessedEntitiesModule.create({ database: await database.getClient(), router, permissions, - discovery, httpAuth, }); diff --git a/plugins/catalog-node/report-testUtils.api.md b/plugins/catalog-node/report-testUtils.api.md index 35dee113c0..3098888fcb 100644 --- a/plugins/catalog-node/report-testUtils.api.md +++ b/plugins/catalog-node/report-testUtils.api.md @@ -19,6 +19,7 @@ import { GetEntityAncestorsRequest } from '@backstage/catalog-client'; import { GetEntityAncestorsResponse } from '@backstage/catalog-client'; import { GetEntityFacetsRequest } from '@backstage/catalog-client'; import { GetEntityFacetsResponse } from '@backstage/catalog-client'; +import { GetLocationsResponse } from '@backstage/catalog-client'; import { Location as Location_2 } from '@backstage/catalog-client'; import { QueryEntitiesRequest } from '@backstage/catalog-client'; import { QueryEntitiesResponse } from '@backstage/catalog-client'; @@ -74,6 +75,11 @@ export interface CatalogServiceMock extends CatalogService, CatalogApi { options?: CatalogServiceRequestOptions | CatalogRequestOptions, ): Promise; // (undocumented) + getLocations( + request?: {}, + options?: CatalogServiceRequestOptions | CatalogRequestOptions, + ): Promise; + // (undocumented) queryEntities( request?: QueryEntitiesRequest, options?: CatalogServiceRequestOptions | CatalogRequestOptions, diff --git a/plugins/catalog-node/report.api.md b/plugins/catalog-node/report.api.md index a51212e412..f2fe86a38c 100644 --- a/plugins/catalog-node/report.api.md +++ b/plugins/catalog-node/report.api.md @@ -19,6 +19,7 @@ import { GetEntityAncestorsRequest } from '@backstage/catalog-client'; import { GetEntityAncestorsResponse } from '@backstage/catalog-client'; import { GetEntityFacetsRequest } from '@backstage/catalog-client'; import { GetEntityFacetsResponse } from '@backstage/catalog-client'; +import { GetLocationsResponse } from '@backstage/catalog-client'; import { JsonValue } from '@backstage/types'; import { Location as Location_2 } from '@backstage/catalog-client'; import { LocationEntityV1alpha1 } from '@backstage/catalog-model'; @@ -164,6 +165,11 @@ export interface CatalogService { options: CatalogServiceRequestOptions, ): Promise; // (undocumented) + getLocations( + request: {} | undefined, + options: CatalogServiceRequestOptions, + ): Promise; + // (undocumented) queryEntities( request: QueryEntitiesRequest | undefined, options: CatalogServiceRequestOptions, diff --git a/plugins/catalog-node/src/catalogService.ts b/plugins/catalog-node/src/catalogService.ts index 5e8c920dad..51bb1d92e5 100644 --- a/plugins/catalog-node/src/catalogService.ts +++ b/plugins/catalog-node/src/catalogService.ts @@ -35,6 +35,7 @@ import { GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, + GetLocationsResponse, Location, QueryEntitiesRequest, QueryEntitiesResponse, @@ -96,6 +97,11 @@ export interface CatalogService { options: CatalogServiceRequestOptions, ): Promise; + getLocations( + request: {} | undefined, + options: CatalogServiceRequestOptions, + ): Promise; + getLocationById( id: string, options: CatalogServiceRequestOptions, @@ -223,6 +229,16 @@ class DefaultCatalogService implements CatalogService { ); } + async getLocations( + request: {} | undefined, + options: CatalogServiceRequestOptions, + ): Promise { + return this.#catalogApi.getLocations( + request, + await this.#getOptions(options), + ); + } + async getLocationById( id: string, options: CatalogServiceRequestOptions, diff --git a/plugins/catalog-node/src/testUtils/catalogServiceMock.ts b/plugins/catalog-node/src/testUtils/catalogServiceMock.ts index 2e8a772dc3..ec469fc927 100644 --- a/plugins/catalog-node/src/testUtils/catalogServiceMock.ts +++ b/plugins/catalog-node/src/testUtils/catalogServiceMock.ts @@ -95,6 +95,7 @@ export namespace catalogServiceMock { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityFacets: jest.fn(), + getLocations: jest.fn(), getLocationById: jest.fn(), getLocationByRef: jest.fn(), addLocation: jest.fn(), diff --git a/plugins/catalog-node/src/testUtils/types.ts b/plugins/catalog-node/src/testUtils/types.ts index 1fbbec98f1..6e6331a630 100644 --- a/plugins/catalog-node/src/testUtils/types.ts +++ b/plugins/catalog-node/src/testUtils/types.ts @@ -27,6 +27,7 @@ import { GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, + GetLocationsResponse, Location, QueryEntitiesRequest, QueryEntitiesResponse, @@ -90,6 +91,11 @@ export interface CatalogServiceMock extends CatalogService, CatalogApi { options?: CatalogServiceRequestOptions | CatalogRequestOptions, ): Promise; + getLocations( + request?: {}, + options?: CatalogServiceRequestOptions | CatalogRequestOptions, + ): Promise; + getLocationById( id: string, options?: CatalogServiceRequestOptions | CatalogRequestOptions, diff --git a/plugins/catalog-react/report.api.md b/plugins/catalog-react/report.api.md index f7673e1bd8..bfebb2b13a 100644 --- a/plugins/catalog-react/report.api.md +++ b/plugins/catalog-react/report.api.md @@ -12,6 +12,7 @@ import { ComponentProps } from 'react'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { Context } from 'react'; import { Entity } from '@backstage/catalog-model'; +import { EntityOrderQuery } from '@backstage/catalog-client'; import IconButton from '@material-ui/core/IconButton'; import { IconComponent } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; @@ -197,6 +198,7 @@ export type DefaultEntityFilters = { orphan?: EntityOrphanFilter; error?: EntityErrorFilter; namespace?: EntityNamespaceFilter; + order?: EntityOrderFilter; }; // @public @@ -406,6 +408,17 @@ export interface EntityNamespacePickerProps { initiallySelectedNamespaces?: string[]; } +// @public +export class EntityOrderFilter implements EntityFilter { + constructor(values: [string, 'asc' | 'desc'][]); + // (undocumented) + getOrderFilters(): EntityOrderQuery; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: [string, 'asc' | 'desc'][]; +} + // @public export class EntityOrphanFilter implements EntityFilter { constructor(value: boolean); diff --git a/plugins/catalog-react/src/components/UserListPicker/useAllEntitiesCount.ts b/plugins/catalog-react/src/components/UserListPicker/useAllEntitiesCount.ts index fa564382d8..c4bea1fa05 100644 --- a/plugins/catalog-react/src/components/UserListPicker/useAllEntitiesCount.ts +++ b/plugins/catalog-react/src/components/UserListPicker/useAllEntitiesCount.ts @@ -30,7 +30,7 @@ export function useAllEntitiesCount() { const request = useMemo(() => { const { user, ...allFilters } = filters; const compacted = compact(Object.values(allFilters)); - const catalogFilters = reduceCatalogFilters(compacted); + const { orderFields, ...catalogFilters } = reduceCatalogFilters(compacted); const newRequest: QueryEntitiesInitialRequest = { ...catalogFilters, limit: 0, diff --git a/plugins/catalog-react/src/components/UserListPicker/useOwnedEntitiesCount.ts b/plugins/catalog-react/src/components/UserListPicker/useOwnedEntitiesCount.ts index dbdc040165..489ae24d4e 100644 --- a/plugins/catalog-react/src/components/UserListPicker/useOwnedEntitiesCount.ts +++ b/plugins/catalog-react/src/components/UserListPicker/useOwnedEntitiesCount.ts @@ -38,7 +38,7 @@ export function useOwnedEntitiesCount() { ); const { user, owners, ...allFilters } = filters; - const catalogFilters = reduceCatalogFilters( + const { orderFields, ...catalogFilters } = reduceCatalogFilters( compact(Object.values(allFilters)), ); diff --git a/plugins/catalog-react/src/components/UserListPicker/useStarredEntitiesCount.ts b/plugins/catalog-react/src/components/UserListPicker/useStarredEntitiesCount.ts index 70dde024f8..f1fcea4572 100644 --- a/plugins/catalog-react/src/components/UserListPicker/useStarredEntitiesCount.ts +++ b/plugins/catalog-react/src/components/UserListPicker/useStarredEntitiesCount.ts @@ -34,7 +34,7 @@ export function useStarredEntitiesCount() { const request = useMemo(() => { const { user, ...allFilters } = filters; const compacted = compact(Object.values(allFilters)); - const catalogFilters = reduceCatalogFilters(compacted); + const { orderFields, ...catalogFilters } = reduceCatalogFilters(compacted); const facet = 'metadata.name'; diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts index 3ac7bda73a..8a6e664585 100644 --- a/plugins/catalog-react/src/filters.ts +++ b/plugins/catalog-react/src/filters.ts @@ -23,6 +23,7 @@ import { import { AlphaEntity } from '@backstage/catalog-model/alpha'; import { EntityFilter, UserListFilterKind } from './types'; import { getEntityRelations } from './utils/getEntityRelations'; +import { EntityOrderQuery } from '@backstage/catalog-client'; /** * Filter entities based on Kind. @@ -331,3 +332,19 @@ export class EntityErrorFilter implements EntityFilter { return error !== undefined && this.value === error; } } + +/** + * Sort entities by a given field/column. + * @public + */ +export class EntityOrderFilter implements EntityFilter { + constructor(readonly values: [string, 'asc' | 'desc'][]) {} + + getOrderFilters(): EntityOrderQuery { + return this.values.map(([field, order]) => ({ field, order })); + } + + toQueryValue(): string[] { + return this.values.flat(); + } +} diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 4f4194da48..1d3afd8d9b 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -35,6 +35,7 @@ import { EntityKindFilter, EntityLifecycleFilter, EntityNamespaceFilter, + EntityOrderFilter, EntityOrphanFilter, EntityOwnerFilter, EntityTagFilter, @@ -64,6 +65,7 @@ export type DefaultEntityFilters = { orphan?: EntityOrphanFilter; error?: EntityErrorFilter; namespace?: EntityNamespaceFilter; + order?: EntityOrderFilter; }; /** @public */ @@ -287,7 +289,6 @@ export const EntityListProvider = ( ...backendFilter, limit, offset, - orderFields: [{ field: 'metadata.name', order: 'asc' }], }); setOutputState({ appliedFilters: requestedFilters, diff --git a/plugins/catalog-react/src/testUtils/catalogApiMock.ts b/plugins/catalog-react/src/testUtils/catalogApiMock.ts index 8cf3b740b0..08520e2a9b 100644 --- a/plugins/catalog-react/src/testUtils/catalogApiMock.ts +++ b/plugins/catalog-react/src/testUtils/catalogApiMock.ts @@ -94,6 +94,7 @@ export namespace catalogApiMock { removeEntityByUid: jest.fn(), refreshEntity: jest.fn(), getEntityFacets: jest.fn(), + getLocations: jest.fn(), getLocationById: jest.fn(), getLocationByRef: jest.fn(), addLocation: jest.fn(), diff --git a/plugins/catalog-react/src/utils/filters.ts b/plugins/catalog-react/src/utils/filters.ts index 82d7358b91..1ff7334ffb 100644 --- a/plugins/catalog-react/src/utils/filters.ts +++ b/plugins/catalog-react/src/utils/filters.ts @@ -19,6 +19,7 @@ import { EntityFilter } from '../types'; import { EntityLifecycleFilter, EntityNamespaceFilter, + EntityOrderFilter, EntityOrphanFilter, EntityOwnerFilter, EntityTagFilter, @@ -26,18 +27,24 @@ import { EntityUserFilter, UserListFilter, } from '../filters'; +import { EntityOrderQuery } from '@backstage/catalog-client'; export interface CatalogFilters { filter: Record; fullTextFilter?: { term: string; }; + orderFields?: EntityOrderQuery; } function isEntityTextFilter(t: EntityFilter): t is EntityTextFilter { return !!(t as EntityTextFilter).getFullTextFilters; } +function isEntityOrderFilter(t: EntityFilter): t is EntityOrderFilter { + return !!(t as EntityOrderFilter).getOrderFilters; +} + export function reduceCatalogFilters(filters: EntityFilter[]): CatalogFilters { const condensedFilters = filters.reduce( (compoundFilter, filter) => { @@ -50,7 +57,14 @@ export function reduceCatalogFilters(filters: EntityFilter[]): CatalogFilters { ); const fullTextFilter = filters.find(isEntityTextFilter)?.getFullTextFilters(); - return { filter: condensedFilters, fullTextFilter }; + + const orderFields = filters.find(isEntityOrderFilter)?.getOrderFilters() || [ + { + field: 'metadata.name', + order: 'asc', + }, + ]; + return { filter: condensedFilters, fullTextFilter, orderFields }; } /** diff --git a/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.test.ts b/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.test.ts index bc9da24cbe..cd7a9a656a 100644 --- a/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.test.ts +++ b/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.test.ts @@ -21,7 +21,6 @@ describe('GitlabEventRouter', () => { const events = new TestEventsService(); const eventRouter = new GitlabEventRouter({ events: events }); const topic = 'gitlab'; - const eventPayload = { event_name: 'test_type', test: 'payload' }; const metadata = {}; beforeEach(() => { @@ -36,7 +35,7 @@ describe('GitlabEventRouter', () => { expect(events.subscribed[0].topics).toEqual([topic]); }); - it('no $.event_name', () => { + it('no $.event_name and no $.object_kind', () => { eventRouter.onEvent({ topic, eventPayload: { invalid: 'payload' }, @@ -46,11 +45,45 @@ describe('GitlabEventRouter', () => { expect(events.published).toEqual([]); }); - it('with $.event_name', () => { + it('with $.event_name and no $.object_kind', () => { + const eventPayload = { + event_name: 'type_from_event_name', + test: 'payload', + }; + eventRouter.onEvent({ topic, eventPayload, metadata }); expect(events.published.length).toBe(1); - expect(events.published[0].topic).toEqual('gitlab.test_type'); + expect(events.published[0].topic).toEqual('gitlab.type_from_event_name'); + expect(events.published[0].eventPayload).toEqual(eventPayload); + expect(events.published[0].metadata).toEqual(metadata); + }); + + it('with $.object_kind and no $.event_name', () => { + const eventPayload = { + object_kind: 'type_from_object_kind', + test: 'payload', + }; + + eventRouter.onEvent({ topic, eventPayload, metadata }); + + expect(events.published.length).toBe(1); + expect(events.published[0].topic).toEqual('gitlab.type_from_object_kind'); + expect(events.published[0].eventPayload).toEqual(eventPayload); + expect(events.published[0].metadata).toEqual(metadata); + }); + + it('with $.event_name and $.object_kind', () => { + const eventPayload = { + event_name: 'type_from_event_name', + object_kind: 'type_from_object_kind', + test: 'payload', + }; + + eventRouter.onEvent({ topic, eventPayload, metadata }); + + expect(events.published.length).toBe(1); + expect(events.published[0].topic).toEqual('gitlab.type_from_object_kind'); expect(events.published[0].eventPayload).toEqual(eventPayload); expect(events.published[0].metadata).toEqual(metadata); }); diff --git a/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.ts b/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.ts index 23b0389b55..52ea80424f 100644 --- a/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.ts +++ b/plugins/events-backend-module-gitlab/src/router/GitlabEventRouter.ts @@ -40,9 +40,15 @@ export class GitlabEventRouter extends SubTopicEventRouter { } protected determineSubTopic(params: EventParams): string | undefined { - if ('event_name' in (params.eventPayload as object)) { - const payload = params.eventPayload as { event_name: string }; - return payload.event_name; + if ( + 'object_kind' in (params.eventPayload as object) || + 'event_name' in (params.eventPayload as object) + ) { + const payload = params.eventPayload as { + event_name?: string; + object_kind?: string; + }; + return payload.object_kind || payload.event_name; } return undefined; diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 0408fb7031..452024a2cf 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -51,14 +51,12 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-node": "workspace:^", - "@types/express": "^4.17.6", "dataloader": "^2.0.0", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -70,6 +68,7 @@ "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", + "@types/express": "^4.17.6", "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "msw": "^1.0.0", diff --git a/plugins/permission-backend/report.api.md b/plugins/permission-backend/report.api.md index 48395265f7..a9b7720c6f 100644 --- a/plugins/permission-backend/report.api.md +++ b/plugins/permission-backend/report.api.md @@ -3,41 +3,9 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AuthService } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; -import express from 'express'; -import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { IdentityApi } from '@backstage/plugin-auth-node'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import { PermissionPolicy } from '@backstage/plugin-permission-node'; -import { RootConfigService } from '@backstage/backend-plugin-api'; -import { UserInfoService } from '@backstage/backend-plugin-api'; - -// @public @deprecated -export function createRouter(options: RouterOptions): Promise; // @public const permissionPlugin: BackendFeature; export default permissionPlugin; - -// @public @deprecated -export interface RouterOptions { - // (undocumented) - auth?: AuthService; - // (undocumented) - config: RootConfigService; - // (undocumented) - discovery: DiscoveryService; - // (undocumented) - httpAuth?: HttpAuthService; - // (undocumented) - identity?: IdentityApi; - // (undocumented) - logger: LoggerService; - // (undocumented) - policy: PermissionPolicy; - // (undocumented) - userInfo?: UserInfoService; -} ``` diff --git a/plugins/permission-backend/src/index.ts b/plugins/permission-backend/src/index.ts index b6d3366d37..42ac600821 100644 --- a/plugins/permission-backend/src/index.ts +++ b/plugins/permission-backend/src/index.ts @@ -19,4 +19,3 @@ * @packageDocumentation */ export { permissionPlugin as default } from './plugin'; -export * from './service'; diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index 83dc90a363..0759f6df3a 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -17,7 +17,6 @@ import { z } from 'zod'; import express, { Request, Response } from 'express'; import Router from 'express-promise-router'; -import { createLegacyAuthAdapters } from '@backstage/backend-common'; import { InputError } from '@backstage/errors'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { @@ -99,8 +98,7 @@ const evaluatePermissionRequestBatchSchema: z.ZodSchema { - const { policy, discovery, config, logger } = options; - const { auth, httpAuth, userInfo } = createLegacyAuthAdapters(options); + const { policy, discovery, config, logger, auth, httpAuth, userInfo } = + options; if (!config.getOptionalBoolean('permission.enabled')) { logger.warn( diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts index 65cf2244d4..35a0b83ae5 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.test.ts @@ -376,4 +376,75 @@ describe('createGitLabCommit', () => { ); }); }); + + describe('error handling', () => { + it('throws appropriate error for create action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Create my new commit', + branchName: 'some-branch', + commitAction: 'create', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + 'Committing the changes to some-branch failed. Please check that none of the files created by the template already exists. Error: Commit failed', + ); + }); + + it('throws appropriate error for update action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Update my commit', + branchName: 'some-branch', + commitAction: 'update', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + "Committing the changes to some-branch failed. Please verify that all files you're trying to modify exist in the repository. Error: Commit failed", + ); + }); + + it('throws appropriate error for delete action when commit fails', async () => { + const input = { + repoUrl: 'gitlab.com?repo=repo&owner=owner', + commitMessage: 'Delete my commit', + branchName: 'some-branch', + commitAction: 'delete', + }; + mockDir.setContent({ + [workspacePath]: { + 'foo.txt': 'Hello there!', + }, + }); + + const ctx = createMockActionContext({ input, workspacePath }); + mockGitlabClient.Commits.create.mockRejectedValue( + new Error('Commit failed'), + ); + + await expect(instance.handler(ctx)).rejects.toThrow( + "Committing the changes to some-branch failed. Please verify that all files you're trying to modify exist in the repository. Error: Commit failed", + ); + }); + }); }); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts index 666e236cda..9ac1de13d3 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/gitlabRepoPush.ts @@ -203,6 +203,13 @@ export const createGitlabRepoPushAction = (options: { ctx.output('projectPath', repoID); ctx.output('commitHash', commitId); } catch (e) { + if (commitAction !== 'create') { + throw new InputError( + `Committing the changes to ${branchName} failed. Please verify that all files you're trying to modify exist in the repository. ${getErrorMessage( + e, + )}`, + ); + } throw new InputError( `Committing the changes to ${branchName} failed. Please check that none of the files created by the template already exists. ${getErrorMessage( e, diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index f97bad35c8..d26cc955b3 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -360,10 +360,10 @@ describe.each([ }); }); - describe('GET /v2/template-extensions', () => { + describe('GET /v2/templating-extensions', () => { it('lists template filters and globals', async () => { const response = await request(app) - .get('/v2/template-extensions') + .get('/v2/templating-extensions') .send(); expect(response.status).toEqual(200); const integrations = ScmIntegrations.fromConfig(config); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index def470252d..e5c384987a 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -1115,7 +1115,7 @@ export async function createRouter( res.status(200).json({ results }); }) - .get('/v2/template-extensions', async (_req, res) => { + .get('/v2/templating-extensions', async (_req, res) => { res.status(200).json({ filters: { ...extractFilterMetadata(createDefaultFilters({ integrations })), diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index cd8711b18f..d66ec36acb 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -166,7 +166,7 @@ export type LayoutTemplate = NonNullable< export type ListActionsResponse = Array; // @public -export type ListTemplateExtensionsResponse = { +export type ListTemplatingExtensionsResponse = { filters: Record; globals: { functions: Record; @@ -247,7 +247,7 @@ export interface ScaffolderApi { tasks: ScaffolderTask[]; totalTasks?: number; }>; - listTemplateExtensions?(): Promise; + listTemplatingExtensions?(): Promise; retry?(taskId: string): Promise; scaffold( options: ScaffolderScaffoldOptions, diff --git a/plugins/scaffolder-react/src/api/types.ts b/plugins/scaffolder-react/src/api/types.ts index cb73704010..acc980afdc 100644 --- a/plugins/scaffolder-react/src/api/types.ts +++ b/plugins/scaffolder-react/src/api/types.ts @@ -129,7 +129,7 @@ export type TemplateGlobalValue = { * * @public */ -export type ListTemplateExtensionsResponse = { +export type ListTemplatingExtensionsResponse = { filters: Record; globals: { functions: Record; @@ -300,7 +300,7 @@ export interface ScaffolderApi { /** * Returns a structure describing the available templating extensions. */ - listTemplateExtensions?(): Promise; + listTemplatingExtensions?(): Promise; streamLogs(options: ScaffolderStreamLogsOptions): Observable; diff --git a/plugins/scaffolder/report.api.md b/plugins/scaffolder/report.api.md index a685e8163f..927599b91f 100644 --- a/plugins/scaffolder/report.api.md +++ b/plugins/scaffolder/report.api.md @@ -25,7 +25,7 @@ import { JSX as JSX_2 } from 'react/jsx-runtime'; import { LayoutOptions as LayoutOptions_2 } from '@backstage/plugin-scaffolder-react'; import { LayoutTemplate as LayoutTemplate_2 } from '@backstage/plugin-scaffolder-react'; import { ListActionsResponse as ListActionsResponse_2 } from '@backstage/plugin-scaffolder-react'; -import { ListTemplateExtensionsResponse } from '@backstage/plugin-scaffolder-react'; +import { ListTemplatingExtensionsResponse } from '@backstage/plugin-scaffolder-react'; import { LogEvent as LogEvent_2 } from '@backstage/plugin-scaffolder-react'; import { Observable } from '@backstage/types'; import { PathParams } from '@backstage/core-plugin-api'; @@ -561,7 +561,7 @@ export class ScaffolderClient implements ScaffolderApi_2 { totalTasks?: number; }>; // (undocumented) - listTemplateExtensions(): Promise; + listTemplatingExtensions(): Promise; // (undocumented) retry?(taskId: string): Promise; // (undocumented) diff --git a/plugins/scaffolder/src/api.ts b/plugins/scaffolder/src/api.ts index 85450b012a..1121593e2d 100644 --- a/plugins/scaffolder/src/api.ts +++ b/plugins/scaffolder/src/api.ts @@ -24,7 +24,7 @@ import { ResponseError } from '@backstage/errors'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { ListActionsResponse, - ListTemplateExtensionsResponse, + ListTemplatingExtensionsResponse, LogEvent, ScaffolderApi, ScaffolderDryRunOptions, @@ -325,7 +325,7 @@ export class ScaffolderClient implements ScaffolderApi { return await response.json(); } - async listTemplateExtensions(): Promise { + async listTemplatingExtensions(): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('scaffolder'); const response = await this.fetchApi.fetch( `${baseUrl}/v2/template-extensions`, diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 8a1b0854cf..b15c197945 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -30,7 +30,6 @@ import { entityPresentationApiRef, } from '@backstage/plugin-catalog-react'; import TextField from '@material-ui/core/TextField'; -import FormControl from '@material-ui/core/FormControl'; import Autocomplete, { AutocompleteChangeReason, createFilterOptions, @@ -46,6 +45,7 @@ import { import { VirtualizedListbox } from '../VirtualizedListbox'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; import { scaffolderTranslationRef } from '../../../translation'; +import { ScaffolderField } from '@backstage/plugin-scaffolder-react/alpha'; export { EntityPickerSchema } from './schema'; @@ -68,6 +68,7 @@ export const EntityPicker = (props: EntityPickerProps) => { rawErrors, formData, idSchema, + errors, } = props; const catalogFilter = buildCatalogFilter(uiSchema); const defaultKind = uiSchema['ui:options']?.defaultKind; @@ -179,10 +180,12 @@ export const EntityPicker = (props: EntityPickerProps) => { }, [entities, onChange, selectedEntity, required, allowArbitraryValues]); return ( - 0 && !formData} + disabled={isDisabled} + errors={errors} > { {...params} label={title} margin="dense" - helperText={description} - FormHelperTextProps={{ margin: 'dense', style: { marginLeft: 0 } }} variant="outlined" required={required} disabled={isDisabled} @@ -226,7 +227,7 @@ export const EntityPicker = (props: EntityPickerProps) => { })} ListboxComponent={VirtualizedListbox} /> - + ); }; diff --git a/yarn.lock b/yarn.lock index 01cdf6283d..3f4f005a71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3781,23 +3781,23 @@ __metadata: resolution: "@backstage/canon@workspace:packages/canon" dependencies: "@backstage/cli": "workspace:^" - "@base-ui-components/react": "npm:^1.0.0-alpha.5" - "@remixicon/react": "npm:^4.5.0" - "@storybook/addon-essentials": "npm:^8.6.8" - "@storybook/addon-interactions": "npm:^8.6.8" + "@base-ui-components/react": "npm:^1.0.0-alpha.7" + "@remixicon/react": "npm:^4.6.0" + "@storybook/addon-essentials": "npm:^8.6.12" + "@storybook/addon-interactions": "npm:^8.6.12" "@storybook/addon-styling-webpack": "npm:^1.0.1" - "@storybook/addon-themes": "npm:^8.6.8" + "@storybook/addon-themes": "npm:^8.6.12" "@storybook/addon-webpack5-compiler-swc": "npm:^3.0.0" - "@storybook/blocks": "npm:^8.6.8" - "@storybook/react": "npm:^8.6.8" - "@storybook/react-webpack5": "npm:^8.6.8" - "@storybook/test": "npm:^8.6.8" - "@tanstack/react-table": "npm:^8.21.2" + "@storybook/blocks": "npm:^8.6.12" + "@storybook/react": "npm:^8.6.12" + "@storybook/react-webpack5": "npm:^8.6.12" + "@storybook/test": "npm:^8.6.12" + "@tanstack/react-table": "npm:^8.21.3" "@types/react": "npm:^18.0.0" "@types/react-dom": "npm:^18.0.0" chalk: "npm:^5.4.1" clsx: "npm:^2.1.1" - eslint-plugin-storybook: "npm:^0.11.4" + eslint-plugin-storybook: "npm:^0.12.0" glob: "npm:^11.0.1" globals: "npm:^15.11.0" lightningcss: "npm:^1.29.1" @@ -3805,7 +3805,7 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-router-dom: "npm:^6.3.0" - storybook: "npm:^8.6.8" + storybook: "npm:^8.6.12" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 @@ -4902,7 +4902,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-atlassian-provider@workspace:^, @backstage/plugin-auth-backend-module-atlassian-provider@workspace:plugins/auth-backend-module-atlassian-provider": +"@backstage/plugin-auth-backend-module-atlassian-provider@workspace:plugins/auth-backend-module-atlassian-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-atlassian-provider@workspace:plugins/auth-backend-module-atlassian-provider" dependencies: @@ -4920,7 +4920,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-auth0-provider@workspace:^, @backstage/plugin-auth-backend-module-auth0-provider@workspace:plugins/auth-backend-module-auth0-provider": +"@backstage/plugin-auth-backend-module-auth0-provider@workspace:plugins/auth-backend-module-auth0-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-auth0-provider@workspace:plugins/auth-backend-module-auth0-provider" dependencies: @@ -4940,7 +4940,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-aws-alb-provider@workspace:^, @backstage/plugin-auth-backend-module-aws-alb-provider@workspace:plugins/auth-backend-module-aws-alb-provider": +"@backstage/plugin-auth-backend-module-aws-alb-provider@workspace:plugins/auth-backend-module-aws-alb-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@workspace:plugins/auth-backend-module-aws-alb-provider" dependencies: @@ -4959,7 +4959,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-azure-easyauth-provider@workspace:^, @backstage/plugin-auth-backend-module-azure-easyauth-provider@workspace:plugins/auth-backend-module-azure-easyauth-provider": +"@backstage/plugin-auth-backend-module-azure-easyauth-provider@workspace:plugins/auth-backend-module-azure-easyauth-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-azure-easyauth-provider@workspace:plugins/auth-backend-module-azure-easyauth-provider" dependencies: @@ -4977,7 +4977,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-bitbucket-provider@workspace:^, @backstage/plugin-auth-backend-module-bitbucket-provider@workspace:plugins/auth-backend-module-bitbucket-provider": +"@backstage/plugin-auth-backend-module-bitbucket-provider@workspace:plugins/auth-backend-module-bitbucket-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-bitbucket-provider@workspace:plugins/auth-backend-module-bitbucket-provider" dependencies: @@ -4995,7 +4995,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-bitbucket-server-provider@workspace:^, @backstage/plugin-auth-backend-module-bitbucket-server-provider@workspace:plugins/auth-backend-module-bitbucket-server-provider": +"@backstage/plugin-auth-backend-module-bitbucket-server-provider@workspace:plugins/auth-backend-module-bitbucket-server-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-bitbucket-server-provider@workspace:plugins/auth-backend-module-bitbucket-server-provider" dependencies: @@ -5013,7 +5013,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-cloudflare-access-provider@workspace:^, @backstage/plugin-auth-backend-module-cloudflare-access-provider@workspace:plugins/auth-backend-module-cloudflare-access-provider": +"@backstage/plugin-auth-backend-module-cloudflare-access-provider@workspace:plugins/auth-backend-module-cloudflare-access-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-cloudflare-access-provider@workspace:plugins/auth-backend-module-cloudflare-access-provider" dependencies: @@ -5034,7 +5034,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:^, @backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:plugins/auth-backend-module-gcp-iap-provider": +"@backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:plugins/auth-backend-module-gcp-iap-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:plugins/auth-backend-module-gcp-iap-provider" dependencies: @@ -5060,12 +5060,13 @@ __metadata: "@backstage/plugin-auth-backend": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/types": "workspace:^" + "@types/passport-github2": "npm:^1.2.4" passport-github2: "npm:^0.1.12" supertest: "npm:^7.0.0" languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-gitlab-provider@workspace:^, @backstage/plugin-auth-backend-module-gitlab-provider@workspace:plugins/auth-backend-module-gitlab-provider": +"@backstage/plugin-auth-backend-module-gitlab-provider@workspace:plugins/auth-backend-module-gitlab-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-gitlab-provider@workspace:plugins/auth-backend-module-gitlab-provider" dependencies: @@ -5116,7 +5117,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-microsoft-provider@workspace:^, @backstage/plugin-auth-backend-module-microsoft-provider@workspace:plugins/auth-backend-module-microsoft-provider": +"@backstage/plugin-auth-backend-module-microsoft-provider@workspace:plugins/auth-backend-module-microsoft-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-microsoft-provider@workspace:plugins/auth-backend-module-microsoft-provider" dependencies: @@ -5137,7 +5138,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-oauth2-provider@workspace:^, @backstage/plugin-auth-backend-module-oauth2-provider@workspace:plugins/auth-backend-module-oauth2-provider": +"@backstage/plugin-auth-backend-module-oauth2-provider@workspace:plugins/auth-backend-module-oauth2-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-oauth2-provider@workspace:plugins/auth-backend-module-oauth2-provider" dependencies: @@ -5154,7 +5155,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@workspace:^, @backstage/plugin-auth-backend-module-oauth2-proxy-provider@workspace:plugins/auth-backend-module-oauth2-proxy-provider": +"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@workspace:plugins/auth-backend-module-oauth2-proxy-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-oauth2-proxy-provider@workspace:plugins/auth-backend-module-oauth2-proxy-provider" dependencies: @@ -5167,7 +5168,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-oidc-provider@workspace:^, @backstage/plugin-auth-backend-module-oidc-provider@workspace:plugins/auth-backend-module-oidc-provider": +"@backstage/plugin-auth-backend-module-oidc-provider@workspace:plugins/auth-backend-module-oidc-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-oidc-provider@workspace:plugins/auth-backend-module-oidc-provider" dependencies: @@ -5191,7 +5192,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-okta-provider@workspace:^, @backstage/plugin-auth-backend-module-okta-provider@workspace:plugins/auth-backend-module-okta-provider": +"@backstage/plugin-auth-backend-module-okta-provider@workspace:plugins/auth-backend-module-okta-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-okta-provider@workspace:plugins/auth-backend-module-okta-provider" dependencies: @@ -5209,7 +5210,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend-module-onelogin-provider@workspace:^, @backstage/plugin-auth-backend-module-onelogin-provider@workspace:plugins/auth-backend-module-onelogin-provider": +"@backstage/plugin-auth-backend-module-onelogin-provider@workspace:plugins/auth-backend-module-onelogin-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-onelogin-provider@workspace:plugins/auth-backend-module-onelogin-provider" dependencies: @@ -5277,78 +5278,35 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend@workspace:plugins/auth-backend" dependencies: - "@backstage/backend-common": "npm:^0.25.0" "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" - "@backstage/catalog-client": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@backstage/plugin-auth-backend-module-atlassian-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-auth0-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-bitbucket-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-github-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^" "@backstage/plugin-auth-backend-module-google-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-microsoft-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-oauth2-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-oidc-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-okta-provider": "workspace:^" - "@backstage/plugin-auth-backend-module-onelogin-provider": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-node": "workspace:^" "@backstage/types": "workspace:^" "@google-cloud/firestore": "npm:^7.0.0" - "@node-saml/passport-saml": "npm:^5.0.0" - "@types/body-parser": "npm:^1.19.0" "@types/cookie-parser": "npm:^1.4.2" "@types/express": "npm:^4.17.6" "@types/express-session": "npm:^1.17.2" "@types/passport": "npm:^1.0.3" - "@types/passport-auth0": "npm:^1.0.5" - "@types/passport-github2": "npm:^1.2.4" - "@types/passport-google-oauth20": "npm:^2.0.3" - "@types/passport-microsoft": "npm:^1.0.0" - "@types/passport-saml": "npm:^1.1.3" - "@types/passport-strategy": "npm:^0.2.35" - "@types/xml2js": "npm:^0.4.7" - compression: "npm:^1.7.4" connect-session-knex: "npm:^4.0.0" cookie-parser: "npm:^1.4.5" - cors: "npm:^2.8.5" express: "npm:^4.17.1" express-promise-router: "npm:^4.1.0" express-session: "npm:^1.17.1" - fs-extra: "npm:^11.2.0" - google-auth-library: "npm:^9.0.0" jose: "npm:^5.0.0" knex: "npm:^3.0.0" lodash: "npm:^4.17.21" luxon: "npm:^3.0.0" minimatch: "npm:^9.0.0" - morgan: "npm:^1.10.0" - msw: "npm:^1.0.0" - node-cache: "npm:^5.1.2" - openid-client: "npm:^5.2.1" passport: "npm:^0.7.0" - passport-auth0: "npm:^1.4.3" - passport-github2: "npm:^0.1.12" - passport-google-oauth20: "npm:^2.0.0" - passport-microsoft: "npm:^1.0.0" - passport-oauth2: "npm:^1.6.1" - passport-onelogin-oauth: "npm:^0.0.1" supertest: "npm:^7.0.0" uuid: "npm:^11.0.0" - winston: "npm:^3.2.1" - yn: "npm:^4.0.0" languageName: unknown linkType: soft @@ -5826,7 +5784,6 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-unprocessed@workspace:plugins/catalog-backend-module-unprocessed" dependencies: - "@backstage/backend-common": "npm:^0.25.0" "@backstage/backend-plugin-api": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" @@ -7023,7 +6980,6 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-permission-backend@workspace:plugins/permission-backend" dependencies: - "@backstage/backend-common": "npm:^0.25.0" "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" @@ -7222,7 +7178,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown@workspace:^, @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@workspace:plugins/scaffolder-backend-module-confluence-to-markdown": +"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown@workspace:plugins/scaffolder-backend-module-confluence-to-markdown": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown@workspace:plugins/scaffolder-backend-module-confluence-to-markdown" dependencies: @@ -7378,7 +7334,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-scaffolder-backend-module-rails@workspace:^, @backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails": +"@backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails" dependencies: @@ -7738,7 +7694,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-backend-module-elasticsearch@workspace:^, @backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch": +"@backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch" dependencies: @@ -7775,7 +7731,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-backend-module-pg@workspace:^, @backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg": +"@backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg" dependencies: @@ -8608,7 +8564,7 @@ __metadata: languageName: node linkType: hard -"@base-ui-components/react@npm:^1.0.0-alpha.5": +"@base-ui-components/react@npm:^1.0.0-alpha.7": version: 1.0.0-alpha.7 resolution: "@base-ui-components/react@npm:1.0.0-alpha.7" dependencies: @@ -9817,20 +9773,6 @@ __metadata: languageName: node linkType: hard -"@gitbeaker/core@npm:^35.8.1": - version: 35.8.1 - resolution: "@gitbeaker/core@npm:35.8.1" - dependencies: - "@gitbeaker/requester-utils": "npm:^35.8.1" - form-data: "npm:^4.0.0" - li: "npm:^1.3.0" - mime: "npm:^3.0.0" - query-string: "npm:^7.0.0" - xcase: "npm:^2.0.1" - checksum: 10/5e3eda56f74678ceaec6d494318a0fa9b20d587f307e4d269206cf3ffb6363c8361effd43ef465f7b19f467d7a2caea0e95705a5af88c0bede06bfd897a463f0 - languageName: node - linkType: hard - "@gitbeaker/core@npm:^40.6.0": version: 40.6.0 resolution: "@gitbeaker/core@npm:40.6.0" @@ -9853,30 +9795,6 @@ __metadata: languageName: node linkType: hard -"@gitbeaker/node@npm:^35.1.0": - version: 35.8.1 - resolution: "@gitbeaker/node@npm:35.8.1" - dependencies: - "@gitbeaker/core": "npm:^35.8.1" - "@gitbeaker/requester-utils": "npm:^35.8.1" - delay: "npm:^5.0.0" - got: "npm:^11.8.3" - xcase: "npm:^2.0.1" - checksum: 10/1c0acb9e6b352656b3aee91dc4d5673958e8bf0adac152a7c679a21c620b06973ab8276419ee162ea1c127fcb38f60ff3d3cc9fcdcc7bf3bcb9e3b8aa6e3ab78 - languageName: node - linkType: hard - -"@gitbeaker/requester-utils@npm:^35.8.1": - version: 35.8.1 - resolution: "@gitbeaker/requester-utils@npm:35.8.1" - dependencies: - form-data: "npm:^4.0.0" - qs: "npm:^6.10.1" - xcase: "npm:^2.0.1" - checksum: 10/f939216443682303b80b72fa59158cf3fb4a95d31251bb0b4cffa83bd0e0ad0e949645aaaa08fe4dfcd7d06ea5a1547e5688c02b608e8bc76b1e12286935c265 - languageName: node - linkType: hard - "@gitbeaker/requester-utils@npm:^40.6.0": version: 40.6.0 resolution: "@gitbeaker/requester-utils@npm:40.6.0" @@ -12273,40 +12191,6 @@ __metadata: languageName: node linkType: hard -"@node-saml/node-saml@npm:^5.0.1": - version: 5.0.1 - resolution: "@node-saml/node-saml@npm:5.0.1" - dependencies: - "@types/debug": "npm:^4.1.12" - "@types/qs": "npm:^6.9.11" - "@types/xml-encryption": "npm:^1.2.4" - "@types/xml2js": "npm:^0.4.14" - "@xmldom/is-dom-node": "npm:^1.0.1" - "@xmldom/xmldom": "npm:^0.8.10" - debug: "npm:^4.3.4" - xml-crypto: "npm:^6.0.1" - xml-encryption: "npm:^3.0.2" - xml2js: "npm:^0.6.2" - xmlbuilder: "npm:^15.1.1" - xpath: "npm:^0.0.34" - checksum: 10/65b31123733582ddb159fe2139349c766a5327fe12a141fac637ec8b5636be061c644e53486f17d2ffd67ef62d5497c90f76b5a6692a30a94d4114eae6124165 - languageName: node - linkType: hard - -"@node-saml/passport-saml@npm:^5.0.0": - version: 5.0.1 - resolution: "@node-saml/passport-saml@npm:5.0.1" - dependencies: - "@node-saml/node-saml": "npm:^5.0.1" - "@types/express": "npm:^4.17.21" - "@types/passport": "npm:^1.0.16" - "@types/passport-strategy": "npm:^0.2.38" - passport: "npm:^0.7.0" - passport-strategy: "npm:^1.0.0" - checksum: 10/b921ceeff68326539591ec6ef805535e907b3a63182c8df3418d8b449b88b82fb0137117f087268a3ebc76ef294a37b3e1b4df675f1f1a57b95455b87366db8d - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -15717,7 +15601,7 @@ __metadata: languageName: node linkType: hard -"@remixicon/react@npm:^4.5.0": +"@remixicon/react@npm:^4.6.0": version: 4.6.0 resolution: "@remixicon/react@npm:4.6.0" peerDependencies: @@ -16010,82 +15894,82 @@ __metadata: languageName: node linkType: hard -"@rspack/binding-darwin-arm64@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-darwin-arm64@npm:1.3.4" +"@rspack/binding-darwin-arm64@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-darwin-arm64@npm:1.3.5" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-darwin-x64@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-darwin-x64@npm:1.3.4" +"@rspack/binding-darwin-x64@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-darwin-x64@npm:1.3.5" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rspack/binding-linux-arm64-gnu@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-linux-arm64-gnu@npm:1.3.4" +"@rspack/binding-linux-arm64-gnu@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-linux-arm64-gnu@npm:1.3.5" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-arm64-musl@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-linux-arm64-musl@npm:1.3.4" +"@rspack/binding-linux-arm64-musl@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-linux-arm64-musl@npm:1.3.5" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rspack/binding-linux-x64-gnu@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-linux-x64-gnu@npm:1.3.4" +"@rspack/binding-linux-x64-gnu@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-linux-x64-gnu@npm:1.3.5" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rspack/binding-linux-x64-musl@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-linux-x64-musl@npm:1.3.4" +"@rspack/binding-linux-x64-musl@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-linux-x64-musl@npm:1.3.5" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rspack/binding-win32-arm64-msvc@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-win32-arm64-msvc@npm:1.3.4" +"@rspack/binding-win32-arm64-msvc@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-win32-arm64-msvc@npm:1.3.5" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rspack/binding-win32-ia32-msvc@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-win32-ia32-msvc@npm:1.3.4" +"@rspack/binding-win32-ia32-msvc@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-win32-ia32-msvc@npm:1.3.5" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rspack/binding-win32-x64-msvc@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding-win32-x64-msvc@npm:1.3.4" +"@rspack/binding-win32-x64-msvc@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding-win32-x64-msvc@npm:1.3.5" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rspack/binding@npm:1.3.4": - version: 1.3.4 - resolution: "@rspack/binding@npm:1.3.4" +"@rspack/binding@npm:1.3.5": + version: 1.3.5 + resolution: "@rspack/binding@npm:1.3.5" dependencies: - "@rspack/binding-darwin-arm64": "npm:1.3.4" - "@rspack/binding-darwin-x64": "npm:1.3.4" - "@rspack/binding-linux-arm64-gnu": "npm:1.3.4" - "@rspack/binding-linux-arm64-musl": "npm:1.3.4" - "@rspack/binding-linux-x64-gnu": "npm:1.3.4" - "@rspack/binding-linux-x64-musl": "npm:1.3.4" - "@rspack/binding-win32-arm64-msvc": "npm:1.3.4" - "@rspack/binding-win32-ia32-msvc": "npm:1.3.4" - "@rspack/binding-win32-x64-msvc": "npm:1.3.4" + "@rspack/binding-darwin-arm64": "npm:1.3.5" + "@rspack/binding-darwin-x64": "npm:1.3.5" + "@rspack/binding-linux-arm64-gnu": "npm:1.3.5" + "@rspack/binding-linux-arm64-musl": "npm:1.3.5" + "@rspack/binding-linux-x64-gnu": "npm:1.3.5" + "@rspack/binding-linux-x64-musl": "npm:1.3.5" + "@rspack/binding-win32-arm64-msvc": "npm:1.3.5" + "@rspack/binding-win32-ia32-msvc": "npm:1.3.5" + "@rspack/binding-win32-x64-msvc": "npm:1.3.5" dependenciesMeta: "@rspack/binding-darwin-arm64": optional: true @@ -16105,16 +15989,16 @@ __metadata: optional: true "@rspack/binding-win32-x64-msvc": optional: true - checksum: 10/deceedf77d63a568c06ec3c4021a2c113013f7cab97662c1bc276938361262432df3e506735c9a88392e2e4faf1eecdb188a24aa6d1171de53b30d6efa280de4 + checksum: 10/b942a4994326423f305dfed09284387d6d293392025e7afd695a571c54eaac9baeadbe020748df9446505b32d0c572de93a15420a723ca5974e47ac4fbb2f124 languageName: node linkType: hard "@rspack/core@npm:^1.0.10": - version: 1.3.4 - resolution: "@rspack/core@npm:1.3.4" + version: 1.3.5 + resolution: "@rspack/core@npm:1.3.5" dependencies: "@module-federation/runtime-tools": "npm:0.11.2" - "@rspack/binding": "npm:1.3.4" + "@rspack/binding": "npm:1.3.5" "@rspack/lite-tapable": "npm:1.0.1" caniuse-lite: "npm:^1.0.30001707" peerDependencies: @@ -16125,7 +16009,7 @@ __metadata: optional: true "@swc/helpers": optional: true - checksum: 10/8f6f2b5e5c94026dd6d80b30844d9156cc9f1b0672251e65c30e00482a4e2d94fbc331cc5ca880a50157268eb869c53149ad5e042fd1d1d5a7bac5ae4b6e4cc2 + checksum: 10/6019c88db1aa0e53f80a36c24c20c73ebe0604bc90055f0e1bf2b3d57cd0c3f0f830395673f18783961cd33fff2a55489ac8196dbeb216b867e9a346e56b97a8 languageName: node linkType: hard @@ -17548,9 +17432,9 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-actions@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-actions@npm:8.6.8" +"@storybook/addon-actions@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-actions@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" "@types/uuid": "npm:^9.0.1" @@ -17558,121 +17442,121 @@ __metadata: polished: "npm:^4.2.2" uuid: "npm:^9.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/fa806bc84e07fbf78151cb4ecef1ed6d826dee7bc5c0858dceefae36653276f7b3e33cb070d31d1252f5d9b40332fc9eb903f7ca1f84108820c0415daf2f4f4e + storybook: ^8.6.12 + checksum: 10/c5eaaf5274bfe382877720ba9c379c0d7f6ec6173addb8bb94e80ba7318363359c677b57f25ca7582dd0007b4564683d627c51f69466e7a54faffdccae19f31f languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-backgrounds@npm:8.6.8" +"@storybook/addon-backgrounds@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-backgrounds@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" memoizerific: "npm:^1.11.3" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/e646305a175f851ee4b37ec59bace1960ab24a6c82e43ab937c464230a09dc8170eebb190bbcff12d577bc28439e050356c7453aeeab6551315d58e78706676d + storybook: ^8.6.12 + checksum: 10/cb4793843140f6b454cb11bf9ef65f9d68ac001544538744b2a0564c30d6b82a144f788ede3d8e86ab23951e4b1fa157e4b78b74f8ab1cc461c8e696532eb8a6 languageName: node linkType: hard -"@storybook/addon-controls@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-controls@npm:8.6.8" +"@storybook/addon-controls@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-controls@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" dequal: "npm:^2.0.2" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/58e735bedafe2a68231fbda5d061b68960d37859277e95d93a8eb7261bec8664828ea027e157f482e1e316658360f56b0391257669fffa25da2a6e27ca3f7aec + storybook: ^8.6.12 + checksum: 10/2de79406c572f8706a7a31871f7c7bc6498cde48bcbcbc00984277e6861defcad9ba895d90a66ed0ffc526bcf3b950561ff6d51837192625fb7cb5a9bb763ce4 languageName: node linkType: hard -"@storybook/addon-docs@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-docs@npm:8.6.8" +"@storybook/addon-docs@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-docs@npm:8.6.12" dependencies: "@mdx-js/react": "npm:^3.0.0" - "@storybook/blocks": "npm:8.6.8" - "@storybook/csf-plugin": "npm:8.6.8" - "@storybook/react-dom-shim": "npm:8.6.8" + "@storybook/blocks": "npm:8.6.12" + "@storybook/csf-plugin": "npm:8.6.12" + "@storybook/react-dom-shim": "npm:8.6.12" react: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" react-dom: "npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/7f459e6fda203c9561d1fc59302614d121abf165069c94548ed7e390f7d5b0fcd0791c98e92a60b43e61abd8f0ad21eb61e6e9a9550e7179dd92b5bdd5fa1427 + storybook: ^8.6.12 + checksum: 10/df52e5c77a3e2b380864fdc5a6fcd0726e309f8c0556b9981cfe0899ea778531f286663be4f7988cd41ae0a813cb2de57f9fd09281ee0fadd8977354125b7f17 languageName: node linkType: hard -"@storybook/addon-essentials@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-essentials@npm:8.6.8" +"@storybook/addon-essentials@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-essentials@npm:8.6.12" dependencies: - "@storybook/addon-actions": "npm:8.6.8" - "@storybook/addon-backgrounds": "npm:8.6.8" - "@storybook/addon-controls": "npm:8.6.8" - "@storybook/addon-docs": "npm:8.6.8" - "@storybook/addon-highlight": "npm:8.6.8" - "@storybook/addon-measure": "npm:8.6.8" - "@storybook/addon-outline": "npm:8.6.8" - "@storybook/addon-toolbars": "npm:8.6.8" - "@storybook/addon-viewport": "npm:8.6.8" + "@storybook/addon-actions": "npm:8.6.12" + "@storybook/addon-backgrounds": "npm:8.6.12" + "@storybook/addon-controls": "npm:8.6.12" + "@storybook/addon-docs": "npm:8.6.12" + "@storybook/addon-highlight": "npm:8.6.12" + "@storybook/addon-measure": "npm:8.6.12" + "@storybook/addon-outline": "npm:8.6.12" + "@storybook/addon-toolbars": "npm:8.6.12" + "@storybook/addon-viewport": "npm:8.6.12" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/4d4fc7b4ce03910392caf19aa7b79136ccec30d4b4b18b72175bbbb95406d0c15e84231e634ccc96262ce5934242d4bf34a3afcaf8aa4500948751f310c1cbd1 + storybook: ^8.6.12 + checksum: 10/88cc2f1687186a5b4b0d509f65610d0ae89318740d4186020bb8879d5837ecdb5be75fed6cecf161614180eb91c75e4411f9c902f25c5452230121ecce00eae1 languageName: node linkType: hard -"@storybook/addon-highlight@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-highlight@npm:8.6.8" +"@storybook/addon-highlight@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-highlight@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/83b938b2de91c256d85d631a32aab78253f0211338296e1b75c249fbf2dc43ab71bc851e8f8d905c2f5366477f5ea8ecc0ff34d38fdb96f70f5aebb45ca044b9 + storybook: ^8.6.12 + checksum: 10/04bdb057ed40e36af2b4a73a6220aa8c95f5322bb00c62f293118b174885476c8fb23019cfba53b9ffcfc28ff77ecbf38164c3a0fc6a717507f91d80e9b83655 languageName: node linkType: hard -"@storybook/addon-interactions@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-interactions@npm:8.6.8" +"@storybook/addon-interactions@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-interactions@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.6.8" - "@storybook/test": "npm:8.6.8" + "@storybook/instrumenter": "npm:8.6.12" + "@storybook/test": "npm:8.6.12" polished: "npm:^4.2.2" ts-dedent: "npm:^2.2.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/88e27b114ad1474694be1ca5e05cde2f98a035e11857c8c89083bfd5d1d9ddfd5e26caed8de983001cba3cdfb079f3356b6e7f925d3d332147b933e1dba6c791 + storybook: ^8.6.12 + checksum: 10/eb467f2976d670cf3e35d30d665366e1860e750c6d57c9418781418a1138c8ed3124f534f8fab0b358998957daca27d0c924e9dc61500646b2ff0ed04c7855b4 languageName: node linkType: hard -"@storybook/addon-measure@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-measure@npm:8.6.8" +"@storybook/addon-measure@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-measure@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" tiny-invariant: "npm:^1.3.1" peerDependencies: - storybook: ^8.6.8 - checksum: 10/19b4227035737a1a9c0ab0e9d97c2a5ceca6048dc7f37b14c52d417fd1e13a1110e3c9cac2562b1bb836cfac2339dd14e22826baa433f0288bacbfb5406a0448 + storybook: ^8.6.12 + checksum: 10/ea4eced8d28d4cf9a7a5d3184d78030efcc31dd2ecab9096e2b17e5e690a711067fc3488677e2dde33405406c7d659aef542cb9a6dd6310971481c9119b24b1a languageName: node linkType: hard -"@storybook/addon-outline@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-outline@npm:8.6.8" +"@storybook/addon-outline@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-outline@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/6f45bdd5f833a147767795a1561b7bde8309016e4eba27db09698fba89ae83f2e405ec71b55935131fe4be600fb3d8b283274e2cb109aff9d54dba2406e11ac4 + storybook: ^8.6.12 + checksum: 10/57fcde63feae3c0b755afa8036ab832d8f414acaffa7c6e7ee0039caf8b5074e53182e8c61802071f5d858e9c64d4e02ed5680a5a28c34f824f118f65a0c7607 languageName: node linkType: hard @@ -17687,34 +17571,34 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-themes@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-themes@npm:8.6.8" +"@storybook/addon-themes@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-themes@npm:8.6.12" dependencies: ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/9fdddaf503f2091c0c69a13a42f335bcce30e742f89f56f549c26464e33b70983a4828ea71182d91356b371d4e761f7ab0c613c7ae27e1c0bd1b51e95ec8a7a4 + storybook: ^8.6.12 + checksum: 10/2df945accd7c0546785f71e2adc4ed68d71a057bc54aaef53f16ce8fcbc5a494380d60f9dd58520fe7d93b021a1b09e3d73553766d4bf2a1d07a3d731132b939 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-toolbars@npm:8.6.8" +"@storybook/addon-toolbars@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-toolbars@npm:8.6.12" peerDependencies: - storybook: ^8.6.8 - checksum: 10/31e4dca67308e122b9c4a8ceab6fedbe69f5d3f3a36dc05a1b7b334cbcbf3d539dc847da8417934c2f227296f60561dad054fb8fc47f5253210a34becfdc4b59 + storybook: ^8.6.12 + checksum: 10/f94c3bcc8886ead315eb919cee18fb2143134ca9e59058e1d7a35c0e348e0bdcf51971b2a51ebd7a7250ec0e5873519dea72e699f83d771288b6bde873720e1f languageName: node linkType: hard -"@storybook/addon-viewport@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/addon-viewport@npm:8.6.8" +"@storybook/addon-viewport@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/addon-viewport@npm:8.6.12" dependencies: memoizerific: "npm:^1.11.3" peerDependencies: - storybook: ^8.6.8 - checksum: 10/1857f78c57f152c7945b73c88c0e79f3fa51a3960f41f16c213b8841d3e24bc3a8accd44a0261f3e5cb5c49f847c1222d83400e2cd8355468c3289958c32c0c7 + storybook: ^8.6.12 + checksum: 10/b7b9fe1bc9d51b33b67ba35f5a219910db88c99323baad6e7e5ee9ec6ddd5b5f2f4124ff99729571c4306f35fcb36ee388bece437c648e9f2ce94cbfb44c4800 languageName: node linkType: hard @@ -17728,30 +17612,30 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@npm:8.6.8, @storybook/blocks@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/blocks@npm:8.6.8" +"@storybook/blocks@npm:8.6.12, @storybook/blocks@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/blocks@npm:8.6.12" dependencies: "@storybook/icons": "npm:^1.2.12" ts-dedent: "npm:^2.0.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^8.6.8 + storybook: ^8.6.12 peerDependenciesMeta: react: optional: true react-dom: optional: true - checksum: 10/e8f919029b7ccee81b555174a648205e72ff5657e2752866c25263f106f61408a1414bbe21c8872e93620c38fd0a1a3c8956a496b77e7aee5d8d13818e646207 + checksum: 10/636172d0512f85913f1bed23eafcb3d827e4c924f65377c0c5d60ccce0241056caf9ab1fa3eb718cae9c02fb063f446294e32d1d5163377774d9225d97f210a0 languageName: node linkType: hard -"@storybook/builder-webpack5@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/builder-webpack5@npm:8.6.8" +"@storybook/builder-webpack5@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/builder-webpack5@npm:8.6.12" dependencies: - "@storybook/core-webpack": "npm:8.6.8" + "@storybook/core-webpack": "npm:8.6.12" "@types/semver": "npm:^7.3.4" browser-assert: "npm:^1.2.1" case-sensitive-paths-webpack-plugin: "npm:^2.4.0" @@ -17776,39 +17660,39 @@ __metadata: webpack-hot-middleware: "npm:^2.25.1" webpack-virtual-modules: "npm:^0.6.0" peerDependencies: - storybook: ^8.6.8 + storybook: ^8.6.12 peerDependenciesMeta: typescript: optional: true - checksum: 10/e802bf8287cdbaa29a56fbbbf4292799b21535b3bf18ebb864b7fb1ec2a2ef546977f70d212ef1e70949527b72c3d37952e158310242f0ff2ea3ffa36cffc671 + checksum: 10/787c602308775e69e71925ec79de02b88d092a02e0c76584543dda1ebe3b769c07d7ccd3df1976f64d3562b9049cb92ed3f375bc1e9563505a0064c0c0bf3ea0 languageName: node linkType: hard -"@storybook/components@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/components@npm:8.6.8" +"@storybook/components@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/components@npm:8.6.12" peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/fb69c6d7804f91fffd3fc7d42ba5b144c7b808af6e6b764c14cdef11263897e551e5cc8a0fa379b9ed73f5c0438ed32d355c7ed63801046e1cb078c479d4cecf + checksum: 10/ccc6af275bdfbc66de8afb272f59b2b4b6b76bb2961903335cb62e7defae4a2368bd8f5a2008f8598dd8417e5368d824bce836ca96c3c6ff659dbf2f081ec0dd languageName: node linkType: hard -"@storybook/core-webpack@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/core-webpack@npm:8.6.8" +"@storybook/core-webpack@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/core-webpack@npm:8.6.12" dependencies: ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^8.6.8 - checksum: 10/b691bcfd7c9681a90f1e51272f1bf9df1b84a1ebe0e7db11dd4bb12d271b92cfb72751560ee76fdf91ffcc2ba5f0c95c3dfaebcc4be4a3f8036e66a155ffa998 + storybook: ^8.6.12 + checksum: 10/2c4d7b51480b16499d13fd5611d4c98345b0251061cfd457ff5ea185ddaa29746b9936c79b1a9b0b39a3b2e527b7c62d1da2cf32cbc5c7a5e42ae50776175ca3 languageName: node linkType: hard -"@storybook/core@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/core@npm:8.6.8" +"@storybook/core@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/core@npm:8.6.12" dependencies: - "@storybook/theming": "npm:8.6.8" + "@storybook/theming": "npm:8.6.12" better-opn: "npm:^3.0.2" browser-assert: "npm:^1.2.1" esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0" @@ -17824,18 +17708,18 @@ __metadata: peerDependenciesMeta: prettier: optional: true - checksum: 10/0ca71e2d553acca34a3e6164726f1973a7bfc67a03a179066f92035c93adba356cb69e4368fb5b2cdbe5835d7a08b73e61fb77dabc390a38e38cd7d56ff9f521 + checksum: 10/78776f51b9eae00f9387421b33b646b1dc67ef833fd6272de03399daa7f0ffa248c65b5f24d5d2a9af923a029d06d84d5425e3455302ece542bf47c7a9ec0df6 languageName: node linkType: hard -"@storybook/csf-plugin@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/csf-plugin@npm:8.6.8" +"@storybook/csf-plugin@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/csf-plugin@npm:8.6.12" dependencies: unplugin: "npm:^1.3.1" peerDependencies: - storybook: ^8.6.8 - checksum: 10/17dece5267ae2bfb735ccb26485722bb16dbb2c53aea18c94aa6f532a5b848b2a2558678b6ccad3dbfabbf596aa45d543aea3a1967afa1e97c244f8603d86ec9 + storybook: ^8.6.12 + checksum: 10/05dc3d5eb567c396f4773faed8283255526e60d7ed05452acd399edfb0d23beba886d9042cb705f76f8055108821eeae8dd2124635b5b47412f279b515affcc3 languageName: node linkType: hard @@ -17865,24 +17749,24 @@ __metadata: languageName: node linkType: hard -"@storybook/instrumenter@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/instrumenter@npm:8.6.8" +"@storybook/instrumenter@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/instrumenter@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" "@vitest/utils": "npm:^2.1.1" peerDependencies: - storybook: ^8.6.8 - checksum: 10/d56650b5f43ac303ebafb04aba42ccd1827f926a39d96fd22e28e77e6358e86f0bd6ec4d1128323772df049ae1ab08611d3e4143c9a14deb1f882b0024b41347 + storybook: ^8.6.12 + checksum: 10/11f608406a2d83a500a9270fda57bbec4aa1f97a3d95a4b52f44dce4efbfd6d198b33a0077cee2b48251af191722d2fdbfd1fe89255ded27656372214e37cb7c languageName: node linkType: hard -"@storybook/manager-api@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/manager-api@npm:8.6.8" +"@storybook/manager-api@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/manager-api@npm:8.6.12" peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/ee575781572898fc2fa734750ccb4bad09fc021bd0878ca9a05d9668cb336610d53e8110f4ff3c2c180573a64e9caba8f50f59d0bd3f0398a5c98e2eafdd91ae + checksum: 10/d1c44c6649a024c4007461c12a15337f5d13532dbaccc4c02f71bd99599fb973e2574eb8f1bc2d93e05da24e4ae43fa47ec637a7c4cccf5ffc67045cafbf087c languageName: node linkType: hard @@ -17895,12 +17779,12 @@ __metadata: languageName: node linkType: hard -"@storybook/preset-react-webpack@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/preset-react-webpack@npm:8.6.8" +"@storybook/preset-react-webpack@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/preset-react-webpack@npm:8.6.12" dependencies: - "@storybook/core-webpack": "npm:8.6.8" - "@storybook/react": "npm:8.6.8" + "@storybook/core-webpack": "npm:8.6.12" + "@storybook/react": "npm:8.6.12" "@storybook/react-docgen-typescript-plugin": "npm:1.0.6--canary.9.0c3f3b7.0" "@types/semver": "npm:^7.3.4" find-up: "npm:^5.0.0" @@ -17913,20 +17797,20 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.8 + storybook: ^8.6.12 peerDependenciesMeta: typescript: optional: true - checksum: 10/02904f5fa99c07791a731f751b7d73c898a0c72516940707e1f49dc8caaf185beafa7d354a7a61d63512e27c02927b2fa15ed64ff58decaa43d74b6fa3a35770 + checksum: 10/7f6ae4fe8584cc46c9d1d4959f69983e5fef08814e24a801f377c04c781cc86a3ee5785e2ef2e4e66ffd82a4b0324f604704af3531362bd0760ba944871c1551 languageName: node linkType: hard -"@storybook/preview-api@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/preview-api@npm:8.6.8" +"@storybook/preview-api@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/preview-api@npm:8.6.12" peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/ac923a342d09c9e51f67734acaea19a41dc87cfc6cb22aea262591396d41cd4b69896417b618c55f17a9d64660b659813475c30d338c9bb6aa45391cfe8328f0 + checksum: 10/d24f11e4e54e9e51297b0f87e1d462b3f14a974b4681f31d93b62b0706ce5b5ed4ffaaac521ec049dcb0e08e7aa7590f2e039aee4bbe9f85033d69474d982f23 languageName: node linkType: hard @@ -17948,84 +17832,84 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/react-dom-shim@npm:8.6.8" +"@storybook/react-dom-shim@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/react-dom-shim@npm:8.6.12" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.8 - checksum: 10/d49bc7f96349460c13c61538116c634174418dd174e80336457ee90f9e054efa6030ec8def9cab870a85657eb8050ee8c5599e0643736642608488b43de54b1f + storybook: ^8.6.12 + checksum: 10/7677b4fae978209af239471f9eb609db4318815bd4249a0f48b9875482d9ae910b93fbe4db5d7f794ecc2a1249edf40da26af9de673c941c48fccc4007819c96 languageName: node linkType: hard -"@storybook/react-webpack5@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/react-webpack5@npm:8.6.8" +"@storybook/react-webpack5@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/react-webpack5@npm:8.6.12" dependencies: - "@storybook/builder-webpack5": "npm:8.6.8" - "@storybook/preset-react-webpack": "npm:8.6.8" - "@storybook/react": "npm:8.6.8" + "@storybook/builder-webpack5": "npm:8.6.12" + "@storybook/preset-react-webpack": "npm:8.6.12" + "@storybook/react": "npm:8.6.12" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.8 + storybook: ^8.6.12 typescript: ">= 4.2.x" peerDependenciesMeta: typescript: optional: true - checksum: 10/f620c05f173317f8a1e1e164d1f339c99e736a003a5eb6e2043785d67529a84e74d117fcf2f4cc55adcd5813e32b8ee7fedced9cea023da6ddd7aacd2a0142bd + checksum: 10/c4ce4baa00837c9f90cb740f916c778418a6bcf9b338db33a9c6b154d4de7ce041bf142beed5eade77998eb77992a5928a870f6a184f01b20ee6f7e796ada547 languageName: node linkType: hard -"@storybook/react@npm:8.6.8, @storybook/react@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/react@npm:8.6.8" +"@storybook/react@npm:8.6.12, @storybook/react@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/react@npm:8.6.12" dependencies: - "@storybook/components": "npm:8.6.8" + "@storybook/components": "npm:8.6.12" "@storybook/global": "npm:^5.0.0" - "@storybook/manager-api": "npm:8.6.8" - "@storybook/preview-api": "npm:8.6.8" - "@storybook/react-dom-shim": "npm:8.6.8" - "@storybook/theming": "npm:8.6.8" + "@storybook/manager-api": "npm:8.6.12" + "@storybook/preview-api": "npm:8.6.12" + "@storybook/react-dom-shim": "npm:8.6.12" + "@storybook/theming": "npm:8.6.12" peerDependencies: - "@storybook/test": 8.6.8 + "@storybook/test": 8.6.12 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.8 + storybook: ^8.6.12 typescript: ">= 4.2.x" peerDependenciesMeta: "@storybook/test": optional: true typescript: optional: true - checksum: 10/b2e664d6ccb91fd269b9168defb7d6c673a1e35119c61518bf72c8612884873eadcfadffd5b64171b26fbd1cc498828ddf52a9fb2fe34fdac9edb3f2d86a62e8 + checksum: 10/d8258c82743906f48a872a781f3e5a63e9ce3fda2ba3b911e959cf62ebda43989b23746257d97905addb7142ac7e53d0089dc178bcbeea48ed4d37d025dd047b languageName: node linkType: hard -"@storybook/test@npm:8.6.8, @storybook/test@npm:^8.6.8": - version: 8.6.8 - resolution: "@storybook/test@npm:8.6.8" +"@storybook/test@npm:8.6.12, @storybook/test@npm:^8.6.12": + version: 8.6.12 + resolution: "@storybook/test@npm:8.6.12" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/instrumenter": "npm:8.6.8" + "@storybook/instrumenter": "npm:8.6.12" "@testing-library/dom": "npm:10.4.0" "@testing-library/jest-dom": "npm:6.5.0" "@testing-library/user-event": "npm:14.5.2" "@vitest/expect": "npm:2.0.5" "@vitest/spy": "npm:2.0.5" peerDependencies: - storybook: ^8.6.8 - checksum: 10/afcb28c14067a7d9934d55557257d9ee458388964e4a41ca294254fc5bf982b5253f0a63a497f71b1dd2dcf368bb831f4fd0db13ecb9e6ce4437cd1f65548842 + storybook: ^8.6.12 + checksum: 10/495409d95a6c649c54afd7304d429f1d7ef29ef9ac40415550ce60115d3f4210a228d7ab927dcd3229f63954e5a282f407cb8bc5816c6cfc9a45fcbc8e30bae8 languageName: node linkType: hard -"@storybook/theming@npm:8.6.8": - version: 8.6.8 - resolution: "@storybook/theming@npm:8.6.8" +"@storybook/theming@npm:8.6.12": + version: 8.6.12 + resolution: "@storybook/theming@npm:8.6.12" peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/1be0dea23178af562133f1047165e170f7e90bec4c3cedbdcb59df22685f314273a06a4677835ab84e6dbc682b803590adad6963217971c8136b076ce69800aa + checksum: 10/c811d9dbb9eaaa680b922111fca126a2985f2238dfb01c1cd23184323eea12899dc9f079063ac42c5e63b0c83de326bd9cc17241e4060ff04e860c57a55fb8b9 languageName: node linkType: hard @@ -18921,7 +18805,7 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-table@npm:^8.21.2": +"@tanstack/react-table@npm:^8.21.3": version: 8.21.3 resolution: "@tanstack/react-table@npm:8.21.3" dependencies: @@ -19277,7 +19161,7 @@ __metadata: languageName: node linkType: hard -"@types/body-parser@npm:*, @types/body-parser@npm:^1.19.0": +"@types/body-parser@npm:*": version: 1.19.5 resolution: "@types/body-parser@npm:1.19.5" dependencies: @@ -19531,7 +19415,7 @@ __metadata: languageName: node linkType: hard -"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.12, @types/debug@npm:^4.1.7": +"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.7": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" dependencies: @@ -19660,7 +19544,7 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.17.5": +"@types/express-serve-static-core@npm:^4.17.21, @types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.17.5": version: 4.19.6 resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: @@ -20326,26 +20210,6 @@ __metadata: languageName: node linkType: hard -"@types/passport-saml@npm:^1.1.3": - version: 1.1.7 - resolution: "@types/passport-saml@npm:1.1.7" - dependencies: - "@types/express": "npm:*" - "@types/passport": "npm:*" - checksum: 10/cc112ac43d8a9ed586cfa04342afefef45ec96b7125a554534fb763986e3426b0316ee3d9e4705240c9c3df3b2b19914dba48ef6abccbd6946e9ae634f790332 - languageName: node - linkType: hard - -"@types/passport-strategy@npm:^0.2.35, @types/passport-strategy@npm:^0.2.38": - version: 0.2.38 - resolution: "@types/passport-strategy@npm:0.2.38" - dependencies: - "@types/express": "npm:*" - "@types/passport": "npm:*" - checksum: 10/b580e165182b137a6e57b6b7511904e6c875a5e372f08679ec54f456dc5c2a72d86f23d9373a52d8286b207fe8240946686f9e3d50b0bc1b4f7316f336a06fa2 - languageName: node - linkType: hard - "@types/passport@npm:*, @types/passport@npm:^1.0.16, @types/passport@npm:^1.0.3": version: 1.0.17 resolution: "@types/passport@npm:1.0.17" @@ -20437,7 +20301,7 @@ __metadata: languageName: node linkType: hard -"@types/qs@npm:*, @types/qs@npm:^6.9.11, @types/qs@npm:^6.9.6": +"@types/qs@npm:*, @types/qs@npm:^6.9.6": version: 6.9.18 resolution: "@types/qs@npm:6.9.18" checksum: 10/152fab96efd819cc82ae67c39f089df415da6deddb48f1680edaaaa4e86a2a597de7b2ff0ad391df66d11a07006a08d52c9405e86b8cb8f3d5ba15881fe56cc7 @@ -20461,11 +20325,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0": - version: 18.3.5 - resolution: "@types/react-dom@npm:18.3.5" + version: 18.3.6 + resolution: "@types/react-dom@npm:18.3.6" peerDependencies: "@types/react": ^18.0.0 - checksum: 10/02095b326f373867498e0eb2b5ebb60f9bd9535db0d757ea13504c4b7d75e16605cf1d43ce7a2e67893d177b51db4357cabb2842fb4257c49427d02da1a14e09 + checksum: 10/ae179355401c64423d39946eda22c5f7f74c94ce61c21505024d4d82c33853ec40bc9b370f75e4a7750b0524aba4d95a43fcc328d8d14684dc2abb41ba529de8 languageName: node linkType: hard @@ -20563,12 +20427,12 @@ __metadata: linkType: hard "@types/react@npm:^18.0.0": - version: 18.3.19 - resolution: "@types/react@npm:18.3.19" + version: 18.3.20 + resolution: "@types/react@npm:18.3.20" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/4b40a4adf7a59390541dc24059c09d95a777e8e8025fab13d660e1929a88e78efadde8ec94ebd357c5cc80b25590645e81c5b621661700f40496e7833b3d2983 + checksum: 10/020c51e63b60862e6d772f0cdea0b9441182eedab6289dabd8add0708ded62003834c4e7c6f23a1ccd3ca9486b46296057c3f881c34261a0483765351f8d0bc3 languageName: node linkType: hard @@ -21019,24 +20883,6 @@ __metadata: languageName: node linkType: hard -"@types/xml-encryption@npm:^1.2.4": - version: 1.2.4 - resolution: "@types/xml-encryption@npm:1.2.4" - dependencies: - "@types/node": "npm:*" - checksum: 10/1ef957dfb47cf55b12e114755e271a2343f73eb4c59ab6c68b0b7d1b8111d7e1bd8d2bfe0601d2aea09be83c66355bc77fc59f9b71aeff9bb9e15371bcfef5d3 - languageName: node - linkType: hard - -"@types/xml2js@npm:^0.4.14, @types/xml2js@npm:^0.4.7": - version: 0.4.14 - resolution: "@types/xml2js@npm:0.4.14" - dependencies: - "@types/node": "npm:*" - checksum: 10/d76338b8d6ce8540c7af6a32aacf96c38f6de48254568f58f6e5ac2af3f88e6bd1490e5346d3bb336990f91267d23c5cc09e8bf7e80840a63c7855dbf174ecbb - languageName: node - linkType: hard - "@types/yargs-parser@npm:*": version: 15.0.0 resolution: "@types/yargs-parser@npm:15.0.0" @@ -21883,14 +21729,7 @@ __metadata: languageName: node linkType: hard -"@xmldom/is-dom-node@npm:^1.0.1": - version: 1.0.1 - resolution: "@xmldom/is-dom-node@npm:1.0.1" - checksum: 10/45683a6a192e4eff0f5189d4e3ef5272fcf8e3458f598f99614810490a8163c9a7ebe4ecaf241286fb74fcd762610b46c062ad3c7fddaa6eafa9a9f1537e338a - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:^0.8.10, @xmldom/xmldom@npm:^0.8.3, @xmldom/xmldom@npm:^0.8.5": +"@xmldom/xmldom@npm:^0.8.3": version: 0.8.10 resolution: "@xmldom/xmldom@npm:0.8.10" checksum: 10/62400bc5e0e75b90650e33a5ceeb8d94829dd11f9b260962b71a784cd014ddccec3e603fe788af9c1e839fa4648d8c521ebd80d8b752878d3a40edabc9ce7ccf @@ -26870,13 +26709,6 @@ __metadata: languageName: node linkType: hard -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 10/17a0e5fa400bf9ea84432226e252aa7b5e72793e16bf80b907c99b46a799aeacc139ec20ea57121e50c7bd875a1a4365928f884e92abf02e21a5a13790a0f33e - languageName: node - linkType: hard - "decompress-response@npm:^3.3.0": version: 3.3.0 resolution: "decompress-response@npm:3.3.0" @@ -27050,13 +26882,6 @@ __metadata: languageName: node linkType: hard -"delay@npm:^5.0.0": - version: 5.0.0 - resolution: "delay@npm:5.0.0" - checksum: 10/62f151151ecfde0d9afbb8a6be37a6d103c4cb24f35a20ef3fe56f920b0d0d0bb02bc9c0a3084d0179ef669ca332b91155f2ee4d9854622cd2cdba5fc95285f9 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -28604,16 +28429,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-storybook@npm:^0.11.4": - version: 0.11.6 - resolution: "eslint-plugin-storybook@npm:0.11.6" +"eslint-plugin-storybook@npm:^0.12.0": + version: 0.12.0 + resolution: "eslint-plugin-storybook@npm:0.12.0" dependencies: "@storybook/csf": "npm:^0.1.11" "@typescript-eslint/utils": "npm:^8.8.1" ts-dedent: "npm:^2.2.0" peerDependencies: eslint: ">=8" - checksum: 10/9872dd37386bed244b56589348949d54cad0a526ef81229681a5c918fe1a74dbef56fd7a6cf1c8014b5b38744ba759d1b24a3f94fdbec5d0fddfc6a54f5e6eb7 + checksum: 10/278ea59565e30b74ee1d57f0a8f704906eaf40973b13999ec2c44872bb90c7505dfb12777b264940e2b480e81ace85c0532af69666e76a783b8ffa898a1d49ad languageName: node linkType: hard @@ -29071,65 +28896,6 @@ __metadata: languageName: unknown linkType: soft -"example-backend-legacy@workspace:packages/backend-legacy": - version: 0.0.0-use.local - resolution: "example-backend-legacy@workspace:packages/backend-legacy" - dependencies: - "@backstage/backend-common": "npm:^0.25.0" - "@backstage/backend-defaults": "workspace:^" - "@backstage/backend-plugin-api": "workspace:^" - "@backstage/catalog-client": "workspace:^" - "@backstage/catalog-model": "workspace:^" - "@backstage/cli": "workspace:^" - "@backstage/config": "workspace:^" - "@backstage/integration": "workspace:^" - "@backstage/plugin-auth-backend": "workspace:^" - "@backstage/plugin-auth-node": "workspace:^" - "@backstage/plugin-catalog-backend": "workspace:^" - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^" - "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" - "@backstage/plugin-catalog-node": "workspace:^" - "@backstage/plugin-events-backend": "workspace:^" - "@backstage/plugin-events-node": "workspace:^" - "@backstage/plugin-kubernetes-backend": "workspace:^" - "@backstage/plugin-permission-backend": "workspace:^" - "@backstage/plugin-permission-common": "workspace:^" - "@backstage/plugin-permission-node": "workspace:^" - "@backstage/plugin-scaffolder-backend": "workspace:^" - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "workspace:^" - "@backstage/plugin-scaffolder-backend-module-gitlab": "workspace:^" - "@backstage/plugin-scaffolder-backend-module-rails": "workspace:^" - "@backstage/plugin-search-backend": "workspace:^" - "@backstage/plugin-search-backend-module-catalog": "workspace:^" - "@backstage/plugin-search-backend-module-elasticsearch": "workspace:^" - "@backstage/plugin-search-backend-module-explore": "workspace:^" - "@backstage/plugin-search-backend-module-pg": "workspace:^" - "@backstage/plugin-search-backend-module-techdocs": "workspace:^" - "@backstage/plugin-search-backend-node": "workspace:^" - "@backstage/plugin-signals-backend": "workspace:^" - "@backstage/plugin-signals-node": "workspace:^" - "@backstage/plugin-techdocs-backend": "workspace:^" - "@gitbeaker/node": "npm:^35.1.0" - "@octokit/rest": "npm:^19.0.3" - "@types/dockerode": "npm:^3.3.0" - "@types/express": "npm:^4.17.6" - "@types/express-serve-static-core": "npm:^4.17.5" - "@types/luxon": "npm:^3.0.0" - azure-devops-node-api: "npm:^14.0.0" - better-sqlite3: "npm:^11.0.0" - dockerode: "npm:^4.0.0" - express: "npm:^4.17.1" - express-prom-bundle: "npm:^7.0.0" - express-promise-router: "npm:^4.1.0" - luxon: "npm:^3.0.0" - mysql2: "npm:^3.0.0" - pg: "npm:^8.11.3" - pg-connection-string: "npm:^2.3.0" - prom-client: "npm:^15.0.0" - winston: "npm:^3.2.1" - languageName: unknown - linkType: soft - "example-backend@workspace:packages/backend": version: 0.0.0-use.local resolution: "example-backend@workspace:packages/backend" @@ -29303,20 +29069,6 @@ __metadata: languageName: node linkType: hard -"express-prom-bundle@npm:^7.0.0": - version: 7.0.2 - resolution: "express-prom-bundle@npm:7.0.2" - dependencies: - "@types/express": "npm:^4.17.21" - express: "npm:^4.18.2" - on-finished: "npm:^2.3.0" - url-value-parser: "npm:^2.0.0" - peerDependencies: - prom-client: ">=15.0.0" - checksum: 10/19d95252eaaaedae1a05d90bbb96cbcc60e82e7710baa18810bd9c327b864b743f4e16bc2a5b3f7e51dcd505ac86db4fd9391c72c11cf6c0dc2c8df893870e02 - languageName: node - linkType: hard - "express-promise-router@npm:^4.1.0, express-promise-router@npm:^4.1.1": version: 4.1.1 resolution: "express-promise-router@npm:4.1.1" @@ -29752,13 +29504,6 @@ __metadata: languageName: node linkType: hard -"filter-obj@npm:^1.1.0": - version: 1.1.0 - resolution: "filter-obj@npm:1.1.0" - checksum: 10/9d681939eec2b4b129cb4f307b7e93d954a0657421d4e5357d86093b26d3f4f570909ed43717dcfd62428b3cf8cddd9841b35f9d40d12ac62cfabaa677942593 - languageName: node - linkType: hard - "finalhandler@npm:1.1.2": version: 1.1.2 resolution: "finalhandler@npm:1.1.2" @@ -31010,7 +30755,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^11.7.0, got@npm:^11.8.3": +"got@npm:^11.7.0": version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: @@ -31770,8 +31515,8 @@ __metadata: linkType: hard "http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.6, http-proxy-middleware@npm:^2.0.7": - version: 2.0.7 - resolution: "http-proxy-middleware@npm:2.0.7" + version: 2.0.9 + resolution: "http-proxy-middleware@npm:2.0.9" dependencies: "@types/http-proxy": "npm:^1.17.8" http-proxy: "npm:^1.18.1" @@ -31783,7 +31528,7 @@ __metadata: peerDependenciesMeta: "@types/express": optional: true - checksum: 10/4a51bf612b752ad945701995c1c029e9501c97e7224c0cf3f8bf6d48d172d6a8f2b57c20fec469534fdcac3aa8a6f332224a33c6b0d7f387aa2cfff9b67216fd + checksum: 10/4ece416a91d52e96f8136c5f4abfbf7ac2f39becbad21fa8b158a12d7e7d8f808287ff1ae342b903fd1f15f2249dee87fabc09e1f0e73106b83331c496d67660 languageName: node linkType: hard @@ -34985,13 +34730,6 @@ __metadata: languageName: node linkType: hard -"li@npm:^1.3.0": - version: 1.3.0 - resolution: "li@npm:1.3.0" - checksum: 10/825a1e132da5263e16cf24df92b787c5030c6549be66a8b2087e74ca56474aa681183f3a11b5f14e61d5d583af5f776ecf3b320ad689842511f36030339f6a0c - languageName: node - linkType: hard - "libsodium-wrappers@npm:^0.7.11": version: 0.7.15 resolution: "libsodium-wrappers@npm:0.7.15" @@ -38659,7 +38397,7 @@ __metadata: languageName: node linkType: hard -"openid-client@npm:^5.2.1, openid-client@npm:^5.3.0, openid-client@npm:^5.4.3, openid-client@npm:^5.5.0, openid-client@npm:^5.6.5": +"openid-client@npm:^5.3.0, openid-client@npm:^5.4.3, openid-client@npm:^5.5.0, openid-client@npm:^5.6.5": version: 5.7.1 resolution: "openid-client@npm:5.7.1" dependencies: @@ -39277,7 +39015,7 @@ __metadata: languageName: node linkType: hard -"passport-strategy@npm:1.x.x, passport-strategy@npm:^1.0.0": +"passport-strategy@npm:1.x.x": version: 1.0.0 resolution: "passport-strategy@npm:1.0.0" checksum: 10/5086693f2508e538dffa55a338c89fe8192fb5f4478c71f80cd5890b8573419a098f4fec88b505374f60bbe9049f6f24b9f3992678612528a3370b4dc73354a2 @@ -39576,8 +39314,8 @@ __metadata: linkType: hard "pg@npm:^8.11.3, pg@npm:^8.9.0": - version: 8.14.0 - resolution: "pg@npm:8.14.0" + version: 8.14.1 + resolution: "pg@npm:8.14.1" dependencies: pg-cloudflare: "npm:^1.1.1" pg-connection-string: "npm:^2.7.0" @@ -39593,7 +39331,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10/3d2d962a117195963d3b1564ed5a4963a7bb427e1d98c805ffcc3eb0142769ec69c5d91d19dab995d34b8b0aebce8079da55309c39298b531c42128ba6aac4d9 + checksum: 10/45f2d5719fd74a6a4784c5115c0ff482af92d1e5b101bf423160b6a983e37cc2fad4a7eea2a06f27e6f8bdb8abce23486d2d522c8c52c90f68a2bc897f0553c4 languageName: node linkType: hard @@ -39735,9 +39473,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10/2427f371366081ae42feb58214f04805d6b41d6b84d74480ebcc9e0ddbd7105a139f7c653daeaf83ad8a1a77214cf07f64178e76de048128fec501eab3305a96 languageName: node linkType: hard @@ -39869,12 +39607,12 @@ __metadata: linkType: hard "portfinder@npm:^1.0.28, portfinder@npm:^1.0.32": - version: 1.0.35 - resolution: "portfinder@npm:1.0.35" + version: 1.0.36 + resolution: "portfinder@npm:1.0.36" dependencies: async: "npm:^3.2.6" debug: "npm:^4.3.6" - checksum: 10/16457d54f66e6794807cf10821e440d33cb3d688ed0de7f5d365cd5b7c6902fe91f42f530c2899b1c7660346cd16e636df3240d7737510fd0a9a6e1deb70b38d + checksum: 10/2f70c1090dd8fa1c5db36add08d416f56455ec57600c245ca5f19cf034a10357c603f89db63a34d52f07fcedc7d8b2c7d12a4bb04458b1c57850e50f557aadcb languageName: node linkType: hard @@ -40866,18 +40604,6 @@ __metadata: languageName: node linkType: hard -"query-string@npm:^7.0.0": - version: 7.0.0 - resolution: "query-string@npm:7.0.0" - dependencies: - decode-uri-component: "npm:^0.2.0" - filter-obj: "npm:^1.1.0" - split-on-first: "npm:^1.0.0" - strict-uri-encode: "npm:^2.0.0" - checksum: 10/7f5031ede27d31448a08ec36255f0a6a1410a966456e493a651ccaf0605365c9b0f04f95d6c7d47c638a4502e0530a710812b90b597e5d99e2075af2c8c7da02 - languageName: node - linkType: hard - "querystring-es3@npm:^0.2.1": version: 0.2.1 resolution: "querystring-es3@npm:0.2.1" @@ -41828,12 +41554,12 @@ __metadata: linkType: hard "react-virtualized-auto-sizer@npm:^1.0.11": - version: 1.0.25 - resolution: "react-virtualized-auto-sizer@npm:1.0.25" + version: 1.0.26 + resolution: "react-virtualized-auto-sizer@npm:1.0.26" peerDependencies: react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10/43678a904019f0413a3c649b5b64ea51263283120c991b285077b5075cf2ea564571f6d48b3a396b588d500d45820d1c98989cb7091e2a009e73e4faa7da9d20 + checksum: 10/8f8127369fb3ae1a49987a1e7d2d136f379b71d1b031a4c169389274946eca0248e3fb9130aa8a7ebe82f4ca8aaab58c37252398f8f6220a6eafaa78b8464b6b languageName: node linkType: hard @@ -43126,13 +42852,6 @@ __metadata: languageName: node linkType: hard -"sax@npm:>=0.6.0": - version: 1.2.4 - resolution: "sax@npm:1.2.4" - checksum: 10/09b79ff6dc09689a24323352117c94593c69db348997b2af0edbd82fa08aba47d778055bf9616b57285bb73d25d790900c044bf631a8f10c8252412e3f3fe5dd - languageName: node - linkType: hard - "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -44071,13 +43790,6 @@ __metadata: languageName: node linkType: hard -"split-on-first@npm:^1.0.0": - version: 1.1.0 - resolution: "split-on-first@npm:1.1.0" - checksum: 10/16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 - languageName: node - linkType: hard - "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -44326,11 +44038,11 @@ __metadata: languageName: node linkType: hard -"storybook@npm:^8.6.8": - version: 8.6.8 - resolution: "storybook@npm:8.6.8" +"storybook@npm:^8.6.12": + version: 8.6.12 + resolution: "storybook@npm:8.6.12" dependencies: - "@storybook/core": "npm:8.6.8" + "@storybook/core": "npm:8.6.12" peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: @@ -44340,7 +44052,7 @@ __metadata: getstorybook: ./bin/index.cjs sb: ./bin/index.cjs storybook: ./bin/index.cjs - checksum: 10/9d7cd271fda874063cb59795ece7da907608d47e8a1ac441c4b30670c542fb929c9c7f30447ba3151a41631f0ec1f4dbb10cc214853f3a703f2019f23811e5bb + checksum: 10/babd1d086eb02ba25ee659e02e619f7797a6b91028ad74d2da0ab77e72021cd5c2ac4f239668f15156aabf00bd97066a774370dceadf178b1e649bf971160a26 languageName: node linkType: hard @@ -44460,13 +44172,6 @@ __metadata: languageName: node linkType: hard -"strict-uri-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "strict-uri-encode@npm:2.0.0" - checksum: 10/eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 - languageName: node - linkType: hard - "string-argv@npm:^0.3.2, string-argv@npm:~0.3.1": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -46824,13 +46529,6 @@ __metadata: languageName: node linkType: hard -"url-value-parser@npm:^2.0.0": - version: 2.0.3 - resolution: "url-value-parser@npm:2.0.3" - checksum: 10/f13a2693b633896329956372a58a1c0f6666d72b87c85dff05564a132c1a5d2a698ca3097a481bf06afc1f5007c08ec67499136736c25c38f3ee84e877d72732 - languageName: node - linkType: hard - "url@npm:^0.11.0, url@npm:^0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" @@ -47409,7 +47107,7 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:5.2.0, webpack-dev-server@npm:^5.0.0": +"webpack-dev-server@npm:5.2.0": version: 5.2.0 resolution: "webpack-dev-server@npm:5.2.0" dependencies: @@ -47453,6 +47151,51 @@ __metadata: languageName: node linkType: hard +"webpack-dev-server@npm:^5.0.0": + version: 5.2.1 + resolution: "webpack-dev-server@npm:5.2.1" + dependencies: + "@types/bonjour": "npm:^3.5.13" + "@types/connect-history-api-fallback": "npm:^1.5.4" + "@types/express": "npm:^4.17.21" + "@types/express-serve-static-core": "npm:^4.17.21" + "@types/serve-index": "npm:^1.9.4" + "@types/serve-static": "npm:^1.15.5" + "@types/sockjs": "npm:^0.3.36" + "@types/ws": "npm:^8.5.10" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.2.1" + chokidar: "npm:^3.6.0" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + express: "npm:^4.21.2" + graceful-fs: "npm:^4.2.6" + http-proxy-middleware: "npm:^2.0.7" + ipaddr.js: "npm:^2.1.0" + launch-editor: "npm:^2.6.1" + open: "npm:^10.0.3" + p-retry: "npm:^6.2.0" + schema-utils: "npm:^4.2.0" + selfsigned: "npm:^2.4.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^7.4.2" + ws: "npm:^8.18.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10/424edfe22b7bbe2301a38b8b519dfeb7643e0ca643be01af3fa48ec18512955c1952246741d7577bdb911ee09dcd6c521ade7d65e0059448ee69ab02bfac4624 + languageName: node + linkType: hard + "webpack-hot-middleware@npm:^2.25.1": version: 2.26.1 resolution: "webpack-hot-middleware@npm:2.26.1" @@ -47931,28 +47674,6 @@ __metadata: languageName: node linkType: hard -"xml-crypto@npm:^6.0.1": - version: 6.0.1 - resolution: "xml-crypto@npm:6.0.1" - dependencies: - "@xmldom/is-dom-node": "npm:^1.0.1" - "@xmldom/xmldom": "npm:^0.8.10" - xpath: "npm:^0.0.33" - checksum: 10/703d40b54333a50f74f2d4f3e37a7b9de7aa2dfde48b0418205261d2f66c9e3869babd96d7be18ec1661aaa3aea03a018279846f844cea607a57183a21a4748a - languageName: node - linkType: hard - -"xml-encryption@npm:^3.0.2": - version: 3.0.2 - resolution: "xml-encryption@npm:3.0.2" - dependencies: - "@xmldom/xmldom": "npm:^0.8.5" - escape-html: "npm:^1.0.3" - xpath: "npm:0.0.32" - checksum: 10/081a42ca7d7e81d23229f2a1149313e934d872c33da57eda25113a613f3940ff66f73e4e2f62d37a3a38c3c7d291784047b5b729988f346fef96c7124f6dbe83 - languageName: node - linkType: hard - "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0" @@ -47967,16 +47688,6 @@ __metadata: languageName: node linkType: hard -"xml2js@npm:^0.6.2": - version: 0.6.2 - resolution: "xml2js@npm:0.6.2" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10/df29de8eeedb762c367d87945c39bcf54db19a2c522607491c266ed6184b5a749e37ff29cfaed0ac149da9ba332ac3dcf8e5ff2bd0a206be3343eca95faa941d - languageName: node - linkType: hard - "xml@npm:=1.0.1": version: 1.0.1 resolution: "xml@npm:1.0.1" @@ -47984,20 +47695,6 @@ __metadata: languageName: node linkType: hard -"xmlbuilder@npm:^15.1.1": - version: 15.1.1 - resolution: "xmlbuilder@npm:15.1.1" - checksum: 10/e6f4bab2504afdd5f80491bda948894d2146756532521dbe7db33ae0931cd3000e3b4da19b3f5b3f51bedbd9ee06582144d28136d68bd1df96579ecf4d4404a2 - languageName: node - linkType: hard - -"xmlbuilder@npm:~11.0.0": - version: 11.0.1 - resolution: "xmlbuilder@npm:11.0.1" - checksum: 10/c8c3d208783718db5b285101a736cd8e6b69a5c265199a0739abaa93d1a1b7de5489fd16df4e776e18b2c98cb91f421a7349e99fd8c1ebeb44ecfed72a25091a - languageName: node - linkType: hard - "xmlchars@npm:^2.2.0": version: 2.2.0 resolution: "xmlchars@npm:2.2.0" @@ -48005,27 +47702,6 @@ __metadata: languageName: node linkType: hard -"xpath@npm:0.0.32": - version: 0.0.32 - resolution: "xpath@npm:0.0.32" - checksum: 10/9d8be7adde4500e9ee96db963838269021f89ef1ad222fdfd41b7266336e851a38416b4a710c194dcf9eb35cf58ad11e023e5951e919151b76ffcd6eb3b2cbf4 - languageName: node - linkType: hard - -"xpath@npm:^0.0.33": - version: 0.0.33 - resolution: "xpath@npm:0.0.33" - checksum: 10/09c539661cafc0d75bb48d13fee7ce6e7593d88f4387c401a3b15d46d543e81f46680be5c6ecf868c11f6090ee67ea78e0c327c4e0ffceb2969308a2d1e238bb - languageName: node - linkType: hard - -"xpath@npm:^0.0.34": - version: 0.0.34 - resolution: "xpath@npm:0.0.34" - checksum: 10/77ce03c4494dab97b70fa443761c35a6bd484538a449714b981387a532a6eb22e245b29164f5d8a4a82f4f3cfd71d27ba71d09ed2b6fe933654585c6e46c0a25 - languageName: node - linkType: hard - "xtend@npm:^4.0.0, xtend@npm:^4.0.2": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -48116,11 +47792,11 @@ __metadata: linkType: hard "yaml@npm:^2.0.0, yaml@npm:^2.0.0-10, yaml@npm:^2.1.1, yaml@npm:^2.2.1, yaml@npm:^2.2.2, yaml@npm:^2.3.2, yaml@npm:^2.3.3, yaml@npm:^2.3.4, yaml@npm:^2.6.1, yaml@npm:^2.7.0": - version: 2.7.0 - resolution: "yaml@npm:2.7.0" + version: 2.7.1 + resolution: "yaml@npm:2.7.1" bin: yaml: bin.mjs - checksum: 10/c8c314c62fbd49244a6a51b06482f6d495b37ab10fa685fcafa1bbaae7841b7233ee7d12cab087bcca5a0b28adc92868b6e437322276430c28d00f1c1732eeec + checksum: 10/af57658d37c5efae4bac7204589b742ae01878a278554d632f01012868cf7fa66cba09b39140f12e7f6ceecc693ae52bcfb737596c4827e6e233338cb3a9528e languageName: node linkType: hard