diff --git a/plugins/backstage-1.54/package.json b/plugins/backstage-1.54/package.json index 45f80b0..f09e147 100644 --- a/plugins/backstage-1.54/package.json +++ b/plugins/backstage-1.54/package.json @@ -20,6 +20,7 @@ "lint": "backstage-cli repo lint --since origin/main", "lint:all": "backstage-cli repo lint", "prettier:check": "prettier --check .", + "prettier:fix": "prettier --write .", "new": "backstage-cli new" }, "workspaces": [ diff --git a/plugins/backstage-1.54/packages/app/package.json b/plugins/backstage-1.54/packages/app/package.json index 633aaaa..5c163a8 100644 --- a/plugins/backstage-1.54/packages/app/package.json +++ b/plugins/backstage-1.54/packages/app/package.json @@ -40,7 +40,11 @@ "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.39", "@backstage/plugin-user-settings": "^0.9.6", "@backstage/ui": "^0.17.1", + "@internal/backstage-plugin-bcc-page-n": "workspace:^", + "@internal/backstage-plugin-bui-page-n": "workspace:^", "@internal/backstage-plugin-catalog-tab-n": "workspace:^", + "@internal/backstage-plugin-mui4-page-n": "workspace:^", + "@internal/backstage-plugin-mui5-page-n": "workspace:^", "@internal/backstage-plugin-page-n": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/.eslintrc.js b/plugins/backstage-1.54/plugins/bcc-page-n/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/README.md b/plugins/backstage-1.54/plugins/bcc-page-n/README.md new file mode 100644 index 0000000..55ba3a9 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/README.md @@ -0,0 +1,20 @@ +# bcc-page-n + +Welcome to the bcc-page-n plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the app in this repository, meaning you'll be able +to access it by running `yarn start` in the root directory, and then navigating +to [/bcc-page-n](http://localhost:3000/bcc-page-n). + +This plugin is built with Backstage's [frontend +system](https://backstage.io/docs/frontend-system/architecture/index), and you +can find more information about building plugins in the [plugin builder +documentation](https://backstage.io/docs/frontend-system/building-plugins/index). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. diff --git a/plugins/backstage-1.54/plugins/page-n/dev/alpha.tsx b/plugins/backstage-1.54/plugins/bcc-page-n/dev/index.tsx similarity index 74% rename from plugins/backstage-1.54/plugins/page-n/dev/alpha.tsx rename to plugins/backstage-1.54/plugins/bcc-page-n/dev/index.tsx index 3ba6496..21f8429 100644 --- a/plugins/backstage-1.54/plugins/page-n/dev/alpha.tsx +++ b/plugins/backstage-1.54/plugins/bcc-page-n/dev/index.tsx @@ -1,5 +1,5 @@ import { createDevApp } from '@backstage/frontend-dev-utils'; -import plugin from '../src/alpha'; +import plugin from '../src'; createDevApp({ features: [plugin] }); diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/package.json b/plugins/backstage-1.54/plugins/bcc-page-n/package.json new file mode 100644 index 0000000..2225dee --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/package.json @@ -0,0 +1,48 @@ +{ + "name": "@internal/backstage-plugin-bcc-page-n", + "version": "0.1.0", + "license": "Apache-2.0", + "private": true, + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "pluginId": "bcc-page-n" + }, + "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-components": "0.18.13", + "@backstage/frontend-plugin-api": "0.18.0" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0", + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/TodoList.tsx b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/TodoList.tsx new file mode 100644 index 0000000..ac6a930 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/TodoList.tsx @@ -0,0 +1,31 @@ +import { Table, type TableColumn } from '@backstage/core-components'; + +export type TodoItem = { + title: string; + id: string; + createdBy: string; + createdAt: string; +}; + +const columns: TableColumn[] = [ + { + id: 'title', + title: 'Title', + field: 'title', + }, + { + id: 'createdBy', + title: 'Created by', + field: 'createdBy', + }, + { + id: 'createdAt', + title: 'Created at', + field: 'createdAt', + type: 'datetime', + }, +]; + +export const TodoList = ({ todos }: { todos: TodoItem[] }) => { + return ; +}; diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/index.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/index.ts new file mode 100644 index 0000000..b71610d --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoList/index.ts @@ -0,0 +1,2 @@ +export { TodoList } from './TodoList'; +export type { TodoItem } from './TodoList'; diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/TodoPage.tsx b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/TodoPage.tsx new file mode 100644 index 0000000..3da8a28 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/TodoPage.tsx @@ -0,0 +1,29 @@ +import { Content, Header } from '@backstage/core-components'; +import { TodoList } from '../TodoList'; +import type { TodoItem } from '../TodoList'; + +const exampleTodos: TodoItem[] = [ + { + id: '1', + title: 'Install the backend plugin', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, + { + id: '2', + title: 'Connect the frontend to real data', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, +]; + +export const TodoPage = () => { + return ( + <> +
+ + + + + ); +}; diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/index.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/index.ts new file mode 100644 index 0000000..bfae53f --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/components/TodoPage/index.ts @@ -0,0 +1 @@ +export { TodoPage } from './TodoPage'; diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/index.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/index.ts new file mode 100644 index 0000000..fdb72a7 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/index.ts @@ -0,0 +1 @@ +export { bccPageNPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.test.ts new file mode 100644 index 0000000..cb530f6 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.test.ts @@ -0,0 +1,7 @@ +import { bccPageNPlugin } from './plugin'; + +describe('bcc-page-n', () => { + it('should export plugin', () => { + expect(bccPageNPlugin).toBeDefined(); + }); +}); diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.tsx b/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.tsx new file mode 100644 index 0000000..ae08f00 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/plugin.tsx @@ -0,0 +1,26 @@ +import { + createFrontendPlugin, + PageBlueprint, +} from '@backstage/frontend-plugin-api'; + +import { rootRouteRef } from './routes'; + +const Null = () => null; + +export const page = PageBlueprint.make({ + params: { + path: '/bcc-page-n', + title: 'BCC Page N', + icon: , + routeRef: rootRouteRef, + loader: () => import('./components/TodoPage').then(m => ), + }, +}); + +export const bccPageNPlugin = createFrontendPlugin({ + pluginId: 'bcc-page-n', + extensions: [page], + routes: { + root: rootRouteRef, + }, +}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/alpha/routes.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/routes.ts similarity index 100% rename from plugins/backstage-1.54/plugins/page-n/src/alpha/routes.ts rename to plugins/backstage-1.54/plugins/bcc-page-n/src/routes.ts diff --git a/plugins/backstage-1.54/plugins/bcc-page-n/src/setupTests.ts b/plugins/backstage-1.54/plugins/bcc-page-n/src/setupTests.ts new file mode 100644 index 0000000..7b0828b --- /dev/null +++ b/plugins/backstage-1.54/plugins/bcc-page-n/src/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/.eslintrc.js b/plugins/backstage-1.54/plugins/bui-page-n/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/backstage-1.54/plugins/bui-page-n/README.md b/plugins/backstage-1.54/plugins/bui-page-n/README.md new file mode 100644 index 0000000..d46d011 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/README.md @@ -0,0 +1,20 @@ +# bui-page-n + +Welcome to the bui-page-n plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the app in this repository, meaning you'll be able +to access it by running `yarn start` in the root directory, and then navigating +to [/bui-page-n](http://localhost:3000/bui-page-n). + +This plugin is built with Backstage's [frontend +system](https://backstage.io/docs/frontend-system/architecture/index), and you +can find more information about building plugins in the [plugin builder +documentation](https://backstage.io/docs/frontend-system/building-plugins/index). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. diff --git a/plugins/backstage-1.54/plugins/bui-page-n/dev/index.tsx b/plugins/backstage-1.54/plugins/bui-page-n/dev/index.tsx new file mode 100644 index 0000000..21f8429 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/dev/index.tsx @@ -0,0 +1,5 @@ +import { createDevApp } from '@backstage/frontend-dev-utils'; + +import plugin from '../src'; + +createDevApp({ features: [plugin] }); diff --git a/plugins/backstage-1.54/plugins/bui-page-n/package.json b/plugins/backstage-1.54/plugins/bui-page-n/package.json new file mode 100644 index 0000000..566bd3d --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/package.json @@ -0,0 +1,49 @@ +{ + "name": "@internal/backstage-plugin-bui-page-n", + "version": "0.1.0", + "license": "Apache-2.0", + "private": true, + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "pluginId": "bui-page-n" + }, + "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/frontend-plugin-api": "0.18.0", + "@backstage/ui": "0.17.1", + "@remixicon/react": ">=4.6.0 <4.9.0" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0", + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/TodoList.tsx b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/TodoList.tsx new file mode 100644 index 0000000..c4231f8 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/TodoList.tsx @@ -0,0 +1,45 @@ +import { Table, useTable, CellText, type ColumnConfig } from '@backstage/ui'; + +export type TodoItem = { + title: string; + id: string; + createdBy: string; + createdAt: string; +}; + +const columns: ColumnConfig[] = [ + { + id: 'title', + label: 'Title', + isRowHeader: true, + cell: item => , + }, + { + id: 'createdBy', + label: 'Created by', + cell: item => , + }, + { + id: 'createdAt', + label: 'Created at', + cell: item => ( + + ), + }, +]; + +export const TodoList = ({ todos }: { todos: TodoItem[] }) => { + const { tableProps } = useTable({ + mode: 'complete', + data: todos, + paginationOptions: { pageSize: todos.length || 1 }, + }); + + return ( +
+ ); +}; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/index.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/index.ts new file mode 100644 index 0000000..b71610d --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoList/index.ts @@ -0,0 +1,2 @@ +export { TodoList } from './TodoList'; +export type { TodoItem } from './TodoList'; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/TodoPage.tsx b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/TodoPage.tsx new file mode 100644 index 0000000..a77a9b5 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/TodoPage.tsx @@ -0,0 +1,29 @@ +import { Header, Container } from '@backstage/ui'; +import { TodoList } from '../TodoList'; +import type { TodoItem } from '../TodoList'; + +const exampleTodos: TodoItem[] = [ + { + id: '1', + title: 'Install the backend plugin', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, + { + id: '2', + title: 'Connect the frontend to real data', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, +]; + +export const TodoPage = () => { + return ( + <> +
+ + + + + ); +}; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/index.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/index.ts new file mode 100644 index 0000000..bfae53f --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/components/TodoPage/index.ts @@ -0,0 +1 @@ +export { TodoPage } from './TodoPage'; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/index.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/index.ts new file mode 100644 index 0000000..73553b8 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/index.ts @@ -0,0 +1 @@ +export { buiPageNPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.test.ts new file mode 100644 index 0000000..e047d0c --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.test.ts @@ -0,0 +1,7 @@ +import { buiPageNPlugin } from './plugin'; + +describe('bui-page-n', () => { + it('should export plugin', () => { + expect(buiPageNPlugin).toBeDefined(); + }); +}); diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.tsx b/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.tsx new file mode 100644 index 0000000..554e765 --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/plugin.tsx @@ -0,0 +1,25 @@ +import { + createFrontendPlugin, + PageBlueprint, +} from '@backstage/frontend-plugin-api'; +import { RiRemixiconFill } from '@remixicon/react'; + +import { rootRouteRef } from './routes'; + +export const page = PageBlueprint.make({ + params: { + path: '/bui-page-n', + title: 'BUI Page N', + icon: , + routeRef: rootRouteRef, + loader: () => import('./components/TodoPage').then(m => ), + }, +}); + +export const buiPageNPlugin = createFrontendPlugin({ + pluginId: 'bui-page-n', + extensions: [page], + routes: { + root: rootRouteRef, + }, +}); diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/routes.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/routes.ts new file mode 100644 index 0000000..559a9cc --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/routes.ts @@ -0,0 +1,3 @@ +import { createRouteRef } from '@backstage/frontend-plugin-api'; + +export const rootRouteRef = createRouteRef(); diff --git a/plugins/backstage-1.54/plugins/bui-page-n/src/setupTests.ts b/plugins/backstage-1.54/plugins/bui-page-n/src/setupTests.ts new file mode 100644 index 0000000..7b0828b --- /dev/null +++ b/plugins/backstage-1.54/plugins/bui-page-n/src/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/alpha.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/dev/alpha.tsx deleted file mode 100644 index b41e3a9..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/alpha.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { createDevApp } from '@backstage/frontend-dev-utils'; -import catalogPlugin from '@backstage/plugin-catalog/alpha'; - -import plugin from '../src/alpha'; - -createDevApp({ - features: [catalogPlugin, plugin], -}); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/index.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/dev/index.tsx index 375c174..1586d8a 100644 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/index.tsx +++ b/plugins/backstage-1.54/plugins/catalog-tab-n/dev/index.tsx @@ -1,11 +1,8 @@ -import { createDevApp } from '@backstage/dev-utils'; -import { catalogTabPlugin, EntityCatalogCard } from '../src/plugin'; +import { createDevApp } from '@backstage/frontend-dev-utils'; +import catalogPlugin from '@backstage/plugin-catalog/alpha'; -createDevApp() - .registerPlugin(catalogTabPlugin) - .addPage({ - element: , - title: 'Root Page', - path: '/catalog-tab-n', - }) - .render(); +import plugin from '../src'; + +createDevApp({ + features: [catalogPlugin, plugin], +}); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/legacy.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/dev/legacy.tsx deleted file mode 100644 index 375c174..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/dev/legacy.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createDevApp } from '@backstage/dev-utils'; -import { catalogTabPlugin, EntityCatalogCard } from '../src/plugin'; - -createDevApp() - .registerPlugin(catalogTabPlugin) - .addPage({ - element: , - title: 'Root Page', - path: '/catalog-tab-n', - }) - .render(); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/package.json b/plugins/backstage-1.54/plugins/catalog-tab-n/package.json index ad95131..6b6c326 100644 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/package.json +++ b/plugins/backstage-1.54/plugins/catalog-tab-n/package.json @@ -14,26 +14,9 @@ "role": "frontend-plugin", "pluginId": "catalog-tab-n" }, - "exports": { - ".": "./src/index.ts", - "./alpha": "./src/alpha/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "alpha": [ - "src/alpha/index.ts" - ], - "package.json": [ - "package.json" - ] - } - }, "sideEffects": false, "scripts": { "start": "backstage-cli package start", - "start:legacy": "backstage-cli package start --entrypoint dev/legacy.tsx", - "start:alpha": "backstage-cli package start --entrypoint dev/alpha.tsx", "build": "backstage-cli package build", "lint": "backstage-cli package lint", "test": "backstage-cli package test", @@ -43,36 +26,27 @@ }, "dependencies": { "@backstage/core-components": "^0.18.13", - "@backstage/core-plugin-api": "^1.12.9", "@backstage/frontend-plugin-api": "^0.18.0", "@backstage/plugin-catalog-react": "^3.2.2", - "@backstage/theme": "^0.7.3", + "@backstage/ui": "0.17.1", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", "react-use": "^17.2.4" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" }, "devDependencies": { - "@backstage/cli": "^0.36.5", - "@backstage/core-app-api": "^1.20.4", - "@backstage/dev-utils": "^1.1.26", - "@backstage/frontend-defaults": "^0.5.5", - "@backstage/frontend-dev-utils": "^0.1.5", - "@backstage/frontend-test-utils": "^0.6.3", + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", "@backstage/plugin-catalog": "^2.0.8", - "@backstage/test-utils": "^1.7.21", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", "msw": "^1.0.0", - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" }, "files": [ "dist" diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/index.ts b/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/index.ts deleted file mode 100644 index aa47b2c..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { catalogTabPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.test.ts b/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.test.ts deleted file mode 100644 index 1dbe208..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { catalogTabPlugin } from './plugin'; - -describe('catalog-tab-n alpha', () => { - it('should export plugin', () => { - expect(catalogTabPlugin).toBeDefined(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleComponent/ExampleComponent.test.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleComponent/ExampleComponent.test.tsx deleted file mode 100644 index c8acb35..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleComponent/ExampleComponent.test.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { ExampleComponent } from './ExampleComponent'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { screen } from '@testing-library/react'; -import { registerMswTestHooks, renderInTestApp } from '@backstage/test-utils'; - -describe('ExampleComponent', () => { - const server = setupServer(); - // Enable sane handlers for network requests - registerMswTestHooks(server); - - // setup mock response - beforeEach(() => { - server.use( - rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), - ); - }); - - it('should render', async () => { - await renderInTestApp(); - expect(screen.getByText('Welcome to Catalog Tab N!')).toBeInTheDocument(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx deleted file mode 100644 index 820e54f..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { renderInTestApp } from '@backstage/test-utils'; -import { ExampleFetchComponent } from './ExampleFetchComponent'; - -describe('ExampleFetchComponent', () => { - it('renders the user table', async () => { - const { getAllByText, getByAltText, getByText, findByRole } = - await renderInTestApp(); - - // Wait for the table to render - const table = await findByRole('table'); - const nationality = getAllByText('GB'); - // Assert that the table contains the expected user data - expect(table).toBeInTheDocument(); - expect(getByAltText('Carolyn')).toBeInTheDocument(); - expect(getByText('Carolyn Moore')).toBeInTheDocument(); - expect(getByText('carolyn.moore@example.com')).toBeInTheDocument(); - expect(nationality[0]).toBeInTheDocument(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/index.ts b/plugins/backstage-1.54/plugins/catalog-tab-n/src/index.ts index f1d0700..aa47b2c 100644 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/index.ts +++ b/plugins/backstage-1.54/plugins/catalog-tab-n/src/index.ts @@ -1 +1 @@ -export { catalogTabPlugin, EntityCatalogCard } from './plugin'; +export { catalogTabPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.test.ts index 0a3a1d0..1dbe208 100644 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.test.ts +++ b/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.test.ts @@ -1,6 +1,6 @@ import { catalogTabPlugin } from './plugin'; -describe('catalog-tab-n', () => { +describe('catalog-tab-n alpha', () => { it('should export plugin', () => { expect(catalogTabPlugin).toBeDefined(); }); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.ts b/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.ts deleted file mode 100644 index 6530235..0000000 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { - createComponentExtension, - createPlugin, -} from '@backstage/core-plugin-api'; - -export const catalogTabPlugin = createPlugin({ - id: 'catalog-tab-n', -}); - -export const EntityCatalogCard = catalogTabPlugin.provide( - createComponentExtension({ - name: 'EntityCatalogCard', - component: { - lazy: () => - import('./components/ExampleComponent').then(m => m.ExampleComponent), - }, - }), -); diff --git a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.tsx b/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.tsx similarity index 82% rename from plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.tsx rename to plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.tsx index 48b5982..23d9686 100644 --- a/plugins/backstage-1.54/plugins/catalog-tab-n/src/alpha/plugin.tsx +++ b/plugins/backstage-1.54/plugins/catalog-tab-n/src/plugin.tsx @@ -7,9 +7,7 @@ export const EntityCatalogCard: any = EntityContentBlueprint.make({ path: 'catalog-tab-n', title: 'Catalog Tab N', loader: () => - import('../components/ExampleComponent').then(m => ( - - )), + import('./components/ExampleComponent').then(m => ), }, }); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/.eslintrc.js b/plugins/backstage-1.54/plugins/mui4-page-n/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/README.md b/plugins/backstage-1.54/plugins/mui4-page-n/README.md new file mode 100644 index 0000000..db01f89 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/README.md @@ -0,0 +1,20 @@ +# mui4-page-n + +Welcome to the mui4-page-n plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the app in this repository, meaning you'll be able +to access it by running `yarn start` in the root directory, and then navigating +to [/mui4-page-n](http://localhost:3000/mui4-page-n). + +This plugin is built with Backstage's [frontend +system](https://backstage.io/docs/frontend-system/architecture/index), and you +can find more information about building plugins in the [plugin builder +documentation](https://backstage.io/docs/frontend-system/building-plugins/index). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/dev/index.tsx b/plugins/backstage-1.54/plugins/mui4-page-n/dev/index.tsx new file mode 100644 index 0000000..21f8429 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/dev/index.tsx @@ -0,0 +1,5 @@ +import { createDevApp } from '@backstage/frontend-dev-utils'; + +import plugin from '../src'; + +createDevApp({ features: [plugin] }); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/package.json b/plugins/backstage-1.54/plugins/mui4-page-n/package.json new file mode 100644 index 0000000..e7bd473 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/package.json @@ -0,0 +1,49 @@ +{ + "name": "@internal/backstage-plugin-mui4-page-n", + "version": "0.1.0", + "license": "Apache-2.0", + "private": true, + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "pluginId": "mui4-page-n" + }, + "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/frontend-plugin-api": "0.18.0", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0", + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/TodoList.tsx b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/TodoList.tsx new file mode 100644 index 0000000..4ac7e15 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/TodoList.tsx @@ -0,0 +1,39 @@ +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableContainer from '@material-ui/core/TableContainer'; +import TableHead from '@material-ui/core/TableHead'; +import TableRow from '@material-ui/core/TableRow'; +import Paper from '@material-ui/core/Paper'; + +export type TodoItem = { + title: string; + id: string; + createdBy: string; + createdAt: string; +}; + +export const TodoList = ({ todos }: { todos: TodoItem[] }) => { + return ( + +
+ + + Title + Created by + Created at + + + + {todos.map(todo => ( + + {todo.title} + {todo.createdBy} + {new Date(todo.createdAt).toLocaleString()} + + ))} + +
+ + ); +}; diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/index.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/index.ts new file mode 100644 index 0000000..b71610d --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoList/index.ts @@ -0,0 +1,2 @@ +export { TodoList } from './TodoList'; +export type { TodoItem } from './TodoList'; diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/TodoPage.tsx b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/TodoPage.tsx new file mode 100644 index 0000000..a907066 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/TodoPage.tsx @@ -0,0 +1,30 @@ +import Container from '@material-ui/core/Container'; +import Typography from '@material-ui/core/Typography'; +import { TodoList } from '../TodoList'; +import type { TodoItem } from '../TodoList'; + +const exampleTodos: TodoItem[] = [ + { + id: '1', + title: 'Install the backend plugin', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, + { + id: '2', + title: 'Connect the frontend to real data', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, +]; + +export const TodoPage = () => { + return ( + + + Welcome to mui4-page-n! + + + + ); +}; diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/index.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/index.ts new file mode 100644 index 0000000..bfae53f --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/components/TodoPage/index.ts @@ -0,0 +1 @@ +export { TodoPage } from './TodoPage'; diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/index.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/index.ts new file mode 100644 index 0000000..c86f196 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/index.ts @@ -0,0 +1 @@ +export { mui4PageNPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.test.ts new file mode 100644 index 0000000..b50d129 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.test.ts @@ -0,0 +1,7 @@ +import { mui4PageNPlugin } from './plugin'; + +describe('mui4-page-n', () => { + it('should export plugin', () => { + expect(mui4PageNPlugin).toBeDefined(); + }); +}); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.tsx b/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.tsx new file mode 100644 index 0000000..5d875ab --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/plugin.tsx @@ -0,0 +1,25 @@ +import { + createFrontendPlugin, + PageBlueprint, +} from '@backstage/frontend-plugin-api'; +import Looks4Icon from '@material-ui/icons/Looks4'; + +import { rootRouteRef } from './routes'; + +export const page = PageBlueprint.make({ + params: { + path: '/mui4-page-n', + title: 'MUI4 Page N', + icon: , + routeRef: rootRouteRef, + loader: () => import('./components/TodoPage').then(m => ), + }, +}); + +export const mui4PageNPlugin = createFrontendPlugin({ + pluginId: 'mui4-page-n', + extensions: [page], + routes: { + root: rootRouteRef, + }, +}); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/routes.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/routes.ts new file mode 100644 index 0000000..559a9cc --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/routes.ts @@ -0,0 +1,3 @@ +import { createRouteRef } from '@backstage/frontend-plugin-api'; + +export const rootRouteRef = createRouteRef(); diff --git a/plugins/backstage-1.54/plugins/mui4-page-n/src/setupTests.ts b/plugins/backstage-1.54/plugins/mui4-page-n/src/setupTests.ts new file mode 100644 index 0000000..7b0828b --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui4-page-n/src/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/.eslintrc.js b/plugins/backstage-1.54/plugins/mui5-page-n/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/README.md b/plugins/backstage-1.54/plugins/mui5-page-n/README.md new file mode 100644 index 0000000..40deafc --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/README.md @@ -0,0 +1,20 @@ +# mui5-page-n + +Welcome to the mui5-page-n plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the app in this repository, meaning you'll be able +to access it by running `yarn start` in the root directory, and then navigating +to [/mui5-page-n](http://localhost:3000/mui5-page-n). + +This plugin is built with Backstage's [frontend +system](https://backstage.io/docs/frontend-system/architecture/index), and you +can find more information about building plugins in the [plugin builder +documentation](https://backstage.io/docs/frontend-system/building-plugins/index). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/dev/index.tsx b/plugins/backstage-1.54/plugins/mui5-page-n/dev/index.tsx new file mode 100644 index 0000000..21f8429 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/dev/index.tsx @@ -0,0 +1,5 @@ +import { createDevApp } from '@backstage/frontend-dev-utils'; + +import plugin from '../src'; + +createDevApp({ features: [plugin] }); diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/package.json b/plugins/backstage-1.54/plugins/mui5-page-n/package.json new file mode 100644 index 0000000..00b83f3 --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/package.json @@ -0,0 +1,49 @@ +{ + "name": "@internal/backstage-plugin-mui5-page-n", + "version": "0.1.0", + "license": "Apache-2.0", + "private": true, + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "pluginId": "mui5-page-n" + }, + "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/frontend-plugin-api": "0.18.0", + "@mui/icons-material": "^5.18.0", + "@mui/material": "^5.12.2" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "devDependencies": { + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0", + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/TodoList.tsx b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/TodoList.tsx new file mode 100644 index 0000000..11d1f0e --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/TodoList.tsx @@ -0,0 +1,39 @@ +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; + +export type TodoItem = { + title: string; + id: string; + createdBy: string; + createdAt: string; +}; + +export const TodoList = ({ todos }: { todos: TodoItem[] }) => { + return ( + + + + + Title + Created by + Created at + + + + {todos.map(todo => ( + + {todo.title} + {todo.createdBy} + {new Date(todo.createdAt).toLocaleString()} + + ))} + +
+
+ ); +}; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/index.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/index.ts new file mode 100644 index 0000000..b71610d --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoList/index.ts @@ -0,0 +1,2 @@ +export { TodoList } from './TodoList'; +export type { TodoItem } from './TodoList'; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/TodoPage.tsx b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/TodoPage.tsx new file mode 100644 index 0000000..dcd1daa --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/TodoPage.tsx @@ -0,0 +1,30 @@ +import Container from '@mui/material/Container'; +import Typography from '@mui/material/Typography'; +import { TodoList } from '../TodoList'; +import type { TodoItem } from '../TodoList'; + +const exampleTodos: TodoItem[] = [ + { + id: '1', + title: 'Install the backend plugin', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, + { + id: '2', + title: 'Connect the frontend to real data', + createdBy: 'user:default/guest', + createdAt: new Date().toISOString(), + }, +]; + +export const TodoPage = () => { + return ( + + + Welcome to mui5-page-n! + + + + ); +}; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/index.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/index.ts new file mode 100644 index 0000000..bfae53f --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/components/TodoPage/index.ts @@ -0,0 +1 @@ +export { TodoPage } from './TodoPage'; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/index.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/index.ts new file mode 100644 index 0000000..343179c --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/index.ts @@ -0,0 +1 @@ +export { mui5PageNPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.test.ts new file mode 100644 index 0000000..9e85bda --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.test.ts @@ -0,0 +1,7 @@ +import { mui5PageNPlugin } from './plugin'; + +describe('mui5-page-n', () => { + it('should export plugin', () => { + expect(mui5PageNPlugin).toBeDefined(); + }); +}); diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.tsx b/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.tsx new file mode 100644 index 0000000..5bb012b --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/plugin.tsx @@ -0,0 +1,25 @@ +import { + createFrontendPlugin, + PageBlueprint, +} from '@backstage/frontend-plugin-api'; +import Looks5Icon from '@mui/icons-material/Looks5'; + +import { rootRouteRef } from './routes'; + +export const page = PageBlueprint.make({ + params: { + path: '/mui5-page-n', + title: 'MUI5 Page N', + icon: , + routeRef: rootRouteRef, + loader: () => import('./components/TodoPage').then(m => ), + }, +}); + +export const mui5PageNPlugin = createFrontendPlugin({ + pluginId: 'mui5-page-n', + extensions: [page], + routes: { + root: rootRouteRef, + }, +}); diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/routes.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/routes.ts new file mode 100644 index 0000000..559a9cc --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/routes.ts @@ -0,0 +1,3 @@ +import { createRouteRef } from '@backstage/frontend-plugin-api'; + +export const rootRouteRef = createRouteRef(); diff --git a/plugins/backstage-1.54/plugins/mui5-page-n/src/setupTests.ts b/plugins/backstage-1.54/plugins/mui5-page-n/src/setupTests.ts new file mode 100644 index 0000000..7b0828b --- /dev/null +++ b/plugins/backstage-1.54/plugins/mui5-page-n/src/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/plugins/backstage-1.54/plugins/page-n/README.md b/plugins/backstage-1.54/plugins/page-n/README.md index 106aae7..6b537c0 100644 --- a/plugins/backstage-1.54/plugins/page-n/README.md +++ b/plugins/backstage-1.54/plugins/page-n/README.md @@ -6,7 +6,14 @@ _This plugin was created through the Backstage CLI_ ## Getting started -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/page-n](http://localhost:3000/page-n). +Your plugin has been added to the app in this repository, meaning you'll be able +to access it by running `yarn start` in the root directory, and then navigating +to [/page-n](http://localhost:3000/page-n). + +This plugin is built with Backstage's [frontend +system](https://backstage.io/docs/frontend-system/architecture/index), and you +can find more information about building plugins in the [plugin builder +documentation](https://backstage.io/docs/frontend-system/building-plugins/index). You can also serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. diff --git a/plugins/backstage-1.54/plugins/page-n/dev/index.tsx b/plugins/backstage-1.54/plugins/page-n/dev/index.tsx index 5aa603b..21f8429 100644 --- a/plugins/backstage-1.54/plugins/page-n/dev/index.tsx +++ b/plugins/backstage-1.54/plugins/page-n/dev/index.tsx @@ -1,11 +1,5 @@ -import { createDevApp } from '@backstage/dev-utils'; -import { pagePlugin, Page } from '../src/plugin'; +import { createDevApp } from '@backstage/frontend-dev-utils'; -createDevApp() - .registerPlugin(pagePlugin) - .addPage({ - element: , - title: 'Root Page', - path: '/page-n', - }) - .render(); +import plugin from '../src'; + +createDevApp({ features: [plugin] }); diff --git a/plugins/backstage-1.54/plugins/page-n/dev/legacy.tsx b/plugins/backstage-1.54/plugins/page-n/dev/legacy.tsx deleted file mode 100644 index 5aa603b..0000000 --- a/plugins/backstage-1.54/plugins/page-n/dev/legacy.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createDevApp } from '@backstage/dev-utils'; -import { pagePlugin, Page } from '../src/plugin'; - -createDevApp() - .registerPlugin(pagePlugin) - .addPage({ - element: , - title: 'Root Page', - path: '/page-n', - }) - .render(); diff --git a/plugins/backstage-1.54/plugins/page-n/package.json b/plugins/backstage-1.54/plugins/page-n/package.json index ee3ad8d..6394b62 100644 --- a/plugins/backstage-1.54/plugins/page-n/package.json +++ b/plugins/backstage-1.54/plugins/page-n/package.json @@ -14,26 +14,9 @@ "role": "frontend-plugin", "pluginId": "page-n" }, - "exports": { - ".": "./src/index.ts", - "./alpha": "./src/alpha/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "alpha": [ - "src/alpha/index.ts" - ], - "package.json": [ - "package.json" - ] - } - }, "sideEffects": false, "scripts": { "start": "backstage-cli package start", - "start:legacy": "backstage-cli package start --entrypoint dev/legacy.tsx", - "start:alpha": "backstage-cli package start --entrypoint dev/alpha.tsx", "build": "backstage-cli package build", "lint": "backstage-cli package lint", "test": "backstage-cli package test", @@ -42,35 +25,26 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.18.13", - "@backstage/core-plugin-api": "^1.12.9", - "@backstage/frontend-plugin-api": "^0.18.0", - "@backstage/theme": "^0.7.3", - "@material-ui/core": "^4.9.13", + "@backstage/core-components": "0.18.13", + "@backstage/frontend-plugin-api": "0.18.0", + "@backstage/ui": "0.17.1", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.61", "react-use": "^17.2.4" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" }, "devDependencies": { - "@backstage/cli": "^0.36.5", - "@backstage/core-app-api": "^1.20.4", - "@backstage/dev-utils": "^1.1.26", - "@backstage/frontend-defaults": "^0.5.5", - "@backstage/frontend-dev-utils": "^0.1.5", - "@backstage/frontend-test-utils": "^0.6.3", - "@backstage/test-utils": "^1.7.21", + "@backstage/cli": "0.36.5", + "@backstage/frontend-defaults": "0.5.5", + "@backstage/frontend-dev-utils": "0.1.5", + "@backstage/frontend-test-utils": "0.6.3", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", "msw": "^1.0.0", - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" }, "files": [ "dist" diff --git a/plugins/backstage-1.54/plugins/page-n/src/alpha/index.ts b/plugins/backstage-1.54/plugins/page-n/src/alpha/index.ts deleted file mode 100644 index 6744f75..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/alpha/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { pagePlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.test.ts b/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.test.ts deleted file mode 100644 index ae4b082..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { pagePlugin } from './plugin'; - -describe('page-n alpha', () => { - it('should export plugin', () => { - expect(pagePlugin).toBeDefined(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.tsx b/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.tsx deleted file mode 100644 index ad6abff..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/alpha/plugin.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { - createFrontendPlugin, - PageBlueprint, -} from '@backstage/frontend-plugin-api'; -import ExtensionIcon from '@material-ui/icons/Extension'; - -import { rootRouteRef } from './routes'; - -export const page: any = PageBlueprint.make({ - params: { - path: `/page-n`, - routeRef: rootRouteRef, - title: 'Page N', - icon: , - loader: () => - import('../components/ExampleComponent').then(m => ( - - )), - }, -}); - -export const pagePlugin = createFrontendPlugin({ - pluginId: 'page-n', - extensions: [page], -}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/components/ExampleComponent/ExampleComponent.test.tsx b/plugins/backstage-1.54/plugins/page-n/src/components/ExampleComponent/ExampleComponent.test.tsx deleted file mode 100644 index 402c7a3..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/components/ExampleComponent/ExampleComponent.test.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { ExampleComponent } from './ExampleComponent'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { screen } from '@testing-library/react'; -import { registerMswTestHooks, renderInTestApp } from '@backstage/test-utils'; - -describe('ExampleComponent', () => { - const server = setupServer(); - // Enable sane handlers for network requests - registerMswTestHooks(server); - - // setup mock response - beforeEach(() => { - server.use( - rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), - ); - }); - - it('should render', async () => { - await renderInTestApp(); - expect(screen.getByText('Welcome to Page N!')).toBeInTheDocument(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx b/plugins/backstage-1.54/plugins/page-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx deleted file mode 100644 index 820e54f..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { renderInTestApp } from '@backstage/test-utils'; -import { ExampleFetchComponent } from './ExampleFetchComponent'; - -describe('ExampleFetchComponent', () => { - it('renders the user table', async () => { - const { getAllByText, getByAltText, getByText, findByRole } = - await renderInTestApp(); - - // Wait for the table to render - const table = await findByRole('table'); - const nationality = getAllByText('GB'); - // Assert that the table contains the expected user data - expect(table).toBeInTheDocument(); - expect(getByAltText('Carolyn')).toBeInTheDocument(); - expect(getByText('Carolyn Moore')).toBeInTheDocument(); - expect(getByText('carolyn.moore@example.com')).toBeInTheDocument(); - expect(nationality[0]).toBeInTheDocument(); - }); -}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/index.ts b/plugins/backstage-1.54/plugins/page-n/src/index.ts index 357e8d8..d98d0fa 100644 --- a/plugins/backstage-1.54/plugins/page-n/src/index.ts +++ b/plugins/backstage-1.54/plugins/page-n/src/index.ts @@ -1 +1 @@ -export { pagePlugin, Page } from './plugin'; +export { pageNPlugin as default } from './plugin'; diff --git a/plugins/backstage-1.54/plugins/page-n/src/plugin.test.ts b/plugins/backstage-1.54/plugins/page-n/src/plugin.test.ts index 527d337..eb667f7 100644 --- a/plugins/backstage-1.54/plugins/page-n/src/plugin.test.ts +++ b/plugins/backstage-1.54/plugins/page-n/src/plugin.test.ts @@ -1,7 +1,7 @@ -import { pagePlugin } from './plugin'; +import { pageNPlugin } from './plugin'; describe('page-n', () => { it('should export plugin', () => { - expect(pagePlugin).toBeDefined(); + expect(pageNPlugin).toBeDefined(); }); }); diff --git a/plugins/backstage-1.54/plugins/page-n/src/plugin.ts b/plugins/backstage-1.54/plugins/page-n/src/plugin.ts deleted file mode 100644 index fb4edc6..0000000 --- a/plugins/backstage-1.54/plugins/page-n/src/plugin.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { - createPlugin, - createRoutableExtension, -} from '@backstage/core-plugin-api'; - -import { rootRouteRef } from './routes'; - -export const pagePlugin = createPlugin({ - id: 'page-n', - routes: { - root: rootRouteRef, - }, -}); - -export const Page = pagePlugin.provide( - createRoutableExtension({ - name: 'Page', - component: () => - import('./components/ExampleComponent').then(m => m.ExampleComponent), - mountPoint: rootRouteRef, - }), -); diff --git a/plugins/backstage-1.54/plugins/page-n/src/plugin.tsx b/plugins/backstage-1.54/plugins/page-n/src/plugin.tsx new file mode 100644 index 0000000..df7e06f --- /dev/null +++ b/plugins/backstage-1.54/plugins/page-n/src/plugin.tsx @@ -0,0 +1,27 @@ +import { + createFrontendPlugin, + PageBlueprint, +} from '@backstage/frontend-plugin-api'; + +import { rootRouteRef } from './routes'; + +const Null = () => null; + +export const page = PageBlueprint.make({ + params: { + path: '/page-n', + title: 'Page N', + icon: , + routeRef: rootRouteRef, + loader: () => + import('./components/ExampleComponent').then(m => ), + }, +}); + +export const pageNPlugin = createFrontendPlugin({ + pluginId: 'page-n', + extensions: [page], + routes: { + root: rootRouteRef, + }, +}); diff --git a/plugins/backstage-1.54/plugins/page-n/src/routes.ts b/plugins/backstage-1.54/plugins/page-n/src/routes.ts index 9febe0c..559a9cc 100644 --- a/plugins/backstage-1.54/plugins/page-n/src/routes.ts +++ b/plugins/backstage-1.54/plugins/page-n/src/routes.ts @@ -1,5 +1,3 @@ -import { createRouteRef } from '@backstage/core-plugin-api'; +import { createRouteRef } from '@backstage/frontend-plugin-api'; -export const rootRouteRef = createRouteRef({ - id: 'page-n', -}); +export const rootRouteRef = createRouteRef(); diff --git a/plugins/backstage-1.54/yarn.lock b/plugins/backstage-1.54/yarn.lock index 8c5632e..d40140e 100644 --- a/plugins/backstage-1.54/yarn.lock +++ b/plugins/backstage-1.54/yarn.lock @@ -1349,30 +1349,6 @@ __metadata: languageName: node linkType: hard -"@backstage/app-defaults@npm:1.7.11": - version: 1.7.11 - resolution: "@backstage/app-defaults@npm:1.7.11" - dependencies: - "@backstage/core-app-api": "npm:^1.20.4" - "@backstage/core-components": "npm:^0.18.13" - "@backstage/core-plugin-api": "npm:^1.12.9" - "@backstage/frontend-plugin-api": "npm:^0.18.0" - "@backstage/plugin-permission-react": "npm:^0.5.4" - "@backstage/theme": "npm:^0.7.3" - "@material-ui/core": "npm:^4.12.2" - "@material-ui/icons": "npm:^4.9.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.30.2 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/64acd0eb74a4a52f3fcfe3c69156c6c140475ee7181b6e5c7ca412df9e02f90c415d0521c652231ae38dacb47849f40c6a8ba270a7a3c1bb36959ed1c82996f6 - languageName: node - linkType: hard - "@backstage/backend-app-api@npm:1.7.3": version: 1.7.3 resolution: "@backstage/backend-app-api@npm:1.7.3" @@ -2157,34 +2133,6 @@ __metadata: languageName: node linkType: hard -"@backstage/dev-utils@npm:1.1.26": - version: 1.1.26 - resolution: "@backstage/dev-utils@npm:1.1.26" - dependencies: - "@backstage/app-defaults": "npm:^1.7.11" - "@backstage/catalog-model": "npm:^1.10.0" - "@backstage/core-app-api": "npm:^1.20.4" - "@backstage/core-components": "npm:^0.18.13" - "@backstage/core-plugin-api": "npm:^1.12.9" - "@backstage/integration-react": "npm:^1.2.21" - "@backstage/plugin-catalog-react": "npm:^3.2.1" - "@backstage/theme": "npm:^0.7.3" - "@backstage/ui": "npm:^0.17.1" - "@material-ui/core": "npm:^4.12.2" - "@material-ui/icons": "npm:^4.9.1" - react-use: "npm:^17.2.4" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.30.2 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/23edcfdae30bb2203c4a01dd1721b910774253dfdf3b543507964de8d44ca953ad1ee9a9e26ff45815aabef8be4aa98440ba500c379d5852bcd97fe8eff37d5b - languageName: node - linkType: hard - "@backstage/e2e-test-utils@npm:0.1.2": version: 0.1.2 resolution: "@backstage/e2e-test-utils@npm:0.1.2" @@ -5321,38 +5269,112 @@ __metadata: languageName: node linkType: hard +"@internal/backstage-plugin-bcc-page-n@workspace:^, @internal/backstage-plugin-bcc-page-n@workspace:plugins/bcc-page-n": + version: 0.0.0-use.local + resolution: "@internal/backstage-plugin-bcc-page-n@workspace:plugins/bcc-page-n" + dependencies: + "@backstage/cli": "npm:0.36.5" + "@backstage/core-components": "npm:0.18.13" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" + "@backstage/frontend-plugin-api": "npm:0.18.0" + "@backstage/frontend-test-utils": "npm:0.6.3" + "@testing-library/jest-dom": "npm:^6.0.0" + "@testing-library/react": "npm:^14.0.0" + "@testing-library/user-event": "npm:^14.0.0" + msw: "npm:^1.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 + +"@internal/backstage-plugin-bui-page-n@workspace:^, @internal/backstage-plugin-bui-page-n@workspace:plugins/bui-page-n": + version: 0.0.0-use.local + resolution: "@internal/backstage-plugin-bui-page-n@workspace:plugins/bui-page-n" + dependencies: + "@backstage/cli": "npm:0.36.5" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" + "@backstage/frontend-plugin-api": "npm:0.18.0" + "@backstage/frontend-test-utils": "npm:0.6.3" + "@backstage/ui": "npm:0.17.1" + "@remixicon/react": "npm:>=4.6.0 <4.9.0" + "@testing-library/jest-dom": "npm:^6.0.0" + "@testing-library/react": "npm:^14.0.0" + "@testing-library/user-event": "npm:^14.0.0" + msw: "npm:^1.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 + "@internal/backstage-plugin-catalog-tab-n@workspace:^, @internal/backstage-plugin-catalog-tab-n@workspace:plugins/catalog-tab-n": version: 0.0.0-use.local resolution: "@internal/backstage-plugin-catalog-tab-n@workspace:plugins/catalog-tab-n" dependencies: - "@backstage/cli": "npm:^0.36.5" - "@backstage/core-app-api": "npm:^1.20.4" + "@backstage/cli": "npm:0.36.5" "@backstage/core-components": "npm:^0.18.13" - "@backstage/core-plugin-api": "npm:^1.12.9" - "@backstage/dev-utils": "npm:^1.1.26" - "@backstage/frontend-defaults": "npm:^0.5.5" - "@backstage/frontend-dev-utils": "npm:^0.1.5" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" "@backstage/frontend-plugin-api": "npm:^0.18.0" - "@backstage/frontend-test-utils": "npm:^0.6.3" + "@backstage/frontend-test-utils": "npm:0.6.3" "@backstage/plugin-catalog": "npm:^2.0.8" "@backstage/plugin-catalog-react": "npm:^3.2.2" - "@backstage/test-utils": "npm:^1.7.21" - "@backstage/theme": "npm:^0.7.3" + "@backstage/ui": "npm:0.17.1" "@material-ui/core": "npm:^4.9.13" "@material-ui/icons": "npm:^4.9.1" - "@material-ui/lab": "npm:^4.0.0-alpha.61" "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^14.0.0" "@testing-library/user-event": "npm:^14.0.0" msw: "npm:^1.0.0" react: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" - react-dom: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" - react-router-dom: "npm:^6.0.0" react-use: "npm:^17.2.4" peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-router-dom: ^6.0.0 + languageName: unknown + linkType: soft + +"@internal/backstage-plugin-mui4-page-n@workspace:^, @internal/backstage-plugin-mui4-page-n@workspace:plugins/mui4-page-n": + version: 0.0.0-use.local + resolution: "@internal/backstage-plugin-mui4-page-n@workspace:plugins/mui4-page-n" + dependencies: + "@backstage/cli": "npm:0.36.5" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" + "@backstage/frontend-plugin-api": "npm:0.18.0" + "@backstage/frontend-test-utils": "npm:0.6.3" + "@material-ui/core": "npm:^4.12.2" + "@material-ui/icons": "npm:^4.9.1" + "@testing-library/jest-dom": "npm:^6.0.0" + "@testing-library/react": "npm:^14.0.0" + "@testing-library/user-event": "npm:^14.0.0" + msw: "npm:^1.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 + +"@internal/backstage-plugin-mui5-page-n@workspace:^, @internal/backstage-plugin-mui5-page-n@workspace:plugins/mui5-page-n": + version: 0.0.0-use.local + resolution: "@internal/backstage-plugin-mui5-page-n@workspace:plugins/mui5-page-n" + dependencies: + "@backstage/cli": "npm:0.36.5" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" + "@backstage/frontend-plugin-api": "npm:0.18.0" + "@backstage/frontend-test-utils": "npm:0.6.3" + "@mui/icons-material": "npm:^5.18.0" + "@mui/material": "npm:^5.12.2" + "@testing-library/jest-dom": "npm:^6.0.0" + "@testing-library/react": "npm:^14.0.0" + "@testing-library/user-event": "npm:^14.0.0" + msw: "npm:^1.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 @@ -5360,32 +5382,23 @@ __metadata: version: 0.0.0-use.local resolution: "@internal/backstage-plugin-page-n@workspace:plugins/page-n" dependencies: - "@backstage/cli": "npm:^0.36.5" - "@backstage/core-app-api": "npm:^1.20.4" - "@backstage/core-components": "npm:^0.18.13" - "@backstage/core-plugin-api": "npm:^1.12.9" - "@backstage/dev-utils": "npm:^1.1.26" - "@backstage/frontend-defaults": "npm:^0.5.5" - "@backstage/frontend-dev-utils": "npm:^0.1.5" - "@backstage/frontend-plugin-api": "npm:^0.18.0" - "@backstage/frontend-test-utils": "npm:^0.6.3" - "@backstage/test-utils": "npm:^1.7.21" - "@backstage/theme": "npm:^0.7.3" - "@material-ui/core": "npm:^4.9.13" + "@backstage/cli": "npm:0.36.5" + "@backstage/core-components": "npm:0.18.13" + "@backstage/frontend-defaults": "npm:0.5.5" + "@backstage/frontend-dev-utils": "npm:0.1.5" + "@backstage/frontend-plugin-api": "npm:0.18.0" + "@backstage/frontend-test-utils": "npm:0.6.3" + "@backstage/ui": "npm:0.17.1" + "@material-ui/core": "npm:^4.12.2" "@material-ui/icons": "npm:^4.9.1" - "@material-ui/lab": "npm:^4.0.0-alpha.61" "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^14.0.0" "@testing-library/user-event": "npm:^14.0.0" msw: "npm:^1.0.0" react: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" - react-dom: "npm:^16.13.1 || ^17.0.0 || ^18.0.0" - react-router-dom: "npm:^6.0.0" react-use: "npm:^17.2.4" peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-router-dom: ^6.0.0 languageName: unknown linkType: soft @@ -7008,6 +7021,22 @@ __metadata: languageName: node linkType: hard +"@mui/icons-material@npm:^5.18.0": + version: 5.18.0 + resolution: "@mui/icons-material@npm:5.18.0" + dependencies: + "@babel/runtime": "npm:^7.23.9" + peerDependencies: + "@mui/material": ^5.0.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/4fc61ea1b8ff276c8545b4f4f3881d9be590af24d8c2cbb076b34ec9a9230fd3147c30dd12399133c8d99c9eb748bd73014fa29b187b94229b90783023af4482 + languageName: node + linkType: hard + "@mui/material@npm:^5.12.2": version: 5.18.0 resolution: "@mui/material@npm:5.18.0" @@ -12720,7 +12749,11 @@ __metadata: "@backstage/plugin-techdocs-module-addons-contrib": "npm:^1.1.39" "@backstage/plugin-user-settings": "npm:^0.9.6" "@backstage/ui": "npm:^0.17.1" + "@internal/backstage-plugin-bcc-page-n": "workspace:^" + "@internal/backstage-plugin-bui-page-n": "workspace:^" "@internal/backstage-plugin-catalog-tab-n": "workspace:^" + "@internal/backstage-plugin-mui4-page-n": "workspace:^" + "@internal/backstage-plugin-mui5-page-n": "workspace:^" "@internal/backstage-plugin-page-n": "workspace:^" "@material-ui/core": "npm:^4.12.2" "@material-ui/icons": "npm:^4.9.1" @@ -16114,19 +16147,7 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:^3.3.1, dompurify@npm:^3.4.11": - version: 3.4.12 - resolution: "dompurify@npm:3.4.12" - dependencies: - "@types/trusted-types": "npm:^2.0.7" - dependenciesMeta: - "@types/trusted-types": - optional: true - checksum: 10c0/127a13817353d4e20e75a991a9022a04c3af12af7479f68e2b8bee6dbc7330a96edfb8f4ebff96f4f0f24cd43e8dbba46214131f510c3aa87a843bd8b610d0ab - languageName: node - linkType: hard - -"dompurify@npm:^3.4.12": +"dompurify@npm:^3.3.1, dompurify@npm:^3.4.11, dompurify@npm:^3.4.12": version: 3.4.16 resolution: "dompurify@npm:3.4.16" dependencies: @@ -17350,7 +17371,7 @@ __metadata: languageName: node linkType: hard -"express-rate-limit@npm:^8.2.1": +"express-rate-limit@npm:^8.2.1, express-rate-limit@npm:^8.2.2": version: 8.7.0 resolution: "express-rate-limit@npm:8.7.0" dependencies: @@ -17362,17 +17383,6 @@ __metadata: languageName: node linkType: hard -"express-rate-limit@npm:^8.2.2": - version: 8.5.2 - resolution: "express-rate-limit@npm:8.5.2" - dependencies: - ip-address: "npm:^10.2.0" - peerDependencies: - express: ">= 4.11" - checksum: 10c0/c98c49b93e94627940cf5e7c2578718b94d77163357161c3343d148e46257136c988933a96d6e1e728a010683133a58f68cad46928b063cf8d99521c8772578d - languageName: node - linkType: hard - "express-session@npm:^1.17.1": version: 1.19.0 resolution: "express-session@npm:1.19.0" @@ -19439,12 +19449,12 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2": - version: 0.7.2 - resolution: "iconv-lite@npm:0.7.2" +"iconv-lite@npm:^0.7.0, iconv-lite@npm:^0.7.2, iconv-lite@npm:~0.7.0": + version: 0.7.3 + resolution: "iconv-lite@npm:0.7.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/3c228920f3bd307f56bf8363706a776f4a060eb042f131cd23855ceca962951b264d0997ab38a1ad340e1c5df8499ed26e1f4f0db6b2a2ad9befaff22f14b722 + checksum: 10c0/be2fd2414f7e94be3a63063fa0ad5919c16bc7b6e00c77eea0765ced6db405739f38dd51016583058fba25cc1d0106ba30b83fbb7a7e32f824d4db76f23d8d33 languageName: node linkType: hard @@ -19457,15 +19467,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:~0.7.0": - version: 0.7.3 - resolution: "iconv-lite@npm:0.7.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/be2fd2414f7e94be3a63063fa0ad5919c16bc7b6e00c77eea0765ced6db405739f38dd51016583058fba25cc1d0106ba30b83fbb7a7e32f824d4db76f23d8d33 - languageName: node - linkType: hard - "icss-replace-symbols@npm:^1.1.0": version: 1.1.0 resolution: "icss-replace-symbols@npm:1.1.0" @@ -21112,20 +21113,13 @@ __metadata: languageName: node linkType: hard -"jose@npm:^6.1.3": +"jose@npm:^6.1.3, jose@npm:^6.2.2": version: 6.2.12 resolution: "jose@npm:6.2.12" checksum: 10c0/e8582b946fabcae228819982dda4849908c353e9cb098f02f773635aa0d2f4917f17484c7441b8d526e564013b4cf96951455c94f81d0a39ee765bad44ce293d languageName: node linkType: hard -"jose@npm:^6.2.2": - version: 6.2.3 - resolution: "jose@npm:6.2.3" - checksum: 10c0/aa91bccba22cc84d86308f833749bcb0b00441e35c24e0ac79abeac5f76dc62d47bdef9c1da6a0c609f5da6478595f52b252085888b89dbdb163861e40ea4188 - languageName: node - linkType: hard - "js-base64@npm:^3.6.0": version: 3.8.0 resolution: "js-base64@npm:3.8.0" @@ -21184,18 +21178,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1, js-yaml@npm:^4.2.0": - version: 4.3.0 - resolution: "js-yaml@npm:4.3.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/058b30473d6915ca5b4feb11e2f7d4d97242f98d00a798ed48dd90b46b7c640398afe9128c5db22c5300f8c6528fe2a174b9a93f351a70ebc28c6203938d8bff - languageName: node - linkType: hard - -"js-yaml@npm:^4.3.0": +"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1, js-yaml@npm:^4.2.0, js-yaml@npm:^4.3.0": version: 4.3.2 resolution: "js-yaml@npm:4.3.2" dependencies: @@ -24842,14 +24825,7 @@ __metadata: languageName: node linkType: hard -"path-expression-matcher@npm:^1.5.0": - version: 1.6.1 - resolution: "path-expression-matcher@npm:1.6.1" - checksum: 10c0/6d3bee01db16d8d3ad799aa6179785357a1277e227a44a4bff3ed5c7fcfb37325db596492c06356d8c82c097381c868ebc61b2e46a9363b35a1e007b7b902ee8 - languageName: node - linkType: hard - -"path-expression-matcher@npm:^1.6.2": +"path-expression-matcher@npm:^1.5.0, path-expression-matcher@npm:^1.6.2": version: 1.6.2 resolution: "path-expression-matcher@npm:1.6.2" checksum: 10c0/8241302f563de367a81acacd417055a22dd3792a84700569dc2a7888da31aa18eb01131c55f05200c92790b6c45b01fee1984b02540cc5f15726ba1b73a8a075 @@ -26012,7 +25988,7 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:^2.0.7": +"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": version: 2.0.8 resolution: "proxy-addr@npm:2.0.8" dependencies: @@ -26022,16 +25998,6 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - "proxy-from-env@npm:^2.1.0": version: 2.1.0 resolution: "proxy-from-env@npm:2.1.0" @@ -26107,23 +26073,23 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.12.3, qs@npm:^6.14.1, qs@npm:^6.15.0, qs@npm:^6.15.2, qs@npm:~6.15.1": - version: 6.15.3 - resolution: "qs@npm:6.15.3" +"qs@npm:^6.12.3, qs@npm:^6.14.0, qs@npm:^6.14.1, qs@npm:^6.15.0, qs@npm:^6.15.2": + version: 6.16.0 + resolution: "qs@npm:6.16.0" dependencies: es-define-property: "npm:^1.0.1" side-channel: "npm:^1.1.1" - checksum: 10c0/8f3f6e45ece255347d57696628401cde29e9ec649fff698b53bd3150dea7cefdf33036e1bc1826b9f110bfa7cb0ec4ab9f5297eca628ce216c55af82c304e08e + checksum: 10c0/eb3e31992fbd70e31a1791e571ed817d70975de7d3bfcbbbec93d77d1dd305877e9e8fdbcc62303c228ee5c3606685622cd6231c042dbc4790bb4e7c65fcbe18 languageName: node linkType: hard -"qs@npm:^6.14.0": - version: 6.16.0 - resolution: "qs@npm:6.16.0" +"qs@npm:~6.15.1": + version: 6.15.3 + resolution: "qs@npm:6.15.3" dependencies: es-define-property: "npm:^1.0.1" side-channel: "npm:^1.1.1" - checksum: 10c0/eb3e31992fbd70e31a1791e571ed817d70975de7d3bfcbbbec93d77d1dd305877e9e8fdbcc62303c228ee5c3606685622cd6231c042dbc4790bb4e7c65fcbe18 + checksum: 10c0/8f3f6e45ece255347d57696628401cde29e9ec649fff698b53bd3150dea7cefdf33036e1bc1826b9f110bfa7cb0ec4ab9f5297eca628ce216c55af82c304e08e languageName: node linkType: hard @@ -26502,7 +26468,7 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^16.13.1 || ^17.0.0 || ^18.0.0, react-dom@npm:^18.0.2": +"react-dom@npm:^18.0.2": version: 18.3.1 resolution: "react-dom@npm:18.3.1" dependencies: @@ -26820,7 +26786,7 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.0.0, react-router-dom@npm:^6.30.2": +"react-router-dom@npm:^6.30.2": version: 6.30.4 resolution: "react-router-dom@npm:6.30.4" dependencies: @@ -28321,14 +28287,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.4": - version: 1.9.0 - resolution: "shell-quote@npm:1.9.0" - checksum: 10c0/a39960107eb086b02394cfceb3c732bd3bf567b568719ff47101448fc3f1bf4a59ecfdd8960ff7ea564d749ef8bda70f2c82a768f22d8c7aeeabf2b64f53b7e8 - languageName: node - linkType: hard - -"shell-quote@npm:^1.9.0": +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.4, shell-quote@npm:^1.9.0": version: 1.10.0 resolution: "shell-quote@npm:1.10.0" checksum: 10c0/46ee59bfd972ce6a45500c44ed130dff2d0a7d6fbac9841e59d548518cad8060a06393c9a5dcbc0cede294ad80b2a2cd8c904679e09265f53efc0a0879f30961 @@ -29462,7 +29421,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.21": +"tar@npm:^7.5.21, tar@npm:^7.5.4": version: 7.5.22 resolution: "tar@npm:7.5.22" dependencies: @@ -29475,19 +29434,6 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.4": - version: 7.5.19 - resolution: "tar@npm:7.5.19" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.1.0" - yallist: "npm:^5.0.0" - checksum: 10c0/7022e8cb04a8ceccc0689f2c731743fa2aab2e3c3f559f7dbc37b65ef7d5913049b427284eded2ec0765c5db5ff72dd7939fe2ae15785ff422cef2116c95d798 - languageName: node - linkType: hard - "tarn@npm:^3.1.0": version: 3.1.0 resolution: "tarn@npm:3.1.0" @@ -31638,7 +31584,7 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.25 || ^4.0": +"zod@npm:^3.25 || ^4.0, zod@npm:^3.25.76 || ^4.0.0, zod@npm:^4.0.0": version: 4.6.5 resolution: "zod@npm:4.6.5" checksum: 10c0/32eb6c5e98becbe045675b2141c3611451c16ba567f9779231d79af41c4d651ca1c22f154aef7e6c6e77b929f23e43f1154ca05b82e119e922353725d6776af5 @@ -31652,13 +31598,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.25.76 || ^4.0.0, zod@npm:^4.0.0": - version: 4.4.3 - resolution: "zod@npm:4.4.3" - checksum: 10c0/7ea31b558e88f9faf44f31dd185e2e1cbf51fed3081787fb96cc2534749b50c0acfc6da7f0922a7353ed092dd358c7d50c28ea96c94d04af64191bd33152eca3 - languageName: node - linkType: hard - "zstd-codec@npm:^0.1.5": version: 0.1.5 resolution: "zstd-codec@npm:0.1.5"