diff --git a/app-config.dynamic-plugins.yaml b/app-config.dynamic-plugins.yaml index 8fcc5ab392..88ee055f6e 100644 --- a/app-config.dynamic-plugins.yaml +++ b/app-config.dynamic-plugins.yaml @@ -506,12 +506,11 @@ dynamicPlugins: - name: marketplace importName: MarketplaceIcon dynamicRoutes: - - path: /marketplace - importName: MarketplacePage - menuItem: - icon: marketplace - text: Marketplace + - path: /extensions/catalog + importName: DynamicMarketplacePluginRouter mountPoints: - - mountPoint: admin.page.plugins/cards - importName: MarketplaceCatalogContent - + - mountPoint: internal.plugins/tab + importName: DynamicMarketplacePluginContent + config: + path: marketplace + title: Catalog diff --git a/dynamic-plugins.default.yaml b/dynamic-plugins.default.yaml index cacee10025..dfbde5284c 100644 --- a/dynamic-plugins.default.yaml +++ b/dynamic-plugins.default.yaml @@ -1089,11 +1089,11 @@ plugins: pingIdentityOrg: {} # Group: Marketplace - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic - disabled: true + disabled: false - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic - disabled: true + disabled: false - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-marketplace - disabled: true + disabled: false pluginConfig: dynamicPlugins: frontend: @@ -1102,11 +1102,11 @@ plugins: - name: marketplace importName: MarketplaceIcon dynamicRoutes: - - path: /marketplace - importName: MarketplacePage - menuItem: - icon: marketplace - text: Marketplace + - path: /extensions/catalog + importName: DynamicMarketplacePluginRouter mountPoints: - - mountPoint: admin.page.plugins/cards - importName: MarketplaceCatalogContent \ No newline at end of file + - mountPoint: internal.plugins/tab + importName: DynamicMarketplacePluginContent + config: + path: marketplace + title: Catalog diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json index d0c3e86ef3..f92f473a0f 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json @@ -1,13 +1,12 @@ { "name": "red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace", - "version": "0.0.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", + "private": true, "publishConfig": { - "access": "public", - "main": "dist/index.cjs.js", - "types": "dist/index.d.ts" + "access": "public" }, "backstage": { "role": "backend-plugin-module", @@ -15,7 +14,17 @@ "pluginId": "catalog", "pluginPackage": "@backstage/plugin-catalog-backend" }, - "sideEffects": false, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, "scripts": { "tsc": "tsc", "build": "backstage-cli package build", @@ -23,11 +32,11 @@ "test": "backstage-cli package test --passWithNoTests --coverage", "clean": "backstage-cli package clean", "clean-dynamic-sources": "yarn clean && rm -Rf node_modules", - "export-dynamic": "janus-cli package export-dynamic-plugin --embed-package @red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace", + "export-dynamic": "janus-cli package export-dynamic-plugin --embed-package @red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace --embed-package @red-hat-developer-hub/backstage-plugin-marketplace-common", "export-dynamic:clean": "run export-dynamic --clean" }, "dependencies": { - "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace": "0.0.2" + "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace": "0.2.0" }, "devDependencies": { "@backstage/cli": "0.29.6", @@ -35,16 +44,10 @@ "typescript": "5.7.3" }, "files": [ - "app-config.dynamic.yaml", "dist", - "dist-scalprum" + "dist-dynamic/*.*", + "dist-dynamic/dist/**" ], - "scalprum": { - "name": "red-hat-developer-hub.backstage-plugin-catalog-backend-module-marketplace-dynamic", - "exposedModules": { - "PluginRoot": "./src/index.ts" - } - }, "repository": { "type": "git", "url": "https://github.com/redhat-developer/rhdh", diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic/package.json index e816fb3748..4f1f7332e1 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace-backend-dynamic/package.json @@ -1,6 +1,6 @@ { "name": "red-hat-developer-hub-backstage-plugin-marketplace-backend", - "version": "0.0.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -35,11 +35,11 @@ "test": "backstage-cli package test --passWithNoTests --coverage", "clean": "backstage-cli package clean", "clean-dynamic-sources": "yarn clean && rm -Rf node_modules", - "export-dynamic": "janus-cli package export-dynamic-plugin --embed-package @red-hat-developer-hub/backstage-plugin-marketplace-backend", + "export-dynamic": "janus-cli package export-dynamic-plugin --embed-package @red-hat-developer-hub/backstage-plugin-marketplace-backend --embed-package @red-hat-developer-hub/backstage-plugin-marketplace-common", "export-dynamic:clean": "run export-dynamic --clean" }, "dependencies": { - "@red-hat-developer-hub/backstage-plugin-marketplace-backend": "0.0.2" + "@red-hat-developer-hub/backstage-plugin-marketplace-backend": "0.2.0" }, "devDependencies": { "@backstage/cli": "0.29.6", diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace/package.json index 7f2bd469c4..4f8ce409c9 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-marketplace/package.json @@ -1,6 +1,6 @@ { "name": "red-hat-developer-hub-backstage-plugin-marketplace", - "version": "0.0.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", @@ -29,7 +29,7 @@ "export-dynamic:clean": "run export-dynamic --clean" }, "dependencies": { - "@red-hat-developer-hub/backstage-plugin-marketplace": "0.0.2" + "@red-hat-developer-hub/backstage-plugin-marketplace": "0.2.0" }, "devDependencies": { "@backstage/cli": "0.29.6", diff --git a/e2e-tests/playwright/e2e/extensions.spec.ts b/e2e-tests/playwright/e2e/extensions.spec.ts new file mode 100644 index 0000000000..b984b1c464 --- /dev/null +++ b/e2e-tests/playwright/e2e/extensions.spec.ts @@ -0,0 +1,23 @@ +import { test as base } from "@playwright/test"; +import { Common } from "../utils/common"; +import { UIhelper } from "../utils/ui-helper"; + +const test = base.extend<{ uiHelper: UIhelper }>({ + uiHelper: async ({ page }, use) => { + use(new UIhelper(page)); + }, +}); + +test.describe("Admin > Extensions > Catalog", () => { + test.beforeEach(async ({ page, uiHelper }) => { + await new Common(page).loginAsKeycloakUser(); + await uiHelper.openSidebarButton("Administration"); + await uiHelper.openSidebar("Extensions"); + await uiHelper.verifyHeading("Extensions"); + }); + + test("Tabs includes a tab for extensions", async ({ uiHelper }) => { + await uiHelper.clickTab("Catalog"); + // TODO: check plugins grid when we initialized some test data + }); +}); diff --git a/e2e-tests/playwright/e2e/plugin-marketplace.spec.ts b/e2e-tests/playwright/e2e/plugin-marketplace.spec.ts deleted file mode 100644 index c5d71a3df7..0000000000 --- a/e2e-tests/playwright/e2e/plugin-marketplace.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test as base } from "@playwright/test"; -import { Common } from "../utils/common"; -import { UIhelper } from "../utils/ui-helper"; - -const test = base.extend<{ uiHelper: UIhelper }>({ - uiHelper: async ({ page }, use) => { - use(new UIhelper(page)); - }, -}); - -test.describe("Plugin Marketplace", () => { - test.beforeEach(async ({ page }) => { - await new Common(page).loginAsKeycloakUser(); - }); - test("The navBar includes the marketplace", async ({ uiHelper }) => { - await uiHelper.openSidebar("Marketplace"); - await uiHelper.waitForTitle("Plugins"); - }); -}); diff --git a/e2e-tests/playwright/e2e/plugins/analytics/analytics-disabled-rbac.spec.ts b/e2e-tests/playwright/e2e/plugins/analytics/analytics-disabled-rbac.spec.ts index 22afe14e17..129a4d3028 100644 --- a/e2e-tests/playwright/e2e/plugins/analytics/analytics-disabled-rbac.spec.ts +++ b/e2e-tests/playwright/e2e/plugins/analytics/analytics-disabled-rbac.spec.ts @@ -13,8 +13,9 @@ test.describe.skip('Check RBAC "analytics-provider-segment" plugin', () => { common = new Common(page); await common.loginAsKeycloakUser(); await uiHelper.openSidebarButton("Administration"); - await uiHelper.openSidebar("Plugins"); - await uiHelper.verifyHeading("Plugins"); + await uiHelper.openSidebar("Extensions"); + await uiHelper.verifyHeading("Extensions"); + await uiHelper.clickTab("Installed"); }); test("is disabled", async ({ page }) => { diff --git a/e2e-tests/playwright/e2e/plugins/dynamic-plugins-info/dynamic-plugins-info.spec.ts b/e2e-tests/playwright/e2e/plugins/dynamic-plugins-info/dynamic-plugins-info.spec.ts index d78d141c7d..36761f21a2 100644 --- a/e2e-tests/playwright/e2e/plugins/dynamic-plugins-info/dynamic-plugins-info.spec.ts +++ b/e2e-tests/playwright/e2e/plugins/dynamic-plugins-info/dynamic-plugins-info.spec.ts @@ -12,8 +12,9 @@ test.describe("dynamic-plugins-info UI tests", () => { common = new Common(page); await common.loginAsGuest(); await uiHelper.openSidebarButton("Administration"); - await uiHelper.openSidebar("Plugins"); - await uiHelper.verifyHeading("Plugins"); + await uiHelper.openSidebar("Extensions"); + await uiHelper.verifyHeading("Extensions"); + await uiHelper.clickTab("Installed"); }); test("it should show a table, and the table should contain techdocs plugins", async ({ diff --git a/e2e-tests/playwright/utils/navbar.ts b/e2e-tests/playwright/utils/navbar.ts index b26444ea50..8e146bb28e 100644 --- a/e2e-tests/playwright/utils/navbar.ts +++ b/e2e-tests/playwright/utils/navbar.ts @@ -6,8 +6,7 @@ export type SidebarTabs = | "Home" | "Create..." | "Learning Paths" - | "Marketplace" - | "Plugins" + | "Extensions" | "Bulk import" | "Docs" | "Clusters" diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index dbe54ec667..2efc38bb11 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -23,19 +23,29 @@ const baseFrontendConfig = { ], dynamicRoutes: [ { - path: '/plugins', - importName: 'DynamicPluginsInfo', + path: '/extensions', + importName: 'DynamicPluginsInfoPage', menuItem: { text: 'Plugins', icon: 'pluginsInfoIcon' }, }, ], + mountPoints: [ + { + mountPoint: 'internal.plugins/tab', + importName: 'DynamicPluginsInfoContent', + config: { + path: 'installed', + title: 'Installed', + }, + }, + ], menuItems: { admin: { title: 'Administration', icon: 'adminIcon', }, - plugins: { + extensions: { parent: 'admin', - title: 'Plugins', + title: 'Extensions', icon: 'pluginsInfoIcon', }, }, diff --git a/plugins/dynamic-plugins-info/app-config.dynamic.yaml b/plugins/dynamic-plugins-info/app-config.dynamic.yaml new file mode 100644 index 0000000000..b7470d2f67 --- /dev/null +++ b/plugins/dynamic-plugins-info/app-config.dynamic.yaml @@ -0,0 +1,29 @@ +# please keep this in sync with packages/app/src/App.tsx +dynamicPlugins: + frontend: + internal.plugin-dynamic-plugins-info: + appIcons: + - name: pluginsInfoIcon + importName: PluginsInfoIcon + - name: adminIcon + importName: AdminIcon + dynamicRoutes: + - path: /extensions + importName: DynamicPluginsInfoPage + menuItem: + text: Extensions + icon: pluginsInfoIcon + mountPoints: + - mountPoint: internal.plugins/tab + importName: DynamicPluginsInfoContent + config: + path: installed + title: Installed + menuItems: + admin: + title: Administration + icon: adminIcon + extensions: + parent: admin + title: Extensions + icon: pluginsInfoIcon diff --git a/plugins/dynamic-plugins-info/app-config.janus-idp.yaml b/plugins/dynamic-plugins-info/app-config.janus-idp.yaml deleted file mode 100644 index 392bef6991..0000000000 --- a/plugins/dynamic-plugins-info/app-config.janus-idp.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# please keep this in sync with packages/app/src/App.tsx -dynamicPlugins: - frontend: - janus-idp.backstage-plugin-dynamic-plugins-info: - dynamicRoutes: - - path: /admin/plugins - importName: DynamicPluginsInfo - mountPoints: - - mountPoint: admin.page.plugins/cards - importName: DynamicPluginsInfo - config: - layout: - gridColumn: '1 / -1' - width: 100vw diff --git a/plugins/dynamic-plugins-info/package.json b/plugins/dynamic-plugins-info/package.json index ef3a24fa22..8d464621a6 100644 --- a/plugins/dynamic-plugins-info/package.json +++ b/plugins/dynamic-plugins-info/package.json @@ -39,6 +39,7 @@ "@material-table/core": "3.2.5", "@mui/icons-material": "5.16.14", "@mui/material": "5.16.14", + "@scalprum/react-core": "0.9.3", "react-use": "17.6.0" }, "peerDependencies": { diff --git a/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoContent/DynamicPluginsInfoContent.tsx b/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoContent/DynamicPluginsInfoContent.tsx index 8284b40164..e636b60723 100644 --- a/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoContent/DynamicPluginsInfoContent.tsx +++ b/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoContent/DynamicPluginsInfoContent.tsx @@ -1,3 +1,3 @@ -import { DynamicPluginsInfoPage } from '../DynamicPluginsInfoPage'; +import { DynamicPluginsTable } from '../DynamicPluginsTable/DynamicPluginsTable'; -export const DynamicPluginsInfoContent = () => ; +export const DynamicPluginsInfoContent = () => ; diff --git a/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoPage.tsx b/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoPage.tsx index c9f61efa37..e237d4d6c6 100644 --- a/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoPage.tsx +++ b/plugins/dynamic-plugins-info/src/components/DynamicPluginsInfoPage.tsx @@ -1,14 +1,61 @@ -import { Content, Header, Page } from '@backstage/core-components'; +import React from 'react'; -import { DynamicPluginsTable } from './DynamicPluginsTable/DynamicPluginsTable'; +import { + Content, + Header, + Page, + TabbedLayout, +} from '@backstage/core-components'; + +import { useScalprum } from '@scalprum/react-core'; + +export interface PluginTab { + Component: React.ComponentType; + config: { + path: string; + title: string; + }; +} + +export interface ScalprumState { + api?: { + dynamicRootConfig?: { + mountPoints?: { + 'internal.plugins/tab': PluginTab[]; + }; + }; + }; +} export const DynamicPluginsInfoPage = () => { + const scalprum = useScalprum(); + + const tabs = + scalprum.api?.dynamicRootConfig?.mountPoints?.['internal.plugins/tab'] || + []; + + const FirstComponent = tabs[0]?.Component; + return ( - -
- - - + +
+ {tabs.length > 1 ? ( + + {tabs.map(({ Component, config }) => ( + + + + ))} + + ) : ( + + + + )} ); }; diff --git a/plugins/dynamic-plugins-info/src/index.ts b/plugins/dynamic-plugins-info/src/index.ts index f1d73dafc3..8c1a4ecd12 100644 --- a/plugins/dynamic-plugins-info/src/index.ts +++ b/plugins/dynamic-plugins-info/src/index.ts @@ -1,3 +1,3 @@ -export { dynamicPluginsInfoPlugin, DynamicPluginsInfo } from './plugin'; +export * from './plugin'; export { default as PluginsInfoIcon } from '@mui/icons-material/PowerOutlined'; export { default as AdminIcon } from '@mui/icons-material/GppMaybeOutlined'; diff --git a/plugins/dynamic-plugins-info/src/plugin.ts b/plugins/dynamic-plugins-info/src/plugin.ts index b153ff713a..bf194f40ed 100644 --- a/plugins/dynamic-plugins-info/src/plugin.ts +++ b/plugins/dynamic-plugins-info/src/plugin.ts @@ -1,5 +1,6 @@ import { createApiFactory, + createComponentExtension, createPlugin, createRoutableExtension, discoveryApiRef, @@ -30,13 +31,25 @@ export const dynamicPluginsInfoPlugin = createPlugin({ ], }); -export const DynamicPluginsInfo = dynamicPluginsInfoPlugin.provide( +export const DynamicPluginsInfoPage = dynamicPluginsInfoPlugin.provide( createRoutableExtension({ - name: 'DynamicPluginsInfo', + name: 'DynamicPluginsInfoPage', component: () => - import( - './components/DynamicPluginsInfoContent/DynamicPluginsInfoContent' - ).then(m => m.DynamicPluginsInfoContent), + import('./components/DynamicPluginsInfoPage').then( + m => m.DynamicPluginsInfoPage, + ), mountPoint: dynamicPluginsInfoRouteRef, }), ); + +export const DynamicPluginsInfoContent = dynamicPluginsInfoPlugin.provide( + createComponentExtension({ + name: 'DynamicPluginsInfoContent', + component: { + lazy: () => + import( + './components/DynamicPluginsInfoContent/DynamicPluginsInfoContent' + ).then(m => m.DynamicPluginsInfoContent), + }, + }), +); diff --git a/yarn.lock b/yarn.lock index 89eeb5507a..f31a8a4a5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5098,7 +5098,7 @@ __metadata: languageName: node linkType: hard -"@backstage/catalog-client@npm:1.9.1, @backstage/catalog-client@npm:^1.6.5, @backstage/catalog-client@npm:^1.6.6, @backstage/catalog-client@npm:^1.7.1, @backstage/catalog-client@npm:^1.8.0, @backstage/catalog-client@npm:^1.9.1": +"@backstage/catalog-client@npm:1.9.1, @backstage/catalog-client@npm:^1.6.5, @backstage/catalog-client@npm:^1.6.6, @backstage/catalog-client@npm:^1.7.1, @backstage/catalog-client@npm:^1.9.1": version: 1.9.1 resolution: "@backstage/catalog-client@npm:1.9.1" dependencies: @@ -10622,6 +10622,7 @@ __metadata: "@material-table/core": 3.2.5 "@mui/icons-material": 5.16.14 "@mui/material": 5.16.14 + "@scalprum/react-core": 0.9.3 "@testing-library/jest-dom": 6.6.3 "@testing-library/react": 14.3.1 "@testing-library/user-event": 14.6.1 @@ -16243,18 +16244,18 @@ __metadata: languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace@npm:0.0.2": - version: 0.0.2 - resolution: "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace@npm:0.0.2" +"@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace@npm:0.2.0": + version: 0.2.0 + resolution: "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace@npm:0.2.0" dependencies: - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/catalog-model": ^1.7.0 - "@backstage/plugin-catalog-common": ^1.1.0 - "@backstage/plugin-catalog-node": ^1.13.1 - "@backstage/types": ^1.1.1 - "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.0.2 + "@backstage/backend-plugin-api": ^1.1.1 + "@backstage/catalog-model": ^1.7.3 + "@backstage/plugin-catalog-common": ^1.1.3 + "@backstage/plugin-catalog-node": ^1.15.1 + "@backstage/types": ^1.2.1 + "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.2.0 semver: ^7.6.3 - checksum: 381b6ea930fbfc86644d95fffb970fcff445ff05f604cb39dda043886cb756f85dd7399a0fb41c1faf4b42f6822f70eb0b1b5d599c4605b606ca1157950fa8a4 + checksum: e5c4ccf34eb1a55468c6b2786c0f6671cf592d98c025312b07272a2aab24e229d4c80901bec4bd77e464050deeefb3bc8f5708a01dcd5784c18b636363c671c4 languageName: node linkType: hard @@ -16333,52 +16334,56 @@ __metadata: languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-marketplace-backend@npm:0.0.2": - version: 0.0.2 - resolution: "@red-hat-developer-hub/backstage-plugin-marketplace-backend@npm:0.0.2" +"@red-hat-developer-hub/backstage-plugin-marketplace-backend@npm:0.2.0": + version: 0.2.0 + resolution: "@red-hat-developer-hub/backstage-plugin-marketplace-backend@npm:0.2.0" dependencies: - "@backstage/backend-defaults": ^0.5.2 - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/catalog-client": ^1.8.0 - "@backstage/errors": ^1.2.4 - "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.0.2 + "@backstage/backend-defaults": ^0.7.0 + "@backstage/backend-plugin-api": ^1.1.1 + "@backstage/catalog-client": ^1.9.1 + "@backstage/errors": ^1.2.7 + "@backstage/plugin-catalog-node": ^1.15.1 + "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.2.0 express: ^4.17.1 express-promise-router: ^4.1.0 - glob: ^10.4.5 - yaml: ^2.6.0 - zod: ^3.22.4 - checksum: 61e429fd6cde71700506b22459a4bbebb523c95714c01c353b16450caed999947572d5bdd8219a0c15acdea1924dc9042938919139fd6a8ba367bf18efd813c4 + checksum: b251dec38aca997db7c720a7712f8e01158b0ad29edbea960518efc7ee93d3f82fa3d5f51f86b70e3cfbdfc029754dd9e024ce3a811f58cf9da256d45c66a409 languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-marketplace-common@npm:^0.0.2": - version: 0.0.2 - resolution: "@red-hat-developer-hub/backstage-plugin-marketplace-common@npm:0.0.2" +"@red-hat-developer-hub/backstage-plugin-marketplace-common@npm:^0.2.0": + version: 0.2.0 + resolution: "@red-hat-developer-hub/backstage-plugin-marketplace-common@npm:0.2.0" + dependencies: + "@backstage/backend-plugin-api": ^1.1.1 + "@backstage/catalog-client": ^1.9.1 + "@backstage/catalog-model": ^1.7.3 + "@backstage/errors": ^1.2.7 peerDependencies: - "@backstage/catalog-model": ^1.7.0 - "@backstage/types": ^1.1.1 - checksum: 4f1783ab36fe4b0823e5e96c5a43e0292157696230036dfa8ce06cef94c0b58a8fbb2de75e9c0688391da6340265c3f075fe35f783538a2b82037bb639252036 + "@backstage/backend-plugin-api": ^1.1.1 + "@backstage/types": ^1.2.1 + checksum: 51bc30fda4ad88026991179f09a8154005d2334634a7441adcab6792993f1af426dc95a00c7f605f159490064b6396c3c974378f7c5aad80d4fbfecfffde0eef languageName: node linkType: hard -"@red-hat-developer-hub/backstage-plugin-marketplace@npm:0.0.2": - version: 0.0.2 - resolution: "@red-hat-developer-hub/backstage-plugin-marketplace@npm:0.0.2" +"@red-hat-developer-hub/backstage-plugin-marketplace@npm:0.2.0": + version: 0.2.0 + resolution: "@red-hat-developer-hub/backstage-plugin-marketplace@npm:0.2.0" dependencies: - "@backstage/core-components": ^0.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/plugin-catalog-react": ^1.14.0 - "@backstage/theme": ^0.6.0 + "@backstage/catalog-client": ^1.9.1 + "@backstage/core-components": ^0.16.3 + "@backstage/core-plugin-api": ^1.10.3 + "@backstage/plugin-catalog-react": ^1.15.1 + "@backstage/theme": ^0.6.3 "@mui/icons-material": ^5.16.7 "@mui/material": ^5.12.2 - "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.0.2 + "@red-hat-developer-hub/backstage-plugin-marketplace-common": ^0.2.0 + "@scalprum/react-core": 0.9.3 "@tanstack/react-query": ^5.60.5 - react-use: ^17.2.4 peerDependencies: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 react-router-dom: ^6.3.0 - checksum: 70b9898bf2f6f880e2d58c9c426ef6e010314f5d8a5953ce725991e83e3bcfd8d0d8d7580aad645c427700593cce785f59199acc6e37cbd3f31d38b751d73f3a + checksum: 8c0eeb9b9a33628956bcaa9aa1bc0400807046d0a23d71341e6c7ffb038550935009c3f6be9f4aea93724c295051df1ba9e4330abc48724b3863241f9107dbed languageName: node linkType: hard @@ -29874,7 +29879,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7, glob@npm:^10.4.1, glob@npm:^10.4.5": +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -40302,7 +40307,7 @@ __metadata: dependencies: "@backstage/cli": 0.29.6 "@janus-idp/cli": 3.2.0 - "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace": 0.0.2 + "@red-hat-developer-hub/backstage-plugin-catalog-backend-module-marketplace": 0.2.0 typescript: 5.7.3 languageName: unknown linkType: soft @@ -40349,7 +40354,7 @@ __metadata: dependencies: "@backstage/cli": 0.29.6 "@janus-idp/cli": 3.2.0 - "@red-hat-developer-hub/backstage-plugin-marketplace-backend": 0.0.2 + "@red-hat-developer-hub/backstage-plugin-marketplace-backend": 0.2.0 typescript: 5.7.3 languageName: unknown linkType: soft @@ -40360,7 +40365,7 @@ __metadata: dependencies: "@backstage/cli": 0.29.6 "@janus-idp/cli": 3.2.0 - "@red-hat-developer-hub/backstage-plugin-marketplace": 0.0.2 + "@red-hat-developer-hub/backstage-plugin-marketplace": 0.2.0 typescript: 5.7.3 languageName: unknown linkType: soft