Merge branch 'master' into feat/add-devtools-extension
Signed-off-by: secustor <sebastian@poxhofer.at> # Conflicts: # yarn.lock
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Creates a plugin that redirects from the Home page to the Catalog index page to avoid seeing a not found page error when starting the app.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Add missing class for flex: baseline
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Fix a potential race condition in EntityListProvider when selecting filters
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fixed the `new-frontend-plugin` template that was incorrectly passing `id` instead of `pluginId` to `createFrontendPlugin` and unnecessarily importing `React`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
The 'get-catalog-entity' action now throws a ConflictError instead of generic Error if multiple entities are found, so MCP call doesn't fail with 500.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-org': patch
|
||||
---
|
||||
|
||||
Fixing issue with extra slash in the routing
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
---
|
||||
|
||||
Improved the types of `createFrontendPlugin` and `createFrontendModule` so that errors due to incompatible options are indicated more clearly.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Fix Select component to properly attach aria-label and aria-labelledby props to the rendered element for improved accessibility.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-backend': minor
|
||||
---
|
||||
|
||||
Techdocs: support HumanDuration for cache TTL and timeout configuration
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': minor
|
||||
---
|
||||
|
||||
The `mockServices.rootConfig()` instance now has an `update` method that can be used to test configuration subscriptions and updates.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fixed module federation config by only setting `import: false` on shared libraries for remote.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-mcp-actions-backend': patch
|
||||
---
|
||||
|
||||
The MCP backend will now convert known Backstage errors into textual responses with `isError: true`.
|
||||
The error message can be useful for an LLM to understand and maybe give back to the user.
|
||||
Previously all errors where thrown out to `@modelcontextprotocol/sdk` which causes a generic 500.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-common': patch
|
||||
---
|
||||
|
||||
Make SERVICEACCOUNT_CA_PATH public so it can be imported by external modules.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/integration': minor
|
||||
---
|
||||
|
||||
Added support for limiting GithubAppCredentialsMux to specific apps
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend-module-explore': patch
|
||||
---
|
||||
|
||||
Deprecate and mark explore collator as moved
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Fixed an issue that could cause conflicts of detected modules in workspaces with multiple apps.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-gitlab': patch
|
||||
---
|
||||
|
||||
The log message now indicates that the pipeline trigger token was deleted and not pipeline itself.
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
'@backstage/catalog-client': minor
|
||||
'@backstage/plugin-catalog-react': minor
|
||||
'@backstage/plugin-catalog-node': minor
|
||||
---
|
||||
|
||||
Introduced new `streamEntities` async generator method for the catalog.
|
||||
|
||||
Catalog API and Catalog Service now includes a `streamEntities` method that allows for streaming entities from the catalog.
|
||||
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
|
||||
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
|
||||
or fetch all entities at once.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
|
||||
for await (const page of pageStream) {
|
||||
// Handle page of entities
|
||||
for (const entity of page) {
|
||||
console.log(entity);
|
||||
}
|
||||
}
|
||||
```
|
||||
+174
-199
@@ -2,233 +2,208 @@
|
||||
"mode": "pre",
|
||||
"tag": "next",
|
||||
"initialVersions": {
|
||||
"example-app": "0.2.112",
|
||||
"@backstage/app-defaults": "1.6.5",
|
||||
"example-app-next": "0.0.26",
|
||||
"app-next-example-plugin": "0.0.26",
|
||||
"example-backend": "0.0.41",
|
||||
"@backstage/backend-app-api": "1.2.6",
|
||||
"@backstage/backend-defaults": "0.12.0",
|
||||
"example-app": "0.2.113",
|
||||
"@backstage/app-defaults": "1.7.0",
|
||||
"example-app-next": "0.0.27",
|
||||
"app-next-example-plugin": "0.0.27",
|
||||
"example-backend": "0.0.42",
|
||||
"@backstage/backend-app-api": "1.2.7",
|
||||
"@backstage/backend-defaults": "0.12.1",
|
||||
"@backstage/backend-dev-utils": "0.1.5",
|
||||
"@backstage/backend-dynamic-feature-service": "0.7.3",
|
||||
"@backstage/backend-openapi-utils": "0.6.0",
|
||||
"@backstage/backend-plugin-api": "1.4.2",
|
||||
"@backstage/backend-test-utils": "1.8.0",
|
||||
"@backstage/catalog-client": "1.11.0",
|
||||
"@backstage/backend-dynamic-feature-service": "0.7.4",
|
||||
"@backstage/backend-openapi-utils": "0.6.1",
|
||||
"@backstage/backend-plugin-api": "1.4.3",
|
||||
"@backstage/backend-test-utils": "1.9.0",
|
||||
"@backstage/catalog-client": "1.12.0",
|
||||
"@backstage/catalog-model": "1.7.5",
|
||||
"@backstage/cli": "0.34.0",
|
||||
"@backstage/cli": "0.34.2",
|
||||
"@backstage/cli-common": "0.1.15",
|
||||
"@backstage/cli-node": "0.2.14",
|
||||
"@backstage/codemods": "0.1.52",
|
||||
"@backstage/config": "1.3.3",
|
||||
"@backstage/config-loader": "1.10.2",
|
||||
"@backstage/core-app-api": "1.18.0",
|
||||
"@backstage/core-compat-api": "0.5.0",
|
||||
"@backstage/core-components": "0.17.5",
|
||||
"@backstage/core-plugin-api": "1.10.9",
|
||||
"@backstage/create-app": "0.7.2",
|
||||
"@backstage/dev-utils": "1.1.13",
|
||||
"e2e-test": "0.2.31",
|
||||
"@backstage/config-loader": "1.10.3",
|
||||
"@backstage/core-app-api": "1.19.0",
|
||||
"@backstage/core-compat-api": "0.5.2",
|
||||
"@backstage/core-components": "0.18.0",
|
||||
"@backstage/core-plugin-api": "1.11.0",
|
||||
"@backstage/create-app": "0.7.4",
|
||||
"@backstage/dev-utils": "1.1.14",
|
||||
"e2e-test": "0.2.32",
|
||||
"@backstage/e2e-test-utils": "0.1.1",
|
||||
"@backstage/errors": "1.2.7",
|
||||
"@backstage/eslint-plugin": "0.1.11",
|
||||
"@backstage/frontend-app-api": "0.12.0",
|
||||
"@backstage/frontend-defaults": "0.3.0",
|
||||
"@backstage/frontend-dynamic-feature-loader": "0.1.4",
|
||||
"@internal/frontend": "0.0.12",
|
||||
"@backstage/frontend-plugin-api": "0.11.0",
|
||||
"@backstage/frontend-test-utils": "0.3.5",
|
||||
"@backstage/integration": "1.17.1",
|
||||
"@backstage/frontend-app-api": "0.13.0",
|
||||
"@backstage/frontend-defaults": "0.3.1",
|
||||
"@backstage/frontend-dynamic-feature-loader": "0.1.5",
|
||||
"@internal/frontend": "0.0.13",
|
||||
"@backstage/frontend-plugin-api": "0.12.0",
|
||||
"@backstage/frontend-test-utils": "0.3.6",
|
||||
"@backstage/integration": "1.18.0",
|
||||
"@backstage/integration-aws-node": "0.1.17",
|
||||
"@backstage/integration-react": "1.2.9",
|
||||
"@backstage/integration-react": "1.2.10",
|
||||
"@internal/opaque": "0.0.1",
|
||||
"@backstage/release-manifests": "0.0.13",
|
||||
"@backstage/repo-tools": "0.15.1",
|
||||
"@internal/scaffolder": "0.0.12",
|
||||
"@techdocs/cli": "1.9.6",
|
||||
"techdocs-cli-embedded-app": "0.2.111",
|
||||
"@backstage/repo-tools": "0.15.2",
|
||||
"@internal/scaffolder": "0.0.13",
|
||||
"@techdocs/cli": "1.9.8",
|
||||
"techdocs-cli-embedded-app": "0.2.112",
|
||||
"@backstage/test-utils": "1.7.11",
|
||||
"@backstage/theme": "0.6.8",
|
||||
"@backstage/types": "1.2.1",
|
||||
"@backstage/ui": "0.7.0",
|
||||
"@backstage/types": "1.2.2",
|
||||
"@backstage/ui": "0.7.1",
|
||||
"@backstage/version-bridge": "1.0.11",
|
||||
"yarn-plugin-backstage": "0.0.7",
|
||||
"@backstage/plugin-api-docs": "0.12.10",
|
||||
"@backstage/plugin-api-docs": "0.12.11",
|
||||
"@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.10",
|
||||
"@backstage/plugin-app": "0.2.0",
|
||||
"@backstage/plugin-app-backend": "0.5.5",
|
||||
"@backstage/plugin-app-node": "0.1.36",
|
||||
"@backstage/plugin-app-visualizer": "0.1.22",
|
||||
"@backstage/plugin-auth-backend": "0.25.3",
|
||||
"@backstage/plugin-auth-backend-module-atlassian-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-auth0-provider": "0.2.6",
|
||||
"@backstage/plugin-auth-backend-module-aws-alb-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.11",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.2.6",
|
||||
"@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-gitlab-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-google-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "0.2.11",
|
||||
"@backstage/plugin-auth-backend-module-microsoft-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.11",
|
||||
"@backstage/plugin-auth-backend-module-oidc-provider": "0.4.6",
|
||||
"@backstage/plugin-auth-backend-module-okta-provider": "0.2.6",
|
||||
"@backstage/plugin-auth-backend-module-onelogin-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-pinniped-provider": "0.3.6",
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.5.6",
|
||||
"@backstage/plugin-auth-node": "0.6.6",
|
||||
"@backstage/plugin-auth-react": "0.1.18",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.3.1",
|
||||
"@backstage/plugin-catalog": "1.31.2",
|
||||
"@backstage/plugin-catalog-backend": "3.0.1",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.4.14",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.3.8",
|
||||
"@backstage/plugin-catalog-backend-module-backstage-openapi": "0.5.5",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.5.2",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.5.2",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.3.11",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.3.5",
|
||||
"@backstage/plugin-catalog-backend-module-gitea": "0.1.3",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.10.2",
|
||||
"@backstage/plugin-catalog-backend-module-github-org": "0.3.13",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.7.2",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.12",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.7.3",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.11.8",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "0.1.13",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.7.3",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.2.13",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.2.13",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.11",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.6.3",
|
||||
"@backstage/plugin-app": "0.3.0",
|
||||
"@backstage/plugin-app-backend": "0.5.6",
|
||||
"@backstage/plugin-app-node": "0.1.37",
|
||||
"@backstage/plugin-app-visualizer": "0.1.23",
|
||||
"@backstage/plugin-auth": "0.1.0",
|
||||
"@backstage/plugin-auth-backend": "0.25.4",
|
||||
"@backstage/plugin-auth-backend-module-atlassian-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-auth0-provider": "0.2.7",
|
||||
"@backstage/plugin-auth-backend-module-aws-alb-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.12",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.2.7",
|
||||
"@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-gitlab-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-google-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "0.2.12",
|
||||
"@backstage/plugin-auth-backend-module-microsoft-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.12",
|
||||
"@backstage/plugin-auth-backend-module-oidc-provider": "0.4.7",
|
||||
"@backstage/plugin-auth-backend-module-okta-provider": "0.2.7",
|
||||
"@backstage/plugin-auth-backend-module-onelogin-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-openshift-provider": "0.1.0",
|
||||
"@backstage/plugin-auth-backend-module-pinniped-provider": "0.3.7",
|
||||
"@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.5.7",
|
||||
"@backstage/plugin-auth-node": "0.6.7",
|
||||
"@backstage/plugin-auth-react": "0.1.19",
|
||||
"@backstage/plugin-bitbucket-cloud-common": "0.3.2",
|
||||
"@backstage/plugin-catalog": "1.31.3",
|
||||
"@backstage/plugin-catalog-backend": "3.1.0",
|
||||
"@backstage/plugin-catalog-backend-module-aws": "0.4.15",
|
||||
"@backstage/plugin-catalog-backend-module-azure": "0.3.9",
|
||||
"@backstage/plugin-catalog-backend-module-backstage-openapi": "0.5.6",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.5.3",
|
||||
"@backstage/plugin-catalog-backend-module-bitbucket-server": "0.5.3",
|
||||
"@backstage/plugin-catalog-backend-module-gcp": "0.3.12",
|
||||
"@backstage/plugin-catalog-backend-module-gerrit": "0.3.6",
|
||||
"@backstage/plugin-catalog-backend-module-gitea": "0.1.4",
|
||||
"@backstage/plugin-catalog-backend-module-github": "0.11.0",
|
||||
"@backstage/plugin-catalog-backend-module-github-org": "0.3.14",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab": "0.7.3",
|
||||
"@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.13",
|
||||
"@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.7.4",
|
||||
"@backstage/plugin-catalog-backend-module-ldap": "0.11.9",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "0.1.14",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph": "0.8.0",
|
||||
"@backstage/plugin-catalog-backend-module-openapi": "0.2.14",
|
||||
"@backstage/plugin-catalog-backend-module-puppetdb": "0.2.14",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.12",
|
||||
"@backstage/plugin-catalog-backend-module-unprocessed": "0.6.4",
|
||||
"@backstage/plugin-catalog-common": "1.1.5",
|
||||
"@backstage/plugin-catalog-graph": "0.4.22",
|
||||
"@backstage/plugin-catalog-import": "0.13.4",
|
||||
"@backstage/plugin-catalog-node": "1.18.0",
|
||||
"@backstage/plugin-catalog-react": "1.20.0",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.2.20",
|
||||
"@backstage/plugin-catalog-graph": "0.5.0",
|
||||
"@backstage/plugin-catalog-import": "0.13.5",
|
||||
"@backstage/plugin-catalog-node": "1.19.0",
|
||||
"@backstage/plugin-catalog-react": "1.21.0",
|
||||
"@backstage/plugin-catalog-unprocessed-entities": "0.2.21",
|
||||
"@backstage/plugin-catalog-unprocessed-entities-common": "0.0.9",
|
||||
"@backstage/plugin-config-schema": "0.1.71",
|
||||
"@backstage/plugin-devtools": "0.1.30",
|
||||
"@backstage/plugin-devtools-backend": "0.5.8",
|
||||
"@backstage/plugin-config-schema": "0.1.72",
|
||||
"@backstage/plugin-devtools": "0.1.31",
|
||||
"@backstage/plugin-devtools-backend": "0.5.9",
|
||||
"@backstage/plugin-devtools-common": "0.1.17",
|
||||
"@backstage/plugin-events-backend": "0.5.5",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.4.14",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.2.23",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.23",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-server": "0.1.4",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.2.23",
|
||||
"@backstage/plugin-events-backend-module-github": "0.4.3",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.3.4",
|
||||
"@backstage/plugin-events-backend-module-google-pubsub": "0.1.3",
|
||||
"@backstage/plugin-events-backend-module-kafka": "0.1.2",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.47",
|
||||
"@backstage/plugin-events-node": "0.4.14",
|
||||
"@internal/plugin-todo-list": "1.0.42",
|
||||
"@internal/plugin-todo-list-backend": "1.0.42",
|
||||
"@backstage/plugin-events-backend": "0.5.6",
|
||||
"@backstage/plugin-events-backend-module-aws-sqs": "0.4.15",
|
||||
"@backstage/plugin-events-backend-module-azure": "0.2.24",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.24",
|
||||
"@backstage/plugin-events-backend-module-bitbucket-server": "0.1.5",
|
||||
"@backstage/plugin-events-backend-module-gerrit": "0.2.24",
|
||||
"@backstage/plugin-events-backend-module-github": "0.4.4",
|
||||
"@backstage/plugin-events-backend-module-gitlab": "0.3.5",
|
||||
"@backstage/plugin-events-backend-module-google-pubsub": "0.1.4",
|
||||
"@backstage/plugin-events-backend-module-kafka": "0.1.3",
|
||||
"@backstage/plugin-events-backend-test-utils": "0.1.48",
|
||||
"@backstage/plugin-events-node": "0.4.15",
|
||||
"@internal/plugin-todo-list": "1.0.43",
|
||||
"@internal/plugin-todo-list-backend": "1.0.43",
|
||||
"@internal/plugin-todo-list-common": "1.0.26",
|
||||
"@backstage/plugin-gateway-backend": "1.0.4",
|
||||
"@backstage/plugin-home": "0.8.11",
|
||||
"@backstage/plugin-home-react": "0.1.29",
|
||||
"@backstage/plugin-kubernetes": "0.12.10",
|
||||
"@backstage/plugin-kubernetes-backend": "0.20.0",
|
||||
"@backstage/plugin-kubernetes-cluster": "0.0.28",
|
||||
"@backstage/plugin-gateway-backend": "1.0.5",
|
||||
"@backstage/plugin-home": "0.8.12",
|
||||
"@backstage/plugin-home-react": "0.1.30",
|
||||
"@backstage/plugin-kubernetes": "0.12.11",
|
||||
"@backstage/plugin-kubernetes-backend": "0.20.2",
|
||||
"@backstage/plugin-kubernetes-cluster": "0.0.29",
|
||||
"@backstage/plugin-kubernetes-common": "0.9.6",
|
||||
"@backstage/plugin-kubernetes-node": "0.3.3",
|
||||
"@backstage/plugin-kubernetes-react": "0.5.10",
|
||||
"@backstage/plugin-mcp-actions-backend": "0.1.2",
|
||||
"@backstage/plugin-notifications": "0.5.8",
|
||||
"@backstage/plugin-notifications-backend": "0.5.9",
|
||||
"@backstage/plugin-notifications-backend-module-email": "0.3.12",
|
||||
"@backstage/plugin-notifications-backend-module-slack": "0.1.4",
|
||||
"@backstage/plugin-kubernetes-node": "0.3.4",
|
||||
"@backstage/plugin-kubernetes-react": "0.5.11",
|
||||
"@backstage/plugin-mcp-actions-backend": "0.1.3",
|
||||
"@backstage/plugin-notifications": "0.5.9",
|
||||
"@backstage/plugin-notifications-backend": "0.5.10",
|
||||
"@backstage/plugin-notifications-backend-module-email": "0.3.13",
|
||||
"@backstage/plugin-notifications-backend-module-slack": "0.1.5",
|
||||
"@backstage/plugin-notifications-common": "0.1.0",
|
||||
"@backstage/plugin-notifications-node": "0.2.18",
|
||||
"@backstage/plugin-org": "0.6.42",
|
||||
"@backstage/plugin-org-react": "0.1.41",
|
||||
"@backstage/plugin-permission-backend": "0.7.3",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.11",
|
||||
"@backstage/plugin-notifications-node": "0.2.19",
|
||||
"@backstage/plugin-org": "0.6.44",
|
||||
"@backstage/plugin-org-react": "0.1.42",
|
||||
"@backstage/plugin-permission-backend": "0.7.4",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.12",
|
||||
"@backstage/plugin-permission-common": "0.9.1",
|
||||
"@backstage/plugin-permission-node": "0.10.3",
|
||||
"@backstage/plugin-permission-node": "0.10.4",
|
||||
"@backstage/plugin-permission-react": "0.4.36",
|
||||
"@backstage/plugin-proxy-backend": "0.6.5",
|
||||
"@backstage/plugin-proxy-node": "0.1.7",
|
||||
"@backstage/plugin-scaffolder": "1.34.0",
|
||||
"@backstage/plugin-scaffolder-backend": "2.2.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-azure": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.14",
|
||||
"@backstage/plugin-scaffolder-backend-module-gcp": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitea": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-github": "0.8.2",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.9.4",
|
||||
"@backstage/plugin-scaffolder-backend-module-notifications": "0.1.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.5.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.2.12",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.13",
|
||||
"@backstage/plugin-scaffolder-common": "1.7.0",
|
||||
"@backstage/plugin-scaffolder-node": "0.11.0",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "0.3.2",
|
||||
"@backstage/plugin-scaffolder-react": "1.19.0",
|
||||
"@backstage/plugin-search": "1.4.29",
|
||||
"@backstage/plugin-search-backend": "2.0.5",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.3.7",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.7.5",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.3.5",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.47",
|
||||
"@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.12",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.4.5",
|
||||
"@backstage/plugin-search-backend-node": "1.3.14",
|
||||
"@backstage/plugin-proxy-backend": "0.6.6",
|
||||
"@backstage/plugin-proxy-node": "0.1.8",
|
||||
"@backstage/plugin-scaffolder": "1.34.1",
|
||||
"@backstage/plugin-scaffolder-backend": "2.2.1",
|
||||
"@backstage/plugin-scaffolder-backend-module-azure": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.14",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.15",
|
||||
"@backstage/plugin-scaffolder-backend-module-gcp": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitea": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-github": "0.9.0",
|
||||
"@backstage/plugin-scaffolder-backend-module-gitlab": "0.9.5",
|
||||
"@backstage/plugin-scaffolder-backend-module-notifications": "0.1.14",
|
||||
"@backstage/plugin-scaffolder-backend-module-rails": "0.5.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-sentry": "0.2.13",
|
||||
"@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.14",
|
||||
"@backstage/plugin-scaffolder-common": "1.7.1",
|
||||
"@backstage/plugin-scaffolder-node": "0.11.1",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "0.3.3",
|
||||
"@backstage/plugin-scaffolder-react": "1.19.1",
|
||||
"@backstage/plugin-search": "1.4.30",
|
||||
"@backstage/plugin-search-backend": "2.0.6",
|
||||
"@backstage/plugin-search-backend-module-catalog": "0.3.8",
|
||||
"@backstage/plugin-search-backend-module-elasticsearch": "1.7.6",
|
||||
"@backstage/plugin-search-backend-module-explore": "0.3.7",
|
||||
"@backstage/plugin-search-backend-module-pg": "0.5.48",
|
||||
"@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.13",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "0.4.6",
|
||||
"@backstage/plugin-search-backend-node": "1.3.15",
|
||||
"@backstage/plugin-search-common": "1.2.19",
|
||||
"@backstage/plugin-search-react": "1.9.3",
|
||||
"@backstage/plugin-signals": "0.0.22",
|
||||
"@backstage/plugin-signals-backend": "0.3.7",
|
||||
"@backstage/plugin-signals-node": "0.1.23",
|
||||
"@backstage/plugin-search-react": "1.9.4",
|
||||
"@backstage/plugin-signals": "0.0.23",
|
||||
"@backstage/plugin-signals-backend": "0.3.8",
|
||||
"@backstage/plugin-signals-node": "0.1.24",
|
||||
"@backstage/plugin-signals-react": "0.0.15",
|
||||
"@backstage/plugin-techdocs": "1.14.0",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.0.52",
|
||||
"@backstage/plugin-techdocs-backend": "2.0.5",
|
||||
"@backstage/plugin-techdocs": "1.15.0",
|
||||
"@backstage/plugin-techdocs-addons-test-utils": "1.1.0",
|
||||
"@backstage/plugin-techdocs-backend": "2.1.0",
|
||||
"@backstage/plugin-techdocs-common": "0.1.1",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.1.27",
|
||||
"@backstage/plugin-techdocs-node": "1.13.6",
|
||||
"@backstage/plugin-techdocs-react": "1.3.2",
|
||||
"@backstage/plugin-user-settings": "0.8.25",
|
||||
"@backstage/plugin-user-settings-backend": "0.3.5",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "1.1.28",
|
||||
"@backstage/plugin-techdocs-node": "1.13.7",
|
||||
"@backstage/plugin-techdocs-react": "1.3.3",
|
||||
"@backstage/plugin-user-settings": "0.8.26",
|
||||
"@backstage/plugin-user-settings-backend": "0.3.6",
|
||||
"@backstage/plugin-user-settings-common": "0.0.1"
|
||||
},
|
||||
"changesets": [
|
||||
"brave-bugs-know",
|
||||
"cold-donuts-train",
|
||||
"cool-games-rescue",
|
||||
"curvy-sites-rhyme",
|
||||
"easy-wings-turn",
|
||||
"fine-hands-think",
|
||||
"flat-colts-know",
|
||||
"giant-zebras-peel",
|
||||
"icy-camels-throw",
|
||||
"legal-lemons-attend",
|
||||
"lemon-terms-cheer",
|
||||
"lucky-glasses-slide",
|
||||
"mean-sites-cheer",
|
||||
"puny-books-fetch",
|
||||
"ripe-plants-pump",
|
||||
"sharp-carrots-spend",
|
||||
"sixty-pans-prove",
|
||||
"sixty-places-push",
|
||||
"slick-lamps-clap",
|
||||
"slick-worms-drum",
|
||||
"social-beers-unite",
|
||||
"sweet-lemons-wonder",
|
||||
"tricky-buses-lead",
|
||||
"wet-kiwis-strive",
|
||||
"whole-dingos-lay",
|
||||
"yellow-dragons-float"
|
||||
]
|
||||
"changesets": []
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/cli': patch
|
||||
---
|
||||
|
||||
Updated the backend plugin template to use a new pattern for the `TodoListService` that reduces boilerplate.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
---
|
||||
|
||||
Fix issue with default objects not being loaded properly
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-github': minor
|
||||
---
|
||||
|
||||
Added support for discovery by app
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Reverts a change in CSS layout that shifted the content of the Techdocs too far to the left.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-compat-api': patch
|
||||
---
|
||||
|
||||
Fix for `compatWrapper` creating many wrapping `Providers` when they should not
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': minor
|
||||
---
|
||||
|
||||
**BREAKING**: Encode query filters for requests made to msgraph. If you currently have manually encoded characters in a filter, this is a breaking change and must be updated to avoid requests being double encoded.
|
||||
|
||||
```diff
|
||||
user:
|
||||
- filter: department in('MARKETING', 'RESEARCH %26 DEVELOPMENT')
|
||||
+ filter: department in('MARKETING', 'RESEARCH & DEVELOPMENT')
|
||||
```
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Fixes for rendering initials in the avatar component.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Add missing dependency to `@backstage/cli`, `@backstage/core-plugin-api` and `@backstage/integration-react`
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@techdocs/cli': patch
|
||||
---
|
||||
|
||||
Fixed an issue where `@techdocs/cli serve` command did not pick up the latest changes to TechDocs.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog': patch
|
||||
---
|
||||
|
||||
Auto-focus the first menu item in `EntityContextMenu`, and do not render a divider if an empty array is passed to `UNSTABLE_extraContextMenuItems`.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-auth-node': patch
|
||||
---
|
||||
|
||||
Changes OAuth cookies from domain-scoped to host-only by avoid setting the domain attribute in the default cookie configurer.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Only run provider orphan cleanup if the engine is started in the first place
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Support `default*` for older packages as this package is in range for breaking `/alpha` changes
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
update about card links style for pretty display with other language
|
||||
@@ -38,6 +38,7 @@ Bitrise
|
||||
Blackbox
|
||||
bool
|
||||
boolean
|
||||
breakpoint
|
||||
Brex
|
||||
broadcasted
|
||||
bugfixes
|
||||
@@ -146,6 +147,7 @@ Expedia
|
||||
facto
|
||||
failover
|
||||
Fargate
|
||||
faqs
|
||||
featureful
|
||||
Figma
|
||||
firehydrant
|
||||
@@ -247,6 +249,8 @@ lockdown
|
||||
lockfile
|
||||
lockfiles
|
||||
lookbehind
|
||||
lookup
|
||||
lookups
|
||||
lowercased
|
||||
lunr
|
||||
Luxon
|
||||
@@ -460,6 +464,7 @@ subfolders
|
||||
subheader
|
||||
subheaders
|
||||
subkey
|
||||
subpage
|
||||
subpath
|
||||
subroutes
|
||||
substring
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
# NO-OP placeholder that always passes for other paths
|
||||
# This is here so that we're able to set the status check as required
|
||||
|
||||
name: Storybook Void
|
||||
name: Chromatic Void
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/workflows/verify_storybook.yml'
|
||||
- '.github/workflows/verify_chromatic.yml'
|
||||
- 'storybook/**'
|
||||
- 'packages/config/src/**'
|
||||
- 'packages/theme/src/**'
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
noop:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: Storybook
|
||||
name: Chromatic
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
|
||||
@@ -1,9 +1,9 @@
|
||||
name: Storybook
|
||||
name: Chromatic
|
||||
on:
|
||||
# NOTE: If you change these you must update verify_storybook-noop.yml as well
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/verify_storybook.yml'
|
||||
- '.github/workflows/verify_chromatic.yml'
|
||||
- '.storybook/**'
|
||||
- 'packages/ui/src/**'
|
||||
- 'packages/config/src/**'
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
os: [ubuntu-latest]
|
||||
node-version: [20.x]
|
||||
|
||||
name: Storybook
|
||||
name: Chromatic
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
|
||||
@@ -50,13 +50,14 @@ jobs:
|
||||
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
|
||||
|
||||
- name: Build Storybook
|
||||
run: yarn build-storybook
|
||||
run: yarn build-storybook:chromatic
|
||||
|
||||
- name: Deploy Storybook to Chromatic
|
||||
uses: chromaui/action@1cfa065cbdab28f6ca3afaeb3d761383076a35aa # v11
|
||||
- name: Run Chromatic
|
||||
uses: chromaui/action@latest
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# projectToken intentionally shared to allow collaborators to run Chromatic on forks
|
||||
# https://www.chromatic.com/docs/custom-ci-provider#run-chromatic-on-external-forks-of-open-source-projects
|
||||
projectToken: chpt_dab72dc0f97d55b
|
||||
storybookBuildDir: dist-storybook
|
||||
onlyChanged: true
|
||||
+93
-15
@@ -2,17 +2,21 @@ import type { StorybookConfig } from '@storybook/react-vite';
|
||||
|
||||
import { join, dirname, posix } from 'path';
|
||||
|
||||
// This set of stories are the ones that we publish to backstage.io.
|
||||
const backstageCoreStories = [
|
||||
'packages/ui',
|
||||
'packages/core-components',
|
||||
'packages/app',
|
||||
'plugins/org',
|
||||
'plugins/search',
|
||||
'plugins/search-react',
|
||||
'plugins/home',
|
||||
'plugins/catalog-react',
|
||||
];
|
||||
const isChromatic = process.env.STORYBOOK_STORY_SET === 'chromatic';
|
||||
|
||||
// All stories for full development
|
||||
const allStories = isChromatic
|
||||
? ['packages/ui']
|
||||
: [
|
||||
'packages/ui',
|
||||
'packages/core-components',
|
||||
'packages/app',
|
||||
'plugins/org',
|
||||
'plugins/search',
|
||||
'plugins/search-react',
|
||||
'plugins/home',
|
||||
'plugins/catalog-react',
|
||||
];
|
||||
|
||||
const rootPath = '../';
|
||||
const storiesSrcMdx = 'src/**/*.mdx';
|
||||
@@ -21,7 +25,7 @@ const storiesSrcGlob = 'src/**/*.stories.@(js|jsx|mjs|ts|tsx)';
|
||||
const getStoriesPath = (element: string, pattern: string) =>
|
||||
posix.join(rootPath, element, pattern);
|
||||
|
||||
const stories = backstageCoreStories.flatMap(element => [
|
||||
const stories = allStories.flatMap(element => [
|
||||
getStoriesPath(element, storiesSrcMdx),
|
||||
getStoriesPath(element, storiesSrcGlob),
|
||||
]);
|
||||
@@ -35,15 +39,89 @@ const config: StorybookConfig = {
|
||||
stories,
|
||||
addons: [
|
||||
getAbsolutePath('@storybook/addon-links'),
|
||||
getAbsolutePath('@storybook/addon-essentials'),
|
||||
getAbsolutePath('@storybook/addon-interactions'),
|
||||
getAbsolutePath('@storybook/addon-themes'),
|
||||
getAbsolutePath('@storybook/addon-storysource'),
|
||||
getAbsolutePath('@storybook/addon-docs'),
|
||||
getAbsolutePath('@storybook/addon-a11y'),
|
||||
],
|
||||
framework: {
|
||||
name: getAbsolutePath('@storybook/react-vite'),
|
||||
options: {},
|
||||
},
|
||||
viteFinal: async (config, { configType }) => {
|
||||
// Add Node.js polyfills for browser compatibility
|
||||
//
|
||||
// When upgrading from Storybook 8 to 9 with the react-vite framework,
|
||||
// Node.js polyfills are no longer automatically included by Vite.
|
||||
// This causes "ReferenceError: process is not defined" errors in the browser
|
||||
// when code tries to access Node.js globals like `process` and `util`.
|
||||
//
|
||||
// The @vitest/mocker (included with Storybook 9) expects MSW v2 APIs,
|
||||
// but we want to keep MSW v1 for the rest of the monorepo to avoid
|
||||
// breaking changes. This configuration provides the necessary polyfills
|
||||
// and handles the MSW compatibility issue specifically for Storybook.
|
||||
//
|
||||
// These polyfills provide browser-compatible versions of Node.js globals:
|
||||
// - process: Node.js process object with env
|
||||
// - global -> globalThis: Maps Node.js global to browser's globalThis
|
||||
//
|
||||
// Without these, Backstage components that rely on Node.js APIs will fail
|
||||
// to load in Storybook's browser environment.
|
||||
// Different configurations for development vs production
|
||||
if (configType === 'DEVELOPMENT') {
|
||||
// Development: Include process polyfill to prevent runtime errors
|
||||
config.define = {
|
||||
...config.define,
|
||||
global: 'globalThis',
|
||||
'process.env': {},
|
||||
process: '({ env: {}, browser: true })',
|
||||
};
|
||||
} else if (configType === 'PRODUCTION') {
|
||||
// Production: Minimal define to avoid esbuild errors
|
||||
config.define = {
|
||||
...config.define,
|
||||
global: 'globalThis',
|
||||
'process.env': {},
|
||||
// No process polyfill in production build
|
||||
};
|
||||
}
|
||||
|
||||
config.resolve = {
|
||||
...config.resolve,
|
||||
alias: {
|
||||
...config.resolve?.alias,
|
||||
// Provide Node.js polyfills for browser
|
||||
process: 'process/browser',
|
||||
util: 'util',
|
||||
buffer: 'buffer',
|
||||
stream: 'stream-browserify',
|
||||
// Fix MSW v2 imports for @vitest/mocker compatibility
|
||||
// @vitest/mocker expects MSW v2 APIs but we want to keep MSW v1 for the rest of the monorepo
|
||||
'msw/browser': join(__dirname, 'msw-browser-shim.js'),
|
||||
'msw/core/http': join(__dirname, 'msw-http-shim.js'),
|
||||
},
|
||||
};
|
||||
|
||||
// Optimize dependencies for better performance
|
||||
config.optimizeDeps = {
|
||||
...config.optimizeDeps,
|
||||
include: [
|
||||
...(config.optimizeDeps?.include || []),
|
||||
'process/browser',
|
||||
'util',
|
||||
'buffer',
|
||||
'stream-browserify',
|
||||
],
|
||||
// Exclude MSW to prevent optimization conflicts with our shims
|
||||
exclude: [
|
||||
...(config.optimizeDeps?.exclude || []),
|
||||
'msw',
|
||||
'msw/browser',
|
||||
'msw/core/http',
|
||||
],
|
||||
};
|
||||
|
||||
return config;
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
export const allModes = {
|
||||
'light backstage': {
|
||||
themeMode: 'light',
|
||||
themeName: 'backstage',
|
||||
},
|
||||
'dark backstage': {
|
||||
themeMode: 'dark',
|
||||
themeName: 'backstage',
|
||||
},
|
||||
'light spotify': {
|
||||
themeMode: 'light',
|
||||
themeName: 'spotify',
|
||||
},
|
||||
'dark spotify': {
|
||||
themeMode: 'dark',
|
||||
themeName: 'spotify',
|
||||
},
|
||||
} as const;
|
||||
@@ -0,0 +1,47 @@
|
||||
// MSW v2 browser compatibility shim for @vitest/mocker
|
||||
// This provides MSW v2 exports using MSW v1 APIs to maintain compatibility
|
||||
// while keeping the rest of the monorepo on MSW v1
|
||||
|
||||
try {
|
||||
// Try to import from MSW v1
|
||||
const { setupWorker, rest } = require('msw');
|
||||
|
||||
// Export in MSW v2 format expected by @vitest/mocker
|
||||
module.exports = {
|
||||
setupWorker,
|
||||
// MSW v2 uses 'http' instead of 'rest', but we provide both for compatibility
|
||||
http: rest,
|
||||
rest, // Keep rest for any MSW v1 code
|
||||
};
|
||||
} catch (error) {
|
||||
// Fallback if MSW is not available - provide minimal mock
|
||||
console.warn(
|
||||
'MSW not available, providing minimal mock for @vitest/mocker compatibility',
|
||||
);
|
||||
module.exports = {
|
||||
setupWorker: () => ({
|
||||
start: () => Promise.resolve(),
|
||||
stop: () => {},
|
||||
use: () => {},
|
||||
resetHandlers: () => {},
|
||||
}),
|
||||
http: {
|
||||
get: () => {},
|
||||
post: () => {},
|
||||
put: () => {},
|
||||
delete: () => {},
|
||||
patch: () => {},
|
||||
head: () => {},
|
||||
options: () => {},
|
||||
},
|
||||
rest: {
|
||||
get: () => {},
|
||||
post: () => {},
|
||||
put: () => {},
|
||||
delete: () => {},
|
||||
patch: () => {},
|
||||
head: () => {},
|
||||
options: () => {},
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
// MSW v2 http compatibility shim for @vitest/mocker
|
||||
// This provides MSW v2 http exports using MSW v1 APIs
|
||||
|
||||
try {
|
||||
// Try to import from MSW v1
|
||||
const { rest } = require('msw');
|
||||
|
||||
// Export MSW v1 'rest' as MSW v2 'http' for @vitest/mocker compatibility
|
||||
module.exports = {
|
||||
http: rest,
|
||||
// Provide individual methods that @vitest/mocker might expect
|
||||
get: rest.get,
|
||||
post: rest.post,
|
||||
put: rest.put,
|
||||
delete: rest.delete,
|
||||
patch: rest.patch,
|
||||
head: rest.head,
|
||||
options: rest.options,
|
||||
all: rest.all,
|
||||
};
|
||||
} catch (error) {
|
||||
// Fallback if MSW is not available
|
||||
console.warn(
|
||||
'MSW not available, providing minimal http mock for @vitest/mocker compatibility',
|
||||
);
|
||||
const noop = () => {};
|
||||
module.exports = {
|
||||
http: {
|
||||
get: noop,
|
||||
post: noop,
|
||||
put: noop,
|
||||
delete: noop,
|
||||
patch: noop,
|
||||
head: noop,
|
||||
options: noop,
|
||||
all: noop,
|
||||
},
|
||||
get: noop,
|
||||
post: noop,
|
||||
put: noop,
|
||||
delete: noop,
|
||||
patch: noop,
|
||||
head: noop,
|
||||
options: noop,
|
||||
all: noop,
|
||||
};
|
||||
}
|
||||
+21
-2
@@ -2,9 +2,10 @@ import React, { useEffect } from 'react';
|
||||
import { TestApiProvider } from '@backstage/test-utils';
|
||||
import { Content, AlertDisplay } from '@backstage/core-components';
|
||||
import { apis } from './support/apis';
|
||||
import type { Decorator, Preview } from '@storybook/react';
|
||||
import { useGlobals } from '@storybook/preview-api';
|
||||
import type { Decorator, Preview } from '@storybook/react-vite';
|
||||
import { useGlobals } from 'storybook/preview-api';
|
||||
import { UnifiedThemeProvider, themes } from '@backstage/theme';
|
||||
import { allModes } from './modes';
|
||||
|
||||
// Default Backstage theme CSS (from packages/ui)
|
||||
import '../packages/ui/src/css/styles.css';
|
||||
@@ -52,20 +53,24 @@ const preview: Preview = {
|
||||
},
|
||||
parameters: {
|
||||
layout: 'fullscreen',
|
||||
|
||||
backgrounds: {
|
||||
disable: true,
|
||||
},
|
||||
|
||||
controls: {
|
||||
matchers: {
|
||||
color: /(background|color)$/i,
|
||||
date: /Date$/i,
|
||||
},
|
||||
},
|
||||
|
||||
options: {
|
||||
storySort: {
|
||||
order: ['Backstage UI', 'Plugins', 'Layout', 'Navigation'],
|
||||
},
|
||||
},
|
||||
|
||||
viewport: {
|
||||
viewports: {
|
||||
initial: {
|
||||
@@ -82,6 +87,20 @@ const preview: Preview = {
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
docs: {
|
||||
codePanel: true,
|
||||
},
|
||||
|
||||
chromatic: {
|
||||
modes: {
|
||||
'light backstage': allModes['light backstage'],
|
||||
// TODO: Enable these modes when we have more Chromatic snapshots.
|
||||
// 'dark backstage': allModes['dark backstage'],
|
||||
// 'light spotify': allModes['light spotify'],
|
||||
// 'dark spotify': allModes['dark spotify'],
|
||||
},
|
||||
},
|
||||
},
|
||||
decorators: [
|
||||
Story => {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
diff --git a/dist/preview.d.ts b/dist/preview.d.ts
|
||||
index 73525b5fe07240d27733b59362cf2076cd28a6ed..0420e6b170a65b6d0db64fcfcfa07b68cd851942 100644
|
||||
--- a/dist/preview.d.ts
|
||||
+++ b/dist/preview.d.ts
|
||||
@@ -174,7 +174,7 @@ type UnionToIntersection<Union> = (
|
||||
declare function __definePreview<Addons extends PreviewAddon<never>[]>(input: {
|
||||
addons: Addons;
|
||||
} & ProjectAnnotations<ReactTypes & InferTypes<Addons>>): ReactPreview<ReactTypes & InferTypes<Addons>>;
|
||||
-interface ReactPreview<T extends AddonTypes> extends Preview<ReactTypes & T> {
|
||||
+interface ReactPreview<T extends AddonTypes = any> extends Omit<Preview<ReactTypes & T>, 'meta'> {
|
||||
meta<TArgs extends Args, Decorators extends DecoratorFunction<ReactTypes & T, any>, TMetaArgs extends Partial<TArgs>>(meta: {
|
||||
render?: ArgsStoryFn<ReactTypes & T, TArgs>;
|
||||
component?: ComponentType<TArgs>;
|
||||
@@ -187,16 +187,13 @@ interface ReactPreview<T extends AddonTypes> extends Preview<ReactTypes & T> {
|
||||
}>;
|
||||
}
|
||||
type DecoratorsArgs<TRenderer extends Renderer, Decorators> = UnionToIntersection<Decorators extends DecoratorFunction<TRenderer, infer TArgs> ? TArgs : unknown>;
|
||||
-interface ReactMeta<T extends ReactTypes, MetaInput extends ComponentAnnotations<T>> extends Meta<T, MetaInput> {
|
||||
+interface ReactMeta<T extends ReactTypes = any, MetaInput = any> extends Omit<Meta<T, ComponentAnnotations<T, any>>, 'story'> {
|
||||
story<TInput extends (() => ReactTypes['storyResult']) | (StoryAnnotations<T, T['args']> & {
|
||||
render: () => ReactTypes['storyResult'];
|
||||
- })>(story?: TInput): ReactStory<T, TInput extends () => ReactTypes['storyResult'] ? {
|
||||
- render: TInput;
|
||||
- } : TInput>;
|
||||
- story<TInput extends Simplify<StoryAnnotations<T, AddMocks<T['args'], MetaInput['args']>, SetOptional<T['args'], keyof T['args'] & keyof MetaInput['args']>>>>(story?: TInput): ReactStory<T, TInput>;
|
||||
+ })>(story?: TInput): ReactStory<T>;
|
||||
+ story<TInput = any>(story?: TInput): ReactStory<T>;
|
||||
}
|
||||
-interface ReactStory<T extends ReactTypes, TInput extends StoryAnnotations<T, T['args']>> extends Story<T, TInput> {
|
||||
+interface ReactStory<T extends ReactTypes> {
|
||||
Component: ComponentType<Partial<T['args']>>;
|
||||
}
|
||||
-
|
||||
export { ReactPreview, ReactStory, __definePreview };
|
||||
\ No newline at end of file
|
||||
@@ -0,0 +1,15 @@
|
||||
diff --git a/lib/main.d.ts b/lib/main.d.ts
|
||||
index 9b54fef0086ea0c99368d8a95f2476e5dcd6d9c1..5c3853901e522c445cdb23b07538aad8a15bafb0 100644
|
||||
--- a/lib/main.d.ts
|
||||
+++ b/lib/main.d.ts
|
||||
@@ -1,7 +1,7 @@
|
||||
-import { ASTNode, Type, AnyType, Field } from "./types";
|
||||
-import { NodePath } from "./node-path";
|
||||
+import { ASTNode, type Type, AnyType, Field } from "./types";
|
||||
+import { type NodePath } from "./node-path";
|
||||
import { namedTypes } from "./gen/namedTypes";
|
||||
-import { builders } from "./gen/builders";
|
||||
+import { type builders } from "./gen/builders";
|
||||
import { Visitor } from "./gen/visitor";
|
||||
declare const astNodesAreEquivalent: {
|
||||
(a: any, b: any, problemPath?: any): boolean;
|
||||
@@ -209,6 +209,11 @@ scaffolder:
|
||||
defaultCommitMessage: 'Initial commit'
|
||||
|
||||
auth:
|
||||
experimentalDynamicClientRegistration:
|
||||
enabled: true
|
||||
allowedRedirectUriPatterns:
|
||||
- cursor://*
|
||||
|
||||
### Add auth.keyStore.provider to more granularly control how to store JWK data when running
|
||||
# the auth-backend.
|
||||
#
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"@uiw/react-codemirror": "^4.23.7",
|
||||
"html-react-parser": "^5.2.5",
|
||||
"motion": "^12.4.1",
|
||||
"next": "15.3.4",
|
||||
"next": "15.4.7",
|
||||
"next-mdx-remote-client": "^2.1.2",
|
||||
"prop-types": "^15.8.1",
|
||||
"react": "19.1.1",
|
||||
|
||||
@@ -217,18 +217,18 @@ export const cellPropDefs: Record<string, PropDef> = {
|
||||
};
|
||||
|
||||
export const tablePaginationPropDefs: Record<string, PropDef> = {
|
||||
pageIndex: {
|
||||
offset: {
|
||||
type: 'number',
|
||||
description: 'The current page index.',
|
||||
description: 'The current offset (starting index) for pagination.',
|
||||
},
|
||||
pageSize: {
|
||||
type: 'number',
|
||||
description: 'The number of items per page.',
|
||||
},
|
||||
setPageIndex: {
|
||||
setOffset: {
|
||||
type: 'enum',
|
||||
values: ['(pageIndex: number) => void'],
|
||||
description: 'Handler that is called when the page index changes.',
|
||||
values: ['(offset: number) => void'],
|
||||
description: 'Handler that is called when the offset changes.',
|
||||
},
|
||||
setPageSize: {
|
||||
type: 'enum',
|
||||
@@ -277,10 +277,7 @@ export const tableUsageSnippet = `import { Cell, ..., TableHeader, TablePaginati
|
||||
</Table>
|
||||
<TablePagination />`;
|
||||
|
||||
export const tableBasicSnippet = `import { Table, TablePagination } from '@backstage/ui';
|
||||
|
||||
const [pageIndex, setPageIndex] = useState(0);
|
||||
const [pageSize, setPageSize] = useState(5);
|
||||
export const tableBasicSnippet = `import { Table, TableHeader, Column, TableBody, Row, Cell, CellProfile, TablePagination, useTable } from '@backstage/ui';
|
||||
|
||||
const data = [
|
||||
{
|
||||
@@ -293,10 +290,13 @@ const data = [
|
||||
// ... more data
|
||||
];
|
||||
|
||||
const newData = data4.slice(
|
||||
pageIndex * pageSize,
|
||||
(pageIndex + 1) * pageSize,
|
||||
);
|
||||
// Uncontrolled pagination (easiest)
|
||||
const { data: paginatedData, paginationProps } = useTable({
|
||||
data,
|
||||
pagination: {
|
||||
defaultPageSize: 5,
|
||||
},
|
||||
});
|
||||
|
||||
<Table>
|
||||
<TableHeader>
|
||||
@@ -306,9 +306,9 @@ const newData = data4.slice(
|
||||
<Column>Albums</Column>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{newData.map(item => (
|
||||
{paginatedData?.map(item => (
|
||||
<Row key={item.name}>
|
||||
<CellProfileBUI
|
||||
<CellProfile
|
||||
name={item.name}
|
||||
src={item.image}
|
||||
href={item.website}
|
||||
@@ -320,10 +320,4 @@ const newData = data4.slice(
|
||||
))}
|
||||
</TableBody>
|
||||
</Table>
|
||||
<TablePagination
|
||||
pageIndex={pageIndex}
|
||||
pageSize={pageSize}
|
||||
rowCount={data4.length}
|
||||
setPageIndex={setPageIndex}
|
||||
setPageSize={setPageSize}
|
||||
/>`;
|
||||
<TablePagination {...paginationProps} />`;
|
||||
|
||||
+45
-70
@@ -774,10 +774,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/env@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/env@npm:15.3.4"
|
||||
checksum: 10/40ea0bee2eca72dce6102d30ac50029309bf68a281585270e38f920ae47043f240352ad250058d462169a436dea3d8f78a935406ee61088bd4a614524b4a315b
|
||||
"@next/env@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/env@npm:15.4.7"
|
||||
checksum: 10/8341fa6f1b5aebb6f99d8abad2f3ee2685281aaa51785f8ceff3c9a7f03186645f372003ee833715c0ce05e4e7d960defa4252018977f19564001b872b24714e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -807,58 +807,58 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-darwin-arm64@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-darwin-arm64@npm:15.3.4"
|
||||
"@next/swc-darwin-arm64@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-darwin-arm64@npm:15.4.7"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-darwin-x64@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-darwin-x64@npm:15.3.4"
|
||||
"@next/swc-darwin-x64@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-darwin-x64@npm:15.4.7"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-arm64-gnu@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-linux-arm64-gnu@npm:15.3.4"
|
||||
"@next/swc-linux-arm64-gnu@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-linux-arm64-gnu@npm:15.4.7"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-arm64-musl@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-linux-arm64-musl@npm:15.3.4"
|
||||
"@next/swc-linux-arm64-musl@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-linux-arm64-musl@npm:15.4.7"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-x64-gnu@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-linux-x64-gnu@npm:15.3.4"
|
||||
"@next/swc-linux-x64-gnu@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-linux-x64-gnu@npm:15.4.7"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-linux-x64-musl@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-linux-x64-musl@npm:15.3.4"
|
||||
"@next/swc-linux-x64-musl@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-linux-x64-musl@npm:15.4.7"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-arm64-msvc@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-win32-arm64-msvc@npm:15.3.4"
|
||||
"@next/swc-win32-arm64-msvc@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-win32-arm64-msvc@npm:15.4.7"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@next/swc-win32-x64-msvc@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "@next/swc-win32-x64-msvc@npm:15.3.4"
|
||||
"@next/swc-win32-x64-msvc@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "@next/swc-win32-x64-msvc@npm:15.4.7"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@@ -1122,13 +1122,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/counter@npm:0.1.3":
|
||||
version: 0.1.3
|
||||
resolution: "@swc/counter@npm:0.1.3"
|
||||
checksum: 10/df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/helpers@npm:0.5.15":
|
||||
version: 0.5.15
|
||||
resolution: "@swc/helpers@npm:0.5.15"
|
||||
@@ -1916,15 +1909,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"busboy@npm:1.6.0":
|
||||
version: 1.6.0
|
||||
resolution: "busboy@npm:1.6.0"
|
||||
dependencies:
|
||||
streamsearch: "npm:^1.1.0"
|
||||
checksum: 10/bee10fa10ea58e7e3e7489ffe4bda6eacd540a17de9f9cd21cc37e297b2dd9fe52b2715a5841afaec82900750d810d01d7edb4b2d456427f449b92b417579763
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cacache@npm:^19.0.1":
|
||||
version: 19.0.1
|
||||
resolution: "cacache@npm:19.0.1"
|
||||
@@ -2360,7 +2344,7 @@ __metadata:
|
||||
html-react-parser: "npm:^5.2.5"
|
||||
lightningcss: "npm:^1.28.2"
|
||||
motion: "npm:^12.4.1"
|
||||
next: "npm:15.3.4"
|
||||
next: "npm:15.4.7"
|
||||
next-mdx-remote-client: "npm:^2.1.2"
|
||||
prop-types: "npm:^15.8.1"
|
||||
react: "npm:19.1.1"
|
||||
@@ -5179,29 +5163,27 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"next@npm:15.3.4":
|
||||
version: 15.3.4
|
||||
resolution: "next@npm:15.3.4"
|
||||
"next@npm:15.4.7":
|
||||
version: 15.4.7
|
||||
resolution: "next@npm:15.4.7"
|
||||
dependencies:
|
||||
"@next/env": "npm:15.3.4"
|
||||
"@next/swc-darwin-arm64": "npm:15.3.4"
|
||||
"@next/swc-darwin-x64": "npm:15.3.4"
|
||||
"@next/swc-linux-arm64-gnu": "npm:15.3.4"
|
||||
"@next/swc-linux-arm64-musl": "npm:15.3.4"
|
||||
"@next/swc-linux-x64-gnu": "npm:15.3.4"
|
||||
"@next/swc-linux-x64-musl": "npm:15.3.4"
|
||||
"@next/swc-win32-arm64-msvc": "npm:15.3.4"
|
||||
"@next/swc-win32-x64-msvc": "npm:15.3.4"
|
||||
"@swc/counter": "npm:0.1.3"
|
||||
"@next/env": "npm:15.4.7"
|
||||
"@next/swc-darwin-arm64": "npm:15.4.7"
|
||||
"@next/swc-darwin-x64": "npm:15.4.7"
|
||||
"@next/swc-linux-arm64-gnu": "npm:15.4.7"
|
||||
"@next/swc-linux-arm64-musl": "npm:15.4.7"
|
||||
"@next/swc-linux-x64-gnu": "npm:15.4.7"
|
||||
"@next/swc-linux-x64-musl": "npm:15.4.7"
|
||||
"@next/swc-win32-arm64-msvc": "npm:15.4.7"
|
||||
"@next/swc-win32-x64-msvc": "npm:15.4.7"
|
||||
"@swc/helpers": "npm:0.5.15"
|
||||
busboy: "npm:1.6.0"
|
||||
caniuse-lite: "npm:^1.0.30001579"
|
||||
postcss: "npm:8.4.31"
|
||||
sharp: "npm:^0.34.1"
|
||||
sharp: "npm:^0.34.3"
|
||||
styled-jsx: "npm:5.1.6"
|
||||
peerDependencies:
|
||||
"@opentelemetry/api": ^1.1.0
|
||||
"@playwright/test": ^1.41.2
|
||||
"@playwright/test": ^1.51.1
|
||||
babel-plugin-react-compiler: "*"
|
||||
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||
@@ -5236,7 +5218,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
next: dist/bin/next
|
||||
checksum: 10/bcc781ca5abba6a29408431f81b57598708871796fe4c70d1187cc92ca4905467a6a3cde32840cb7911099d54a93c1543c130e4dea2b59dbf9753f5850a8efdf
|
||||
checksum: 10/e611751247d5cfff9337a84979918bcd61919d7b66a411c982569336c3dba7e7a8704eead7e082e579807200fa8bc80602a3e2ce4423a8b5387aab3353400918
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6059,7 +6041,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sharp@npm:^0.34.1":
|
||||
"sharp@npm:^0.34.3":
|
||||
version: 0.34.3
|
||||
resolution: "sharp@npm:0.34.3"
|
||||
dependencies:
|
||||
@@ -6347,13 +6329,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"streamsearch@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "streamsearch@npm:1.1.0"
|
||||
checksum: 10/612c2b2a7dbcc859f74597112f80a42cbe4d448d03da790d5b7b39673c1197dd3789e91cd67210353e58857395d32c1e955a9041c4e6d5bae723436b3ed9ed14
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
|
||||
version: 4.2.3
|
||||
resolution: "string-width@npm:4.2.3"
|
||||
|
||||
@@ -34,6 +34,7 @@ Backstage comes with many common authentication providers in the core library:
|
||||
- [Okta](okta/provider.md)
|
||||
- [OAuth 2 Custom Proxy](oauth2-proxy/provider.md)
|
||||
- [OneLogin](onelogin/provider.md)
|
||||
- [OpenShift](openshift/provider.md)
|
||||
- [VMware Cloud](vmware-cloud/provider.md)
|
||||
|
||||
These built-in providers handle the authentication flow for a particular service, including required scopes, callbacks, etc. These providers are each added to a
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
---
|
||||
id: provider
|
||||
title: OpenShift Authentication Provider
|
||||
sidebar_label: OpenShift
|
||||
description: Adding OpenShift OAuth as an authentication provider in Backstage
|
||||
---
|
||||
|
||||
The Backstage `core-plugin-api` package comes with a OpenShift authentication
|
||||
provider that can authenticate users using OpenShift OAuth.
|
||||
|
||||
## Use Case
|
||||
|
||||
This setup enables the [Kubernetes plugin](../../features/kubernetes/index.md) to access OpenShift clusters using the user's permissions,
|
||||
leveraging OAuth 2.0 _On-Behalf-Of_ flow via the [Kubernetes Client Side Provider](../../features/kubernetes/authentication.md).
|
||||
|
||||
To make this work, the corresponding `User` entities must exist in the Backstage catalog,
|
||||
and their names must match the OpenShift users.
|
||||
|
||||
Although the OpenShift authentication provider does not support OIDC natively,
|
||||
you can still configure it for use with the Kubernetes integration by treating it as an OIDC provider
|
||||
in the `KubernetesAuthProviders` configuration.
|
||||
|
||||
```ts title="packages/app/src/apis.ts"
|
||||
import {
|
||||
KubernetesAuthProviders,
|
||||
kubernetesAuthProvidersApiRef,
|
||||
} from '@backstage/plugin-kubernetes';
|
||||
import {
|
||||
googleAuthApiRef,
|
||||
microsoftAuthApiRef,
|
||||
openshiftAuthApiRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
|
||||
export const apis: AnyApiFactory[] = [
|
||||
// ...
|
||||
createApiFactory({
|
||||
api: kubernetesAuthProvidersApiRef,
|
||||
deps: {
|
||||
microsoftAuthApi: microsoftAuthApiRef,
|
||||
googleAuthApi: googleAuthApiRef,
|
||||
openshiftAuthApi: openshiftAuthApiRef,
|
||||
},
|
||||
factory({ microsoftAuthApi, googleAuthApi, openshiftAuthApi }) {
|
||||
return new KubernetesAuthProviders({
|
||||
microsoftAuthApi,
|
||||
googleAuthApi,
|
||||
oidcProviders: {
|
||||
openshift: {
|
||||
async getIdToken(_) {
|
||||
return await openshiftAuthApi.getAccessToken('user:full');
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
},
|
||||
}),
|
||||
//...
|
||||
];
|
||||
```
|
||||
|
||||
:::note Note
|
||||
|
||||
The OpenShift auth API does **not** implement the `OpenIdConnectApi` interface. In other words, it does **not** return an ID token.
|
||||
Instead, it returns an **access token**, which is used by the Kubernetes integration in place of an ID token.
|
||||
This is the only functional difference from the standard OIDC-based authentication flow.
|
||||
|
||||
:::
|
||||
|
||||
## Create an OAuth client in OpenShift
|
||||
|
||||
Make sure that an OAuth client exists in the OpenShift cluster.
|
||||
|
||||
To configure the OpenShift integration, create an [`OAuthClient`](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/authentication_and_authorization/configuring-oauth-clients).
|
||||
|
||||
The redirect URI must be in the following format: `https://<fqdn>/api/auth/openshift/handler/frame`.
|
||||
|
||||
## Configuration
|
||||
|
||||
The provider configuration can then be added to your `app-config.yaml` under the
|
||||
root `auth` configuration:
|
||||
|
||||
```yaml
|
||||
auth:
|
||||
environment: development
|
||||
providers:
|
||||
openshift:
|
||||
development:
|
||||
clientId: ${AUTH_OPENSHIFT_CLIENT_ID}
|
||||
clientSecret: ${AUTH_OPENSHIFT_CLIENT_SECRET}
|
||||
authorizationUrl: ${AUTH_OPENSHIFT_AUTHORIZATION_URL}
|
||||
tokenUrl: ${AUTH_OPENSHIFT_TOKEN_URL}
|
||||
openshiftApiServerUrl: ${OPENSHIFT_API_SERVER_URL}
|
||||
## uncomment to set lifespan of user session
|
||||
# sessionDuration: { hours: 24 } # supports `ms` library format (e.g. '24h', '2 days'), ISO duration, "human duration" as used in code
|
||||
# sessionDuration: 1d
|
||||
signIn:
|
||||
resolvers:
|
||||
- resolver: displayNameMatchingUserEntityName
|
||||
```
|
||||
|
||||
The OpenShift provider is a structure with these configuration keys:
|
||||
|
||||
- `clientId`: The client ID of your OpenShift OAuth client, e.g., `my-backstage`
|
||||
- `clientSecret`: The client secret tied to the OpenShift OAuth client.
|
||||
- `authorizationUrl`: The OpenShift OAuth client auth endpoint, format: `https://<oauth-client-route>/oauth/authorize`.
|
||||
- `tokenUrl`: The OpenShift OAuth client token endpoint, format: `https://<oauth-client-route>/oauth/token`.
|
||||
- `openshiftApiServerUrl`: The OpenShift API server endpoint, format: `https://<openshift-api>`.
|
||||
- `sessionDuration`: (optional): Lifespan of the user session.
|
||||
- `signIn`: The configuration for the sign-in process, including the **resolvers**
|
||||
that should be used to match the user from the auth provider with the user
|
||||
entity in the Backstage catalog (typically a single resolver is sufficient).
|
||||
|
||||
The provider needs to use the scope **user:full**.
|
||||
|
||||
## Backend Installation
|
||||
|
||||
To add the provider to the backend we will first need to install the package by running this command:
|
||||
|
||||
```bash title="from your Backstage root directory"
|
||||
yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-openshift-provider
|
||||
```
|
||||
|
||||
Then we will need to add this line:
|
||||
|
||||
```ts title="in packages/backend/src/index.ts"
|
||||
backend.add(import('@backstage/plugin-auth-backend'));
|
||||
/* highlight-add-start */
|
||||
backend.add(import('@backstage/plugin-auth-backend-module-openshift-provider'));
|
||||
/* highlight-add-end */
|
||||
```
|
||||
@@ -7,6 +7,39 @@ description: Documentation for the Cache service
|
||||
|
||||
This service lets your plugin interact with a cache. It is bound to your plugin too, so that you will only set and get values in your plugin's private namespace.
|
||||
|
||||
## Configuration
|
||||
|
||||
The cache service can be configured using the `backend.cache` section in your `app-config.yaml`:
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
cache:
|
||||
store: redis # or 'valkey', 'memcache', 'memory'
|
||||
connection: redis://localhost:6379
|
||||
|
||||
# Store-specific configuration (Redis/Valkey only)
|
||||
redis:
|
||||
client:
|
||||
# Optional: Global namespace prefix for all cache keys
|
||||
namespace: 'my-app'
|
||||
# Optional: Separator used between namespace and plugin ID (default: ':')
|
||||
keyPrefixSeparator: ':'
|
||||
# Other Redis-specific options...
|
||||
clearBatchSize: 1000
|
||||
useUnlink: false
|
||||
```
|
||||
|
||||
### Namespace Configuration
|
||||
|
||||
For Redis and Valkey stores, you can configure a global namespace that will be prefixed to all cache keys:
|
||||
|
||||
- **Without namespace**: Cache keys use only the plugin ID (e.g., `catalog:some-key`)
|
||||
- **With namespace**: Cache keys use the format `namespace:pluginId:key` (e.g., `my-app:catalog:some-key`)
|
||||
|
||||
The `keyPrefixSeparator` controls what character is used between the namespace and plugin ID (defaults to `:`).
|
||||
|
||||
**Note**: Memory and Memcache stores do not support namespace configuration and will always use the plugin ID directly.
|
||||
|
||||
## Using the service
|
||||
|
||||
The following example shows how to get a cache client in your `example` backend plugin and setting and getting values from the cache.
|
||||
|
||||
@@ -13,6 +13,51 @@ If you want to override the implementation for logging across all of the backend
|
||||
|
||||
## Configuring the service
|
||||
|
||||
### Configuration parameters
|
||||
|
||||
The Root Logger Service can be configured with the `backend.logger` section of your `app-config.yaml`.
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- `level` (string, optional): Sets the global log level. Possible values are `debug`, `info`, `warn`, or `error`. Only messages at or above this level will be logged. This can also be set via the `LOG_LEVEL` environment variable, which takes precedence. Defaults to `info`. See [Modifying the log level](#modifying-the-log-level).
|
||||
|
||||
- `meta` (object, optional): Additional metadata to include with every log entry.
|
||||
|
||||
- `overrides` (array, optional): Allows to specify logger overrides for specific plugins or messages. Each override can match on plugin names, message patterns, or any field contained in the log, and set a custom log level for those matches.
|
||||
|
||||
Log level overrides are useful for controlling the volume of logs generated in Backstage.
|
||||
They allow you to apply a global log level, `info` for example, while setting a stricter level, such as `warn`, for specific verbose plugins.
|
||||
|
||||
The reverse is also possible: you can set a global log level of `warn` while enabling a more detailed level, such as `debug`, for certain logs.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
logger:
|
||||
meta:
|
||||
env: prod # Every log message will have `env="prod"`
|
||||
|
||||
level: info # Set the global log level to info (the default)
|
||||
|
||||
overrides:
|
||||
# Set the log level to 'debug' for the catalog plugin logs
|
||||
- matchers:
|
||||
plugin: catalog
|
||||
level: debug
|
||||
|
||||
# Ignore 'info' incoming HTTP requests logs from the rootHttpRouter service
|
||||
- matchers:
|
||||
service: rootHttpRouter
|
||||
type: incomingRequest
|
||||
level: warn
|
||||
|
||||
# Ignore logs starting with "Task worker starting", unless they're warnings or errors
|
||||
- matchers:
|
||||
message: ['/^Task worker starting/']
|
||||
level: warn
|
||||
```
|
||||
|
||||
### Modifying the log level
|
||||
|
||||
The available log levels, in order of decreasing verbosity, are:
|
||||
@@ -21,7 +66,6 @@ The available log levels, in order of decreasing verbosity, are:
|
||||
- `info`: General information about the application's operation. This is the default level.
|
||||
- `warn`: Indicates potential issues or situations that may require attention.
|
||||
- `error`: Indicates errors that have occurred but may not necessarily prevent the application from continuing.
|
||||
- `critical`: Indicates critical errors that require immediate attention and likely prevent the application from functioning correctly.
|
||||
|
||||
The verbosity of the logging can be controlled by setting the log level. The log level determines the minimum severity level of events that will be output to the console. For example, if the log level is set to `info`, events with a severity level of `debug` will be ignored.
|
||||
|
||||
|
||||
+18
-4
@@ -16,10 +16,24 @@ allowing for customization.
|
||||
## Supplying Configuration
|
||||
|
||||
Configuration is stored in YAML files where the defaults are `app-config.yaml`
|
||||
and `app-config.local.yaml` for local overrides. Other sets of files can by
|
||||
loaded by passing `--config <path>` flags. The configuration files themselves
|
||||
contain plain YAML, but with support for loading in data and secrets from
|
||||
various sources using for example `$env` and `$file` keys.
|
||||
and `app-config.local.yaml` for local overrides. Additionally, it is possible
|
||||
to define environment based configuration files with `BACKSTAGE_ENV`
|
||||
environment variable, which will load `app-config.<BACKSTAGE_ENV>.yaml`.
|
||||
|
||||
Loading order of these files is as follows:
|
||||
|
||||
1. `app-config.yaml`
|
||||
2. `app-config.<BACKSTAGE_ENV>.yaml`
|
||||
3. `app-config.local.yaml`
|
||||
4. `app-config.<BACKSTAGE_ENV>.local.yaml`
|
||||
|
||||
Other sets of files can by loaded by passing `--config <path>` flags.
|
||||
Read more about the configuration loading order in the
|
||||
[Configuration Files](./writing.md#configuration-files) section.
|
||||
|
||||
The configuration files themselves contain plain YAML, but with support for
|
||||
loading in data and secrets from various sources using for example
|
||||
`$env` and `$file` keys.
|
||||
|
||||
It is also possible to supply configuration through environment variables, for
|
||||
example `APP_CONFIG_app_baseUrl=https://staging.example.com`. However these
|
||||
|
||||
@@ -221,7 +221,3 @@ future.
|
||||
|
||||
- [`catalog-info.yaml`](https://github.com/backstage/backstage/tree/master/catalog-info.yaml) -
|
||||
Description of Backstage in the Backstage Entity format.
|
||||
|
||||
- [`lerna.json`](https://github.com/backstage/backstage/tree/master/lerna.json) -
|
||||
[Lerna](https://github.com/lerna/lerna) monorepo config. We are using
|
||||
`yarn workspaces`, so this will only be used for executing scripts.
|
||||
|
||||
@@ -53,7 +53,7 @@ Once the host build is complete, we are ready to build our image. The following
|
||||
`Dockerfile` is included when creating a new app with `@backstage/create-app`:
|
||||
|
||||
```dockerfile
|
||||
FROM node:20-bookworm-slim
|
||||
FROM node:22-bookworm-slim
|
||||
|
||||
# Set Python interpreter for `node-gyp` to use
|
||||
ENV PYTHON=/usr/bin/python3
|
||||
@@ -178,7 +178,7 @@ the repo root:
|
||||
|
||||
```dockerfile
|
||||
# Stage 1 - Create yarn install skeleton layer
|
||||
FROM node:20-bookworm-slim AS packages
|
||||
FROM node:22-bookworm-slim AS packages
|
||||
|
||||
WORKDIR /app
|
||||
COPY backstage.json package.json yarn.lock ./
|
||||
@@ -193,7 +193,7 @@ COPY plugins plugins
|
||||
RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+
|
||||
|
||||
# Stage 2 - Install dependencies and build packages
|
||||
FROM node:20-bookworm-slim AS build
|
||||
FROM node:22-bookworm-slim AS build
|
||||
|
||||
# Set Python interpreter for `node-gyp` to use
|
||||
ENV PYTHON=/usr/bin/python3
|
||||
@@ -231,7 +231,7 @@ RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \
|
||||
&& tar xzf packages/backend/dist/bundle.tar.gz -C packages/backend/dist/bundle
|
||||
|
||||
# Stage 3 - Build the actual backend image and install production dependencies
|
||||
FROM node:20-bookworm-slim
|
||||
FROM node:22-bookworm-slim
|
||||
|
||||
# Set Python interpreter for `node-gyp` to use
|
||||
ENV PYTHON=/usr/bin/python3
|
||||
|
||||
@@ -239,6 +239,26 @@ search:
|
||||
|
||||
> You can also increase the batch size if you are using a large ES instance.
|
||||
|
||||
### Elasticsearch batch key field
|
||||
|
||||
By default, during bulk uploads with the Elasticsearch indexer, each document is assigned an auto-generated `_id` unless a `batchKeyField` is explicitly set. This configuration is optional and most users won’t need to customize it. However, if your use case involves frequent lookups or updates to existing documents, setting `batchKeyField` can be beneficial. It allows you to define a consistent identifier for each document, helping to streamline updates and prevent duplicate entries. Be aware that if the value provided for `batchKeyField` is not unique across documents, Elasticsearch will overwrite any existing document with the same `_id`.
|
||||
|
||||
**Using `batchKeyField` (Custom `_id`)**
|
||||
|
||||
```yaml
|
||||
search:
|
||||
elasticsearch:
|
||||
batchKeyField: document_id
|
||||
```
|
||||
|
||||
**Default Behavior (Auto-generated `_id`)**
|
||||
|
||||
```yaml
|
||||
search:
|
||||
elasticsearch:
|
||||
# No batchKeyField specified — Elasticsearch will autogenerate _id
|
||||
```
|
||||
|
||||
### Elasticsearch Index Name Customization
|
||||
|
||||
By default, the Elasticsearch indexer creates index names based on their type, a separator, and the current date as a postfix. You can configure a custom prefix for all indices by adding the following section to your app configuration.
|
||||
|
||||
@@ -132,6 +132,10 @@ in the registration order, but this does not apply over multiple catalog modules
|
||||
the order of registration depends on the order in which the modules are loaded
|
||||
by the framework.
|
||||
|
||||
It's possible to customize the order of the processors by modifying the
|
||||
`catalog.processors.<processorName>.priority` configuration option.
|
||||
The default priority is `20`, and lower value means that the processor runs earlier.
|
||||
|
||||
:::
|
||||
|
||||
Each step has the opportunity to optionally modify the entity, and to optionally
|
||||
|
||||
@@ -126,7 +126,7 @@ metadata:
|
||||
|
||||
The value of this annotation informs of the path to this component's TechDocs within an external entity that owns the TechDocs.
|
||||
In conjunction with [backstage.io/techdocs-entity](#backstageiotechdocs-entity) this allows for deep linking into the TechDocs of
|
||||
another entity, not just linking to the root of another entities TechDocs.
|
||||
another entity, not just linking to the root of another entity's TechDocs.
|
||||
|
||||
### backstage.io/view-url, backstage.io/edit-url
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ This page answers frequently asked questions about [TechDocs](README.md).
|
||||
- [What static site generator is TechDocs using?](#what-static-site-generator-is-techdocs-using)
|
||||
- [What is the mkdocs-techdocs-core plugin?](#what-is-the-mkdocs-techdocs-core-plugin)
|
||||
- [Does TechDocs support file formats other than Markdown (e.g. RST, AsciiDoc)?](#does-techdocs-support-file-formats-other-than-markdown-eg-rst-asciidoc-)
|
||||
- [What should be the value of `backstage.io/techdocs-ref` when using external build and storage?](#what-should-be-the-value-of-backstageiotechdocs-ref-when-using-external-build-and-storage)
|
||||
- [Is it possible for users to suggest changes or provide feedback on a TechDocs page?](#is-it-possible-for-users-to-suggest-changes-or-provide-feedback-on-a-techdocs-page)
|
||||
|
||||
#### What static site generator is TechDocs using?
|
||||
|
||||
@@ -46,6 +48,10 @@ annotation should still be present in entity descriptor file (e.g.
|
||||
`catalog-info.yaml`) for Backstage to know that TechDocs is enabled for the
|
||||
entity.
|
||||
|
||||
#### What happens when you navigate to a TechDocs URL for an entity uses the `backstage.io/techdocs-entity` annotation?
|
||||
|
||||
If you navigate to a TechDocs URL in the format `docs/{namespace}/{kind}/{name}` for an entity that has the `backstage.io/techdocs-entity` annotation (instead of the `backstage.io/techdocs-ref` annotation), then Backstage will redirect to the TechDocs page of the entity referenced in the value of that annotation.
|
||||
|
||||
#### Is it possible for users to suggest changes or provide feedback on a TechDocs page?
|
||||
|
||||
This is supported for TechDocs sites whose source code is hosted in either
|
||||
|
||||
@@ -92,7 +92,7 @@ import { createExtensionTester } from '@backstage/frontend-test-utils';
|
||||
import { indexPageExtension } from './plugin';
|
||||
|
||||
describe('Index page', () => {
|
||||
it('should render a the index page', async () => {
|
||||
it('should render the index page', async () => {
|
||||
await renderInTestApp(
|
||||
createExtensionTester(indexPageExtension).reactElement(),
|
||||
);
|
||||
@@ -147,7 +147,7 @@ import { createExtensionTester } from '@backstage/frontend-test-utils';
|
||||
import { indexPageExtension, detailsPageExtension } from './plugin';
|
||||
|
||||
describe('Index page', () => {
|
||||
it('should accepts a custom title via config', async () => {
|
||||
it('should accept a custom title via config', async () => {
|
||||
const tester = createExtensionTester(indexPageExtension, {
|
||||
// Extension configuration for the index page
|
||||
config: { title: 'Custom page' },
|
||||
|
||||
@@ -31,7 +31,7 @@ This guide also assumes a basic understanding of working on a Linux based operat
|
||||
[Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/)
|
||||
- A GNU-like build environment available at the command line.
|
||||
For example, on Debian/Ubuntu you will want to have the `make` and `build-essential` packages installed.
|
||||
On macOS, you will want to have run `xcode-select --install` to get the XCode command line build tooling in place.
|
||||
On macOS, you will want to run `xcode-select --install` to get the XCode command line build tooling in place.
|
||||
- An account with elevated rights to install the dependencies
|
||||
- `curl` or `wget` installed
|
||||
- Node.js [Active LTS Release](../overview/versioning-policy.md#nodejs-releases) installed using one of these
|
||||
@@ -58,9 +58,9 @@ The Backstage app we'll be creating will only have demo data until we set up int
|
||||
|
||||
:::
|
||||
|
||||
To install the Backstage Standalone app, we will make use of `npx`. `npx` is a tool that comes preinstalled with Node.js and lets you run commands straight from `npm` or other registries. Before we jump in to running the command, let's chat about what it does.
|
||||
To install the Backstage Standalone app, we will make use of `npx`. `npx` is a tool that comes preinstalled with Node.js and lets you run commands straight from `npm` or other registries. Before we run the command, let's discuss what it does.
|
||||
|
||||
This command will create a new directory with a Backstage app inside. The wizard will ask you for the name of the app. This name will be created as sub directory in your current working directory.
|
||||
This command will create a new directory with a Backstage app inside. The wizard will ask you for the name of the app. This name will be created as subdirectory in your current working directory.
|
||||
|
||||

|
||||
|
||||
@@ -89,8 +89,8 @@ app
|
||||
- **package.json**: Root package.json for the project. _Note: Be sure that you
|
||||
don't add any npm dependencies here as they probably should be installed in
|
||||
the intended workspace rather than in the root._
|
||||
- **packages/**: Lerna leaf packages or "workspaces". Everything here is going
|
||||
to be a separate package, managed by lerna.
|
||||
- **packages/**: Yarn workspaces, everything here is going
|
||||
to be a separate package, managed by Yarn.
|
||||
- **packages/app/**: A fully functioning Backstage frontend app that acts as a
|
||||
good starting point for you to get to know Backstage.
|
||||
- **packages/backend/**: We include a backend that helps power features such as
|
||||
|
||||
@@ -184,7 +184,7 @@ To install custom rules in a plugin, we need to use the [`PermissionsRegistrySer
|
||||
import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'),
|
||||
);
|
||||
/* highlight-add-next-line */
|
||||
backend.add(import('./extensions/catalogPermissionRules'));
|
||||
backend.add(import('./modules/catalogPermissionRules'));
|
||||
```
|
||||
|
||||
5. Now when you run you Backstage instance - `yarn start` - the rule will be added to the catalog plugin.
|
||||
|
||||
@@ -208,7 +208,7 @@ One of the [packages](#package) within a [monorepo](#monorepo). A package may or
|
||||
|
||||
1. A single repository for a collection of related software projects, such as all projects belonging to an organization.
|
||||
|
||||
2. A project layout that consists of multiple [packages](#package) within a single project, where packages are able to have local dependencies on each other. Often enabled through tooling such as [lerna](https://lerna.js.org/) and [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/)
|
||||
2. A project layout that consists of multiple [packages](#package) within a single project, where packages are able to have local dependencies on each other. Often enabled through tooling such as [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/)
|
||||
|
||||
## Name
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,695 @@
|
||||
# Release v1.43.0-next.2
|
||||
|
||||
Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.43.0-next.2](https://backstage.github.io/upgrade-helper/?to=1.43.0-next.2)
|
||||
|
||||
## @backstage/catalog-client@1.12.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 0e9ec44: Introduced new `streamEntities` async generator method for the catalog.
|
||||
|
||||
Catalog API and Catalog Service now includes a `streamEntities` method that allows for streaming entities from the catalog.
|
||||
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
|
||||
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
|
||||
or fetch all entities at once.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
|
||||
for await (const page of pageStream) {
|
||||
// Handle page of entities
|
||||
for (const entity of page) {
|
||||
console.log(entity);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## @backstage/plugin-auth@0.1.0-next.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 54ddfef: Initial publish of the `auth` frontend package
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 0e9ec44: Introduced new `streamEntities` async generator method for the catalog.
|
||||
|
||||
Catalog API and Catalog Service now includes a `streamEntities` method that allows for streaming entities from the catalog.
|
||||
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
|
||||
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
|
||||
or fetch all entities at once.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
|
||||
for await (const page of pageStream) {
|
||||
// Handle page of entities
|
||||
for (const entity of page) {
|
||||
console.log(entity);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 0e9ec44: Introduced new `streamEntities` async generator method for the catalog.
|
||||
|
||||
Catalog API and Catalog Service now includes a `streamEntities` method that allows for streaming entities from the catalog.
|
||||
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
|
||||
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
|
||||
or fetch all entities at once.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
|
||||
for await (const page of pageStream) {
|
||||
// Handle page of entities
|
||||
for (const entity of page) {
|
||||
console.log(entity);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/backend-defaults@0.12.1-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4eda590: Fixed cache namespace and key prefix separator configuration to properly use configured values instead of hardcoded plugin ID. The cache manager now correctly combines the configured namespace with plugin IDs using the configured separator for Redis and Valkey. Memcache and memory store continue to use plugin ID as namespace.
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/integration-aws-node@0.1.17
|
||||
|
||||
## @backstage/backend-dynamic-feature-service@0.7.4-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-backend@3.0.2-next.1
|
||||
- @backstage/plugin-app-node@0.1.37-next.1
|
||||
|
||||
## @backstage/cli@0.34.2-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/config-loader@1.10.3-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a73f495: Allow using `BACKSTAGE_ENV` for loading environment specific config files
|
||||
|
||||
## @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
|
||||
## @backstage/core-components@0.17.6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 1ad3d94: Dependency graph can now be opened in full screen mode
|
||||
- ae7d426: update about card links style for pretty display with other language
|
||||
|
||||
## @backstage/create-app@0.7.4-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Bumped create-app version.
|
||||
|
||||
## @backstage/dev-utils@1.1.14-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/repo-tools@0.15.2-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
|
||||
## @backstage/ui@0.7.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 7307930: Add missing class for flex: baseline
|
||||
- 89da341: Fix Select component to properly attach aria-label and aria-labelledby props to the rendered element for improved accessibility.
|
||||
|
||||
## @backstage/plugin-api-docs@0.12.11-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-app-backend@0.5.6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- afd368e: Internal update to not expose the old `createRouter`.
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-app-node@0.1.37-next.1
|
||||
|
||||
## @backstage/plugin-app-node@0.1.37-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
|
||||
## @backstage/plugin-auth-backend@0.25.4-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 1d47bf3: Implementing Dynamic Client Registration with the OIDC server. You can enable this by setting `auth.experimentalDynamicClientRegistration.enabled` in `app-config.yaml`. This is highly experimental, but feedback welcome.
|
||||
- 54ddfef: Updating plugin metadata
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-auth-node@0.6.7-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 54ddfef: Updating plugin metadata
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
|
||||
## @backstage/plugin-auth-react@0.1.19-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 54ddfef: Updating plugin metadata
|
||||
- Updated dependencies
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/plugin-catalog@1.31.3-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 85c5e04: Fix incorrect `defaultTarget` on `createComponentRouteRef`.
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-catalog-backend@3.0.2-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2204f5b: Prevent deadlock in catalog deferred stitching
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-aws@0.4.15-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/integration-aws-node@0.1.17
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-azure@0.3.9-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.5.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-bitbucket-server@0.5.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-gcp@0.3.12-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-gerrit@0.3.6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-gitea@0.1.4-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-github@0.11.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-backend@3.0.2-next.1
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-github-org@0.3.14-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/plugin-catalog-backend-module-github@0.11.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-gitlab@0.7.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.13-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/plugin-catalog-backend-module-gitlab@0.7.3-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.7.4-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/plugin-catalog-backend@3.0.2-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-ldap@0.11.9-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-msgraph@0.8.0-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-openapi@0.2.14-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-puppetdb@0.2.14-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- afd368e: **BREAKING ALPHA**: The module has been moved from the `/alpha` export to the root of the package.
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.12-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-backend-module-unprocessed@0.6.4-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-catalog-graph@0.4.23-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-catalog-import@0.13.5-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-devtools-backend@0.5.9-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
|
||||
## @backstage/plugin-home@0.8.12-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 929c55a: Fixed race condition in CustomHomepageGrid by waiting for storage to load before rendering custom layout to prevent
|
||||
rendering of the default content.
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-kubernetes@0.12.11-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-kubernetes-backend@0.20.2-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- dd7b6d2: Fix a bug where `getDefault` in the `kubernetesFetcherExtensionPoint` had the wrong `this` value
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration-aws-node@0.1.17
|
||||
|
||||
## @backstage/plugin-kubernetes-cluster@0.0.29-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/plugin-mcp-actions-backend@0.1.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 1d47bf3: Proxy `/.well-known/oauth-authorization-server` to `/.well-known/openid-configuration` on `auth-backend` when `auth.experimentalDynamicClientRegistration.enabled` is enabled.
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-notifications-backend@0.5.10-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/plugin-notifications-node@0.2.19-next.1
|
||||
|
||||
## @backstage/plugin-notifications-backend-module-email@0.3.13-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration-aws-node@0.1.17
|
||||
- @backstage/plugin-notifications-node@0.2.19-next.1
|
||||
|
||||
## @backstage/plugin-notifications-backend-module-slack@0.1.5-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/plugin-notifications-node@0.2.19-next.1
|
||||
|
||||
## @backstage/plugin-notifications-node@0.2.19-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
|
||||
## @backstage/plugin-org@0.6.44-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-org-react@0.1.42-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/plugin-scaffolder@1.34.1-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 0d415ae: Render a TechDocs link on the Scaffolder Template List page when templates include either `backstage.io/techdocs-ref` or `backstage.io/techdocs-entity` annotations, using the shared `buildTechDocsURL` helper. Also adds tests to verify both annotations and optional `backstage.io/techdocs-entity-path` are respected.
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-scaffolder-backend@2.2.1-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.12-next.1
|
||||
- @backstage/plugin-scaffolder-backend-module-github@0.8.3-next.1
|
||||
|
||||
## @backstage/plugin-scaffolder-backend-module-github@0.8.3-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
|
||||
## @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 58fc108: Fix scaffolder task log stream not having a minimum height
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
|
||||
## @backstage/plugin-search@1.4.30-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-search-backend-module-catalog@0.3.8-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-search-backend-module-techdocs@0.4.6-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
|
||||
## @backstage/plugin-techdocs@1.14.2-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-auth-react@0.1.19-next.1
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## @backstage/plugin-techdocs-addons-test-utils@1.0.53-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/plugin-techdocs@1.14.2-next.2
|
||||
|
||||
## @backstage/plugin-techdocs-backend@2.1.0-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-defaults@0.12.1-next.1
|
||||
- @backstage/catalog-client@1.12.0-next.0
|
||||
- @backstage/plugin-catalog-node@1.19.0-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/plugin-search-backend-module-techdocs@0.4.6-next.1
|
||||
|
||||
## @backstage/plugin-user-settings@0.8.26-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- b713b54: Tool-tip text correction for the Theme selection in settings page
|
||||
- Updated dependencies
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
|
||||
## example-app@0.2.113-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/ui@0.7.1-next.0
|
||||
- @backstage/plugin-auth-react@0.1.19-next.1
|
||||
- @backstage/plugin-home@0.8.12-next.2
|
||||
- @backstage/plugin-scaffolder@1.34.1-next.2
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-user-settings@0.8.26-next.2
|
||||
- @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/cli@0.34.2-next.2
|
||||
- @backstage/plugin-catalog-graph@0.4.23-next.2
|
||||
- @backstage/plugin-catalog-import@0.13.5-next.2
|
||||
- @backstage/plugin-org@0.6.44-next.2
|
||||
- @backstage/plugin-techdocs@1.14.2-next.2
|
||||
- @backstage/plugin-api-docs@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29-next.2
|
||||
- @backstage/plugin-search@1.4.30-next.2
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28-next.0
|
||||
|
||||
## example-app-next@0.0.27-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/ui@0.7.1-next.0
|
||||
- @backstage/plugin-auth-react@0.1.19-next.1
|
||||
- @backstage/plugin-auth@0.1.0-next.0
|
||||
- @backstage/plugin-home@0.8.12-next.2
|
||||
- @backstage/plugin-scaffolder@1.34.1-next.2
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-user-settings@0.8.26-next.2
|
||||
- @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/cli@0.34.2-next.2
|
||||
- @backstage/plugin-catalog-graph@0.4.23-next.2
|
||||
- @backstage/plugin-catalog-import@0.13.5-next.2
|
||||
- @backstage/plugin-org@0.6.44-next.2
|
||||
- @backstage/plugin-techdocs@1.14.2-next.2
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
- @backstage/plugin-api-docs@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29-next.2
|
||||
- @backstage/plugin-search@1.4.30-next.2
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28-next.0
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
id: v1.43.0
|
||||
title: v1.43.0
|
||||
description: Backstage Release v1.43.0
|
||||
---
|
||||
|
||||
These are the release notes for the v1.43.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 the hard work in getting this release developed and done.
|
||||
|
||||
## Highlights
|
||||
|
||||
### **BREAKING:** MSgraph catalog module encoding queries
|
||||
|
||||
The catalog MSgraph module now properly encodes filter queries before they are sent to the remote system. This fixes some confusion in how to properly write queries–and thus simplifies operations for users. However, it does mean that if you use the `@backstage/plugin-catalog-backend-module-msgraph` module, you will have to update your `filter` parameters to be just plain text without any manual encoding. Example:
|
||||
|
||||
```diff
|
||||
user:
|
||||
- filter: department in('MARKETING', 'R %26 D')
|
||||
+ filter: department in('MARKETING', 'R & D')
|
||||
```
|
||||
|
||||
Contributed by [@stephenglass](https://github.com/stephenglass) in [#30567](https://github.com/backstage/backstage/pull/30567)
|
||||
|
||||
### OpenShift auth
|
||||
|
||||
Backstage now supports OpenShift as an auth provider! This was a long standing PR that we are very excited to have merged into the project. Go [check out the docs](https://backstage.io/docs/auth/openshift/provider) for it!
|
||||
|
||||
Contributed by [@ioboi](https://github.com/ioboi) in [#29470](https://github.com/backstage/backstage/pull/29470)
|
||||
|
||||
### Improved app error display for new frontend system
|
||||
|
||||
If the frontend app encounters one or more critical errors during startup they are now displayed on an error page that summarizes the errors and their source. This is in contrast to before this change, where errors would result in a blank page with the first error logged to the console.
|
||||
|
||||
Some more errors have also been moved to be warnings, which will be logged in the console regardless of whether the app starts up or not.
|
||||
|
||||
### Actions Registry integration with the Scaffolder
|
||||
|
||||
Actions which are registered in the Actions Registry are now also available in Scaffolder templates. You will be able to browse the actions and see the schema like the original Scaffolder Templating Actions, as well as being able to use `action: acme:my-action` inside template steps to call these distributed actions.
|
||||
|
||||
### _Experimental_: Dynamic Client Registration support for MCP Actions Backend
|
||||
|
||||
We’ve shipped experimental support for allowing the `auth-backend` to issue tokens on behalf of users for use in MCP Clients such as Claude and Cursor. This is highly experimental, and tokens are only valid for 1 hour currently. We’re eager to get some feedback on this feature, so if you would like to try it out you can check out the [mcp-actions docs](https://github.com/backstage/backstage/blob/master/plugins/mcp-actions-backend/README.md#experimental-dynamic-client-registration) and leave us some feedback in a [GitHub issue](https://github.com/backstage/backstage/issues/new), or on our [Community Discord](https://discord.gg/backstage-687207715902193673)!
|
||||
|
||||
### Introducing `BACKSTAGE_ENV`
|
||||
|
||||
The Backstage configuration system now pays attention to the `BACKSTAGE_ENV` environment variable, and uses it to locate config files to load without you having to manually specify `--config` flags at startup. This makes it even smoother to leverage e.g. `app-config.production.yaml` files in your production environment.
|
||||
|
||||
Check out [the updated documentation](https://backstage.io/docs/conf/) for more information.
|
||||
|
||||
Contributed by [@drodil](https://github.com/drodil) in [#30722](https://github.com/backstage/backstage/pull/30722)
|
||||
|
||||
### Backend logger configuration
|
||||
|
||||
It is now possible to configure log level, meta, and log level overrides through static configuration. This allows you to raise or lower the log level for individual plugins or services. But it also allows you to match on any log field using either exact matches or regular expressions. Read more about the new configuration options in the [Root Logger Service](https://backstage.io/docs/backend-system/core-services/root-logger/) documentation.
|
||||
|
||||
Contributed by [@tcardonne](https://github.com/tcardonne) in [#30727](https://github.com/backstage/backstage/pull/30727)
|
||||
|
||||
### Toggling and priorities for catalog features
|
||||
|
||||
You are now able to enable/disable individual processors and providers in your catalog, directly through your app config. You can also affect the order in which processors run, by assigning them priorities.
|
||||
|
||||
Contributed by [@drodil](https://github.com/drodil) in [#31034](https://github.com/backstage/backstage/pull/31034) and [#30969](https://github.com/backstage/backstage/pull/30969)
|
||||
|
||||
### Moved the Explore search module
|
||||
|
||||
Just a quick note, that the search collator module for the `explore` plugin was moved to the community repository, where it fits snugly next to the plugin itself. If you are using the yarn plugin, these references should be updated automatically for you. But if you do not, just update your dependencies on `@backstage/plugin-search-backend-module-explore`, to `@backstage-community/plugin-search-backend-module-explore`.
|
||||
|
||||
## Security Fixes
|
||||
|
||||
This release does not contain any security fixes. However, it is worth calling out that OAuth cookies issued by the auth backend have changed from domain-scoped to host-only.
|
||||
|
||||
Contributed by [@JessicaJHee](https://github.com/JessicaJHee) in [#30922](https://github.com/backstage/backstage/pull/30922)
|
||||
|
||||
## 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.43.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://info.backstage.spotify.com/newsletter_subscribe) if you want to be informed about what is happening in the world of Backstage.
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"packages": ["packages/*", "plugins/*"],
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true,
|
||||
"version": "0.0.0"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: KwirthMetrics for Backstage
|
||||
author: Julio Fernandez
|
||||
authorUrl: https://github.com/jfvilas
|
||||
category: Monitoring
|
||||
description: Shows live-streaming charts of Kubernetes resources metrics like CPU, memory, I/O... (you can group and merge data).
|
||||
documentation: https://github.com/jfvilas/plugin-kwirth-metrics
|
||||
iconUrl: https://raw.githubusercontent.com/jfvilas/plugin-kwirth-metrics/master/src/assets/kwirthmetrics-logo.png
|
||||
npmPackageName: '@jfvilas/plugin-kwirth-metrics'
|
||||
addedDate: '2025-09-14'
|
||||
@@ -297,6 +297,11 @@ const config: Config = {
|
||||
specPath: '../plugins/search-backend/src/schema/openapi.yaml',
|
||||
outputDir: '../docs/features/search/api',
|
||||
} satisfies OpenApiPlugin.Options,
|
||||
scaffolder: {
|
||||
...defaultOpenApiOptions,
|
||||
specPath: '../plugins/scaffolder-backend/src/schema/openapi.yaml',
|
||||
outputDir: '../docs/features/software-templates/api',
|
||||
} satisfies OpenApiPlugin.Options,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -14,6 +14,9 @@ const catalogSidebar = tryToLoadCustomSidebar(
|
||||
const searchSidebar = tryToLoadCustomSidebar(
|
||||
'../docs/features/search/api/sidebar.ts',
|
||||
);
|
||||
const scaffolderSidebar = tryToLoadCustomSidebar(
|
||||
'../docs/features/software-templates/api/sidebar.ts',
|
||||
);
|
||||
|
||||
export default {
|
||||
docs: {
|
||||
@@ -229,6 +232,22 @@ export default {
|
||||
'features/software-templates/dry-run-testing',
|
||||
'features/software-templates/experimental',
|
||||
'features/software-templates/templating-extensions',
|
||||
{
|
||||
type: 'category',
|
||||
label: 'API',
|
||||
link:
|
||||
scaffolderSidebar.length > 0
|
||||
? {
|
||||
type: 'generated-index',
|
||||
title: 'Scaffolder API',
|
||||
slug: '/category/scaffolder-api',
|
||||
}
|
||||
: {
|
||||
type: 'doc',
|
||||
id: 'openapi/generated-docs/404',
|
||||
},
|
||||
items: scaffolderSidebar,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
|
||||
type Props = {
|
||||
searchTerm: string;
|
||||
onSearchTermChange: (newTerm: string) => void;
|
||||
};
|
||||
|
||||
export const PluginsSearch = (props: Props) => {
|
||||
const { searchTerm, onSearchTermChange } = props;
|
||||
return (
|
||||
<input
|
||||
name="search"
|
||||
onInput={e => onSearchTermChange((e.target as HTMLInputElement).value)}
|
||||
value={searchTerm}
|
||||
placeholder="Search plugins..."
|
||||
className="DocSearch-Input search"
|
||||
/>
|
||||
);
|
||||
};
|
||||
@@ -5,10 +5,11 @@ import { truncateDescription } from '@site/src/util/truncateDescription';
|
||||
import { ChipCategory } from '@site/src/util/types';
|
||||
import Layout from '@theme/Layout';
|
||||
import clsx from 'clsx';
|
||||
import React, { useState } from 'react';
|
||||
import React, { useMemo, useState } from 'react';
|
||||
|
||||
import { IPluginData, PluginCard } from './_pluginCard';
|
||||
import pluginsStyles from './plugins.module.scss';
|
||||
import { PluginsSearch } from '@site/src/components/pluginsSearch/pluginsSearch';
|
||||
|
||||
interface IPluginsList {
|
||||
corePlugins: IPluginData[];
|
||||
@@ -55,6 +56,7 @@ const Plugins = () => {
|
||||
const [selectedCategories, setSelectedCategories] = useState<string[]>([]);
|
||||
const [showCoreFeatures, setShowCoreFeatures] = useState(true);
|
||||
const [showOtherPlugins, setShowOtherPlugins] = useState(true);
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
|
||||
const handleChipClick = (categoryName: string) => {
|
||||
const isSelected =
|
||||
@@ -97,6 +99,34 @@ const Plugins = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const matchesSearch = (pluginData: IPluginData, term: string) => {
|
||||
if (!term) return true;
|
||||
const lowerTerm = term.toLowerCase();
|
||||
return (
|
||||
pluginData.title.toLowerCase().includes(lowerTerm) ||
|
||||
pluginData.description.toLowerCase().includes(lowerTerm) ||
|
||||
pluginData.category.toLowerCase().includes(lowerTerm) ||
|
||||
(pluginData.author && pluginData.author.toLowerCase().includes(lowerTerm))
|
||||
);
|
||||
};
|
||||
|
||||
const matchesCategory = (pluginData: IPluginData, categories: string[]) => {
|
||||
if (categories.length === 0) return true;
|
||||
return categories.includes(pluginData.category);
|
||||
};
|
||||
|
||||
const corePlugins = useMemo(() => {
|
||||
return plugins.corePlugins
|
||||
.filter(pluginData => matchesCategory(pluginData, selectedCategories))
|
||||
.filter(pluginData => matchesSearch(pluginData, searchTerm));
|
||||
}, [selectedCategories, searchTerm]);
|
||||
|
||||
const otherPlugins = useMemo(() => {
|
||||
return plugins.otherPlugins
|
||||
.filter(pluginData => matchesCategory(pluginData, selectedCategories))
|
||||
.filter(pluginData => matchesSearch(pluginData, searchTerm));
|
||||
}, [selectedCategories, searchTerm]);
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
<div
|
||||
@@ -126,31 +156,36 @@ const Plugins = () => {
|
||||
categories={categories}
|
||||
handleChipClick={handleChipClick}
|
||||
/>
|
||||
<PluginsSearch
|
||||
searchTerm={searchTerm}
|
||||
onSearchTermChange={setSearchTerm}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{showCoreFeatures && (
|
||||
{corePlugins.length === 0 && otherPlugins.length === 0 && (
|
||||
<div className="margin-vert--lg">
|
||||
<h3>No plugins found</h3>
|
||||
<p>
|
||||
We couldn't find any plugins matching your criteria. Please try
|
||||
adjusting your search or filter settings.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{showCoreFeatures && corePlugins.length > 0 && (
|
||||
<div>
|
||||
<h2>Core Features</h2>
|
||||
<h2>Core Features ({corePlugins.length})</h2>
|
||||
<div className="pluginsContainer margin-bottom--lg">
|
||||
{plugins.corePlugins
|
||||
.filter(
|
||||
pluginData =>
|
||||
!selectedCategories.length ||
|
||||
selectedCategories.includes(pluginData.category),
|
||||
)
|
||||
.map(pluginData => (
|
||||
<PluginCard
|
||||
key={pluginData.title}
|
||||
{...pluginData}
|
||||
></PluginCard>
|
||||
))}
|
||||
{corePlugins.map(pluginData => (
|
||||
<PluginCard key={pluginData.title} {...pluginData}></PluginCard>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{showOtherPlugins && (
|
||||
{showOtherPlugins && otherPlugins.length > 0 && (
|
||||
<div>
|
||||
<h2>All Plugins</h2>
|
||||
<h2>All Plugins ({otherPlugins.length})</h2>
|
||||
<p>
|
||||
Friendly reminder: While we love the variety and contributions of
|
||||
our open source plugins, they haven't been fully vetted by the
|
||||
@@ -158,18 +193,9 @@ const Plugins = () => {
|
||||
your due diligence before installing. Happy exploring!
|
||||
</p>
|
||||
<div className="pluginsContainer margin-bottom--lg">
|
||||
{plugins.otherPlugins
|
||||
.filter(
|
||||
pluginData =>
|
||||
!selectedCategories.length ||
|
||||
selectedCategories.includes(pluginData.category),
|
||||
)
|
||||
.map(pluginData => (
|
||||
<PluginCard
|
||||
key={pluginData.title}
|
||||
{...pluginData}
|
||||
></PluginCard>
|
||||
))}
|
||||
{otherPlugins.map(pluginData => (
|
||||
<PluginCard key={pluginData.title} {...pluginData}></PluginCard>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -76,6 +76,20 @@
|
||||
height: 1rem;
|
||||
}
|
||||
|
||||
:global(.search) {
|
||||
float: right;
|
||||
margin-bottom: 1rem;
|
||||
margin-right: 1rem;
|
||||
font-size: calc(0.875rem * var(--ifm-button-size-multiplier));
|
||||
font-weight: var(--ifm-button-font-weight);
|
||||
background-color: transparent;
|
||||
border: var(--ifm-button-border-width) solid var(--ifm-color-primary);
|
||||
border-radius: var(--ifm-button-border-radius);
|
||||
color: var(--ifm-color-primary);
|
||||
width: 220px;
|
||||
height: 2.2rem;
|
||||
}
|
||||
|
||||
:global(.dropdown) {
|
||||
float: right;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
+17
-13
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "root",
|
||||
"version": "1.43.0-next.1",
|
||||
"version": "1.43.0",
|
||||
"backstage": {
|
||||
"cli": {
|
||||
"new": {
|
||||
@@ -24,10 +24,11 @@
|
||||
},
|
||||
"scripts": {
|
||||
"build-storybook": "storybook build --output-dir dist-storybook",
|
||||
"build-storybook:chromatic": "STORYBOOK_STORY_SET=chromatic storybook build --stats-json --output-dir dist-storybook",
|
||||
"build:all": "backstage-cli repo build --all",
|
||||
"build:api-docs": "LANG=en_EN yarn build:api-reports --docs --exclude 'plugins/@(adr|adr-backend|adr-common|airbrake|airbrake-backend|allure|analytics-module-ga|analytics-module-ga4|analytics-module-newrelic-browser|apache-airflow|api-docs|api-docs-module-protoc-gen-doc|apollo-explorer|app-visualizer|azure-devops|azure-devops-backend|azure-devops-common|azure-sites|azure-sites-backend|azure-sites-common|badges|badges-backend|bazaar|bazaar-backend|bitbucket-cloud-common|bitrise|catalog-graph|catalog-graphql|catalog-import|catalog-unprocessed-entities|cicd-statistics|cicd-statistics-module-gitlab|circleci|cloudbuild|code-climate|code-coverage|code-coverage-backend|codescene|config-schema|cost-insights|cost-insights-common|dynatrace|entity-feedback|entity-feedback-backend|entity-feedback-common|entity-validation|example-todo-list|example-todo-list-backend|example-todo-list-common|firehydrant|fossa|gcalendar|gcp-projects|git-release-manager|github-actions|github-deployments|github-issues|github-pull-requests-board|gitops-profiles|gocd|graphiql|graphql-backend|graphql-voyager|ilert|jenkins|jenkins-backend|jenkins-common|kafka|kafka-backend|lighthouse|lighthouse-backend|lighthouse-common|linguist|linguist-backend|linguist-common|microsoft-calendar|newrelic|newrelic-dashboard|nomad|nomad-backend|octopus-deploy|opencost|pagerduty|periskop|periskop-backend|playlist|playlist-backend|playlist-common|proxy-backend|puppetdb|rollbar|rollbar-backend|sentry|shortcuts|splunk-on-call|stack-overflow|stack-overflow-backend|stackstorm|tech-radar|tech-radar-2|todo|todo-backend|xcmetrics)'",
|
||||
"build:api-docs": "LANG=en_EN yarn build:api-reports --docs --exclude 'plugins/@(api-docs|api-docs-module-protoc-gen-doc|app-visualizer|catalog-graph|catalog-import|catalog-unprocessed-entities|config-schema|example-todo-list|example-todo-list-backend)'",
|
||||
"build:api-reports": "yarn build:api-reports:only --tsc",
|
||||
"build:api-reports:only": "LANG=en_US.UTF-8 NODE_OPTIONS=--max-old-space-size=8192 backstage-repo-tools api-reports --sql-reports --allow-warnings 'packages/backend-app-api,packages/core-components,plugins/+(catalog|catalog-import|git-release-manager|jenkins|kubernetes)' -o ae-undocumented,ae-wrong-input-file-type --validate-release-tags",
|
||||
"build:api-reports:only": "LANG=en_US.UTF-8 NODE_OPTIONS=--max-old-space-size=8192 backstage-repo-tools api-reports --sql-reports --allow-warnings 'packages/backend-app-api,packages/core-components,plugins/+(catalog|catalog-import|kubernetes)' -o ae-undocumented,ae-wrong-input-file-type --validate-release-tags",
|
||||
"build:backend": "yarn workspace example-backend build",
|
||||
"build:knip-reports": "backstage-repo-tools knip-reports",
|
||||
"build:plugins-report": "node ./scripts/build-plugins-report",
|
||||
@@ -101,15 +102,20 @@
|
||||
"@changesets/assemble-release-plan@^6.0.0": "patch:@changesets/assemble-release-plan@npm%3A6.0.0#./.yarn/patches/@changesets-assemble-release-plan-npm-6.0.0-f7b3005037.patch",
|
||||
"@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch",
|
||||
"@material-ui/pickers@^3.3.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch",
|
||||
"@storybook/react@npm:9.1.5": "patch:@storybook/react@npm%3A9.1.5#~/.yarn/patches/@storybook-react-npm-9.1.5-2331f18b6b.patch",
|
||||
"@types/react": "^18.0.0",
|
||||
"@types/react-dom": "^18.0.0",
|
||||
"@yarnpkg/plugin-npm@npm:^3.1.0": "patch:@yarnpkg/plugin-npm@npm%3A3.1.0#~/.yarn/patches/@yarnpkg-plugin-npm-npm-3.1.0-6533d0f5a1.patch",
|
||||
"ast-types@0.14.2": "patch:ast-types@npm%3A0.14.2#./.yarn/patches/ast-types-npm-0.14.2-43c4ac4b0d.patch",
|
||||
"ast-types@^0.14.1": "patch:ast-types@npm%3A0.14.2#./.yarn/patches/ast-types-npm-0.14.2-43c4ac4b0d.patch",
|
||||
"ast-types@npm:0.14.2": "patch:ast-types@npm%3A0.16.1#./.yarn/patches/ast-types-npm-0.16.1-43c4ac4b0d.patch",
|
||||
"ast-types@npm:^0.13.4": "patch:ast-types@npm%3A0.16.1#./.yarn/patches/ast-types-npm-0.16.1-43c4ac4b0d.patch",
|
||||
"ast-types@npm:^0.16.1": "patch:ast-types@npm%3A0.16.1#./.yarn/patches/ast-types-npm-0.16.1-43c4ac4b0d.patch",
|
||||
"csstype@npm:^3.0.2": "3.0.9",
|
||||
"csstype@npm:^3.1.2": "3.0.9",
|
||||
"csstype@npm:^3.1.3": "3.0.9",
|
||||
"jest-haste-map@^29.7.0": "patch:jest-haste-map@npm%3A29.7.0#./.yarn/patches/jest-haste-map-npm-29.7.0-e3be419eff.patch"
|
||||
"jest-haste-map@^29.7.0": "patch:jest-haste-map@npm%3A29.7.0#./.yarn/patches/jest-haste-map-npm-29.7.0-e3be419eff.patch",
|
||||
"recast@npm:0.23.9>ast-types": "patch:ast-types@npm%3A0.16.1#./.yarn/patches/ast-types-npm-0.16.1-43c4ac4b0d.patch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/errors": "workspace:^",
|
||||
@@ -129,13 +135,11 @@
|
||||
"@octokit/rest": "^19.0.3",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@spotify/eslint-plugin": "^15.0.0",
|
||||
"@storybook/addon-essentials": "^8.6.12",
|
||||
"@storybook/addon-interactions": "^8.6.12",
|
||||
"@storybook/addon-links": "^8.6.12",
|
||||
"@storybook/addon-storysource": "^8.6.12",
|
||||
"@storybook/addon-themes": "^8.6.12",
|
||||
"@storybook/react": "^8.6.12",
|
||||
"@storybook/react-vite": "^8.6.12",
|
||||
"@storybook/addon-a11y": "^9.1.5",
|
||||
"@storybook/addon-docs": "^9.1.5",
|
||||
"@storybook/addon-links": "^9.1.5",
|
||||
"@storybook/addon-themes": "^9.1.5",
|
||||
"@storybook/react-vite": "^9.1.5",
|
||||
"@techdocs/cli": "workspace:*",
|
||||
"@types/cacheable-request": "^8.3.6",
|
||||
"@types/memjs": "^1.3.3",
|
||||
@@ -160,10 +164,10 @@
|
||||
"shx": "^0.4.0",
|
||||
"sloc": "^0.3.1",
|
||||
"sort-package-json": "^2.8.0",
|
||||
"storybook": "^8.6.12",
|
||||
"storybook": "^9.1.5",
|
||||
"typedoc": "^0.28.0",
|
||||
"typescript": "~5.7.0",
|
||||
"vite": "^7.1.2"
|
||||
"vite": "^7.1.5"
|
||||
},
|
||||
"packageManager": "yarn@4.8.1",
|
||||
"engines": {
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @backstage/app-defaults
|
||||
|
||||
## 1.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 9956704: Add and configure the OpenShift authentication provider to the default APIs.
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/core-plugin-api@1.11.0
|
||||
- @backstage/core-components@0.18.0
|
||||
- @backstage/core-app-api@1.19.0
|
||||
|
||||
## 1.6.6-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/app-defaults",
|
||||
"version": "1.6.6-next.0",
|
||||
"version": "1.7.0",
|
||||
"description": "Provides the default wiring of a Backstage App",
|
||||
"backstage": {
|
||||
"role": "web-library"
|
||||
|
||||
@@ -35,6 +35,7 @@ import {
|
||||
FetchMiddlewares,
|
||||
VMwareCloudAuth,
|
||||
FrontendHostDiscovery,
|
||||
OpenShiftAuth,
|
||||
} from '@backstage/core-app-api';
|
||||
|
||||
import {
|
||||
@@ -58,6 +59,7 @@ import {
|
||||
bitbucketServerAuthApiRef,
|
||||
atlassianAuthApiRef,
|
||||
vmwareCloudAuthApiRef,
|
||||
openshiftAuthApiRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
import {
|
||||
permissionApiRef,
|
||||
@@ -275,6 +277,22 @@ export const apis = [
|
||||
});
|
||||
},
|
||||
}),
|
||||
createApiFactory({
|
||||
api: openshiftAuthApiRef,
|
||||
deps: {
|
||||
discoveryApi: discoveryApiRef,
|
||||
oauthRequestApi: oauthRequestApiRef,
|
||||
configApi: configApiRef,
|
||||
},
|
||||
factory: ({ discoveryApi, oauthRequestApi, configApi }) => {
|
||||
return OpenShiftAuth.create({
|
||||
configApi,
|
||||
discoveryApi,
|
||||
oauthRequestApi,
|
||||
environment: configApi.getOptionalString('auth.environment'),
|
||||
});
|
||||
},
|
||||
}),
|
||||
createApiFactory({
|
||||
api: permissionApiRef,
|
||||
deps: {
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# app-next-example-plugin
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/frontend-plugin-api@0.12.0
|
||||
- @backstage/core-components@0.18.0
|
||||
|
||||
## 0.0.27-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :---------- | :----------- | :------- |
|
||||
| cross-fetch | package.json | error |
|
||||
| msw | package.json | error |
|
||||
| cross-fetch | packages/app-next-example-plugin/package.json | error |
|
||||
| msw | packages/app-next-example-plugin/package.json | error |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-next-example-plugin",
|
||||
"version": "0.0.27-next.0",
|
||||
"version": "0.0.27",
|
||||
"description": "Backstage internal example plugin",
|
||||
"backstage": {
|
||||
"role": "frontend-plugin",
|
||||
|
||||
@@ -1,5 +1,73 @@
|
||||
# example-app-next
|
||||
|
||||
## 0.0.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli@0.34.2
|
||||
- @backstage/ui@0.7.1
|
||||
- @backstage/plugin-techdocs@1.15.0
|
||||
- @backstage/plugin-catalog-react@1.21.0
|
||||
- @backstage/plugin-notifications@0.5.9
|
||||
- @backstage/app-defaults@1.7.0
|
||||
- @backstage/plugin-catalog-graph@0.5.0
|
||||
- @backstage/plugin-org@0.6.44
|
||||
- @backstage/plugin-techdocs-react@1.3.3
|
||||
- @backstage/frontend-plugin-api@0.12.0
|
||||
- @backstage/plugin-auth-react@0.1.19
|
||||
- @backstage/plugin-auth@0.1.0
|
||||
- @backstage/plugin-home@0.8.12
|
||||
- @backstage/core-plugin-api@1.11.0
|
||||
- @backstage/plugin-scaffolder@1.34.1
|
||||
- @backstage/plugin-app@0.3.0
|
||||
- @backstage/plugin-user-settings@0.8.26
|
||||
- @backstage/plugin-catalog@1.31.3
|
||||
- @backstage/core-components@0.18.0
|
||||
- @backstage/frontend-app-api@0.13.0
|
||||
- @backstage/frontend-defaults@0.3.1
|
||||
- @backstage/core-compat-api@0.5.2
|
||||
- @backstage/plugin-scaffolder-react@1.19.1
|
||||
- @backstage/core-app-api@1.19.0
|
||||
- @backstage/plugin-api-docs@0.12.11
|
||||
- @backstage/plugin-app-visualizer@0.1.23
|
||||
- @backstage/plugin-catalog-import@0.13.5
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.2.21
|
||||
- @backstage/plugin-kubernetes@0.12.11
|
||||
- @backstage/plugin-search@1.4.30
|
||||
- @backstage/plugin-search-react@1.9.4
|
||||
- @backstage/plugin-signals@0.0.23
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28
|
||||
- @backstage/integration-react@1.2.10
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29
|
||||
|
||||
## 0.0.27-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/ui@0.7.1-next.0
|
||||
- @backstage/plugin-auth-react@0.1.19-next.1
|
||||
- @backstage/plugin-auth@0.1.0-next.0
|
||||
- @backstage/plugin-home@0.8.12-next.2
|
||||
- @backstage/plugin-scaffolder@1.34.1-next.2
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-user-settings@0.8.26-next.2
|
||||
- @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/cli@0.34.2-next.2
|
||||
- @backstage/plugin-catalog-graph@0.4.23-next.2
|
||||
- @backstage/plugin-catalog-import@0.13.5-next.2
|
||||
- @backstage/plugin-org@0.6.44-next.2
|
||||
- @backstage/plugin-techdocs@1.14.2-next.2
|
||||
- @backstage/core-compat-api@0.5.2-next.2
|
||||
- @backstage/plugin-api-docs@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29-next.2
|
||||
- @backstage/plugin-search@1.4.30-next.2
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28-next.0
|
||||
|
||||
## 0.0.27-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,7 +4,6 @@ app:
|
||||
routes:
|
||||
bindings:
|
||||
catalog.viewTechDoc: techdocs.docRoot
|
||||
catalog.createComponent: catalog-import.importPage
|
||||
org.catalogIndex: catalog.catalogIndex
|
||||
|
||||
pluginOverrides:
|
||||
|
||||
@@ -4,40 +4,40 @@
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :----------------------------------------------- | :----------- | :------- |
|
||||
| @backstage/plugin-techdocs-module-addons-contrib | package.json | error |
|
||||
| @backstage/plugin-catalog-unprocessed-entities | package.json | error |
|
||||
| @backstage/plugin-kubernetes-cluster | package.json | error |
|
||||
| @backstage/plugin-permission-react | package.json | error |
|
||||
| @backstage/plugin-scaffolder-react | package.json | error |
|
||||
| @backstage/plugin-catalog-common | package.json | error |
|
||||
| @backstage/plugin-techdocs-react | package.json | error |
|
||||
| @backstage/plugin-catalog-graph | package.json | error |
|
||||
| @backstage/plugin-search-common | package.json | error |
|
||||
| @backstage/plugin-search-react | package.json | error |
|
||||
| @backstage/integration-react | package.json | error |
|
||||
| @backstage/plugin-auth-react | package.json | error |
|
||||
| @backstage/plugin-scaffolder | package.json | error |
|
||||
| @backstage/core-plugin-api | package.json | error |
|
||||
| @backstage/plugin-api-docs | package.json | error |
|
||||
| @backstage/plugin-catalog | package.json | error |
|
||||
| @backstage/plugin-signals | package.json | error |
|
||||
| @backstage/app-defaults | package.json | error |
|
||||
| @backstage/plugin-app | package.json | error |
|
||||
| @backstage/plugin-org | package.json | error |
|
||||
| @backstage/config | package.json | error |
|
||||
| @material-ui/lab | package.json | error |
|
||||
| zen-observable | package.json | error |
|
||||
| @octokit/rest | package.json | error |
|
||||
| react-use | package.json | error |
|
||||
| history | package.json | error |
|
||||
| @backstage/plugin-techdocs-module-addons-contrib | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-catalog-unprocessed-entities | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-kubernetes-cluster | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-permission-react | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-scaffolder-react | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-catalog-common | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-techdocs-react | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-catalog-graph | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-search-common | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-search-react | packages/app-next/package.json | error |
|
||||
| @backstage/integration-react | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-auth-react | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-scaffolder | packages/app-next/package.json | error |
|
||||
| @backstage/core-plugin-api | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-api-docs | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-catalog | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-signals | packages/app-next/package.json | error |
|
||||
| @backstage/app-defaults | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-app | packages/app-next/package.json | error |
|
||||
| @backstage/plugin-org | packages/app-next/package.json | error |
|
||||
| @backstage/config | packages/app-next/package.json | error |
|
||||
| @material-ui/lab | packages/app-next/package.json | error |
|
||||
| zen-observable | packages/app-next/package.json | error |
|
||||
| @octokit/rest | packages/app-next/package.json | error |
|
||||
| react-use | packages/app-next/package.json | error |
|
||||
| history | packages/app-next/package.json | error |
|
||||
|
||||
## Unused devDependencies (5)
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :-------------------------- | :----------- | :------- |
|
||||
| @testing-library/user-event | package.json | error |
|
||||
| @types/zen-observable | package.json | error |
|
||||
| @testing-library/dom | package.json | error |
|
||||
| @types/jquery | package.json | error |
|
||||
| cross-env | package.json | error |
|
||||
| @testing-library/user-event | packages/app-next/package.json | error |
|
||||
| @types/zen-observable | packages/app-next/package.json | error |
|
||||
| @testing-library/dom | packages/app-next/package.json | error |
|
||||
| @types/jquery | packages/app-next/package.json | error |
|
||||
| cross-env | packages/app-next/package.json | error |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app-next",
|
||||
"version": "0.0.27-next.1",
|
||||
"version": "0.0.27",
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
},
|
||||
@@ -49,6 +49,7 @@
|
||||
"@backstage/plugin-api-docs": "workspace:^",
|
||||
"@backstage/plugin-app": "workspace:^",
|
||||
"@backstage/plugin-app-visualizer": "workspace:^",
|
||||
"@backstage/plugin-auth": "workspace:^",
|
||||
"@backstage/plugin-auth-react": "workspace:^",
|
||||
"@backstage/plugin-catalog": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
|
||||
@@ -1,5 +1,66 @@
|
||||
# example-app
|
||||
|
||||
## 0.2.113
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/cli@0.34.2
|
||||
- @backstage/ui@0.7.1
|
||||
- @backstage/plugin-techdocs@1.15.0
|
||||
- @backstage/plugin-catalog-react@1.21.0
|
||||
- @backstage/plugin-notifications@0.5.9
|
||||
- @backstage/app-defaults@1.7.0
|
||||
- @backstage/plugin-catalog-graph@0.5.0
|
||||
- @backstage/plugin-org@0.6.44
|
||||
- @backstage/plugin-techdocs-react@1.3.3
|
||||
- @backstage/plugin-auth-react@0.1.19
|
||||
- @backstage/plugin-home@0.8.12
|
||||
- @backstage/core-plugin-api@1.11.0
|
||||
- @backstage/plugin-scaffolder@1.34.1
|
||||
- @backstage/plugin-user-settings@0.8.26
|
||||
- @backstage/plugin-catalog@1.31.3
|
||||
- @backstage/core-components@0.18.0
|
||||
- @backstage/frontend-app-api@0.13.0
|
||||
- @backstage/plugin-scaffolder-react@1.19.1
|
||||
- @backstage/core-app-api@1.19.0
|
||||
- @backstage/plugin-api-docs@0.12.11
|
||||
- @backstage/plugin-catalog-import@0.13.5
|
||||
- @backstage/plugin-catalog-unprocessed-entities@0.2.21
|
||||
- @backstage/plugin-devtools@0.1.31
|
||||
- @backstage/plugin-kubernetes@0.12.11
|
||||
- @backstage/plugin-search@1.4.30
|
||||
- @backstage/plugin-search-react@1.9.4
|
||||
- @backstage/plugin-signals@0.0.23
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28
|
||||
- @backstage/integration-react@1.2.10
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29
|
||||
|
||||
## 0.2.113-next.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/ui@0.7.1-next.0
|
||||
- @backstage/plugin-auth-react@0.1.19-next.1
|
||||
- @backstage/plugin-home@0.8.12-next.2
|
||||
- @backstage/plugin-scaffolder@1.34.1-next.2
|
||||
- @backstage/plugin-catalog-react@1.21.0-next.2
|
||||
- @backstage/core-components@0.17.6-next.1
|
||||
- @backstage/plugin-user-settings@0.8.26-next.2
|
||||
- @backstage/plugin-scaffolder-react@1.19.1-next.2
|
||||
- @backstage/plugin-catalog@1.31.3-next.2
|
||||
- @backstage/cli@0.34.2-next.2
|
||||
- @backstage/plugin-catalog-graph@0.4.23-next.2
|
||||
- @backstage/plugin-catalog-import@0.13.5-next.2
|
||||
- @backstage/plugin-org@0.6.44-next.2
|
||||
- @backstage/plugin-techdocs@1.14.2-next.2
|
||||
- @backstage/plugin-api-docs@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes@0.12.11-next.2
|
||||
- @backstage/plugin-kubernetes-cluster@0.0.29-next.2
|
||||
- @backstage/plugin-search@1.4.30-next.2
|
||||
- @backstage/plugin-techdocs-module-addons-contrib@1.1.28-next.0
|
||||
|
||||
## 0.2.113-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
+12
-12
@@ -4,26 +4,26 @@
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :------------------------------ | :----------- | :------- |
|
||||
| @backstage/plugin-search-common | package.json | error |
|
||||
| @backstage/plugin-auth-react | package.json | error |
|
||||
| @backstage/frontend-app-api | package.json | error |
|
||||
| @material-ui/lab | package.json | error |
|
||||
| zen-observable | package.json | error |
|
||||
| @octokit/rest | package.json | error |
|
||||
| react-router | package.json | error |
|
||||
| history | package.json | error |
|
||||
| @backstage/plugin-search-common | packages/app/package.json | error |
|
||||
| @backstage/plugin-auth-react | packages/app/package.json | error |
|
||||
| @backstage/frontend-app-api | packages/app/package.json | error |
|
||||
| @material-ui/lab | packages/app/package.json | error |
|
||||
| zen-observable | packages/app/package.json | error |
|
||||
| @octokit/rest | packages/app/package.json | error |
|
||||
| react-router | packages/app/package.json | error |
|
||||
| history | packages/app/package.json | error |
|
||||
|
||||
## Unused devDependencies (3)
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :-------------------------- | :----------- | :------- |
|
||||
| @testing-library/user-event | package.json | error |
|
||||
| @types/zen-observable | package.json | error |
|
||||
| @types/jquery | package.json | error |
|
||||
| @testing-library/user-event | packages/app/package.json | error |
|
||||
| @types/zen-observable | packages/app/package.json | error |
|
||||
| @types/jquery | packages/app/package.json | error |
|
||||
|
||||
## Unlisted dependencies (1)
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :---------- | :------------------------------------------------------- | :------- |
|
||||
| @rjsf/utils | src/components/scaffolder/customScaffolderExtensions.tsx | error |
|
||||
| @rjsf/utils | packages/app/src/components/scaffolder/customScaffolderExtensions.tsx | error |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "example-app",
|
||||
"version": "0.2.113-next.1",
|
||||
"version": "0.2.113",
|
||||
"backstage": {
|
||||
"role": "frontend"
|
||||
},
|
||||
@@ -94,7 +94,7 @@
|
||||
"@types/react": "*",
|
||||
"@types/react-dom": "*",
|
||||
"@types/zen-observable": "^0.8.0",
|
||||
"axios": "^1.11.0",
|
||||
"axios": "^1.12.0",
|
||||
"cross-env": "^7.0.0",
|
||||
"msw": "^1.0.0"
|
||||
},
|
||||
|
||||
@@ -14,18 +14,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
RELATION_API_CONSUMED_BY,
|
||||
RELATION_API_PROVIDED_BY,
|
||||
RELATION_CONSUMES_API,
|
||||
RELATION_DEPENDENCY_OF,
|
||||
RELATION_DEPENDS_ON,
|
||||
RELATION_HAS_PART,
|
||||
RELATION_OWNED_BY,
|
||||
RELATION_OWNER_OF,
|
||||
RELATION_PART_OF,
|
||||
RELATION_PROVIDES_API,
|
||||
} from '@backstage/catalog-model';
|
||||
import { createApp } from '@backstage/app-defaults';
|
||||
import { AppRouter, FeatureFlagged, FlatRoutes } from '@backstage/core-app-api';
|
||||
import {
|
||||
@@ -158,18 +146,6 @@ const routes = (
|
||||
<CatalogGraphPage
|
||||
initialState={{
|
||||
selectedKinds: ['component', 'domain', 'system', 'api', 'group'],
|
||||
selectedRelations: [
|
||||
RELATION_OWNER_OF,
|
||||
RELATION_OWNED_BY,
|
||||
RELATION_CONSUMES_API,
|
||||
RELATION_API_CONSUMED_BY,
|
||||
RELATION_PROVIDES_API,
|
||||
RELATION_API_PROVIDED_BY,
|
||||
RELATION_HAS_PART,
|
||||
RELATION_PART_OF,
|
||||
RELATION_DEPENDS_ON,
|
||||
RELATION_DEPENDENCY_OF,
|
||||
],
|
||||
}}
|
||||
/>
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import {
|
||||
oneloginAuthApiRef,
|
||||
bitbucketAuthApiRef,
|
||||
bitbucketServerAuthApiRef,
|
||||
openshiftAuthApiRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
|
||||
export const providers = [
|
||||
@@ -74,4 +75,10 @@ export const providers = [
|
||||
message: 'Sign In using Bitbucket Server',
|
||||
apiRef: bitbucketServerAuthApiRef,
|
||||
},
|
||||
{
|
||||
id: 'openshift-auth-provider',
|
||||
title: 'OpenShift',
|
||||
message: 'Sign In using OpenShift',
|
||||
apiRef: openshiftAuthApiRef,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @backstage/backend-app-api
|
||||
|
||||
## 1.2.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/backend-plugin-api@1.4.3
|
||||
|
||||
## 1.2.7-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :-------------------------- | :----------- | :------- |
|
||||
| @backstage/backend-defaults | package.json | error |
|
||||
| @backstage/backend-defaults | packages/backend-app-api/package.json | error |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/backend-app-api",
|
||||
"version": "1.2.7-next.0",
|
||||
"version": "1.2.7",
|
||||
"description": "Core API used by Backstage backend apps",
|
||||
"backstage": {
|
||||
"role": "node-library"
|
||||
|
||||
@@ -1,5 +1,38 @@
|
||||
# @backstage/backend-defaults
|
||||
|
||||
## 0.12.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 33bd4d0: Deduplicate discovered features discovered with discoveryFeatureLoader
|
||||
- 4eda590: Fixed cache namespace and key prefix separator configuration to properly use configured values instead of hardcoded plugin ID. The cache manager now correctly combines the configured namespace with plugin IDs using the configured separator for Redis and Valkey. Memcache and memory store continue to use plugin ID as namespace.
|
||||
- f244e61: Add `backend.logger` config options to configure the `RootLoggerService`.
|
||||
|
||||
Read more about the new configuration options in the
|
||||
[Root Logger Service](https://backstage.io/docs/backend-system/core-services/root-logger/)
|
||||
documentation.
|
||||
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3
|
||||
- @backstage/plugin-auth-node@0.6.7
|
||||
- @backstage/plugin-events-node@0.4.15
|
||||
- @backstage/integration@1.18.0
|
||||
- @backstage/types@1.2.2
|
||||
- @backstage/backend-app-api@1.2.7
|
||||
- @backstage/backend-plugin-api@1.4.3
|
||||
- @backstage/plugin-permission-node@0.10.4
|
||||
|
||||
## 0.12.1-next.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4eda590: Fixed cache namespace and key prefix separator configuration to properly use configured values instead of hardcoded plugin ID. The cache manager now correctly combines the configured namespace with plugin IDs using the configured separator for Redis and Valkey. Memcache and memory store continue to use plugin ID as namespace.
|
||||
- Updated dependencies
|
||||
- @backstage/config-loader@1.10.3-next.0
|
||||
- @backstage/plugin-auth-node@0.6.7-next.1
|
||||
- @backstage/integration@1.18.0-next.0
|
||||
- @backstage/integration-aws-node@0.1.17
|
||||
|
||||
## 0.12.1-next.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
+61
-1
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { HumanDuration } from '@backstage/types';
|
||||
import { HumanDuration, JsonObject } from '@backstage/types';
|
||||
|
||||
export interface Config {
|
||||
app: {
|
||||
@@ -985,6 +985,66 @@ export interface Config {
|
||||
headers?: { [name: string]: string };
|
||||
};
|
||||
|
||||
/**
|
||||
* Options to configure the default RootLoggerService.
|
||||
*/
|
||||
logger?: {
|
||||
/**
|
||||
* Configures the global log level for messages.
|
||||
*
|
||||
* This can also be configured using the LOG_LEVEL environment variable, which
|
||||
* takes precedence over this configuration.
|
||||
*
|
||||
* Defaults to 'info'.
|
||||
*/
|
||||
level?: 'debug' | 'info' | 'warn' | 'error';
|
||||
|
||||
/**
|
||||
* Additional metadata to include with every log entry.
|
||||
*/
|
||||
meta?: JsonObject;
|
||||
|
||||
/**
|
||||
* List of logger overrides.
|
||||
*
|
||||
* Can be used to configure a different level for logs matching certain criterias.
|
||||
* For example, it can be used to ignore 'info' logs of given plugins.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```yaml
|
||||
* logger:
|
||||
* level: info
|
||||
* overrides:
|
||||
* # For catalog and auth plugins, messages less important than 'warn' will be ignored.
|
||||
* - matchers:
|
||||
* plugin: [catalog, auth]
|
||||
* level: warn
|
||||
* # Ignore all messages that starts with 'Forget'
|
||||
* - matchers:
|
||||
* message: '/^Forget/'
|
||||
* level: warn
|
||||
* ```
|
||||
*/
|
||||
overrides?: Array<{
|
||||
/**
|
||||
* Conditions that must be met to override the log level.
|
||||
*
|
||||
* A matcher can be:
|
||||
*
|
||||
* - A string (exact match or regex pattern delimited by slashes, e.g. `/pattern/`)
|
||||
* - A non-string value (compared by strict equality)
|
||||
* - An array of matchers (returns true if any matcher matches)
|
||||
*/
|
||||
matchers: JsonObject;
|
||||
|
||||
/**
|
||||
* Log level to use for matched entries.
|
||||
*/
|
||||
level: 'debug' | 'info' | 'warn' | 'error';
|
||||
}>;
|
||||
};
|
||||
|
||||
/**
|
||||
* Rate limiting options. Defining this as `true` will enable rate limiting with default values.
|
||||
*/
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :------------- | :----------- | :------- |
|
||||
| better-sqlite3 | package.json | error |
|
||||
| mysql2 | package.json | error |
|
||||
| better-sqlite3 | packages/backend-defaults/package.json | error |
|
||||
| mysql2 | packages/backend-defaults/package.json | error |
|
||||
|
||||
## Referenced optional peerDependencies (1)
|
||||
|
||||
| Name | Location | Severity |
|
||||
| :-------------------------------- | :----------- | :------- |
|
||||
| @google-cloud/cloud-sql-connector | package.json | error |
|
||||
| @google-cloud/cloud-sql-connector | packages/backend-defaults/package.json | error |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@backstage/backend-defaults",
|
||||
"version": "0.12.1-next.0",
|
||||
"version": "0.12.1",
|
||||
"description": "Backend defaults used by Backstage backend apps",
|
||||
"backstage": {
|
||||
"role": "node-library"
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
||||
|
||||
```ts
|
||||
import { config } from 'winston';
|
||||
import { Format } from 'logform';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
import { JsonPrimitive } from '@backstage/types';
|
||||
import { LoggerService } from '@backstage/backend-plugin-api';
|
||||
import { RootLoggerService } from '@backstage/backend-plugin-api';
|
||||
import { ServiceFactory } from '@backstage/backend-plugin-api';
|
||||
@@ -31,14 +33,31 @@ export class WinstonLogger implements RootLoggerService {
|
||||
error(message: string, meta?: JsonObject): void;
|
||||
// (undocumented)
|
||||
info(message: string, meta?: JsonObject): void;
|
||||
static logLevelFilter(defaultLogLevel: keyof config.NpmConfigSetLevels): {
|
||||
format: Format;
|
||||
setOverrides: (overrides: WinstonLoggerLevelOverride[]) => void;
|
||||
};
|
||||
static redacter(): {
|
||||
format: Format;
|
||||
add: (redactions: Iterable<string>) => void;
|
||||
};
|
||||
// (undocumented)
|
||||
setLevelOverrides(overrides: WinstonLoggerLevelOverride[]): void;
|
||||
// (undocumented)
|
||||
warn(message: string, meta?: JsonObject): void;
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export type WinstonLoggerLevelOverride = {
|
||||
matchers: WinstonLoggerLevelOverrideMatchers;
|
||||
level: string;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export type WinstonLoggerLevelOverrideMatchers = {
|
||||
[key: string]: JsonPrimitive | JsonPrimitive[] | undefined;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export interface WinstonLoggerOptions {
|
||||
// (undocumented)
|
||||
|
||||
@@ -175,6 +175,6 @@ export class PackageDiscoveryService {
|
||||
}
|
||||
}
|
||||
|
||||
return { features };
|
||||
return { features: Array.from(new Set(features)) };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -333,4 +333,147 @@ describe('CacheManager store options', () => {
|
||||
keyPrefixSeparator: '!',
|
||||
});
|
||||
});
|
||||
|
||||
it('correctly applies namespace configuration to redis and valkey stores', () => {
|
||||
const testCases = [
|
||||
{ store: 'redis', namespace: 'test1', separator: ':' },
|
||||
{ store: 'valkey', namespace: 'test2', separator: '!' },
|
||||
];
|
||||
|
||||
testCases.forEach(({ store, namespace, separator }) => {
|
||||
const manager = CacheManager.fromConfig(
|
||||
mockServices.rootConfig({
|
||||
data: {
|
||||
backend: {
|
||||
cache: {
|
||||
store,
|
||||
connection: 'redis://localhost:6379',
|
||||
[store]: {
|
||||
client: {
|
||||
namespace,
|
||||
keyPrefixSeparator: separator,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
manager.forPlugin('testPlugin');
|
||||
|
||||
if (store === 'redis') {
|
||||
// eslint-disable-next-line jest/no-conditional-expect
|
||||
expect(KeyvRedis).toHaveBeenCalledWith('redis://localhost:6379', {
|
||||
namespace,
|
||||
keyPrefixSeparator: separator,
|
||||
});
|
||||
} else if (store === 'valkey') {
|
||||
// eslint-disable-next-line jest/no-conditional-expect
|
||||
expect(KeyvValkey).toHaveBeenCalledWith('redis://localhost:6379', {
|
||||
namespace,
|
||||
keyPrefixSeparator: separator,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('falls back to pluginId when no namespace is configured', () => {
|
||||
const manager = CacheManager.fromConfig(
|
||||
mockServices.rootConfig({
|
||||
data: {
|
||||
backend: {
|
||||
cache: {
|
||||
store: 'redis',
|
||||
connection: 'redis://localhost:6379',
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
manager.forPlugin('testPlugin');
|
||||
|
||||
expect(KeyvRedis).toHaveBeenCalledWith('redis://localhost:6379', {
|
||||
keyPrefixSeparator: ':',
|
||||
});
|
||||
});
|
||||
|
||||
describe('Namespace construction', () => {
|
||||
it('returns pluginId when no store options are provided', () => {
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
undefined,
|
||||
);
|
||||
expect(result).toBe('testPlugin');
|
||||
});
|
||||
|
||||
it('returns pluginId when store options have no namespace', () => {
|
||||
const storeOptions = {
|
||||
client: {
|
||||
keyPrefixSeparator: ':',
|
||||
},
|
||||
};
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
storeOptions,
|
||||
);
|
||||
expect(result).toBe('testPlugin');
|
||||
});
|
||||
|
||||
it('combines namespace and pluginId with default separator', () => {
|
||||
const storeOptions = {
|
||||
client: {
|
||||
namespace: 'my-app',
|
||||
keyPrefixSeparator: ':',
|
||||
},
|
||||
};
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
storeOptions,
|
||||
);
|
||||
expect(result).toBe('my-app:testPlugin');
|
||||
});
|
||||
|
||||
it('combines namespace and pluginId with custom separator', () => {
|
||||
const storeOptions = {
|
||||
client: {
|
||||
namespace: 'my-app',
|
||||
keyPrefixSeparator: '-',
|
||||
},
|
||||
};
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
storeOptions,
|
||||
);
|
||||
expect(result).toBe('my-app-testPlugin');
|
||||
});
|
||||
|
||||
it('uses default separator when keyPrefixSeparator is not provided', () => {
|
||||
const storeOptions = {
|
||||
client: {
|
||||
namespace: 'my-app',
|
||||
},
|
||||
};
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
storeOptions,
|
||||
);
|
||||
expect(result).toBe('my-app:testPlugin');
|
||||
});
|
||||
|
||||
it('handles empty namespace by falling back to pluginId', () => {
|
||||
const storeOptions = {
|
||||
client: {
|
||||
namespace: '',
|
||||
keyPrefixSeparator: ':',
|
||||
},
|
||||
};
|
||||
const result = (CacheManager as any).constructNamespace(
|
||||
'testPlugin',
|
||||
storeOptions,
|
||||
);
|
||||
expect(result).toBe('testPlugin');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -213,6 +213,26 @@ export class CacheManager {
|
||||
return redisOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct the full namespace based on the options and pluginId.
|
||||
*
|
||||
* @param pluginId - The plugin ID to namespace
|
||||
* @param storeOptions - Optional cache store configuration options
|
||||
* @returns The constructed namespace string combining the configured namespace with pluginId
|
||||
*/
|
||||
private static constructNamespace(
|
||||
pluginId: string,
|
||||
storeOptions: RedisCacheStoreOptions | undefined,
|
||||
): string {
|
||||
const prefix = storeOptions?.client?.namespace
|
||||
? `${storeOptions.client.namespace}${
|
||||
storeOptions.client.keyPrefixSeparator ?? ':'
|
||||
}`
|
||||
: '';
|
||||
|
||||
return `${prefix}${pluginId}`;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
constructor(
|
||||
store: string,
|
||||
@@ -286,7 +306,7 @@ export class CacheManager {
|
||||
});
|
||||
}
|
||||
return new Keyv({
|
||||
namespace: pluginId,
|
||||
namespace: CacheManager.constructNamespace(pluginId, this.storeOptions),
|
||||
ttl: defaultTtl,
|
||||
store: stores[pluginId],
|
||||
emitErrors: false,
|
||||
@@ -326,7 +346,7 @@ export class CacheManager {
|
||||
});
|
||||
}
|
||||
return new Keyv({
|
||||
namespace: pluginId,
|
||||
namespace: CacheManager.constructNamespace(pluginId, this.storeOptions),
|
||||
ttl: defaultTtl,
|
||||
store: stores[pluginId],
|
||||
emitErrors: false,
|
||||
|
||||
@@ -118,4 +118,82 @@ describe('WinstonLogger', () => {
|
||||
add([null as any, undefined as any, 'valid-secret']);
|
||||
}).not.toThrow();
|
||||
});
|
||||
|
||||
it('should filter logs below the default log level', () => {
|
||||
const mockTransport = new Transport({
|
||||
log: jest.fn(),
|
||||
logv: jest.fn(),
|
||||
});
|
||||
|
||||
const logger = WinstonLogger.create({
|
||||
level: 'warn',
|
||||
format: format.json(),
|
||||
transports: [mockTransport],
|
||||
});
|
||||
|
||||
logger.debug('debug log');
|
||||
|
||||
expect(mockTransport.log).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not filter logs below the default log level with an override', () => {
|
||||
const mockTransport = new Transport({
|
||||
log: jest.fn(),
|
||||
logv: jest.fn(),
|
||||
});
|
||||
|
||||
const logger = WinstonLogger.create({
|
||||
level: 'warn',
|
||||
format: format.json(),
|
||||
transports: [mockTransport],
|
||||
});
|
||||
|
||||
logger.setLevelOverrides([
|
||||
{
|
||||
matchers: {
|
||||
plugin: 'catalog',
|
||||
},
|
||||
level: 'debug',
|
||||
},
|
||||
]);
|
||||
|
||||
logger.debug('debug log', { plugin: 'catalog' });
|
||||
|
||||
expect(mockTransport.log).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
[MESSAGE]: JSON.stringify({
|
||||
level: 'debug',
|
||||
message: 'debug log',
|
||||
plugin: 'catalog',
|
||||
}),
|
||||
}),
|
||||
expect.any(Function),
|
||||
);
|
||||
});
|
||||
|
||||
it('should filter logs above the default log level with an override', () => {
|
||||
const mockTransport = new Transport({
|
||||
log: jest.fn(),
|
||||
logv: jest.fn(),
|
||||
});
|
||||
|
||||
const logger = WinstonLogger.create({
|
||||
level: 'debug',
|
||||
format: format.json(),
|
||||
transports: [mockTransport],
|
||||
});
|
||||
|
||||
logger.setLevelOverrides([
|
||||
{
|
||||
matchers: {
|
||||
plugin: 'catalog',
|
||||
},
|
||||
level: 'error',
|
||||
},
|
||||
]);
|
||||
|
||||
logger.info('info log', { plugin: 'catalog' });
|
||||
|
||||
expect(mockTransport.log).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user