refactor: move blueprints to react package

Signed-off-by: secustor <sebastian@poxhofer.at>
This commit is contained in:
secustor
2025-09-03 18:21:53 +02:00
parent f4d9086331
commit be6cef5dab
17 changed files with 262 additions and 30 deletions
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-catalog-unprocessed-entities': patch
'@backstage/plugin-devtools-react': patch
'@backstage/plugin-devtools': patch
---
Add support for adding `unprocessed-entities` and other tabs to `devtools`
@@ -56,7 +56,7 @@
"@backstage/core-plugin-api": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@backstage/plugin-devtools": "workspace:^",
"@backstage/plugin-devtools-react": "workspace:^",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.60",
@@ -15,7 +15,7 @@
*/
import { createElement } from 'react';
import { DevToolsRouteBlueprint } from '@backstage/plugin-devtools/alpha';
import { DevToolsRouteBlueprint } from '@backstage/plugin-devtools-react';
/**
* DevTools route extension for catalog unprocessed entities
+1
View File
@@ -0,0 +1 @@
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
+5
View File
@@ -0,0 +1,5 @@
# @backstage/plugin-devtools-react
Welcome to the web library package for the devtools plugin!
_This plugin was created through the Backstage CLI_
+10
View File
@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: backstage-plugin-devtools-react
title: '@backstage/plugin-devtools-react'
description: Web library for the devtools plugin
spec:
lifecycle: experimental
type: backstage-web-library
owner: maintainers
+46
View File
@@ -0,0 +1,46 @@
{
"name": "@backstage/plugin-devtools-react",
"version": "0.1.0",
"license": "Apache-2.0",
"private": true,
"description": "Web library for the devtools plugin",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
"types": "dist/index.d.ts"
},
"backstage": {
"role": "web-library",
"pluginId": "devtools"
},
"sideEffects": false,
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
"test": "backstage-cli package test",
"clean": "backstage-cli package clean",
"prepack": "backstage-cli package prepack",
"postpack": "backstage-cli package postpack"
},
"dependencies": {
"@backstage/core-plugin-api": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@material-ui/core": "^4.9.13"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^14.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
},
"files": [
"dist"
]
}
+54
View File
@@ -0,0 +1,54 @@
## API Report File for "@backstage/plugin-devtools-react"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprint } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef } from '@backstage/frontend-plugin-api';
import { JSX as JSX_2 } from 'react';
// @alpha
export const DevToolsRouteBlueprint: ExtensionBlueprint<{
kind: 'devtools-route';
params: DevToolsRouteBlueprintParams;
output: ExtensionDataRef<DevToolsRouteData, 'devtools.route', {}>;
inputs: {};
config: {};
configInput: {};
dataRefs: {
route: ConfigurableExtensionDataRef<
DevToolsRouteData,
'devtools.route',
{}
>;
};
}>;
// @alpha
export interface DevToolsRouteBlueprintParams {
// (undocumented)
loader: () => Promise<JSX_2.Element>;
// (undocumented)
path: string;
// (undocumented)
title: string;
}
// @alpha
export interface DevToolsRouteData {
// (undocumented)
children: JSX_2.Element;
// (undocumented)
path: string;
// (undocumented)
title: string;
}
// @alpha
export const devToolsRouteDataRef: ConfigurableExtensionDataRef<
DevToolsRouteData,
'devtools.route',
{}
>;
```
+29
View File
@@ -0,0 +1,29 @@
/*
* Copyright 2025 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Web library for the devtools plugin.
*
* @packageDocumentation
*/
export {
type DevToolsRouteData,
devToolsRouteDataRef,
} from './devToolsRouteDataRef';
export {
type DevToolsRouteBlueprintParams,
DevToolsRouteBlueprint,
} from './devToolsRouteBlueprint.tsx';
+1
View File
@@ -57,6 +57,7 @@
"@backstage/errors": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@backstage/plugin-devtools-common": "workspace:^",
"@backstage/plugin-devtools-react": "workspace:^",
"@backstage/plugin-permission-react": "workspace:^",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
-4
View File
@@ -15,7 +15,3 @@
*/
export { default } from './plugin';
export { DevToolsRouteBlueprint } from './devToolsRouteBlueprint';
export { devToolsRouteDataRef } from './devToolsRouteDataRef';
export type { DevToolsRouteData } from './devToolsRouteDataRef';
export type { DevToolsRouteBlueprintParams } from './devToolsRouteBlueprint';
+1 -1
View File
@@ -31,7 +31,7 @@ import {
} from '@backstage/core-compat-api';
import BuildIcon from '@material-ui/icons/Build';
import { rootRouteRef } from '../routes';
import { devToolsRouteDataRef } from './devToolsRouteDataRef';
import { devToolsRouteDataRef } from '@backstage/plugin-devtools-react';
/** @alpha */
export const devToolsApi = ApiBlueprint.make({
@@ -23,7 +23,7 @@ import { ConfigContent } from '../Content/ConfigContent';
import { DevToolsLayout } from '../DevToolsLayout';
import { InfoContent } from '../Content/InfoContent';
import { RequirePermission } from '@backstage/plugin-permission-react';
import { DevToolsRouteData } from '../../alpha/devToolsRouteDataRef';
import { DevToolsRouteData } from '@backstage/plugin-devtools-react';
export interface DefaultDevToolsPageProps {
extensionRoutes?: DevToolsRouteData[];
@@ -16,7 +16,7 @@
import { useOutlet } from 'react-router-dom';
import { DefaultDevToolsPage } from '../DefaultDevToolsPage';
import { DevToolsRouteData } from '../../alpha/devToolsRouteDataRef';
import { DevToolsRouteData } from '@backstage/plugin-devtools-react';
export interface DevToolsPageProps {
extensionRoutes?: DevToolsRouteData[];
+104 -21
View File
@@ -4938,7 +4938,7 @@ __metadata:
"@backstage/dev-utils": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/frontend-plugin-api": "workspace:^"
"@backstage/plugin-devtools": "workspace:^"
"@backstage/plugin-devtools-react": "workspace:^"
"@material-ui/core": "npm:^4.9.13"
"@material-ui/icons": "npm:^4.9.1"
"@material-ui/lab": "npm:^4.0.0-alpha.60"
@@ -5100,6 +5100,23 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-devtools-react@workspace:^, @backstage/plugin-devtools-react@workspace:plugins/devtools-react":
version: 0.0.0-use.local
resolution: "@backstage/plugin-devtools-react@workspace:plugins/devtools-react"
dependencies:
"@backstage/cli": "workspace:^"
"@backstage/core-plugin-api": "workspace:^"
"@backstage/frontend-plugin-api": "workspace:^"
"@backstage/test-utils": "workspace:^"
"@material-ui/core": "npm:^4.9.13"
"@testing-library/jest-dom": "npm:^6.0.0"
"@testing-library/react": "npm:^14.0.0"
react: "npm:^16.13.1 || ^17.0.0 || ^18.0.0"
peerDependencies:
react: ^16.13.1 || ^17.0.0 || ^18.0.0
languageName: unknown
linkType: soft
"@backstage/plugin-devtools@workspace:^, @backstage/plugin-devtools@workspace:plugins/devtools":
version: 0.0.0-use.local
resolution: "@backstage/plugin-devtools@workspace:plugins/devtools"
@@ -5112,6 +5129,7 @@ __metadata:
"@backstage/errors": "workspace:^"
"@backstage/frontend-plugin-api": "workspace:^"
"@backstage/plugin-devtools-common": "workspace:^"
"@backstage/plugin-devtools-react": "workspace:^"
"@backstage/plugin-permission-react": "workspace:^"
"@material-ui/core": "npm:^4.9.13"
"@material-ui/icons": "npm:^4.9.1"
@@ -19484,6 +19502,22 @@ __metadata:
languageName: node
linkType: hard
"@testing-library/dom@npm:^9.0.0":
version: 9.3.4
resolution: "@testing-library/dom@npm:9.3.4"
dependencies:
"@babel/code-frame": "npm:^7.10.4"
"@babel/runtime": "npm:^7.12.5"
"@types/aria-query": "npm:^5.0.1"
aria-query: "npm:5.1.3"
chalk: "npm:^4.1.0"
dom-accessibility-api: "npm:^0.5.9"
lz-string: "npm:^1.5.0"
pretty-format: "npm:^27.0.2"
checksum: 10/510da752ea76f4a10a0a4e3a77917b0302cf03effe576cd3534cab7e796533ee2b0e9fb6fb11b911a1ebd7c70a0bb6f235bf4f816c9b82b95b8fe0cddfd10975
languageName: node
linkType: hard
"@testing-library/jest-dom@npm:6.5.0":
version: 6.5.0
resolution: "@testing-library/jest-dom@npm:6.5.0"
@@ -19536,6 +19570,20 @@ __metadata:
languageName: node
linkType: hard
"@testing-library/react@npm:^14.0.0":
version: 14.3.1
resolution: "@testing-library/react@npm:14.3.1"
dependencies:
"@babel/runtime": "npm:^7.12.5"
"@testing-library/dom": "npm:^9.0.0"
"@types/react-dom": "npm:^18.0.0"
peerDependencies:
react: ^18.0.0
react-dom: ^18.0.0
checksum: 10/83359dcdf9eaf067839f34604e1a181cbc14fc09f3a07672403700fcc6a900c4b8054ad1114fc24b4b9f89d84e2a09e1b7c9afce2306b1d4b4c9e30eb1cb12de
languageName: node
linkType: hard
"@testing-library/react@npm:^16.0.0":
version: 16.3.0
resolution: "@testing-library/react@npm:16.3.0"
@@ -23938,6 +23986,15 @@ __metadata:
languageName: node
linkType: hard
"aria-query@npm:5.1.3":
version: 5.1.3
resolution: "aria-query@npm:5.1.3"
dependencies:
deep-equal: "npm:^2.0.5"
checksum: 10/e5da608a7c4954bfece2d879342b6c218b6b207e2d9e5af270b5e38ef8418f02d122afdc948b68e32649b849a38377785252059090d66fa8081da95d1609c0d2
languageName: node
linkType: hard
"aria-query@npm:5.3.0":
version: 5.3.0
resolution: "aria-query@npm:5.3.0"
@@ -23954,7 +24011,7 @@ __metadata:
languageName: node
linkType: hard
"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
version: 1.0.2
resolution: "array-buffer-byte-length@npm:1.0.2"
dependencies:
@@ -27714,6 +27771,32 @@ __metadata:
languageName: node
linkType: hard
"deep-equal@npm:^2.0.5":
version: 2.2.3
resolution: "deep-equal@npm:2.2.3"
dependencies:
array-buffer-byte-length: "npm:^1.0.0"
call-bind: "npm:^1.0.5"
es-get-iterator: "npm:^1.1.3"
get-intrinsic: "npm:^1.2.2"
is-arguments: "npm:^1.1.1"
is-array-buffer: "npm:^3.0.2"
is-date-object: "npm:^1.0.5"
is-regex: "npm:^1.1.4"
is-shared-array-buffer: "npm:^1.0.2"
isarray: "npm:^2.0.5"
object-is: "npm:^1.1.5"
object-keys: "npm:^1.1.1"
object.assign: "npm:^4.1.4"
regexp.prototype.flags: "npm:^1.5.1"
side-channel: "npm:^1.0.4"
which-boxed-primitive: "npm:^1.0.2"
which-collection: "npm:^1.0.1"
which-typed-array: "npm:^1.1.13"
checksum: 10/1ce49d0b71d0f14d8ef991a742665eccd488dfc9b3cada069d4d7a86291e591c92d2589c832811dea182b4015736b210acaaebce6184be356c1060d176f5a05f
languageName: node
linkType: hard
"deep-equal@npm:~1.0.1":
version: 1.0.1
resolution: "deep-equal@npm:1.0.1"
@@ -28922,7 +29005,7 @@ __metadata:
languageName: node
linkType: hard
"es-get-iterator@npm:^1.0.2":
"es-get-iterator@npm:^1.0.2, es-get-iterator@npm:^1.1.3":
version: 1.1.3
resolution: "es-get-iterator@npm:1.1.3"
dependencies:
@@ -31517,7 +31600,7 @@ __metadata:
languageName: node
linkType: hard
"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0":
"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0":
version: 1.3.0
resolution: "get-intrinsic@npm:1.3.0"
dependencies:
@@ -33450,7 +33533,7 @@ __metadata:
languageName: node
linkType: hard
"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
version: 3.0.5
resolution: "is-array-buffer@npm:3.0.5"
dependencies:
@@ -33923,7 +34006,7 @@ __metadata:
languageName: node
linkType: hard
"is-regex@npm:^1.2.1":
"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1":
version: 1.2.1
resolution: "is-regex@npm:1.2.1"
dependencies:
@@ -33972,7 +34055,7 @@ __metadata:
languageName: node
linkType: hard
"is-shared-array-buffer@npm:^1.0.4":
"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.4":
version: 1.0.4
resolution: "is-shared-array-buffer@npm:1.0.4"
dependencies:
@@ -43395,6 +43478,15 @@ __metadata:
languageName: node
linkType: hard
"react@npm:^16.13.1 || ^17.0.0 || ^18.0.0, react@npm:^18.0.2":
version: 18.3.1
resolution: "react@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf
languageName: node
linkType: hard
"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0":
version: 19.1.1
resolution: "react@npm:19.1.1"
@@ -43412,15 +43504,6 @@ __metadata:
languageName: node
linkType: hard
"react@npm:^18.0.2":
version: 18.3.1
resolution: "react@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf
languageName: node
linkType: hard
"read-cmd-shim@npm:^2.0.0":
version: 2.0.0
resolution: "read-cmd-shim@npm:2.0.0"
@@ -43702,7 +43785,7 @@ __metadata:
languageName: node
linkType: hard
"regexp.prototype.flags@npm:^1.5.3":
"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3":
version: 1.5.4
resolution: "regexp.prototype.flags@npm:1.5.4"
dependencies:
@@ -45206,7 +45289,7 @@ __metadata:
languageName: node
linkType: hard
"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0":
"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6, side-channel@npm:^1.1.0":
version: 1.1.0
resolution: "side-channel@npm:1.1.0"
dependencies:
@@ -49373,7 +49456,7 @@ __metadata:
languageName: node
linkType: hard
"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
"which-boxed-primitive@npm:^1.0.2, which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
version: 1.1.1
resolution: "which-boxed-primitive@npm:1.1.1"
dependencies:
@@ -49407,7 +49490,7 @@ __metadata:
languageName: node
linkType: hard
"which-collection@npm:^1.0.2":
"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2":
version: 1.0.2
resolution: "which-collection@npm:1.0.2"
dependencies:
@@ -49429,7 +49512,7 @@ __metadata:
languageName: node
linkType: hard
"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2":
"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2":
version: 1.1.19
resolution: "which-typed-array@npm:1.1.19"
dependencies: