Merge branch 'backstage:master' into master
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-search': patch
|
||||
---
|
||||
|
||||
Fixed bug in "View Full Results" link of Search Modal that did not navigate to the full results page.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-devtools': patch
|
||||
---
|
||||
|
||||
Allow specifying custom title for `DevToolsLayout`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Replace reference to deprecated import
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-badges-backend': patch
|
||||
---
|
||||
|
||||
Added support for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
---
|
||||
|
||||
Propagate entity spec to EntityNode so that spec info such as type can be used for graph node customization
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fixed the `--alwaysYarnPack` flag on the`backstage-cli build-workspace` command.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Post-create message - added instruction to run `yarn install` when app was created with `--skip-install`
|
||||
@@ -1,76 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': minor
|
||||
---
|
||||
|
||||
**BREAKING**
|
||||
|
||||
This change updates the configuration of the confluence-to-markdown action so that it does not conflict with other confluence plguins. Currently many plugins make use of the `confluence.auth` configuration. However, only the confluence-to-markdown action uses the `confluence.auth` as a string. This change updates it so that `confluence.auth` is an object.
|
||||
|
||||
## Required Changes
|
||||
|
||||
Below are examples for updating `bearer`, `basic`, and `userpass` implementations.
|
||||
|
||||
For `bearer`:
|
||||
Before:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth: 'bearer'
|
||||
token: '${CONFLUENCE_TOKEN}'
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth:
|
||||
type: 'bearer'
|
||||
token: '${CONFLUENCE_TOKEN}'
|
||||
```
|
||||
|
||||
For `basic`:
|
||||
|
||||
Before:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth: 'basic'
|
||||
token: '${CONFLUENCE_TOKEN}'
|
||||
email: 'example@company.org'
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth:
|
||||
type: 'basic'
|
||||
token: '${CONFLUENCE_TOKEN}'
|
||||
email: 'example@company.org'
|
||||
```
|
||||
|
||||
For `userpass`
|
||||
Before:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth: 'userpass'
|
||||
username: 'your-username'
|
||||
password: 'your-password'
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```yaml
|
||||
confluence:
|
||||
baseUrl: 'https://confluence.example.com'
|
||||
auth:
|
||||
type: 'userpass'
|
||||
username: 'your-username'
|
||||
password: 'your-password'
|
||||
```
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/theme': patch
|
||||
---
|
||||
|
||||
Overwrite `PaletteOptions` & `ThemeOptions` type to allow use of `createTheme` from `@backstage/theme` as well as `@material-ui/core/styles` with the same type. Also replaced the default `CSSBaseline` with v4 instead of v5 for better backwards compatibility for now.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
add cy.\*\*.should to cypress eslintrc
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
The Catalog Unprocessed Entities plugin can now be integrated as a tab within the DevTools plugin
|
||||
|
||||
- Added an export for `UnprocessedEntitiesContent`
|
||||
- Updated the `README` with images of the features
|
||||
- Adjusted the styles to fill in the available space
|
||||
- Set the table page size to 20 as 40 was causing errors in the browser console
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/errors': patch
|
||||
---
|
||||
|
||||
Set `this.name` in all error classes that extend `CustomErrorBase` class to their actual name
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-stackstorm': patch
|
||||
---
|
||||
|
||||
Add props to StackstormHome for Header Customization
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-react': patch
|
||||
---
|
||||
|
||||
Made markdown description theme-able
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-airbrake-backend': patch
|
||||
---
|
||||
|
||||
Added support for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-airbrake': patch
|
||||
---
|
||||
|
||||
Added documentation for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
---
|
||||
|
||||
fixed event handler to respect configured organization
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-openapi-utils': patch
|
||||
---
|
||||
|
||||
Add a new `createRouter` method for generating an `express` router that validates against your spec. Also fixes a bug with the query parameters type resolution.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
Export some types and API items. This allows people to call the API from different places with the ApiRef, as well
|
||||
as completely customize the client if required. Check the [README.md](https://github.com/backstage/backstage/blob/master/plugins/catalog-unprocessed-entities/README.md) to
|
||||
note what needs to be added in order to use the new `catalogUnprocessedEntitiesApiRef` exported function.
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
'@backstage/cli-node': patch
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
'@backstage/plugin-tech-insights-backend': patch
|
||||
---
|
||||
|
||||
semver upgrade to 7.5.3
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Add WebSocket support to `kubernetes-backend` proxy.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-devtools': patch
|
||||
---
|
||||
|
||||
Updated the `README` with instructions on how to integrate the Catalog Unprocessed Entities plugin as a tab within DevTools
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-lighthouse': patch
|
||||
---
|
||||
|
||||
Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url were found.
|
||||
Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter`.
|
||||
Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result).
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Reload the frontend when app config changes
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-common': patch
|
||||
---
|
||||
|
||||
use `Readable.from` to explicitly convert the `buffer` from `node-fetch` to a `Readable` stream
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-import': patch
|
||||
---
|
||||
|
||||
Add a "View Component" button as the primary CTA after registering a new component using a link to catalog-info.yaml
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
'@backstage/plugin-sonarqube-backend': patch
|
||||
---
|
||||
|
||||
Made default config optional
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-dynatrace': patch
|
||||
---
|
||||
|
||||
updated the link that the "View Entity in Dynatrace" redirects the user to.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Indicate the name of the option that is being deprecated in task deprecation warning.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-unprocessed': patch
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
Fix and improve documentation for the unprocessed entities modules.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-unprocessed': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Fixing typo in exported module. You will have to rename the import to the correct spelling. `UnprocessedEntites` -> `UnprocessedEntities`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Proxy endpoint supports cluster URLs with subpath
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-azure-devops-backend': patch
|
||||
'@backstage/plugin-devtools-backend': patch
|
||||
'@backstage/plugin-linguist-backend': patch
|
||||
---
|
||||
|
||||
Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': minor
|
||||
'@backstage/plugin-catalog': minor
|
||||
---
|
||||
|
||||
Tables which use `EntityTableProps` now have an additional `tableOptions` prop which can be used to provide additional table options to these components.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
fix: update plugin home dependency for `@rjsf/material-ui` to `@rjsf/material-ui-v5`
|
||||
+211
-273
@@ -2,295 +2,233 @@
|
||||
"mode": "pre",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.84",
|
||||
"@backstage/app-defaults": "1.4.0",
|
||||
"example-backend": "0.2.84",
|
||||
"@backstage/backend-app-api": "0.4.4",
|
||||
"@backstage/backend-common": "0.19.0",
|
||||
"@backstage/backend-defaults": "0.1.11",
|
||||
"example-app": "0.2.85",
|
||||
"@backstage/app-defaults": "1.4.1",
|
||||
"example-backend": "0.2.85",
|
||||
"@backstage/backend-app-api": "0.4.5",
|
||||
"@backstage/backend-common": "0.19.1",
|
||||
"@backstage/backend-defaults": "0.1.12",
|
||||
"@backstage/backend-dev-utils": "0.1.1",
|
||||
"example-backend-next": "0.0.12",
|
||||
"example-backend-next": "0.0.13",
|
||||
"@backstage/backend-openapi-utils": "0.0.2",
|
||||
"@backstage/backend-plugin-api": "0.5.3",
|
||||
"@backstage/backend-tasks": "0.5.3",
|
||||
"@backstage/backend-test-utils": "0.1.38",
|
||||
"@backstage/catalog-client": "1.4.2",
|
||||
"@backstage/catalog-model": "1.4.0",
|
||||
"@backstage/cli": "0.22.8",
|
||||
"@backstage/backend-plugin-api": "0.5.4",
|
||||
"@backstage/backend-tasks": "0.5.4",
|
||||
"@backstage/backend-test-utils": "0.1.39",
|
||||
"@backstage/catalog-client": "1.4.3",
|
||||
"@backstage/catalog-model": "1.4.1",
|
||||
"@backstage/cli": "0.22.9",
|
||||
"@backstage/cli-common": "0.1.12",
|
||||
"@backstage/cli-node": "0.1.1",
|
||||
"@backstage/codemods": "0.1.44",
|
||||
"@backstage/cli-node": "0.1.2",
|
||||
"@backstage/codemods": "0.1.45",
|
||||
"@backstage/config": "1.0.8",
|
||||
"@backstage/config-loader": "1.3.1",
|
||||
"@backstage/core-app-api": "1.8.1",
|
||||
"@backstage/core-components": "0.13.2",
|
||||
"@backstage/core-plugin-api": "1.5.2",
|
||||
"@backstage/create-app": "0.5.2",
|
||||
"@backstage/dev-utils": "1.0.16",
|
||||
"e2e-test": "0.2.4",
|
||||
"@backstage/errors": "1.2.0",
|
||||
"@backstage/config-loader": "1.3.2",
|
||||
"@backstage/core-app-api": "1.9.0",
|
||||
"@backstage/core-components": "0.13.3",
|
||||
"@backstage/core-plugin-api": "1.5.3",
|
||||
"@backstage/create-app": "0.5.3",
|
||||
"@backstage/dev-utils": "1.0.17",
|
||||
"e2e-test": "0.2.5",
|
||||
"@backstage/errors": "1.2.1",
|
||||
"@backstage/eslint-plugin": "0.1.3",
|
||||
"@backstage/integration": "1.5.0",
|
||||
"@backstage/integration-aws-node": "0.1.4",
|
||||
"@backstage/integration-react": "1.1.14",
|
||||
"@backstage/integration": "1.5.1",
|
||||
"@backstage/integration-aws-node": "0.1.5",
|
||||
"@backstage/integration-react": "1.1.15",
|
||||
"@backstage/release-manifests": "0.0.9",
|
||||
"@backstage/repo-tools": "0.3.1",
|
||||
"@techdocs/cli": "1.4.3",
|
||||
"techdocs-cli-embedded-app": "0.2.83",
|
||||
"@backstage/test-utils": "1.4.0",
|
||||
"@backstage/theme": "0.4.0",
|
||||
"@backstage/repo-tools": "0.3.2",
|
||||
"@techdocs/cli": "1.4.4",
|
||||
"techdocs-cli-embedded-app": "0.2.84",
|
||||
"@backstage/test-utils": "1.4.1",
|
||||
"@backstage/theme": "0.4.1",
|
||||
"@backstage/types": "1.1.0",
|
||||
"@backstage/version-bridge": "1.0.4",
|
||||
"@backstage/plugin-adr": "0.6.2",
|
||||
"@backstage/plugin-adr-backend": "0.3.4",
|
||||
"@backstage/plugin-adr-common": "0.2.10",
|
||||
"@backstage/plugin-airbrake": "0.3.19",
|
||||
"@backstage/plugin-airbrake-backend": "0.2.19",
|
||||
"@backstage/plugin-allure": "0.1.35",
|
||||
"@backstage/plugin-analytics-module-ga": "0.1.30",
|
||||
"@backstage/plugin-analytics-module-ga4": "0.1.1",
|
||||
"@backstage/plugin-apache-airflow": "0.2.12",
|
||||
"@backstage/plugin-api-docs": "0.9.5",
|
||||
"@backstage/plugin-adr": "0.6.3",
|
||||
"@backstage/plugin-adr-backend": "0.3.5",
|
||||
"@backstage/plugin-adr-common": "0.2.11",
|
||||
"@backstage/plugin-airbrake": "0.3.20",
|
||||
"@backstage/plugin-airbrake-backend": "0.2.20",
|
||||
"@backstage/plugin-allure": "0.1.36",
|
||||
"@backstage/plugin-analytics-module-ga": "0.1.31",
|
||||
"@backstage/plugin-analytics-module-ga4": "0.1.2",
|
||||
"@backstage/plugin-apache-airflow": "0.2.13",
|
||||
"@backstage/plugin-api-docs": "0.9.6",
|
||||
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.2",
|
||||
"@backstage/plugin-apollo-explorer": "0.1.12",
|
||||
"@backstage/plugin-app-backend": "0.3.46",
|
||||
"@backstage/plugin-auth-backend": "0.18.4",
|
||||
"@backstage/plugin-auth-node": "0.2.15",
|
||||
"@backstage/plugin-azure-devops": "0.3.1",
|
||||
"@backstage/plugin-azure-devops-backend": "0.3.25",
|
||||
"@backstage/plugin-apollo-explorer": "0.1.13",
|
||||
"@backstage/plugin-app-backend": "0.3.47",
|
||||
"@backstage/plugin-auth-backend": "0.18.5",
|
||||
"@backstage/plugin-auth-node": "0.2.16",
|
||||
"@backstage/plugin-azure-devops": "0.3.2",
|
||||
"@backstage/plugin-azure-devops-backend": "0.3.26",
|
||||
"@backstage/plugin-azure-devops-common": "0.3.0",
|
||||
"@backstage/plugin-azure-sites": "0.1.8",
|
||||
"@backstage/plugin-azure-sites-backend": "0.1.8",
|
||||
"@backstage/plugin-azure-sites": "0.1.9",
|
||||
"@backstage/plugin-azure-sites-backend": "0.1.9",
|
||||
"@backstage/plugin-azure-sites-common": "0.1.0",
|
||||
"@backstage/plugin-badges": "0.2.43",
|
||||
"@backstage/plugin-badges-backend": "0.2.1",
|
||||
"@backstage/plugin-bazaar": "0.2.10",
|
||||
"@backstage/plugin-bazaar-backend": "0.2.9",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.2.7",
|
||||
"@backstage/plugin-bitrise": "0.1.46",
|
||||
"@backstage/plugin-catalog": "1.11.2",
|
||||
"@backstage/plugin-catalog-backend": "1.10.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.2.1",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.1.17",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket": "0.2.13",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.13",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.11",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.1.14",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.3.1",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.2.2",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.3.3",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.5.13",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.5.5",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.1.12",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.1.3",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.1.0",
|
||||
"@backstage/plugin-catalog-common": "1.0.14",
|
||||
"@internal/plugin-catalog-customized": "0.0.11",
|
||||
"@backstage/plugin-catalog-graph": "0.2.31",
|
||||
"@backstage/plugin-catalog-graphql": "0.3.21",
|
||||
"@backstage/plugin-catalog-import": "0.9.9",
|
||||
"@backstage/plugin-catalog-node": "1.3.7",
|
||||
"@backstage/plugin-catalog-react": "1.7.0",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.1.0",
|
||||
"@backstage/plugin-cicd-statistics": "0.1.21",
|
||||
"@backstage/plugin-cicd-statistics-module-gitlab": "0.1.15",
|
||||
"@backstage/plugin-circleci": "0.3.19",
|
||||
"@backstage/plugin-cloudbuild": "0.3.19",
|
||||
"@backstage/plugin-code-climate": "0.1.19",
|
||||
"@backstage/plugin-code-coverage": "0.2.12",
|
||||
"@backstage/plugin-code-coverage-backend": "0.2.12",
|
||||
"@backstage/plugin-codescene": "0.1.14",
|
||||
"@backstage/plugin-config-schema": "0.1.42",
|
||||
"@backstage/plugin-cost-insights": "0.12.8",
|
||||
"@backstage/plugin-badges": "0.2.44",
|
||||
"@backstage/plugin-badges-backend": "0.2.2",
|
||||
"@backstage/plugin-bazaar": "0.2.11",
|
||||
"@backstage/plugin-bazaar-backend": "0.2.10",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.2.8",
|
||||
"@backstage/plugin-bitrise": "0.1.47",
|
||||
"@backstage/plugin-catalog": "1.12.0",
|
||||
"@backstage/plugin-catalog-backend": "1.11.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.2.2",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.1.18",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket": "0.2.14",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.14",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.12",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.1.15",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.3.2",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.2.3",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.0",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.5.14",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.5.6",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.1.13",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.1.4",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.1.1",
|
||||
"@backstage/plugin-catalog-common": "1.0.15",
|
||||
"@internal/plugin-catalog-customized": "0.0.12",
|
||||
"@backstage/plugin-catalog-graph": "0.2.32",
|
||||
"@backstage/plugin-catalog-graphql": "0.3.22",
|
||||
"@backstage/plugin-catalog-import": "0.9.10",
|
||||
"@backstage/plugin-catalog-node": "1.4.0",
|
||||
"@backstage/plugin-catalog-react": "1.8.0",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.1.1",
|
||||
"@backstage/plugin-cicd-statistics": "0.1.22",
|
||||
"@backstage/plugin-cicd-statistics-module-gitlab": "0.1.16",
|
||||
"@backstage/plugin-circleci": "0.3.20",
|
||||
"@backstage/plugin-cloudbuild": "0.3.20",
|
||||
"@backstage/plugin-code-climate": "0.1.20",
|
||||
"@backstage/plugin-code-coverage": "0.2.13",
|
||||
"@backstage/plugin-code-coverage-backend": "0.2.13",
|
||||
"@backstage/plugin-codescene": "0.1.15",
|
||||
"@backstage/plugin-config-schema": "0.1.43",
|
||||
"@backstage/plugin-cost-insights": "0.12.9",
|
||||
"@backstage/plugin-cost-insights-common": "0.1.1",
|
||||
"@backstage/plugin-devtools": "0.1.1",
|
||||
"@backstage/plugin-devtools-backend": "0.1.1",
|
||||
"@backstage/plugin-devtools-common": "0.1.1",
|
||||
"@backstage/plugin-dynatrace": "6.0.0",
|
||||
"@backstage/plugin-entity-feedback": "0.2.2",
|
||||
"@backstage/plugin-entity-feedback-backend": "0.1.4",
|
||||
"@backstage/plugin-devtools": "0.1.2",
|
||||
"@backstage/plugin-devtools-backend": "0.1.2",
|
||||
"@backstage/plugin-devtools-common": "0.1.2",
|
||||
"@backstage/plugin-dynatrace": "7.0.0",
|
||||
"@backstage/plugin-entity-feedback": "0.2.3",
|
||||
"@backstage/plugin-entity-feedback-backend": "0.1.5",
|
||||
"@backstage/plugin-entity-feedback-common": "0.1.1",
|
||||
"@backstage/plugin-entity-validation": "0.1.4",
|
||||
"@backstage/plugin-events-backend": "0.2.7",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.2.1",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.1.8",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.8",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.1.8",
|
||||
"@backstage/plugin-events-backend-module-github": "0.1.8",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.1.8",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.8",
|
||||
"@backstage/plugin-events-node": "0.2.7",
|
||||
"@internal/plugin-todo-list": "1.0.14",
|
||||
"@internal/plugin-todo-list-backend": "1.0.14",
|
||||
"@internal/plugin-todo-list-common": "1.0.11",
|
||||
"@backstage/plugin-explore": "0.4.5",
|
||||
"@backstage/plugin-explore-backend": "0.0.8",
|
||||
"@backstage/plugin-entity-validation": "0.1.5",
|
||||
"@backstage/plugin-events-backend": "0.2.8",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.2.2",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.1.9",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.9",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.1.9",
|
||||
"@backstage/plugin-events-backend-module-github": "0.1.9",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.1.9",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.9",
|
||||
"@backstage/plugin-events-node": "0.2.8",
|
||||
"@internal/plugin-todo-list": "1.0.15",
|
||||
"@internal/plugin-todo-list-backend": "1.0.15",
|
||||
"@internal/plugin-todo-list-common": "1.0.12",
|
||||
"@backstage/plugin-explore": "0.4.6",
|
||||
"@backstage/plugin-explore-backend": "0.0.9",
|
||||
"@backstage/plugin-explore-common": "0.0.1",
|
||||
"@backstage/plugin-explore-react": "0.0.29",
|
||||
"@backstage/plugin-firehydrant": "0.2.3",
|
||||
"@backstage/plugin-fossa": "0.2.51",
|
||||
"@backstage/plugin-gcalendar": "0.3.15",
|
||||
"@backstage/plugin-gcp-projects": "0.3.38",
|
||||
"@backstage/plugin-git-release-manager": "0.3.32",
|
||||
"@backstage/plugin-github-actions": "0.6.0",
|
||||
"@backstage/plugin-github-deployments": "0.1.50",
|
||||
"@backstage/plugin-github-issues": "0.2.8",
|
||||
"@backstage/plugin-github-pull-requests-board": "0.1.13",
|
||||
"@backstage/plugin-gitops-profiles": "0.3.37",
|
||||
"@backstage/plugin-gocd": "0.1.25",
|
||||
"@backstage/plugin-graphiql": "0.2.51",
|
||||
"@backstage/plugin-graphql-backend": "0.1.36",
|
||||
"@backstage/plugin-graphql-voyager": "0.1.4",
|
||||
"@backstage/plugin-home": "0.5.3",
|
||||
"@backstage/plugin-home-react": "0.1.0",
|
||||
"@backstage/plugin-ilert": "0.2.8",
|
||||
"@backstage/plugin-jenkins": "0.8.1",
|
||||
"@backstage/plugin-jenkins-backend": "0.2.1",
|
||||
"@backstage/plugin-jenkins-common": "0.1.16",
|
||||
"@backstage/plugin-kafka": "0.3.19",
|
||||
"@backstage/plugin-kafka-backend": "0.2.39",
|
||||
"@backstage/plugin-kubernetes": "0.9.2",
|
||||
"@backstage/plugin-kubernetes-backend": "0.11.1",
|
||||
"@backstage/plugin-kubernetes-common": "0.6.4",
|
||||
"@backstage/plugin-lighthouse": "0.4.4",
|
||||
"@backstage/plugin-lighthouse-backend": "0.2.2",
|
||||
"@backstage/plugin-explore-react": "0.0.30",
|
||||
"@backstage/plugin-firehydrant": "0.2.4",
|
||||
"@backstage/plugin-fossa": "0.2.52",
|
||||
"@backstage/plugin-gcalendar": "0.3.16",
|
||||
"@backstage/plugin-gcp-projects": "0.3.39",
|
||||
"@backstage/plugin-git-release-manager": "0.3.33",
|
||||
"@backstage/plugin-github-actions": "0.6.1",
|
||||
"@backstage/plugin-github-deployments": "0.1.51",
|
||||
"@backstage/plugin-github-issues": "0.2.9",
|
||||
"@backstage/plugin-github-pull-requests-board": "0.1.14",
|
||||
"@backstage/plugin-gitops-profiles": "0.3.38",
|
||||
"@backstage/plugin-gocd": "0.1.26",
|
||||
"@backstage/plugin-graphiql": "0.2.52",
|
||||
"@backstage/plugin-graphql-backend": "0.1.37",
|
||||
"@backstage/plugin-graphql-voyager": "0.1.5",
|
||||
"@backstage/plugin-home": "0.5.4",
|
||||
"@backstage/plugin-home-react": "0.1.1",
|
||||
"@backstage/plugin-ilert": "0.2.9",
|
||||
"@backstage/plugin-jenkins": "0.8.2",
|
||||
"@backstage/plugin-jenkins-backend": "0.2.2",
|
||||
"@backstage/plugin-jenkins-common": "0.1.17",
|
||||
"@backstage/plugin-kafka": "0.3.20",
|
||||
"@backstage/plugin-kafka-backend": "0.2.40",
|
||||
"@backstage/plugin-kubernetes": "0.9.3",
|
||||
"@backstage/plugin-kubernetes-backend": "0.11.2",
|
||||
"@backstage/plugin-kubernetes-common": "0.6.5",
|
||||
"@backstage/plugin-lighthouse": "0.4.5",
|
||||
"@backstage/plugin-lighthouse-backend": "0.2.3",
|
||||
"@backstage/plugin-lighthouse-common": "0.1.2",
|
||||
"@backstage/plugin-linguist": "0.1.4",
|
||||
"@backstage/plugin-linguist-backend": "0.3.0",
|
||||
"@backstage/plugin-linguist": "0.1.5",
|
||||
"@backstage/plugin-linguist-backend": "0.3.1",
|
||||
"@backstage/plugin-linguist-common": "0.1.0",
|
||||
"@backstage/plugin-microsoft-calendar": "0.1.4",
|
||||
"@backstage/plugin-newrelic": "0.3.37",
|
||||
"@backstage/plugin-newrelic-dashboard": "0.2.12",
|
||||
"@backstage/plugin-nomad": "0.1.0",
|
||||
"@backstage/plugin-nomad-backend": "0.1.0",
|
||||
"@backstage/plugin-octopus-deploy": "0.2.1",
|
||||
"@backstage/plugin-org": "0.6.9",
|
||||
"@backstage/plugin-org-react": "0.1.8",
|
||||
"@backstage/plugin-pagerduty": "0.6.0",
|
||||
"@backstage/plugin-periskop": "0.1.17",
|
||||
"@backstage/plugin-periskop-backend": "0.1.17",
|
||||
"@backstage/plugin-permission-backend": "0.5.21",
|
||||
"@backstage/plugin-permission-common": "0.7.6",
|
||||
"@backstage/plugin-permission-node": "0.7.9",
|
||||
"@backstage/plugin-permission-react": "0.4.13",
|
||||
"@backstage/plugin-playlist": "0.1.11",
|
||||
"@backstage/plugin-playlist-backend": "0.3.2",
|
||||
"@backstage/plugin-playlist-common": "0.1.7",
|
||||
"@backstage/plugin-proxy-backend": "0.2.40",
|
||||
"@backstage/plugin-puppetdb": "0.1.2",
|
||||
"@backstage/plugin-rollbar": "0.4.19",
|
||||
"@backstage/plugin-rollbar-backend": "0.1.43",
|
||||
"@backstage/plugin-scaffolder": "1.14.0",
|
||||
"@backstage/plugin-scaffolder-backend": "1.15.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.1.3",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.22",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.1",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.4.15",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.1.6",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.19",
|
||||
"@backstage/plugin-scaffolder-common": "1.3.1",
|
||||
"@backstage/plugin-scaffolder-node": "0.1.4",
|
||||
"@backstage/plugin-scaffolder-react": "1.5.0",
|
||||
"@backstage/plugin-search": "1.3.2",
|
||||
"@backstage/plugin-search-backend": "1.3.2",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.1.2",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.3.1",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.1.2",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.7",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.1.2",
|
||||
"@backstage/plugin-search-backend-node": "1.2.2",
|
||||
"@backstage/plugin-search-common": "1.2.4",
|
||||
"@backstage/plugin-search-react": "1.6.2",
|
||||
"@backstage/plugin-sentry": "0.5.4",
|
||||
"@backstage/plugin-shortcuts": "0.3.11",
|
||||
"@backstage/plugin-sonarqube": "0.7.0",
|
||||
"@backstage/plugin-sonarqube-backend": "0.2.0",
|
||||
"@backstage/plugin-sonarqube-react": "0.1.6",
|
||||
"@backstage/plugin-splunk-on-call": "0.4.8",
|
||||
"@backstage/plugin-stack-overflow": "0.1.17",
|
||||
"@backstage/plugin-stack-overflow-backend": "0.2.2",
|
||||
"@backstage/plugin-stackstorm": "0.1.3",
|
||||
"@backstage/plugin-tech-insights": "0.3.11",
|
||||
"@backstage/plugin-tech-insights-backend": "0.5.12",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.30",
|
||||
"@backstage/plugin-microsoft-calendar": "0.1.5",
|
||||
"@backstage/plugin-newrelic": "0.3.38",
|
||||
"@backstage/plugin-newrelic-dashboard": "0.2.13",
|
||||
"@backstage/plugin-nomad": "0.1.1",
|
||||
"@backstage/plugin-nomad-backend": "0.1.1",
|
||||
"@backstage/plugin-octopus-deploy": "0.2.2",
|
||||
"@backstage/plugin-org": "0.6.10",
|
||||
"@backstage/plugin-org-react": "0.1.9",
|
||||
"@backstage/plugin-pagerduty": "0.6.1",
|
||||
"@backstage/plugin-periskop": "0.1.18",
|
||||
"@backstage/plugin-periskop-backend": "0.1.18",
|
||||
"@backstage/plugin-permission-backend": "0.5.22",
|
||||
"@backstage/plugin-permission-common": "0.7.7",
|
||||
"@backstage/plugin-permission-node": "0.7.10",
|
||||
"@backstage/plugin-permission-react": "0.4.14",
|
||||
"@backstage/plugin-playlist": "0.1.12",
|
||||
"@backstage/plugin-playlist-backend": "0.3.3",
|
||||
"@backstage/plugin-playlist-common": "0.1.8",
|
||||
"@backstage/plugin-proxy-backend": "0.2.41",
|
||||
"@backstage/plugin-puppetdb": "0.1.3",
|
||||
"@backstage/plugin-rollbar": "0.4.20",
|
||||
"@backstage/plugin-rollbar-backend": "0.1.44",
|
||||
"@backstage/plugin-scaffolder": "1.14.1",
|
||||
"@backstage/plugin-scaffolder-backend": "1.15.1",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.23",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.2",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.4.16",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.1.7",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.20",
|
||||
"@backstage/plugin-scaffolder-common": "1.3.2",
|
||||
"@backstage/plugin-scaffolder-node": "0.1.5",
|
||||
"@backstage/plugin-scaffolder-react": "1.5.1",
|
||||
"@backstage/plugin-search": "1.3.3",
|
||||
"@backstage/plugin-search-backend": "1.3.3",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.1.3",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.3.2",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.1.3",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.8",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.1.3",
|
||||
"@backstage/plugin-search-backend-node": "1.2.3",
|
||||
"@backstage/plugin-search-common": "1.2.5",
|
||||
"@backstage/plugin-search-react": "1.6.3",
|
||||
"@backstage/plugin-sentry": "0.5.5",
|
||||
"@backstage/plugin-shortcuts": "0.3.12",
|
||||
"@backstage/plugin-sonarqube": "0.7.1",
|
||||
"@backstage/plugin-sonarqube-backend": "0.2.1",
|
||||
"@backstage/plugin-sonarqube-react": "0.1.7",
|
||||
"@backstage/plugin-splunk-on-call": "0.4.9",
|
||||
"@backstage/plugin-stack-overflow": "0.1.18",
|
||||
"@backstage/plugin-stack-overflow-backend": "0.2.3",
|
||||
"@backstage/plugin-stackstorm": "0.1.4",
|
||||
"@backstage/plugin-tech-insights": "0.3.12",
|
||||
"@backstage/plugin-tech-insights-backend": "0.5.13",
|
||||
"@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.31",
|
||||
"@backstage/plugin-tech-insights-common": "0.2.11",
|
||||
"@backstage/plugin-tech-insights-node": "0.4.4",
|
||||
"@backstage/plugin-tech-radar": "0.6.5",
|
||||
"@backstage/plugin-techdocs": "1.6.4",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.15",
|
||||
"@backstage/plugin-techdocs-backend": "1.6.3",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.0.14",
|
||||
"@backstage/plugin-techdocs-node": "1.7.2",
|
||||
"@backstage/plugin-techdocs-react": "1.1.7",
|
||||
"@backstage/plugin-todo": "0.2.21",
|
||||
"@backstage/plugin-todo-backend": "0.1.43",
|
||||
"@backstage/plugin-user-settings": "0.7.4",
|
||||
"@backstage/plugin-user-settings-backend": "0.1.10",
|
||||
"@backstage/plugin-vault": "0.1.13",
|
||||
"@backstage/plugin-vault-backend": "0.3.2",
|
||||
"@backstage/plugin-xcmetrics": "0.2.39"
|
||||
"@backstage/plugin-tech-insights-node": "0.4.5",
|
||||
"@backstage/plugin-tech-radar": "0.6.6",
|
||||
"@backstage/plugin-techdocs": "1.6.5",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.16",
|
||||
"@backstage/plugin-techdocs-backend": "1.6.4",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.0.15",
|
||||
"@backstage/plugin-techdocs-node": "1.7.3",
|
||||
"@backstage/plugin-techdocs-react": "1.1.8",
|
||||
"@backstage/plugin-todo": "0.2.22",
|
||||
"@backstage/plugin-todo-backend": "0.1.44",
|
||||
"@backstage/plugin-user-settings": "0.7.5",
|
||||
"@backstage/plugin-user-settings-backend": "0.1.11",
|
||||
"@backstage/plugin-vault": "0.1.14",
|
||||
"@backstage/plugin-vault-backend": "0.3.3",
|
||||
"@backstage/plugin-xcmetrics": "0.2.40"
|
||||
},
|
||||
"changesets": [
|
||||
"afraid-windows-rule",
|
||||
"angry-phones-wash",
|
||||
"beige-actors-melt",
|
||||
"chatty-buttons-deny",
|
||||
"cli-always-yarn-pack-freal",
|
||||
"cold-hounds-cheat",
|
||||
"cool-beans-tap",
|
||||
"cool-starfishes-love",
|
||||
"create-app-1687867724",
|
||||
"cuddly-guests-hide",
|
||||
"cyan-shirts-deny",
|
||||
"dirty-wasps-draw",
|
||||
"dull-onions-remember",
|
||||
"fluffy-frogs-change",
|
||||
"fluffy-readers-own",
|
||||
"forty-kids-do",
|
||||
"fresh-bears-yawn",
|
||||
"green-otters-wait",
|
||||
"heavy-jeans-refuse",
|
||||
"khaki-rocks-do",
|
||||
"lazy-frogs-destroy",
|
||||
"lemon-cycles-enjoy",
|
||||
"many-ants-poke",
|
||||
"mean-bobcats-taste",
|
||||
"mighty-pandas-deny",
|
||||
"mighty-shoes-refuse",
|
||||
"neat-spiders-glow",
|
||||
"old-rules-give",
|
||||
"polite-shrimps-confess",
|
||||
"popular-crabs-deny",
|
||||
"popular-icons-doubt",
|
||||
"popular-kangaroos-accept",
|
||||
"pretty-apes-know",
|
||||
"pretty-falcons-drive",
|
||||
"purple-feet-approve",
|
||||
"purple-starfishes-design",
|
||||
"red-cherries-draw",
|
||||
"renovate-46eac46",
|
||||
"renovate-739552f",
|
||||
"renovate-f316d5e",
|
||||
"rotten-colts-decide",
|
||||
"seven-pillows-hear",
|
||||
"shiny-meals-chew",
|
||||
"short-rabbits-roll",
|
||||
"silent-oranges-explode",
|
||||
"silly-chairs-protect",
|
||||
"silver-balloons-sniff",
|
||||
"sixty-humans-rescue",
|
||||
"sour-humans-begin",
|
||||
"strange-baboons-look",
|
||||
"sweet-cameras-kick",
|
||||
"sweet-pots-rescue",
|
||||
"tame-carpets-smell",
|
||||
"tender-clouds-promise",
|
||||
"tender-oranges-change",
|
||||
"thin-countries-battle",
|
||||
"tough-flowers-suffer",
|
||||
"twenty-seas-float",
|
||||
"wicked-ears-scream",
|
||||
"yellow-schools-relax",
|
||||
"young-frogs-burn"
|
||||
]
|
||||
"changesets": []
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
|
||||
---
|
||||
|
||||
Update readme and instructions
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-adr-backend': patch
|
||||
---
|
||||
|
||||
Added support for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-lighthouse-backend': patch
|
||||
---
|
||||
|
||||
Added support for the [new backend system](https://backstage.io/docs/backend-system/)
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now it's changed the behaviour of the button and focuses on the `h1` tag on the page.
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/plugin-playlist': patch
|
||||
'@backstage/plugin-nomad': patch
|
||||
---
|
||||
|
||||
Break some internal circular import chains
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Parse unicode characters in name for avatar component
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
Make pod drawer headings consistent
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Updated dependency `esbuild` to `^0.18.0`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/codemods': patch
|
||||
---
|
||||
|
||||
Updated dependency `jscodeshift` to `^0.15.0`.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/plugin-codescene': patch
|
||||
'@backstage/plugin-sonarqube': patch
|
||||
---
|
||||
|
||||
Updated dependency `rc-progress` to `3.4.2`.
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': minor
|
||||
---
|
||||
|
||||
**BREAKING** Allow incremental event handlers to be async; Force event handler
|
||||
to indicate if it made a change. Instead of returning `null` or `undefined` from an event
|
||||
handler to indicate no-oop, instead return the value { type: "ignored" }.
|
||||
|
||||
**before**
|
||||
|
||||
```javascript
|
||||
import { createDelta, shouldIgnore } from "./my-delta-creater";
|
||||
|
||||
eventHandler: {
|
||||
onEvent(params) {
|
||||
if (shouldIgnore(params)) {
|
||||
return;
|
||||
}
|
||||
return createDelta(params);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**after**
|
||||
|
||||
```javascript
|
||||
import { createDelta, shouldIgnore } from "./my-delta-creater";
|
||||
|
||||
eventHandler: {
|
||||
async onEvent(params) {
|
||||
if (shouldIgnore(params) {
|
||||
return { type: "ignored" };
|
||||
}
|
||||
// code to create delta can now be async if needed
|
||||
return await createDelta(params);
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
'@backstage/config-loader': minor
|
||||
---
|
||||
|
||||
Adds a new `deepVisibility` schema keyword that sets child visibility recursively to the defined value, respecting preexisting values or child `deepVisibility`.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
export interface Config {
|
||||
/**
|
||||
* Enforces a default of `secret` instead of `backend` for this object.
|
||||
* @deepVisibility secret
|
||||
*/
|
||||
mySecretProperty: {
|
||||
type: 'object';
|
||||
properties: {
|
||||
secretValue: {
|
||||
type: 'string';
|
||||
};
|
||||
|
||||
verySecretProperty: {
|
||||
type: 'string';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Example of a schema that would not be allowed:
|
||||
|
||||
```ts
|
||||
export interface Config {
|
||||
/**
|
||||
* Set the top level property to secret, enforcing a default of `secret` instead of `backend` for this object.
|
||||
* @deepVisibility secret
|
||||
*/
|
||||
mySecretProperty: {
|
||||
type: 'object';
|
||||
properties: {
|
||||
frontendUrl: {
|
||||
/**
|
||||
* We can NOT override the visibility to reveal a property to the front end.
|
||||
* @visibility frontend
|
||||
*/
|
||||
type: 'string';
|
||||
};
|
||||
|
||||
verySecretProperty: {
|
||||
type: 'string';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/repo-tools': patch
|
||||
---
|
||||
|
||||
Update `schema openapi generate` command to now create a default router that can be imported and used directly.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
Corrected the installation instructions.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Fixed a bug where the proxy endpoint would error when used in combination with
|
||||
a local kubectl proxy process and a token-based auth strategy on-cluster.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-entity-feedback-backend': patch
|
||||
---
|
||||
|
||||
Added support for the new backend system
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-home-react': patch
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Add possibility to customize the settings widget for different
|
||||
properties by using the `uiSchema` provided by the json-schema.
|
||||
More information here: https://rjsf-team.github.io/react-jsonschema-form/docs/api-reference/uiSchema
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-cost-insights': patch
|
||||
'@backstage/plugin-user-settings': patch
|
||||
'@backstage/theme': patch
|
||||
'@backstage/test-utils': patch
|
||||
'@backstage/core-plugin-api': patch
|
||||
'@backstage/core-components': patch
|
||||
'@backstage/core-app-api': patch
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fixing MUI / Material UI references
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
Fixed spacing for success message
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Display a warning alert if relations are defined, which don't exist in the catalog.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/plugin-todo-backend': minor
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
'@backstage/plugin-search-backend': minor
|
||||
---
|
||||
|
||||
Now performs request validation based on OpenAPI schema through `@backstage/backend-openapi-utils`. Error responses for invalid input, like `"a"` instead of a number, may have changed.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': minor
|
||||
'@backstage/plugin-catalog-node': minor
|
||||
---
|
||||
|
||||
Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-home': patch
|
||||
---
|
||||
|
||||
Fix missing column breakpoints in `CustomHompageGrid`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Updated included Dockerfile to include `g++`. Also updated the comments to note that some of the dependencies are also needed by isolated-vm
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Remove zooming in restrictions in the catalog graph
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
---
|
||||
|
||||
Changed Google cloud auth scope to read-only.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
---
|
||||
|
||||
Support for Token Endpoint Auth Method for OIDC Provider
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-adr-common': patch
|
||||
'@backstage/plugin-adr': patch
|
||||
---
|
||||
|
||||
fixed error with date parsing.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-plugin-api': patch
|
||||
---
|
||||
|
||||
Change `IconComponent` type to be compatible with Material UI v5 icons.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Update readme with a valid link to k8s documentation
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
'@backstage/plugin-devtools': patch
|
||||
'@backstage/plugin-puppetdb': patch
|
||||
'@backstage/plugin-nomad': patch
|
||||
---
|
||||
|
||||
update some peer dependencies to silence yarn install
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fix keyboard navigation & focus highlight on Select component.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
Fixed a bug in `gitlab:group:ensureExists` where `repos` was always set as the root group.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/theme': patch
|
||||
---
|
||||
|
||||
Override the spacing to a v5 compliant method
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities': patch
|
||||
---
|
||||
|
||||
install command points to correct package name
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
run: ls microsite/build && ls microsite/build/storybook
|
||||
|
||||
- name: Deploy both microsite and storybook to gh-pages
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.2
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.3
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: microsite/build
|
||||
|
||||
+4
-3
@@ -8,7 +8,7 @@ The authentication system in Backstage serves two distinct purposes: sign-in and
|
||||
identification of users, as well as delegating access to third-party resources. It is possible to
|
||||
configure Backstage to have any number of authentication providers, but only
|
||||
one of these will typically be used for sign-in, with the rest being used to provide
|
||||
access external resources.
|
||||
access to external resources.
|
||||
|
||||
## Built-in Authentication Providers
|
||||
|
||||
@@ -72,7 +72,7 @@ both in the frontend app, as well as the `auth` backend plugin. For information
|
||||
on how to configure the backend app, see [Sign-in Identities and Resolvers](./identity-resolver.md).
|
||||
The rest of this section will focus on how to configure sign-in for the frontend app.
|
||||
|
||||
Sign-in is configured by providing a custom `SignInPage` app component. It will
|
||||
Sign-in is configured by providing a custom `SignInPage` app component. It will be
|
||||
rendered before any other routes in the app and is responsible for providing the
|
||||
identity of the current user. The `SignInPage` can render any number of pages and
|
||||
components, or just blank space with logic running in the background. In the end
|
||||
@@ -113,7 +113,8 @@ const app = createApp({
|
||||
```
|
||||
|
||||
You can also use the `providers` prop to enable multiple sign-in methods, for example
|
||||
allows allowing guest access:
|
||||
|
||||
- allowing guest access:
|
||||
|
||||
```tsx title="packages/app/src/App.tsx"
|
||||
const app = createApp({
|
||||
|
||||
@@ -101,6 +101,19 @@ export const apis: AnyApiFactory[] = [
|
||||
},
|
||||
environment: configApi.getOptionalString('auth.environment'),
|
||||
defaultScopes: ['openid', 'profile', 'email'],
|
||||
popupOptions: {
|
||||
// optional, used to customize login in popup size
|
||||
size: {
|
||||
fullscreen: true,
|
||||
},
|
||||
/**
|
||||
* or specify popup width and height
|
||||
* size: {
|
||||
width: 1000,
|
||||
height: 1000,
|
||||
}
|
||||
*/
|
||||
},
|
||||
}),
|
||||
}),
|
||||
/* highlight-add-end */
|
||||
|
||||
@@ -0,0 +1,332 @@
|
||||
---
|
||||
id: ui-options-examples
|
||||
title: ui:options Examples
|
||||
description: The input props that can be specified under ui:options for different pickers
|
||||
---
|
||||
|
||||
## EntityPicker
|
||||
|
||||
The input props that can be specified under `ui:options` for the `EntityPicker` field extension.
|
||||
|
||||
### `allowArbitraryValues`
|
||||
|
||||
Whether to allow arbitrary user input. Defaults to true.
|
||||
|
||||
`allowArbitraryValues` provides input validation when selecting an entity as the values you enter will correspond to a valid entity.
|
||||
|
||||
- Adding a valid entity with `allowArbitraryValues` as `false`
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
allowArbitraryValues: false
|
||||
```
|
||||
|
||||
- Adding an arbitrary entity with `allowArbitraryValues` as `true` (default value)
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
allowArbitraryValues: true
|
||||
```
|
||||
|
||||
### `allowedKinds`
|
||||
|
||||
DEPRECATED: Use `catalogFilter` instead.
|
||||
|
||||
### `catalogFilter`
|
||||
|
||||
`catalogFilter` supports filtering options by any field(s) of an entity.
|
||||
|
||||
- Get all entities of kind `Group`
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
```
|
||||
|
||||
- Get entities of kind `Group` and spec.type `team`
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
spec.type: team
|
||||
```
|
||||
|
||||
For the full details on the spec.\* values see [here](../software-catalog/descriptor-format.md#kind-group).
|
||||
|
||||
### `defaultKind`
|
||||
|
||||
The default entity kind.
|
||||
|
||||
```yaml
|
||||
system:
|
||||
title: System
|
||||
type: string
|
||||
description: System of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
kind: System
|
||||
defaultKind: System
|
||||
```
|
||||
|
||||
### `defaultNamespace`
|
||||
|
||||
The ID of a namespace that the entity belongs to. The default value is `default`.
|
||||
|
||||
- Listing all entities in the `default` namespace (default value)
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
defaultNamespace: default
|
||||
```
|
||||
|
||||
- Listing all entities in the `payment` namespace
|
||||
|
||||
```yaml
|
||||
entity:
|
||||
title: Entity
|
||||
type: string
|
||||
description: Entity of the component
|
||||
ui:field: EntityPicker
|
||||
ui:options:
|
||||
defaultNamespace: payment
|
||||
```
|
||||
|
||||
## `OwnerPicker`
|
||||
|
||||
The input props that can be specified under `ui:options` for the `OwnerPicker` field extension.
|
||||
|
||||
### `allowArbitraryValues`
|
||||
|
||||
Whether to allow arbitrary user input. Defaults to true.
|
||||
|
||||
`allowArbitraryValues` provides input validation when selecting an owner as the values you enter will correspond to a valid owner.
|
||||
|
||||
- Adding a valid owner with `allowArbitraryValues` as `false`
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
allowArbitraryValues: false
|
||||
```
|
||||
|
||||
- Adding an arbitrary owner with `allowArbitraryValues` as `true` (default value)
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
allowArbitraryValues: true
|
||||
```
|
||||
|
||||
### `allowedKinds`
|
||||
|
||||
DEPRECATED: Use `catalogFilter` instead.
|
||||
|
||||
### `catalogFilter`
|
||||
|
||||
`catalogFilter` supports filtering options by any field(s) of an entity.
|
||||
|
||||
- Get all entities of kind `Group`
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
```
|
||||
|
||||
- Get entities of kind `Group` and spec.type `team`
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
spec.type: team
|
||||
```
|
||||
|
||||
For the full details on the spec.\* values see [here](../software-catalog/descriptor-format.md#kind-group).
|
||||
|
||||
### `defaultNamespace`
|
||||
|
||||
The ID of a namespace that the owner belongs to. The default value is `default`.
|
||||
|
||||
- Listing owners in the `default` namespace (default value)
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
defaultNamespace: default
|
||||
```
|
||||
|
||||
- Listing owners in the `payment` namespace
|
||||
|
||||
```yaml
|
||||
owner:
|
||||
title: Owner
|
||||
type: string
|
||||
description: Owner of the component
|
||||
ui:field: OwnerPicker
|
||||
ui:options:
|
||||
catalogFilter:
|
||||
- kind: Group
|
||||
defaultNamespace: payment
|
||||
```
|
||||
|
||||
## RepoUrlPicker
|
||||
|
||||
The input props that can be specified under `ui:options` for the `RepoUrlPicker` field extension.
|
||||
|
||||
### `allowedHosts`
|
||||
|
||||
The `allowedHosts` part should be set to where you wish to enable this template
|
||||
to publish to. And it can be any host that is listed in your integrations'
|
||||
config in `app-config.yaml`.
|
||||
|
||||
- Publish only to repositories from `github.com`
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
allowedHosts:
|
||||
- github.com
|
||||
```
|
||||
|
||||
### `allowedOrganizations`
|
||||
|
||||
List of allowed organizations in the given SCM platform. You can restrict the template to publish to a set of organizations.
|
||||
|
||||
- Publish only to repositories from organization `my_organization`
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
allowedOrganizations:
|
||||
- my_organization
|
||||
```
|
||||
|
||||
### `allowedProjects`
|
||||
|
||||
List of allowed projects in the given SCM platform. You can restrict the template to publish to a set of projects.
|
||||
|
||||
- Publish only to repositories from project `project_1`
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
allowedProjects:
|
||||
- project_1
|
||||
```
|
||||
|
||||
### `allowedRepos`
|
||||
|
||||
List of allowed repos in the given SCM platform. You can restrict the template to publish to a set of repository names.
|
||||
|
||||
- Publish to only `repo_1` and `repo_2` repositories
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
allowedRepos:
|
||||
- repo_1
|
||||
- repo_2
|
||||
```
|
||||
|
||||
### `allowedOwners`
|
||||
|
||||
List of allowed owners in the given SCM platform. You can restrict the template to publish to repositories owned by specific users/groups by setting the `allowedOwners` option.
|
||||
|
||||
- Publish to only repositories from owner `owner_1` and `owner_2`
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
allowedOwners:
|
||||
- owner_1
|
||||
- owner_2
|
||||
```
|
||||
|
||||
### `requestUserCredentials`
|
||||
|
||||
If defined will request user credentials to auth against the given SCM platform.
|
||||
|
||||
```yaml
|
||||
repoUrl:
|
||||
title: Repository Location
|
||||
type: string
|
||||
ui:field: RepoUrlPicker
|
||||
ui:options:
|
||||
requestUserCredentials:
|
||||
secretsKey: USER_OAUTH_TOKEN
|
||||
additionalScopes:
|
||||
github:
|
||||
- workflow:write
|
||||
```
|
||||
|
||||
`secretsKey` is the key used within the template secrets context to store the credential and `additionalScopes` is any additional permission scopes to request.
|
||||
|
||||
The supported `additionalScopes` values are `gerrit`, `github`, `gitlab`, `bitbucket`, and `azure`.
|
||||
@@ -352,6 +352,8 @@ specific set of repository names. A full example could look like this:
|
||||
- backstage
|
||||
```
|
||||
|
||||
For a list of all possible `ui:options` input props for `RepoUrlPicker`, please visit [here](./ui-options-examples.md#repourlpicker).
|
||||
|
||||
The `RepoUrlPicker` is a custom field that we provide part of the
|
||||
`plugin-scaffolder`. You can provide your own custom fields by
|
||||
[writing your own Custom Field Extensions](./writing-custom-field-extensions.md)
|
||||
@@ -472,6 +474,8 @@ owner:
|
||||
kind: [Group, User]
|
||||
```
|
||||
|
||||
For a list of all possible `ui:options` input props for `OwnerPicker`, please visit [here](./ui-options-examples.md#ownerpicker).
|
||||
|
||||
#### `catalogFilter`
|
||||
|
||||
The `catalogFilter` allow you to filter the list entities using any of the [catalog api filters](https://backstage.io/docs/features/software-catalog/software-catalog-api#filtering):
|
||||
|
||||
@@ -66,7 +66,7 @@ By default all internal users are allowed to create and delete entities. If this
|
||||
|
||||
## Scaffolder
|
||||
|
||||
By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/patriksimek/vm2) to mitigate the possibility of remote code execution attacks.
|
||||
By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/laverdet/isolated-vm) to mitigate the possibility of remote code execution attacks.
|
||||
|
||||
The Scaffolder often has elevated permissions to for example create repositories in a Github organization. The integrator should therefore be cautious of Scaffolder Templates that for example delete or update existing resources as the user input is typically user defined and can therefore delete or modify resources maliciously or by mistake.
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ their own release cadence and versioning policy.
|
||||
|
||||
## Main Release Line
|
||||
|
||||
Release cadence: Monthly
|
||||
Release cadence: Monthly, specifically on the Tuesday before the third Wednesday of each month. The first release took place in March 2022.
|
||||
|
||||
The main release line in versioned with a major, minor and patch version but
|
||||
does **not** adhere to [semver](https://semver.org). The version format is
|
||||
@@ -172,3 +172,13 @@ When we say _Supporting_ a Node.js release, that means the following:
|
||||
- The CI pipeline in the main Backstage repo tests towards the supported releases, and we encourage any other Backstage related projects to do the same.
|
||||
- New Backstage projects created with `@backstage/create-app` will have their `engines.node` version set accordingly.
|
||||
- Dropping compatibility with unsupported releases is not considered a breaking change. This includes using new syntax or APIs, as well as bumping dependencies that drop support for these versions.
|
||||
|
||||
## TypeScript Releases
|
||||
|
||||
The Backstage project uses [TypeScript](https://www.typescriptlang.org/) for type checking within the project, as well as external APIs and documentation. It is important to have a clear policy for which TypeScript versions we support, since we want to be able to adopt new TypeScript features, but at the same time not break existing projects that are using older versions.
|
||||
|
||||
The TypeScript release cadence is roughly every three months. An important aspect of the TypeScript versioning is that it does not follow semver. In particular, there is no differentiation between major and minor versions, both of them are breaking. One way to think about it is to merge the two, for example version 4.7 can be considered major version 47, 5.0 is 50, and so on. Within these releases there can be a number of patch releases, which do follow semver.
|
||||
|
||||
Our policy is to support the last 3 TypeScript versions, for example 4.8, 4.9, and 5.0. Converted to time, this means that we typically support the TypeScript version from the last six to nine months, depending on where in the TypeScript release window we are. This policy applies as a snapshot at the time of any given Backstage release, new TypeScript releases only apply to the following Backstage main-line release, not to the current one.
|
||||
|
||||
For anyone maintaining their own Backstage project, this means that you should strive to bump to the latest TypeScript version at least every 6 months, or you may encounter breakages as you upgrade Backstage packages. If you encounter any issues in doing so, please [file an issue in the main Backstage repository](https://github.com/backstage/backstage/issues/new/choose), as per this policy we should always support the latest version. In order to ensure that we do not start using new TypeScript features too early, the Backstage project itself uses the version at the beginning of the currently supported window, in the above example that would be version 4.8.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,87 @@
|
||||
---
|
||||
id: v1.16.0
|
||||
title: v1.16.0
|
||||
description: Backstage Release v1.16.0
|
||||
---
|
||||
|
||||
These are the release notes for the v1.16.0 release of [Backstage](https://backstage.io/).
|
||||
|
||||
A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for their hard work in getting this release developed and done. A little smaller release this time with the Summer Holidays, hope you’re all having some deserved time off also!
|
||||
|
||||
## Highlights
|
||||
|
||||
### Continued support for Material-UI V5
|
||||
|
||||
There have been some more tweaks here or there to types and the theme system to ensure a smooth future migration toward Material-UI version 5. This should be mostly transparent to adopters, but please let us know if you encounter any oddities around the theme system after upgrading to this release.
|
||||
|
||||
### More plugins support the new Backend System
|
||||
|
||||
There’s been some more plugins that have been ported across to using the new [Backend System](https://backstage.io/docs/backend-system/). They are as follows:
|
||||
|
||||
- `@backstage/plugin-adr-backend` - Contributed by [@angeliski](https://github.com/angeliski) in [#18377](https://github.com/backstage/backstage/pull/18377)
|
||||
- `@backstage/plugin-airbrake-backend` - Contributed by [@anicke](https://github.com/anicke) in [#18598](https://github.com/backstage/backstage/pull/18598)
|
||||
- `@backstage/plugin-azure-devops-backend` - Contributed by [@awanlin](https://github.com/awanlin) in [#18320](https://github.com/backstage/backstage/pull/18320)
|
||||
- `@backstage/plugin-badges-backend` - Contributed by [@awanlin](https://github.com/awanlin) in [#18464](https://github.com/backstage/backstage/pull/18464)
|
||||
- `@backstage/plugin-devtools-backend` - Contributed by [@awanlin](https://github.com/awanlin) in [#18320](https://github.com/backstage/backstage/pull/18320)
|
||||
- `@backstage/plugin-linguist-backend` - Contributed by [@awanlin](https://github.com/awanlin) in [#18320](https://github.com/backstage/backstage/pull/18320)
|
||||
- `@backstage/plugin-entity-feedback-backend` - Contributed by [@anicke](https://github.com/anicke) in [#18361](https://github.com/backstage/backstage/pull/18361)
|
||||
- `@backstage/plugin-lighthouse-backend` - Contributed by [@jroebu14](https://github.com/jroebu14) in [#18633](https://github.com/backstage/backstage/pull/18633)
|
||||
|
||||
Stay tuned for more updates on the future of the Backend System as we move to make this a stable API!
|
||||
|
||||
### **BREAKING**: `@backstage/plugin-catalog-backend-module-incremental-ingestion`
|
||||
|
||||
Incremental event handlers are now async by default, and their response shape has been changed to allow further extension.
|
||||
|
||||
Instead of returning `null` or `undefined` from an event handler to indicate no-oop, instead return the value `{ type: "ignored" }`.
|
||||
|
||||
Contributed by [@cowboyd](https://github.com/cowboyd) in [#18216](https://github.com/backstage/backstage/pull/18216)
|
||||
|
||||
### **BREAKING**: `@backstage/plugin-scaffolder-backend-module-confluence-to-markdown`
|
||||
|
||||
The configuration has been changed and the authentication property of `confluence.auth` is now an `object` instead to allow further evolution.
|
||||
|
||||
Contributed by [@jsundquist](https://github.com/jsundquist) in [#18583](https://github.com/backstage/backstage/pull/18583)
|
||||
|
||||
### `@backstage/plugin-lighthouse`
|
||||
|
||||
Added more verbose component for when no audits for a website corresponding to the provided url were found.
|
||||
|
||||
Contributed by [@Zaperex](https://github.com/Zaperex) in [#18399](https://github.com/backstage/backstage/pull/18399)
|
||||
|
||||
### `@backstage/plugin-home`
|
||||
|
||||
A reference to material-ui’s dependency has been updated from `@rjsf/material-ui` to `@rjsf/material-ui-v5`.
|
||||
|
||||
Contributed by [@mario-mui](https://github.com/mario-mui) in [#18432](https://github.com/backstage/backstage/pull/18432)
|
||||
|
||||
It is now possible to customize the settings widget for different properties by using the`uiSchema` property.
|
||||
|
||||
Contributed by [@ivangonzalezacuna](https://github.com/ivangonzalezacuna) in [#18574](https://github.com/backstage/backstage/pull/18574)
|
||||
|
||||
### `@backstage/plugin-search`
|
||||
|
||||
Fixed bug in `View Full Results` link of Search Modal that did not navigate to the full results page.
|
||||
|
||||
Contributed by [@ciprianna](https://github.com/ciprianna) in [#18407](https://github.com/backstage/backstage/pull/18407)
|
||||
|
||||
## Security Fixes
|
||||
|
||||
This release does not contain any security fixes.
|
||||
|
||||
## Upgrade path
|
||||
|
||||
We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated).
|
||||
|
||||
## Links and References
|
||||
|
||||
Below you can find a list of links and references to help you learn about and start using this new release.
|
||||
|
||||
- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/)
|
||||
- [GitHub repository](https://github.com/backstage/backstage)
|
||||
- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy)
|
||||
- [Community Discord](https://discord.gg/backstage-687207715902193673) for discussions and support
|
||||
- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.16.0-changelog.md)
|
||||
- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins)
|
||||
|
||||
Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage.
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
"releases": {
|
||||
"Release Notes": [
|
||||
"releases/v1.16.0",
|
||||
"releases/v1.15.0",
|
||||
"releases/v1.14.0",
|
||||
"releases/v1.13.0",
|
||||
"releases/v1.12.0",
|
||||
|
||||
+4
-4
@@ -10400,11 +10400,11 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0":
|
||||
version: 6.3.0
|
||||
resolution: "semver@npm:6.3.0"
|
||||
version: 6.3.1
|
||||
resolution: "semver@npm:6.3.1"
|
||||
bin:
|
||||
semver: ./bin/semver.js
|
||||
checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9
|
||||
semver: bin/semver.js
|
||||
checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
+2
-2
@@ -47,7 +47,7 @@
|
||||
"@types/react": "^17",
|
||||
"@types/react-dom": "^17"
|
||||
},
|
||||
"version": "1.16.0-next.2",
|
||||
"version": "1.16.0",
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@manypkg/get-packages": "^1.1.3"
|
||||
@@ -81,7 +81,7 @@
|
||||
"semver": "^7.5.3",
|
||||
"shx": "^0.3.2",
|
||||
"ts-node": "^10.4.0",
|
||||
"typescript": "~5.0.0"
|
||||
"typescript": "~4.9.0"
|
||||
},
|
||||
"prettier": "@spotify/prettier-config",
|
||||
"lint-staged": {
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.4.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/theme@0.4.1
|
||||
- @backstage/core-components@0.13.3
|
||||
- @backstage/core-app-api@1.9.0
|
||||
- @backstage/core-plugin-api@1.5.3
|
||||
- @backstage/plugin-permission-react@0.4.14
|
||||
|
||||
## 1.4.1-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"version": "1.4.1-next.2",
|
||||
"version": "1.4.1",
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"main": "dist/index.esm.js",
|
||||
|
||||
@@ -1,5 +1,80 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.85
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-search@1.3.3
|
||||
- @backstage/plugin-devtools@0.1.2
|
||||
- @backstage/cli@0.22.9
|
||||
- @backstage/theme@0.4.1
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.1.1
|
||||
- @backstage/plugin-stackstorm@0.1.4
|
||||
- @backstage/plugin-scaffolder-react@1.5.1
|
||||
- @backstage/plugin-airbrake@0.3.20
|
||||
- @backstage/plugin-lighthouse@0.4.5
|
||||
- @backstage/plugin-catalog-import@0.9.10
|
||||
- @backstage/plugin-dynatrace@7.0.0
|
||||
- @backstage/plugin-catalog-react@1.8.0
|
||||
- @backstage/plugin-home@0.5.4
|
||||
- @backstage/core-components@0.13.3
|
||||
- @backstage/plugin-playlist@0.1.12
|
||||
- @backstage/plugin-nomad@0.1.1
|
||||
- @backstage/plugin-kubernetes@0.9.3
|
||||
- @backstage/core-app-api@1.9.0
|
||||
- @backstage/plugin-cost-insights@0.12.9
|
||||
- @backstage/plugin-user-settings@0.7.5
|
||||
- @backstage/core-plugin-api@1.5.3
|
||||
- @backstage/plugin-adr@0.6.3
|
||||
- @backstage/plugin-puppetdb@0.1.3
|
||||
- @backstage/app-defaults@1.4.1
|
||||
- @backstage/catalog-model@1.4.1
|
||||
- @backstage/config@1.0.8
|
||||
- @backstage/integration-react@1.1.15
|
||||
- @backstage/plugin-apache-airflow@0.2.13
|
||||
- @backstage/plugin-api-docs@0.9.6
|
||||
- @backstage/plugin-azure-devops@0.3.2
|
||||
- @backstage/plugin-azure-sites@0.1.9
|
||||
- @backstage/plugin-badges@0.2.44
|
||||
- @backstage/plugin-catalog-common@1.0.15
|
||||
- @backstage/plugin-catalog-graph@0.2.32
|
||||
- @backstage/plugin-circleci@0.3.20
|
||||
- @backstage/plugin-cloudbuild@0.3.20
|
||||
- @backstage/plugin-code-coverage@0.2.13
|
||||
- @backstage/plugin-entity-feedback@0.2.3
|
||||
- @backstage/plugin-explore@0.4.6
|
||||
- @backstage/plugin-gcalendar@0.3.16
|
||||
- @backstage/plugin-gcp-projects@0.3.39
|
||||
- @backstage/plugin-github-actions@0.6.1
|
||||
- @backstage/plugin-gocd@0.1.26
|
||||
- @backstage/plugin-graphiql@0.2.52
|
||||
- @backstage/plugin-jenkins@0.8.2
|
||||
- @backstage/plugin-kafka@0.3.20
|
||||
- @backstage/plugin-linguist@0.1.5
|
||||
- @backstage/plugin-linguist-common@0.1.0
|
||||
- @backstage/plugin-microsoft-calendar@0.1.5
|
||||
- @backstage/plugin-newrelic@0.3.38
|
||||
- @backstage/plugin-newrelic-dashboard@0.2.13
|
||||
- @backstage/plugin-octopus-deploy@0.2.2
|
||||
- @backstage/plugin-org@0.6.10
|
||||
- @backstage/plugin-pagerduty@0.6.1
|
||||
- @backstage/plugin-permission-react@0.4.14
|
||||
- @backstage/plugin-rollbar@0.4.20
|
||||
- @backstage/plugin-scaffolder@1.14.1
|
||||
- @backstage/plugin-search-common@1.2.5
|
||||
- @backstage/plugin-search-react@1.6.3
|
||||
- @backstage/plugin-sentry@0.5.5
|
||||
- @backstage/plugin-shortcuts@0.3.12
|
||||
- @backstage/plugin-stack-overflow@0.1.18
|
||||
- @backstage/plugin-tech-insights@0.3.12
|
||||
- @backstage/plugin-tech-radar@0.6.6
|
||||
- @backstage/plugin-techdocs@1.6.5
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.0.15
|
||||
- @backstage/plugin-techdocs-react@1.1.8
|
||||
- @backstage/plugin-todo@0.2.22
|
||||
- @internal/plugin-catalog-customized@0.0.12
|
||||
|
||||
## 0.2.85-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.85-next.2",
|
||||
"version": "0.2.85",
|
||||
"private": true,
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 0.4.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/errors@1.2.1
|
||||
- @backstage/backend-common@0.19.1
|
||||
- @backstage/backend-plugin-api@0.5.4
|
||||
- @backstage/backend-tasks@0.5.4
|
||||
- @backstage/cli-common@0.1.12
|
||||
- @backstage/config@1.0.8
|
||||
- @backstage/config-loader@1.3.2
|
||||
- @backstage/types@1.1.0
|
||||
- @backstage/plugin-auth-node@0.2.16
|
||||
- @backstage/plugin-permission-node@0.7.10
|
||||
|
||||
## 0.4.5-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-app-api",
|
||||
"description": "Core API used by Backstage backend apps",
|
||||
"version": "0.4.5-next.0",
|
||||
"version": "0.4.5",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
# @backstage/backend-common
|
||||
|
||||
## 0.19.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 787ddcc5ef99: use `Readable.from` to explicitly convert the `buffer` from `node-fetch` to a `Readable` stream
|
||||
- Updated dependencies
|
||||
- @backstage/errors@1.2.1
|
||||
- @backstage/backend-app-api@0.4.5
|
||||
- @backstage/backend-dev-utils@0.1.1
|
||||
- @backstage/backend-plugin-api@0.5.4
|
||||
- @backstage/cli-common@0.1.12
|
||||
- @backstage/config@1.0.8
|
||||
- @backstage/config-loader@1.3.2
|
||||
- @backstage/integration@1.5.1
|
||||
- @backstage/integration-aws-node@0.1.5
|
||||
- @backstage/types@1.1.0
|
||||
|
||||
## 0.19.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-common",
|
||||
"description": "Common functionality library for Backstage backends",
|
||||
"version": "0.19.1-next.0",
|
||||
"version": "0.19.1",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @backstage/backend-defaults
|
||||
|
||||
## 0.1.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-common@0.19.1
|
||||
- @backstage/backend-app-api@0.4.5
|
||||
- @backstage/backend-plugin-api@0.5.4
|
||||
|
||||
## 0.1.12-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@backstage/backend-defaults",
|
||||
"description": "Backend defaults used by Backstage backend apps",
|
||||
"version": "0.1.12-next.0",
|
||||
"version": "0.1.12",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"publishConfig": {
|
||||
|
||||
@@ -1,5 +1,36 @@
|
||||
# example-backend-next
|
||||
|
||||
## 0.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-kubernetes-backend@0.11.2
|
||||
- @backstage/plugin-badges-backend@0.2.2
|
||||
- @backstage/plugin-devtools-backend@0.1.2
|
||||
- @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/backend-defaults@0.1.12
|
||||
- @backstage/backend-tasks@0.5.4
|
||||
- @backstage/plugin-app-backend@0.3.47
|
||||
- @backstage/plugin-auth-node@0.2.16
|
||||
- @backstage/plugin-permission-backend@0.5.22
|
||||
- @backstage/plugin-permission-common@0.7.7
|
||||
- @backstage/plugin-permission-node@0.7.10
|
||||
- @backstage/plugin-search-backend@1.3.3
|
||||
- @backstage/plugin-search-backend-module-catalog@0.1.3
|
||||
- @backstage/plugin-search-backend-module-explore@0.1.3
|
||||
- @backstage/plugin-search-backend-module-techdocs@0.1.3
|
||||
- @backstage/plugin-search-backend-node@1.2.3
|
||||
- @backstage/plugin-techdocs-backend@1.6.4
|
||||
- @backstage/plugin-todo-backend@0.1.44
|
||||
|
||||
## 0.0.13-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-backend-next",
|
||||
"version": "0.0.13-next.2",
|
||||
"version": "0.0.13",
|
||||
"main": "dist/index.cjs.js",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -13,16 +13,56 @@ This package is meant to provide a typed Express router for an OpenAPI spec. Bas
|
||||
2. In your plugin's `src/service/createRouter.ts`,
|
||||
|
||||
```ts
|
||||
import { ApiRouter } from `@backstage/backend-openapi-utils`;
|
||||
import spec from '../schema/openapi.generated';
|
||||
import { createOpenApiRouter } from '../schema/openapi.generated';
|
||||
// ...
|
||||
export function createRouter() {
|
||||
const router = Router() as ApiRouter<typeof spec>;
|
||||
// ...
|
||||
return router;
|
||||
const router = createOpenApiRouter();
|
||||
// add routes to router, it's just an express router.
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
3. Add `@backstage/backend-openapi-utils` to your `package.json`'s `dependencies`.
|
||||
|
||||
Why do I need to add this to `dependencies`? If you check the `src/schema/openapi.generated.ts` file, we're creating a router stub for you with the `@backstage/backend-openapi-utils` package.
|
||||
|
||||
### Customization
|
||||
|
||||
If the out of the box `router` doesn't work, you can do the following,
|
||||
|
||||
```ts
|
||||
import { createOpenApiRouter } from '../schema/openapi.generated';
|
||||
// ...
|
||||
export function createRouter() {
|
||||
// See https://github.com/cdimascio/express-openapi-validator/wiki/Documentation for available options.
|
||||
const router = createOpenApiRouter(validatorOptions);
|
||||
// add routes to router, it's just an express router.
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
If you need even more control -- say for example you wanted to update the spec at runtime -- you can do the following,
|
||||
|
||||
```ts
|
||||
import { spec } from '../schema/openapi.generated';
|
||||
import { createValidatedOpenApiRouter } from '@backstage/backend-openapi-utils';
|
||||
// ...
|
||||
export function createRouter() {
|
||||
// Update the spec here.
|
||||
const newSpec = { ...spec, myproperty123: 123 };
|
||||
|
||||
// See https://github.com/cdimascio/express-openapi-validator/wiki/Documentation for available options.
|
||||
const router = createValidatedOpenApiRouter<typeof newSpec>(
|
||||
newSpec,
|
||||
validatorOptions,
|
||||
);
|
||||
// add routes to router, it's just an express router.
|
||||
return router;
|
||||
}
|
||||
```
|
||||
|
||||
## INTERNAL
|
||||
|
||||
### Limitations
|
||||
|
||||
1. `as const` makes all fields `readonly`
|
||||
@@ -40,6 +80,10 @@ Router() as ApiRouter<DeepWriteable<typeof spec>>
|
||||
|
||||
## Future Work
|
||||
|
||||
### Runtime validation
|
||||
### Response Validation
|
||||
|
||||
Using a package like [`express-openapi-validator`](https://www.npmjs.com/package/express-openapi-validator), would allow us to remove [validation of request bodies with `AJV`](https://github.com/backstage/backstage/blob/e0506af8fc54074a160fb91c83d6cae8172d3bb3/plugins/catalog-backend/src/service/util.ts#L58). However, `AJV` currently doesn't have support for OpenAPI 3.1 and `express-openapi-validator` enforces full URL matching for paths, meaning it cannot be mounted at the router level.
|
||||
This is a murky ground and something that will take a while to gain adoption. For now, keep responses in the spec and at the type level, but will need to work to drive adoption of response validation.
|
||||
|
||||
### Common Error Format
|
||||
|
||||
With the new `createRouter` method, we can start to control error response formats for input and coercion errors.
|
||||
|
||||
@@ -7,10 +7,12 @@ import type { ContentObject } from 'openapi3-ts';
|
||||
import type core from 'express-serve-static-core';
|
||||
import { FromSchema } from 'json-schema-to-ts';
|
||||
import { JSONSchema7 } from 'json-schema-to-ts';
|
||||
import { middleware } from 'express-openapi-validator';
|
||||
import type { OpenAPIObject } from 'openapi3-ts';
|
||||
import type { ParameterObject } from 'openapi3-ts';
|
||||
import type { ReferenceObject } from 'openapi3-ts';
|
||||
import type { RequestBodyObject } from 'openapi3-ts';
|
||||
import { RequestHandler } from 'express';
|
||||
import type { ResponseObject } from 'openapi3-ts';
|
||||
import { Router } from 'express';
|
||||
import type { SchemaObject } from 'openapi3-ts';
|
||||
@@ -79,6 +81,15 @@ type CookieSchema<
|
||||
Method extends DocPathMethod<Doc, Path>,
|
||||
> = ParametersSchema<Doc, DocPath<Doc, Path>, Method, ImmutableCookieObject>;
|
||||
|
||||
// @public
|
||||
export function createValidatedOpenApiRouter<T extends RequiredDoc>(
|
||||
spec: T,
|
||||
options?: {
|
||||
validatorOptions?: Partial<Parameters<typeof middleware>['0']>;
|
||||
middleware?: RequestHandler[];
|
||||
},
|
||||
): ApiRouter<T>;
|
||||
|
||||
// @public (undocumented)
|
||||
type DiscriminateUnion<T, K extends keyof T, V extends T[K]> = Extract<
|
||||
T,
|
||||
@@ -117,15 +128,18 @@ type DocParameters<
|
||||
Doc extends RequiredDoc,
|
||||
Path extends Extract<keyof Doc['paths'], string>,
|
||||
Method extends keyof Doc['paths'][Path],
|
||||
> = DocOperation<Doc, Path, Method>['parameters'] extends ReadonlyArray<any>
|
||||
? {
|
||||
[Index in keyof DocOperation<
|
||||
Doc,
|
||||
Path,
|
||||
Method
|
||||
>['parameters']]: DocParameter<Doc, Path, Method, Index>;
|
||||
}
|
||||
: never;
|
||||
> = {
|
||||
[Index in keyof DocOperation<
|
||||
Doc,
|
||||
Path,
|
||||
Method
|
||||
>['parameters'] as FromNumberStringToNumber<Index>]: DocParameter<
|
||||
Doc,
|
||||
Path,
|
||||
Method,
|
||||
Index
|
||||
>;
|
||||
};
|
||||
|
||||
// @public
|
||||
type DocPath<
|
||||
@@ -204,6 +218,10 @@ interface DocRequestMatcher<
|
||||
// @public (undocumented)
|
||||
type Filter<T, U> = T extends U ? T : never;
|
||||
|
||||
// @public
|
||||
type FromNumberStringToNumber<NumberString extends string | number | symbol> =
|
||||
NumberString extends `${infer R extends number}` ? R : never;
|
||||
|
||||
// @public (undocumented)
|
||||
type FullMap<
|
||||
T extends {
|
||||
@@ -332,6 +350,7 @@ declare namespace internal {
|
||||
ImmutablePathObject,
|
||||
ImmutableSchemaObject,
|
||||
DocParameter,
|
||||
FromNumberStringToNumber,
|
||||
DocParameters,
|
||||
ParameterSchema,
|
||||
MapToSchema,
|
||||
@@ -425,17 +444,15 @@ type ParametersSchema<
|
||||
Path extends Extract<keyof Doc['paths'], string>,
|
||||
Method extends keyof Doc['paths'][Path],
|
||||
FilterType extends ImmutableParameterObject,
|
||||
> = number extends keyof DocParameters<Doc, Path, Method>
|
||||
? MapToSchema<
|
||||
Doc,
|
||||
FullMap<
|
||||
MapDiscriminatedUnion<
|
||||
Filter<DocParameters<Doc, Path, Method>[number], FilterType>,
|
||||
'name'
|
||||
>
|
||||
>
|
||||
> = MapToSchema<
|
||||
Doc,
|
||||
FullMap<
|
||||
MapDiscriminatedUnion<
|
||||
Filter<ValueOf<DocParameters<Doc, Path, Method>>, FilterType>,
|
||||
'name'
|
||||
>
|
||||
: never;
|
||||
>
|
||||
>;
|
||||
|
||||
// @public (undocumented)
|
||||
type PathDoc = Pick<ImmutableOpenAPIObject, 'paths'>;
|
||||
|
||||
@@ -24,17 +24,21 @@
|
||||
"postpack": "backstage-cli package postpack"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "workspace:^"
|
||||
"@backstage/cli": "workspace:^",
|
||||
"supertest": "^6.1.3"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@types/express": "^4.17.6",
|
||||
"@types/express-serve-static-core": "^4.17.5",
|
||||
"express": "^4.17.1",
|
||||
"express-openapi-validator": "^5.0.4",
|
||||
"express-promise-router": "^4.1.0",
|
||||
"json-schema-to-ts": "^2.6.2",
|
||||
"lodash": "^4.17.21",
|
||||
"openapi3-ts": "^3.1.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export default {
|
||||
openapi: '3.0.2',
|
||||
info: {
|
||||
title: 'Swagger Petstore - OpenAPI 3.0',
|
||||
description:
|
||||
"This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about\nSwagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach!\nYou can now help us improve the API whether it's by making changes to the definition itself or to the code.\nThat way, with time, we can improve the API in general, and expose some of the new features in OAS3.\n\nSome useful links:\n- [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)\n- [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)",
|
||||
termsOfService: 'http://swagger.io/terms/',
|
||||
contact: {
|
||||
email: 'apiteam@swagger.io',
|
||||
},
|
||||
license: {
|
||||
name: 'Apache 2.0',
|
||||
url: 'http://www.apache.org/licenses/LICENSE-2.0.html',
|
||||
},
|
||||
version: '1.0.17',
|
||||
},
|
||||
externalDocs: {
|
||||
description: 'Find out more about Swagger',
|
||||
url: 'http://swagger.io',
|
||||
},
|
||||
servers: [
|
||||
{
|
||||
url: '/',
|
||||
},
|
||||
],
|
||||
paths: {
|
||||
'/pet/{petId}': {
|
||||
get: {
|
||||
summary: 'Find pet by ID',
|
||||
description: 'Returns a single pet',
|
||||
operationId: 'getPetById',
|
||||
parameters: [
|
||||
{
|
||||
name: 'petId',
|
||||
in: 'path',
|
||||
description: 'ID of pet to return',
|
||||
required: true,
|
||||
schema: {
|
||||
type: 'integer',
|
||||
format: 'int64',
|
||||
},
|
||||
},
|
||||
],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'successful operation',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: {
|
||||
$ref: '#/components/schemas/Pet',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
'400': {
|
||||
description: 'Invalid ID supplied',
|
||||
},
|
||||
'404': {
|
||||
description: 'Pet not found',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
components: {
|
||||
schemas: {
|
||||
Pet: {
|
||||
required: ['name', 'photoUrls'],
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
format: 'int64',
|
||||
example: 10,
|
||||
},
|
||||
name: {
|
||||
type: 'string',
|
||||
example: 'doggie',
|
||||
},
|
||||
photoUrls: {
|
||||
type: 'array',
|
||||
xml: {
|
||||
wrapped: true,
|
||||
},
|
||||
items: {
|
||||
type: 'string',
|
||||
xml: {
|
||||
name: 'photoUrl',
|
||||
},
|
||||
},
|
||||
},
|
||||
status: {
|
||||
type: 'string',
|
||||
description: 'pet status in the store',
|
||||
enum: ['available', 'pending', 'sold'],
|
||||
},
|
||||
},
|
||||
xml: {
|
||||
name: 'pet',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user