diff --git a/.rhdh/docker/Dockerfile b/.rhdh/docker/Dockerfile index 893f62fd47..0506879725 100644 --- a/.rhdh/docker/Dockerfile +++ b/.rhdh/docker/Dockerfile @@ -78,6 +78,7 @@ COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-back COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic/package.json +COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/parfuemerie-douglas-scaffolder-backend-module-azure-repositories-dynamic/package.json ./dynamic-plugins/wrappers/parfuemerie-douglas-scaffolder-backend-module-azure-repositories-dynamic/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/pagerduty-backstage-plugin/package.json ./dynamic-plugins/wrappers/pagerduty-backstage-plugin/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/pagerduty-backstage-plugin-backend-dynamic/package.json ./dynamic-plugins/wrappers/pagerduty-backstage-plugin-backend-dynamic/package.json diff --git a/app-config.dynamic-plugins.yaml b/app-config.dynamic-plugins.yaml index 555ac814fb..3190a8cc32 100644 --- a/app-config.dynamic-plugins.yaml +++ b/app-config.dynamic-plugins.yaml @@ -258,6 +258,17 @@ dynamicPlugins: config: layout: position: above-main-content + red-hat-developer-hub.backstage-plugin-global-floating-action-button: + mountPoints: + - mountPoint: application/listener + importName: DynamicGlobalFloatingActionButton + - mountPoint: global.floatingactionbutton/component + importName: NullComponent + config: + icon: github + label: 'Git' + toolTip: 'Github' + to: https://github.com/redhat-developer/rhdh red-hat-developer-hub.backstage-plugin-dynamic-home-page: dynamicRoutes: - path: / diff --git a/docker/Dockerfile b/docker/Dockerfile index 67c4f898d6..4cd8444b01 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -79,6 +79,7 @@ COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-back COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-catalog-backend-module-marketplace-dynamic/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic/package.json +COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json ./dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/parfuemerie-douglas-scaffolder-backend-module-azure-repositories-dynamic/package.json ./dynamic-plugins/wrappers/parfuemerie-douglas-scaffolder-backend-module-azure-repositories-dynamic/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/pagerduty-backstage-plugin/package.json ./dynamic-plugins/wrappers/pagerduty-backstage-plugin/package.json COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins/wrappers/pagerduty-backstage-plugin-backend-dynamic/package.json ./dynamic-plugins/wrappers/pagerduty-backstage-plugin-backend-dynamic/package.json diff --git a/docs/dynamic-plugins/frontend-plugin-wiring.md b/docs/dynamic-plugins/frontend-plugin-wiring.md index 90e587a97d..d72045e306 100644 --- a/docs/dynamic-plugins/frontend-plugin-wiring.md +++ b/docs/dynamic-plugins/frontend-plugin-wiring.md @@ -454,6 +454,38 @@ Here are the default catalog entity routes in the default order: The visibility of a tab is derived from the kind of entity that is being displayed along with the visibility guidance mentioned in "[Using mount points](#using-mount-points)". +## Adding application listeners + +The users can add application listeners using the `application/listener` mount point. Below is an example that uses the aforesaid mount point to configure a floating action button: + +```yaml +# app-config.yaml +dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-global-floating-action-button: # plugin_package_name same as `scalprum.name` key in plugin's `package.json` + mountPoints: + - mountPoint: application/listener # mount point for adding a listener + importName: DynamicGlobalFloatingActionButton # add your listener component here +``` + +Users can configure multiple application listeners by adding entries to the `mountPoints` field. + +## Adding application providers + +The users can add application providers using the `application/provider` mount point. Below is an example that uses the aforesaid mount point to configure a context provider: + +```yaml +# app-config.yaml +dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-test-plugin: # plugin_package_name same as `scalprum.name` key in plugin's `package.json` + mountPoints: + - mountPoint: application/provider # mount point for adding a provider + importName: ProviderComponent # add your provider component here +``` + +Users can configure multiple application providers by adding entries to the `mountPoints` field. + ## Provide additional Utility APIs Backstage offers a Utility API mechanism that provide ways for plugins to communicate during their entire life cycle. Utility APIs are registered as: diff --git a/dynamic-plugins.default.yaml b/dynamic-plugins.default.yaml index d78902cdbd..ea051427a2 100644 --- a/dynamic-plugins.default.yaml +++ b/dynamic-plugins.default.yaml @@ -536,6 +536,24 @@ plugins: layout: position: above-main-content + # Group: Global floating action button + - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button + disabled: true + pluginConfig: + dynamicPlugins: + frontend: + red-hat-developer-hub.backstage-plugin-global-floating-action-button: + mountPoints: + - mountPoint: application/context + importName: DynamicGlobalFloatingActionButton + - mountPoint: global.floatingactionbutton/component + importName: NullComponent + config: + icon: github + label: 'Git' + toolTip: 'Github' + to: https://github.com/redhat-developer/rhdh + # Homepage - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-dynamic-home-page disabled: false diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json index bc11757d15..7e8e437ff6 100644 --- a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-bulk-import/package.json @@ -12,7 +12,7 @@ "backstage": { "role": "frontend-plugin", "supported-versions": "1.35.0", - "pluginId": "red-hat-developer-hub-backstage-plugin-bulk-import-backend", + "pluginId": "red-hat-developer-hub-backstage-plugin-bulk-import", "pluginPackages": [ "red-hat-developer-hub-backstage-plugin-bulk-import", "red-hat-developer-hub-backstage-plugin-bulk-import-backend" diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintignore b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintrc.js b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintrc.js new file mode 100644 index 0000000000..958d722cb2 --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("@backstage/cli/config/eslint-factory")(__dirname); diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json new file mode 100644 index 0000000000..a316d91d8b --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/package.json @@ -0,0 +1,62 @@ +{ + "name": "red-hat-developer-hub-backstage-plugin-global-floating-action-button", + "version": "0.0.3", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "supported-versions": "1.32.5", + "pluginId": "red-hat-developer-hub-backstage-plugin-global-floating-action-button", + "pluginPackages": [ + "red-hat-developer-hub-backstage-plugin-global-floating-action-button" + ] + }, + "sideEffects": false, + "scripts": { + "tsc": "tsc", + "build": "backstage-cli package build", + "lint:check": "backstage-cli package lint", + "test": "backstage-cli package test --passWithNoTests --coverage", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin --in-place", + "export-dynamic:clean": "run export-dynamic --clean" + }, + "dependencies": { + "@mui/material": "5.16.13", + "@red-hat-developer-hub/backstage-plugin-global-floating-action-button": "0.0.3" + }, + "devDependencies": { + "@backstage/cli": "0.28.2", + "@janus-idp/cli": "1.18.5", + "typescript": "5.6.3" + }, + "scalprum": { + "name": "red-hat-developer-hub.backstage-plugin-global-floating-action-button", + "exposedModules": { + "PluginRoot": "./src/index.ts" + } + }, + "files": [ + "dist", + "dist-scalprum", + "app-config.yaml" + ], + "keywords": [ + "backstage", + "plugin" + ], + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh", + "directory": "dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button" + }, + "author": "Red Hat", + "homepage": "https://red.ht/rhdh", + "bugs": "https://issues.redhat.com/browse/RHIDP" +} diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/src/index.ts b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/src/index.ts new file mode 100644 index 0000000000..666086b6a3 --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/src/index.ts @@ -0,0 +1,9 @@ +import { unstable_ClassNameGenerator as ClassNameGenerator } from "@mui/material/className"; + +ClassNameGenerator.configure((componentName) => { + return componentName.startsWith("v5-") + ? componentName + : `v5-${componentName}`; +}); + +export * from "@red-hat-developer-hub/backstage-plugin-global-floating-action-button"; diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/tsconfig.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/tsconfig.json new file mode 100644 index 0000000000..f0bce1818c --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src", "dev", "migrations"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "../../../dist-types/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button", + "rootDir": "." + } + } diff --git a/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/turbo.json b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/turbo.json new file mode 100644 index 0000000000..aa7f36d875 --- /dev/null +++ b/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/turbo.json @@ -0,0 +1,10 @@ +{ + "extends": ["//"], + "tasks": { + "tsc": { + "outputs": [ + "../../../dist-types/dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button/**" + ] + } + } + } diff --git a/packages/app/src/components/AppBase/AppBase.tsx b/packages/app/src/components/AppBase/AppBase.tsx index 62ea3365b0..3e0c525793 100644 --- a/packages/app/src/components/AppBase/AppBase.tsx +++ b/packages/app/src/components/AppBase/AppBase.tsx @@ -24,6 +24,8 @@ import { entityPage } from '../catalog/EntityPage'; import DynamicRootContext from '../DynamicRoot/DynamicRootContext'; import { LearningPaths } from '../learningPaths/LearningPathsPage'; import { Root } from '../Root'; +import { ApplicationListener } from '../Root/ApplicationListener'; +import { ApplicationProvider } from '../Root/ApplicationProvider'; import ConfigUpdater from '../Root/ConfigUpdater'; import { SearchPage } from '../search/SearchPage'; import { settingsPage } from '../UserSettings/SettingsPages'; @@ -74,66 +76,69 @@ const AppBase = () => { + - - - } - /> - } - > - {entityPage(entityTabOverrides)} - - - } - > - - {scaffolderFieldExtensions.map( - ({ scope, module, importName, Component }) => ( - - ), - )} - - scaffolderFieldExtensions - - } /> - - - - } - /> - }> - - - }> - {settingsPage} - - } /> - } /> - {dynamicRoutes.map( - ({ Component, staticJSXContent, path, config: { props } }) => ( - } - > - {staticJSXContent} - - ), - )} - + + + + } + /> + } + > + {entityPage(entityTabOverrides)} + + + } + > + + {scaffolderFieldExtensions.map( + ({ scope, module, importName, Component }) => ( + + ), + )} + + scaffolderFieldExtensions + + } /> + + + + } + /> + }> + + + }> + {settingsPage} + + } /> + } /> + {dynamicRoutes.map( + ({ Component, staticJSXContent, path, config: { props } }) => ( + } + > + {staticJSXContent} + + ), + )} + + diff --git a/packages/app/src/components/Root/ApplicationListener.tsx b/packages/app/src/components/Root/ApplicationListener.tsx new file mode 100644 index 0000000000..94199a2f09 --- /dev/null +++ b/packages/app/src/components/Root/ApplicationListener.tsx @@ -0,0 +1,20 @@ +import { useContext } from 'react'; + +import { ErrorBoundary } from '@backstage/core-components'; + +import DynamicRootContext from '../DynamicRoot/DynamicRootContext'; + +export const ApplicationListener = () => { + const { mountPoints } = useContext(DynamicRootContext); + const listeners = mountPoints['application/listener'] ?? []; + return listeners.map(({ Component }, index) => { + return ( + + + + ); + }); +}; diff --git a/packages/app/src/components/Root/ApplicationProvider.tsx b/packages/app/src/components/Root/ApplicationProvider.tsx new file mode 100644 index 0000000000..a0b3457a46 --- /dev/null +++ b/packages/app/src/components/Root/ApplicationProvider.tsx @@ -0,0 +1,25 @@ +import { useContext } from 'react'; + +import { ErrorBoundary } from '@backstage/core-components'; + +import DynamicRootContext from '../DynamicRoot/DynamicRootContext'; + +export const ApplicationProvider = ({ + children, +}: React.PropsWithChildren<{}>) => { + const { mountPoints } = useContext(DynamicRootContext); + const providers = mountPoints['application/provider'] ?? []; + if (providers.length === 0) { + return children; + } + return providers.map(({ Component }, index) => { + return ( + + {children} + + ); + }); +}; diff --git a/plugins/dynamic-plugins-info/src/components/InternalPluginsMap.ts b/plugins/dynamic-plugins-info/src/components/InternalPluginsMap.ts index 01cf030d04..aedac496cc 100644 --- a/plugins/dynamic-plugins-info/src/components/InternalPluginsMap.ts +++ b/plugins/dynamic-plugins-info/src/components/InternalPluginsMap.ts @@ -65,6 +65,8 @@ export const InternalPluginsMap: Record = { './dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import', 'red-hat-developer-hub-backstage-plugin-global-header': './dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-header', + 'red-hat-developer-hub-backstage-plugin-global-floating-action-button': + './dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-global-floating-action-button', 'red-hat-developer-hub-backstage-plugin-dynamic-home-page': './dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-dynamic-home-page', 'red-hat-developer-hub-backstage-plugin-marketplace': diff --git a/user.yaml b/user.yaml new file mode 100644 index 0000000000..89694a5f3f --- /dev/null +++ b/user.yaml @@ -0,0 +1,83 @@ +--- +# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-user +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: guest +spec: + memberOf: [guests] +--- +# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-group +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: guests +spec: + type: team + children: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + # replace this with + name: debsmita1 +spec: + profile: + # replace this with + email: debsmita.santra@gmail.com + memberOf: [rhdh-ui-test, temp-team-a, temp-team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: rhdh-ui-test + description: The RHDH UI test group +spec: + type: team + profile: + displayName: RHDH UI test + children: [] + # replace member with on L23 + members: [debsmita1] + +--- +# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-user +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: guest +spec: + memberOf: [guests] +--- +# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-group +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: guests +spec: + type: team + children: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + # replace this with + name: debsmita1 +spec: + profile: + # replace this with + email: debsmita.santra@gmail.com + memberOf: [rhdh-ui-test, temp-team-a, temp-team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: rhdh-ui-test + description: The RHDH UI test group +spec: + type: team + profile: + displayName: RHDH UI test + children: [] + # replace member with on L23 + members: [debsmita1] \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 423d7fefc0..bcf55f1305 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5139,6 +5139,158 @@ __metadata: languageName: node linkType: hard +"@backstage/cli@npm:0.28.2": + version: 0.28.2 + resolution: "@backstage/cli@npm:0.28.2" + dependencies: + "@backstage/catalog-model": ^1.7.0 + "@backstage/cli-common": ^0.1.14 + "@backstage/cli-node": ^0.2.9 + "@backstage/config": ^1.2.0 + "@backstage/config-loader": ^1.9.1 + "@backstage/errors": ^1.2.4 + "@backstage/eslint-plugin": ^0.1.10 + "@backstage/integration": ^1.15.1 + "@backstage/release-manifests": ^0.0.11 + "@backstage/types": ^1.1.1 + "@manypkg/get-packages": ^1.1.3 + "@module-federation/enhanced": ^0.6.0 + "@octokit/graphql": ^5.0.0 + "@octokit/graphql-schema": ^13.7.0 + "@octokit/oauth-app": ^4.2.0 + "@octokit/request": ^6.0.0 + "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 + "@rollup/plugin-commonjs": ^26.0.0 + "@rollup/plugin-json": ^6.0.0 + "@rollup/plugin-node-resolve": ^15.0.0 + "@rollup/plugin-yaml": ^4.0.0 + "@spotify/eslint-config-base": ^15.0.0 + "@spotify/eslint-config-react": ^15.0.0 + "@spotify/eslint-config-typescript": ^15.0.0 + "@sucrase/webpack-loader": ^2.0.0 + "@svgr/core": 6.5.x + "@svgr/plugin-jsx": 6.5.x + "@svgr/plugin-svgo": 6.5.x + "@svgr/rollup": 6.5.x + "@svgr/webpack": 6.5.x + "@swc/core": ^1.3.46 + "@swc/helpers": ^0.5.0 + "@swc/jest": ^0.2.22 + "@types/jest": ^29.5.11 + "@types/webpack-env": ^1.15.2 + "@typescript-eslint/eslint-plugin": ^6.12.0 + "@typescript-eslint/parser": ^6.7.2 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0 + bfj: ^8.0.0 + buffer: ^6.0.3 + chalk: ^4.0.0 + chokidar: ^3.3.1 + commander: ^12.0.0 + cross-fetch: ^4.0.0 + cross-spawn: ^7.0.3 + css-loader: ^6.5.1 + ctrlc-windows: ^2.1.0 + esbuild: ^0.24.0 + esbuild-loader: ^4.0.0 + eslint: ^8.6.0 + eslint-config-prettier: ^9.0.0 + eslint-formatter-friendly: ^7.0.0 + eslint-plugin-deprecation: ^2.0.0 + eslint-plugin-import: ^2.25.4 + eslint-plugin-jest: ^28.0.0 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + eslint-plugin-unused-imports: ^3.0.0 + eslint-webpack-plugin: ^4.0.0 + express: ^4.17.1 + fork-ts-checker-webpack-plugin: ^9.0.0 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + glob: ^7.1.7 + global-agent: ^3.0.0 + globby: ^11.1.0 + handlebars: ^4.7.3 + html-webpack-plugin: ^5.3.1 + inquirer: ^8.2.0 + jest: ^29.7.0 + jest-cli: ^29.7.0 + jest-css-modules: ^2.1.0 + jest-environment-jsdom: ^29.0.2 + jest-runtime: ^29.0.2 + json-schema: ^0.4.0 + lodash: ^4.17.21 + mini-css-extract-plugin: ^2.4.2 + minimatch: ^9.0.0 + node-fetch: ^2.7.0 + node-libs-browser: ^2.2.1 + npm-packlist: ^5.0.0 + ora: ^5.3.0 + p-limit: ^3.1.0 + p-queue: ^6.6.2 + pirates: ^4.0.6 + postcss: ^8.1.0 + process: ^0.11.10 + raw-loader: ^4.0.2 + react-dev-utils: ^12.0.0-next.60 + react-refresh: ^0.14.0 + recursive-readdir: ^2.2.2 + replace-in-file: ^7.1.0 + rollup: ^4.0.0 + rollup-plugin-dts: ^6.1.0 + rollup-plugin-esbuild: ^6.1.1 + rollup-plugin-postcss: ^4.0.0 + rollup-pluginutils: ^2.8.2 + run-script-webpack-plugin: ^0.2.0 + semver: ^7.5.3 + style-loader: ^3.3.1 + sucrase: ^3.20.2 + swc-loader: ^0.2.3 + tar: ^6.1.12 + terser-webpack-plugin: ^5.1.3 + ts-morph: ^23.0.0 + util: ^0.12.3 + webpack: ^5.94.0 + webpack-dev-server: ^5.0.0 + webpack-node-externals: ^3.0.0 + yaml: ^2.0.0 + yargs: ^16.2.0 + yml-loader: ^2.1.0 + yn: ^4.0.0 + zod: ^3.22.4 + peerDependencies: + "@modyfi/vite-plugin-yaml": ^1.1.0 + "@rspack/core": ^1.0.10 + "@rspack/dev-server": ^1.0.9 + "@rspack/plugin-react-refresh": ^1.0.0 + "@vitejs/plugin-react": ^4.0.4 + vite: ^4.4.9 + vite-plugin-html: ^3.2.0 + vite-plugin-node-polyfills: ^0.22.0 + peerDependenciesMeta: + "@modyfi/vite-plugin-yaml": + optional: true + "@rspack/core": + optional: true + "@rspack/dev-server": + optional: true + "@rspack/plugin-react-refresh": + optional: true + "@vitejs/plugin-react": + optional: true + vite: + optional: true + vite-plugin-html: + optional: true + vite-plugin-node-polyfills: + optional: true + bin: + backstage-cli: bin/backstage-cli + checksum: 32e75a897a7a7b14df6ce43b66fdd5c9fb11b54b88fd3655257055536c77d38bf2d0c5fefbd44348f6250493673396c566eab695007f89d870757956ef659159 + languageName: node + linkType: hard + "@backstage/cli@npm:0.29.5": version: 0.29.5 resolution: "@backstage/cli@npm:0.29.5" @@ -10833,6 +10985,79 @@ __metadata: languageName: node linkType: hard +"@janus-idp/cli@npm:1.18.5": + version: 1.18.5 + resolution: "@janus-idp/cli@npm:1.18.5" + dependencies: + "@backstage/cli-common": ^0.1.14 + "@backstage/cli-node": ^0.2.9 + "@backstage/config": ^1.2.0 + "@backstage/config-loader": ^1.9.1 + "@backstage/errors": ^1.2.4 + "@backstage/eslint-plugin": ^0.1.10 + "@backstage/types": ^1.1.1 + "@manypkg/get-packages": ^1.1.3 + "@openshift/dynamic-plugin-sdk-webpack": ^3.0.0 + "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 + "@rollup/plugin-commonjs": ^25.0.4 + "@rollup/plugin-json": ^6.0.0 + "@rollup/plugin-node-resolve": ^15.2.1 + "@rollup/plugin-yaml": ^4.0.0 + "@svgr/rollup": ^8.1.0 + "@svgr/webpack": ^6.5.1 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0-rc.4 + bfj: ^8.0.0 + chalk: ^4.0.0 + chokidar: ^3.3.1 + codeowners: ^5.1.1 + commander: ^9.1.0 + css-loader: ^6.5.1 + esbuild: ^0.23.0 + esbuild-loader: ^2.18.0 + eslint: ^8.49.0 + eslint-config-prettier: ^8.10.0 + eslint-webpack-plugin: ^3.2.0 + fork-ts-checker-webpack-plugin: ^7.0.0-alpha.8 + fs-extra: ^10.1.0 + gitconfiglocal: 2.1.0 + handlebars: ^4.7.7 + html-webpack-plugin: ^5.3.1 + is-native-module: ^1.1.3 + lodash: ^4.17.21 + mini-css-extract-plugin: ^2.4.2 + node-libs-browser: ^2.2.1 + npm-packlist: ^5.0.0 + ora: ^5.3.0 + postcss: ^8.2.13 + react-dev-utils: ^12.0.0-next.60 + react-refresh: ^0.14.0 + recursive-readdir: ^2.2.2 + rollup: ^2.78.0 + rollup-plugin-dts: ^4.0.1 + rollup-plugin-esbuild: ^4.7.2 + rollup-plugin-postcss: ^4.0.0 + rollup-pluginutils: ^2.8.2 + semver: ^7.5.4 + style-loader: ^3.3.1 + swc-loader: ^0.2.3 + typescript-json-schema: ^0.64.0 + webpack: ^5.89.0 + webpack-dev-server: ^4.15.1 + yaml: ^2.5.1 + yml-loader: ^2.1.0 + yn: ^4.0.0 + peerDependencies: + "@microsoft/api-extractor": ^7.21.2 + peerDependenciesMeta: + "@microsoft/api-extractor": + optional: true + bin: + janus-cli: bin/janus-cli + checksum: 291d1350b4caf33db2e5cd24d5c685c5e63d7f0f60cf88959468e5483535a588804d20d23bb034466d5240efdb31a8619aa4726ecad9bd013aaec6d95db96eff + languageName: node + linkType: hard + "@janus-idp/cli@npm:3.0.0": version: 3.0.0 resolution: "@janus-idp/cli@npm:3.0.0" @@ -11976,6 +12201,17 @@ __metadata: languageName: node linkType: hard +"@module-federation/bridge-react-webpack-plugin@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.6.16" + dependencies: + "@module-federation/sdk": 0.6.16 + "@types/semver": 7.5.8 + semver: 7.6.3 + checksum: 9b49f8788bc741279e80cbc7b19980aa0d75e689c5ca08f1a19879d1f921f20e23e54ffc3fdc47010b90786130266d04395f46681d15ffe89f9d57e4e7575882 + languageName: node + linkType: hard + "@module-federation/bridge-react-webpack-plugin@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.8.9" @@ -11987,6 +12223,20 @@ __metadata: languageName: node linkType: hard +"@module-federation/data-prefetch@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/data-prefetch@npm:0.6.16" + dependencies: + "@module-federation/runtime": 0.6.16 + "@module-federation/sdk": 0.6.16 + fs-extra: 9.1.0 + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: cac7dc921abb1f3209e2afd7d4f21a21de525babcbd4afed69e61b2261cf7f18b6f1d9db4be005d1b60f968a03e222639e918253591c23f0be925fb84c952326 + languageName: node + linkType: hard + "@module-federation/data-prefetch@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/data-prefetch@npm:0.8.9" @@ -12030,6 +12280,36 @@ __metadata: languageName: node linkType: hard +"@module-federation/dts-plugin@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/dts-plugin@npm:0.6.16" + dependencies: + "@module-federation/error-codes": 0.6.14 + "@module-federation/managers": 0.6.16 + "@module-federation/sdk": 0.6.16 + "@module-federation/third-party-dts-extractor": 0.6.16 + adm-zip: ^0.5.10 + ansi-colors: ^4.1.3 + axios: ^1.7.4 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0 + koa: 2.15.3 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: ^9.1.0 + ws: 8.18.0 + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + vue-tsc: + optional: true + checksum: 6d1eae570d0234f5adfb3971c8b4b09054fc6e7bff5e06241a5a7ca699c2b22b306d74d391ccaf01ed7ef71541f87c61829342d6a65bd5234f0fcbb36a21626d + languageName: node + linkType: hard + "@module-federation/dts-plugin@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/dts-plugin@npm:0.8.9" @@ -12086,6 +12366,35 @@ __metadata: languageName: node linkType: hard +"@module-federation/enhanced@npm:^0.6.0": + version: 0.6.16 + resolution: "@module-federation/enhanced@npm:0.6.16" + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.6.16 + "@module-federation/data-prefetch": 0.6.16 + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/manifest": 0.6.16 + "@module-federation/rspack": 0.6.16 + "@module-federation/runtime-tools": 0.6.16 + "@module-federation/sdk": 0.6.16 + btoa: ^1.2.1 + upath: 2.0.1 + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + checksum: bb1f6566ed176e414816bfc22352f14b5ac45b1fa1655d8d403bde13145d8d0f9c54767d14b9b4fb2210eb5f406f3dd93826bcac1e2303be6bbaccb7eb78ab23 + languageName: node + linkType: hard + "@module-federation/enhanced@npm:^0.8.0": version: 0.8.9 resolution: "@module-federation/enhanced@npm:0.8.9" @@ -12117,6 +12426,13 @@ __metadata: languageName: node linkType: hard +"@module-federation/error-codes@npm:0.6.14": + version: 0.6.14 + resolution: "@module-federation/error-codes@npm:0.6.14" + checksum: d487eebb8990c0ea712dc61813f54c487c0e3549cf21239db28dfa18b5c97ae79bad5134db90aa67aee74f5af5c01d115c7aa66a66a81b098dd75f40e158fcc6 + languageName: node + linkType: hard + "@module-federation/error-codes@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/error-codes@npm:0.8.9" @@ -12144,6 +12460,17 @@ __metadata: languageName: node linkType: hard +"@module-federation/managers@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/managers@npm:0.6.16" + dependencies: + "@module-federation/sdk": 0.6.16 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + checksum: 6b4e3a585aa2655134152752f2951ec1e913261510bfe714e19040da6d44a40800f7ca514d56f2ad04788d7501b886f3fcfb203900c6a25b7b8228a5459f6d33 + languageName: node + linkType: hard + "@module-federation/managers@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/managers@npm:0.8.9" @@ -12168,6 +12495,19 @@ __metadata: languageName: node linkType: hard +"@module-federation/manifest@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/manifest@npm:0.6.16" + dependencies: + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/sdk": 0.6.16 + chalk: 3.0.0 + find-pkg: 2.0.0 + checksum: fee3254347f927756fcf4d64ede32b93326f976292d7540ebb238fad5ea81c003f030a6020d042239f1f54568ed79e5eafa21e812f763d5961c6827b60be59f7 + languageName: node + linkType: hard + "@module-federation/manifest@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/manifest@npm:0.8.9" @@ -12194,6 +12534,28 @@ __metadata: languageName: node linkType: hard +"@module-federation/rspack@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/rspack@npm:0.6.16" + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.6.16 + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/manifest": 0.6.16 + "@module-federation/runtime-tools": 0.6.16 + "@module-federation/sdk": 0.6.16 + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + checksum: afc98f64d3270e952ff0425ddd71b13b48644306679d3a4466d38a80c855682951a4b5c1b662fa63619ffad8400d6e7029b762aefd99e7169ee431f12c278e78 + languageName: node + linkType: hard + "@module-federation/rspack@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/rspack@npm:0.8.9" @@ -12238,6 +12600,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime-tools@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/runtime-tools@npm:0.6.16" + dependencies: + "@module-federation/runtime": 0.6.16 + "@module-federation/webpack-bundler-runtime": 0.6.16 + checksum: 53aa76f2563e978e9f610e9276e6f3f6e73ecbf19f3cc349d0762955e748c43ec08a74f248cb697eb31d8109869f05f0f8dda1d6d082436ec246393d0011ac95 + languageName: node + linkType: hard + "@module-federation/runtime-tools@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/runtime-tools@npm:0.8.9" @@ -12257,6 +12629,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/runtime@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/runtime@npm:0.6.16" + dependencies: + "@module-federation/error-codes": 0.6.14 + "@module-federation/sdk": 0.6.16 + checksum: d247b4b8ce38f84692da6a3711cdd6d35c4de7885a4639720d4df2436900d66ba2a1b815f64064b95e6aee9fb7082e4d1c6fe1e8ccecd8ddcfaef38379153bbd + languageName: node + linkType: hard + "@module-federation/runtime@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/runtime@npm:0.8.9" @@ -12275,6 +12657,15 @@ __metadata: languageName: node linkType: hard +"@module-federation/sdk@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/sdk@npm:0.6.16" + dependencies: + isomorphic-rslog: 0.0.5 + checksum: 4495af06a83cbf69da6f6c20b0e8b934382b7b5e9a1b56a3385756476e97750beeb0f4b2671dbc64a3c2ab4a5fdb1f99aafd7562f47a4894352fff75d9499ce8 + languageName: node + linkType: hard + "@module-federation/sdk@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/sdk@npm:0.8.9" @@ -12295,6 +12686,17 @@ __metadata: languageName: node linkType: hard +"@module-federation/third-party-dts-extractor@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/third-party-dts-extractor@npm:0.6.16" + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + checksum: 2f2317d3703a084a2ff11152a376276a9462954da624a6d69ab265868fb2fedeaeeb1486721f9fff0f3c15d81e3336bf71f90fabe8d4ed4cde4c4d0b5a8ff8be + languageName: node + linkType: hard + "@module-federation/third-party-dts-extractor@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/third-party-dts-extractor@npm:0.8.9" @@ -12316,6 +12718,16 @@ __metadata: languageName: node linkType: hard +"@module-federation/webpack-bundler-runtime@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.6.16" + dependencies: + "@module-federation/runtime": 0.6.16 + "@module-federation/sdk": 0.6.16 + checksum: e78d5879eb1553c3dc96a93c7c962d9aa576b20f420fac8747fa1e3d61ab7e4ee51372924cedcd6483b829e2b4988a6f2daad4c6ddf2841c744ef69b9ba27680 + languageName: node + linkType: hard + "@module-federation/webpack-bundler-runtime@npm:0.8.9": version: 0.8.9 resolution: "@module-federation/webpack-bundler-runtime@npm:0.8.9" @@ -12478,7 +12890,7 @@ __metadata: languageName: node linkType: hard -"@mui/icons-material@npm:5.16.14, @mui/icons-material@npm:^5.15.19, @mui/icons-material@npm:^5.16.4, @mui/icons-material@npm:^5.16.7": +"@mui/icons-material@npm:5.16.14, @mui/icons-material@npm:^5.15.17, @mui/icons-material@npm:^5.15.19, @mui/icons-material@npm:^5.16.4, @mui/icons-material@npm:^5.16.7": version: 5.16.14 resolution: "@mui/icons-material@npm:5.16.14" dependencies: @@ -12654,7 +13066,7 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^5.16.14, @mui/private-theming@npm:^5.16.6": +"@mui/private-theming@npm:^5.16.13, @mui/private-theming@npm:^5.16.14, @mui/private-theming@npm:^5.16.6": version: 5.16.14 resolution: "@mui/private-theming@npm:5.16.14" dependencies: @@ -12730,7 +13142,38 @@ __metadata: languageName: node linkType: hard -"@mui/styles@npm:5.16.7, @mui/styles@npm:^5.16.7": +"@mui/styles@npm:5.16.13, @mui/styles@npm:^5.16.7": + version: 5.16.13 + resolution: "@mui/styles@npm:5.16.13" + dependencies: + "@babel/runtime": ^7.23.9 + "@emotion/hash": ^0.9.1 + "@mui/private-theming": ^5.16.13 + "@mui/types": ^7.2.15 + "@mui/utils": ^5.16.13 + clsx: ^2.1.0 + csstype: ^3.1.3 + hoist-non-react-statics: ^3.3.2 + jss: ^10.10.0 + jss-plugin-camel-case: ^10.10.0 + jss-plugin-default-unit: ^10.10.0 + jss-plugin-global: ^10.10.0 + jss-plugin-nested: ^10.10.0 + jss-plugin-props-sort: ^10.10.0 + jss-plugin-rule-value-function: ^10.10.0 + jss-plugin-vendor-prefixer: ^10.10.0 + prop-types: ^15.8.1 + peerDependencies: + "@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: 2464d3567264c152a7e8f030554a423c6ab509c85d33d193c298935b439cc62c7fa82b80cd99a477fbcdd463aa8de6e57b99b67445081d56137b5d5c094df192 + languageName: node + linkType: hard + +"@mui/styles@npm:5.16.7": version: 5.16.7 resolution: "@mui/styles@npm:5.16.7" dependencies: @@ -16317,6 +16760,25 @@ __metadata: languageName: node linkType: hard +"@red-hat-developer-hub/backstage-plugin-global-floating-action-button@npm:0.0.3": + version: 0.0.3 + resolution: "@red-hat-developer-hub/backstage-plugin-global-floating-action-button@npm:0.0.3" + dependencies: + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/theme": ^0.6.0 + "@mui/icons-material": ^5.15.17 + "@mui/material": ^5.15.17 + "@mui/styles": 5.16.13 + classnames: ^2.5.1 + react-use: ^17.2.4 + peerDependencies: + react: 16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + checksum: 7aedbac38030c09ee432b97e9c5cb3f358e31e802751392c183a7d6492b688a2c2c1cb90224226d64fe3ab4da1abf8e8df400bda174b359a96ccb60880493453 + languageName: node + linkType: hard + "@red-hat-developer-hub/backstage-plugin-global-header@npm:0.0.2": version: 0.0.2 resolution: "@red-hat-developer-hub/backstage-plugin-global-header@npm:0.0.2" @@ -19439,6 +19901,18 @@ __metadata: languageName: node linkType: hard +"@ts-morph/common@npm:~0.24.0": + version: 0.24.0 + resolution: "@ts-morph/common@npm:0.24.0" + dependencies: + fast-glob: ^3.3.2 + minimatch: ^9.0.4 + mkdirp: ^3.0.1 + path-browserify: ^1.0.1 + checksum: 793bc8a47c93ab55c6c036f94480d3b0e948661aef4bb7dbc29279b1dda2fc4fce809a88e221537867a313541842e12d1ecbd32b4769688abe1303807ec09db6 + languageName: node + linkType: hard + "@ts-morph/common@npm:~0.25.0": version: 0.25.0 resolution: "@ts-morph/common@npm:0.25.0" @@ -20375,7 +20849,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:20.17.16": +"@types/node@npm:20.17.16, @types/node@npm:^20.1.1": version: 20.17.16 resolution: "@types/node@npm:20.17.16" dependencies: @@ -20407,15 +20881,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.1.1": - version: 20.17.14 - resolution: "@types/node@npm:20.17.14" - dependencies: - undici-types: ~6.19.2 - checksum: a5a775f57271e5a73c9e1afc4f6ea0d24cb9b4856e3d7d1788ff9ba0cc3e3a90e7883383f183f193a36eed0c758809df626a9ad653458a06d4fc82644d89b6e0 - languageName: node - linkType: hard - "@types/oauth@npm:*": version: 0.9.4 resolution: "@types/oauth@npm:0.9.4" @@ -24510,7 +24975,7 @@ __metadata: languageName: node linkType: hard -"code-block-writer@npm:^13.0.3": +"code-block-writer@npm:^13.0.1, code-block-writer@npm:^13.0.3": version: 13.0.3 resolution: "code-block-writer@npm:13.0.3" checksum: 8e234f0ec2db9625d5efb9f05bdae79da6559bb4d9df94a6aa79a89a7b5ae25093b70d309fc5122840c9c07995cb14b4dd3f98a30f8878e3a3372e177df79454 @@ -28168,7 +28633,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:^28.9.0": +"eslint-plugin-jest@npm:^28.0.0, eslint-plugin-jest@npm:^28.9.0": version: 28.11.0 resolution: "eslint-plugin-jest@npm:28.11.0" dependencies: @@ -32071,6 +32536,13 @@ __metadata: languageName: node linkType: hard +"isomorphic-rslog@npm:0.0.5": + version: 0.0.5 + resolution: "isomorphic-rslog@npm:0.0.5" + checksum: ba3d8a5ca4691ae4e6ef8a50c404b94658618c87bd2ac7618946f8ea067489ee4a16a152b74afe24bcbdfe975e3b3a63e3c5149bf2a929aa781bdd7eb3f1370f + languageName: node + linkType: hard + "isomorphic-rslog@npm:0.0.7": version: 0.0.7 resolution: "isomorphic-rslog@npm:0.0.7" @@ -40364,6 +40836,18 @@ __metadata: languageName: unknown linkType: soft +"red-hat-developer-hub-backstage-plugin-global-floating-action-button@workspace:dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button": + version: 0.0.0-use.local + resolution: "red-hat-developer-hub-backstage-plugin-global-floating-action-button@workspace:dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-floating-action-button" + dependencies: + "@backstage/cli": 0.28.2 + "@janus-idp/cli": 1.18.5 + "@mui/material": 5.16.13 + "@red-hat-developer-hub/backstage-plugin-global-floating-action-button": 0.0.3 + typescript: 5.6.3 + languageName: unknown + linkType: soft + "red-hat-developer-hub-backstage-plugin-global-header@workspace:dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header": version: 0.0.0-use.local resolution: "red-hat-developer-hub-backstage-plugin-global-header@workspace:dynamic-plugins/wrappers/red-hat-developer-hub-backstage-plugin-global-header" @@ -44017,6 +44501,16 @@ __metadata: languageName: node linkType: hard +"ts-morph@npm:^23.0.0": + version: 23.0.0 + resolution: "ts-morph@npm:23.0.0" + dependencies: + "@ts-morph/common": ~0.24.0 + code-block-writer: ^13.0.1 + checksum: 3282eb0f8bd4577770874736c3259b97501da9a86137160b5d68f106b7848ea7b1fbccf9e198a3d930ec40c993e9951d4bfae31e2562dac8f3de0d7bb0e23615 + languageName: node + linkType: hard + "ts-morph@npm:^24.0.0": version: 24.0.0 resolution: "ts-morph@npm:24.0.0" @@ -44535,6 +45029,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.6.3": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a + languageName: node + linkType: hard + "typescript@npm:5.7.3": version: 5.7.3 resolution: "typescript@npm:5.7.3" @@ -44565,6 +45069,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@5.6.3#~builtin": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: f6947c263dc67ea8429eefc3921683320f901a07d9ef29a1101a34f5b30108343b5a29aa77a581217a17f2616091ae7bd3043b304cf37f37d5e128e19296c08b + languageName: node + linkType: hard + "typescript@patch:typescript@5.7.3#~builtin": version: 5.7.3 resolution: "typescript@patch:typescript@npm%3A5.7.3#~builtin::version=5.7.3&hash=cef18b"