diff --git a/cfn-parameters.json b/cfn-parameters.json
index 03508f8..2b85f54 100644
--- a/cfn-parameters.json
+++ b/cfn-parameters.json
@@ -28,6 +28,8 @@
"PgPassword": $secrets.POSTGRES_PASSWORD,
"AuthGoogleClientId": $secrets.AUTH_GOOGLE_CLIENT_ID,
"AuthGoogleClientSecret": $secrets.AUTH_GOOGLE_CLIENT_SECRET,
+ "AuthGithubClientId": $secrets.AUTH_GITHUB_CLIENT_ID,
+ "AuthGithubClientSecret": $secrets.AUTH_GITHUB_CLIENT_SECRET,
"BackstageAppUrl": $vars.BACKSTAGE_APP_URL,
"BackstageBackendUrl": $vars.BACKSTAGE_BACKEND_URL,
"ServerlessOpsCatalogApiUrl": $vars.SERVERLESSOPS_CATALOG_API_URL,
diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity
deleted file mode 100644
index fe703d0..0000000
--- a/node_modules/.yarn-integrity
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "systemParams": "linux-x64-137",
- "modulesFolders": [],
- "flags": [],
- "linkedModules": [],
- "topLevelPatterns": [],
- "lockfileEntries": {},
- "files": [],
- "artifacts": {}
-}
\ No newline at end of file
diff --git a/src/app-config.production.yaml b/src/app-config.production.yaml
index 954ac2d..84479a9 100644
--- a/src/app-config.production.yaml
+++ b/src/app-config.production.yaml
@@ -47,6 +47,13 @@ auth:
- resolver: emailMatchingUserEntityProfileEmail
- resolver: emailLocalPartMatchingUserEntityName
- resolver: emailMatchingUserEntityAnnotation
+ github:
+ production:
+ clientId: ${AUTH_GITHUB_CLIENT_ID}
+ clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
+ signIn:
+ resolvers:
+ - resolver: emailMatchingUserEntityProfileEmail
integrations:
github:
diff --git a/src/app-config.yaml b/src/app-config.yaml
index 6994143..ee8252f 100644
--- a/src/app-config.yaml
+++ b/src/app-config.yaml
@@ -9,13 +9,47 @@ app:
# Configure the catalog index page to be the root page, this is normally mounted on /catalog
- page:catalog:
config:
- path: /
+ pagination:
+ mode: offset
+ limit: 20
+ #path: /
- catalog-filter:catalog/kind:
config:
initialFilter: domain
- catalog-filter:catalog/list:
config:
initialFilter: all
+
+ # Catalog page tabs
+ - page:catalog/entity:
+ config:
+ showNavItemIcons: true
+ - entity-content:catalog/overview:
+ config:
+ icon: catalog
+ group: false
+ - entity-content:api-docs/definition:
+ config:
+ icon: kind:api
+ group: false
+ - entity-content:api-docs/apis:
+ config:
+ icon: kind:api
+ group: false
+ - entity-content:techdocs:
+ config:
+ icon: techdocs
+ group: false
+ # NOTE: Setting `disabled: true` causes to hide the page causes crashes. I assume it's
+ # related to not being fully ported to the new frontend system at the current time. As a
+ # result we're using this filter that will always fails.
+ - entity-content:github-actions:
+ config:
+ filter:
+ kind: false
+ - entity-content:github-issues/entity:
+ disabled: true
+
- sub-page:scaffolder/templates:
config:
groups:
diff --git a/src/packages/app/package.json b/src/packages/app/package.json
index 74cdd02..4e11eb7 100644
--- a/src/packages/app/package.json
+++ b/src/packages/app/package.json
@@ -14,6 +14,9 @@
"lint": "backstage-cli package lint"
},
"dependencies": {
+ "@backstage-community/plugin-github-actions": "^1.2.0",
+ "@backstage-community/plugin-github-deployments": "^1.2.0",
+ "@backstage-community/plugin-github-issues": "^1.2.1",
"@backstage/cli": "backstage:^",
"@backstage/core-components": "backstage:^",
"@backstage/core-plugin-api": "backstage:^",
@@ -37,8 +40,9 @@
"@backstage/plugin-techdocs-module-addons-contrib": "backstage:^",
"@backstage/plugin-user-settings": "backstage:^",
"@backstage/ui": "backstage:^",
+ "@internal/backstage-plugin-app-module-nav": "workspace:^",
+ "@internal/backstage-plugin-catalog-module-serverlessops": "workspace:^",
"@internal/backstage-plugin-scaffolder-entity-pickers": "workspace:^",
- "@internal/backstage-plugin-serverlessops-catalog": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"react": "^18.0.2",
diff --git a/src/packages/app/src/App.tsx b/src/packages/app/src/App.tsx
index ef79c96..fe3d2fc 100644
--- a/src/packages/app/src/App.tsx
+++ b/src/packages/app/src/App.tsx
@@ -1,12 +1,19 @@
import { createApp } from '@backstage/frontend-defaults';
import catalogPlugin from '@backstage/plugin-catalog/alpha';
-import serverlessOpsCatalogPlugin from '@internal/backstage-plugin-serverlessops-catalog';
import { navModule } from './modules/nav';
import { configApiRef, googleAuthApiRef, useApi } from '@backstage/core-plugin-api';
import { SignInPageBlueprint } from '@backstage/plugin-app-react';
import { SignInPage } from '@backstage/core-components';
import { createFrontendModule } from '@backstage/frontend-plugin-api';
+// external plugins
+import githubActionsPlugin from '@backstage-community/plugin-github-actions/alpha';
+import githubDeploymentsPlugin from '@backstage-community/plugin-github-deployments/alpha';
+import githubIssuesPlugin from '@backstage-community/plugin-github-issues/alpha';
+// local plugins
+import serverlessOpsCatalogModule from '@internal/backstage-plugin-catalog-module-serverlessops';
+import appModuleNav from '@internal/backstage-plugin-app-module-nav';
+
const signInPage = SignInPageBlueprint.make({
params: {
loader: async () => props => {
@@ -48,7 +55,11 @@ export default createApp({
features: [
catalogPlugin,
navModule,
- serverlessOpsCatalogPlugin,
+ githubActionsPlugin,
+ githubDeploymentsPlugin,
+ githubIssuesPlugin,
+ serverlessOpsCatalogModule,
+ appModuleNav,
createFrontendModule({
pluginId: 'app',
extensions: [signInPage],
diff --git a/src/plugins/serverlessops-catalog/.eslintrc.js b/src/plugins/app-module-nav/.eslintrc.js
similarity index 100%
rename from src/plugins/serverlessops-catalog/.eslintrc.js
rename to src/plugins/app-module-nav/.eslintrc.js
diff --git a/src/plugins/app-module-nav/README.md b/src/plugins/app-module-nav/README.md
new file mode 100644
index 0000000..3a33bc2
--- /dev/null
+++ b/src/plugins/app-module-nav/README.md
@@ -0,0 +1,5 @@
+# @internal/backstage-plugin-app-module-nav
+
+The nav frontend module for the app plugin.
+
+_This plugin was created through the Backstage CLI_
diff --git a/src/plugins/app-module-nav/package.json b/src/plugins/app-module-nav/package.json
new file mode 100644
index 0000000..838759f
--- /dev/null
+++ b/src/plugins/app-module-nav/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@internal/backstage-plugin-app-module-nav",
+ "version": "0.1.0",
+ "license": "UNLICENSED",
+ "private": true,
+ "description": "The nav frontend module for the app plugin.",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.cjs.js",
+ "module": "dist/index.esm.js",
+ "types": "dist/index.d.ts"
+ },
+ "backstage": {
+ "role": "frontend-plugin-module",
+ "pluginId": "app",
+ "pluginPackage": "@backstage/plugin-app"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "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": "backstage:^"
+ },
+ "devDependencies": {
+ "@backstage/cli": "backstage:^",
+ "@testing-library/jest-dom": "^6.0.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/src/plugins/app-module-nav/src/index.ts b/src/plugins/app-module-nav/src/index.ts
new file mode 100644
index 0000000..5ab7d48
--- /dev/null
+++ b/src/plugins/app-module-nav/src/index.ts
@@ -0,0 +1 @@
+export { appModuleNav as default } from './module';
diff --git a/src/plugins/app-module-nav/src/module.tsx b/src/plugins/app-module-nav/src/module.tsx
new file mode 100644
index 0000000..fcecd13
--- /dev/null
+++ b/src/plugins/app-module-nav/src/module.tsx
@@ -0,0 +1,19 @@
+import { createFrontendModule } from '@backstage/frontend-plugin-api';
+import { NavContentBlueprint } from '@backstage/plugin-app-react';
+import { SidebarContentOverrideComponent } from './nav/SidebarOverride';
+
+export const SidebarContentOverride = NavContentBlueprint.make({
+ params: {
+ component: ({ navItems }: { navItems: any }) => (
+
+ ),
+ },
+});
+
+
+export const appModuleNav = createFrontendModule({
+ pluginId: 'app',
+ extensions: [
+ SidebarContentOverride,
+ ],
+});
diff --git a/src/plugins/app-module-nav/src/nav/SidebarOverride.test.tsx b/src/plugins/app-module-nav/src/nav/SidebarOverride.test.tsx
new file mode 100644
index 0000000..6415225
--- /dev/null
+++ b/src/plugins/app-module-nav/src/nav/SidebarOverride.test.tsx
@@ -0,0 +1,32 @@
+import { SidebarContentOverrideComponent } from './SidebarOverride';
+
+jest.mock('@backstage/core-components', () => ({
+ Sidebar: ({ children }: any) =>
{children}
,
+ SidebarDivider: () => ,
+ SidebarGroup: ({ children }: any) => {children}
,
+ SidebarItem: ({ text }: any) => {text}
,
+ SidebarScrollWrapper: ({ children }: any) => {children}
,
+ SidebarSpace: () => ,
+}));
+
+jest.mock('@backstage/plugin-search', () => ({ SidebarSearchModal: () => Search
}));
+jest.mock('@backstage/plugin-user-settings', () => ({ UserSettingsSignInAvatar: () => Settings
}));
+jest.mock('@backstage/plugin-notifications', () => ({ NotificationsSidebarItem: () => Notifications
}));
+
+describe('SidebarContentOverrideComponent', () => {
+ it('removes the hidden navigation items before rendering the sidebar', () => {
+ const take = jest.fn(() => null);
+ const rest = jest.fn(() => []);
+
+ const navItems = {
+ withComponent: jest.fn(() => ({ take, rest })),
+ } as any;
+
+ SidebarContentOverrideComponent({ navItems });
+
+ expect(take).toHaveBeenCalledWith('page:search');
+ expect(take).toHaveBeenCalledWith('page:api-docs');
+ expect(take).toHaveBeenCalledWith('page:notifications');
+ expect(take).toHaveBeenCalledWith('page:catalog-import');
+ });
+});
diff --git a/src/plugins/app-module-nav/src/nav/SidebarOverride.tsx b/src/plugins/app-module-nav/src/nav/SidebarOverride.tsx
new file mode 100644
index 0000000..0f01438
--- /dev/null
+++ b/src/plugins/app-module-nav/src/nav/SidebarOverride.tsx
@@ -0,0 +1,56 @@
+import {
+ Sidebar,
+ SidebarDivider,
+ SidebarGroup,
+ SidebarItem,
+ SidebarScrollWrapper,
+ SidebarSpace,
+} from '@backstage/core-components';
+import MenuIcon from '@material-ui/icons/Menu';
+import SearchIcon from '@material-ui/icons/Search';
+import { SidebarSearchModal } from '@backstage/plugin-search';
+import { UserSettingsSignInAvatar } from '@backstage/plugin-user-settings';
+import { NotificationsSidebarItem } from '@backstage/plugin-notifications';
+
+export function SidebarContentOverrideComponent({ navItems }: { navItems: any }) {
+ const nav = navItems.withComponent((item: any) => (
+ item.icon} to={item.href} text={item.title} />
+ ));
+
+ nav.take('page:search');
+ nav.take('page:api-docs');
+ nav.take('page:notifications');
+ nav.take('page:catalog-import');
+
+ return (
+
+ } to="/search">
+
+
+
+ }>
+ {nav.take('page:catalog')}
+ {nav.take('page:catalog-graph')}
+ {nav.take('page:scaffolder')}
+
+
+ {nav.take('page:serverlessops-catalog/serverlessops-catalog-tabbed-directory-index')}
+ {nav.rest({ sortBy: 'title' })}
+
+
+
+
+
+
+ }
+ to="/settings"
+ >
+ {nav.take('page:catalog-unprocessed-entities')}
+ {nav.take('page:app-visualizer')}
+ {nav.take('page:user-settings')}
+
+
+ );
+}
diff --git a/src/plugins/app-module-nav/src/nav/index.ts b/src/plugins/app-module-nav/src/nav/index.ts
new file mode 100644
index 0000000..21b24eb
--- /dev/null
+++ b/src/plugins/app-module-nav/src/nav/index.ts
@@ -0,0 +1,7 @@
+import { createFrontendModule } from '@backstage/frontend-plugin-api';
+import { SidebarContentOverride } from './SidebarOverride';
+
+export const serverlessOpsCatalogNavModule = createFrontendModule({
+ pluginId: 'serverlessops-catalog',
+ extensions: [SidebarContentOverride],
+});
diff --git a/src/plugins/serverlessops-catalog/src/setupTests.ts b/src/plugins/app-module-nav/src/setupTests.ts
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/setupTests.ts
rename to src/plugins/app-module-nav/src/setupTests.ts
diff --git a/src/plugins/catalog-module-serverlessops/.eslintrc.js b/src/plugins/catalog-module-serverlessops/.eslintrc.js
new file mode 100644
index 0000000..e2a53a6
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/src/plugins/serverlessops-catalog/README.md b/src/plugins/catalog-module-serverlessops/README.md
similarity index 100%
rename from src/plugins/serverlessops-catalog/README.md
rename to src/plugins/catalog-module-serverlessops/README.md
diff --git a/src/plugins/catalog-module-serverlessops/dev/index.tsx b/src/plugins/catalog-module-serverlessops/dev/index.tsx
new file mode 100644
index 0000000..595f259
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/dev/index.tsx
@@ -0,0 +1,6 @@
+import { createDevApp } from '@backstage/frontend-dev-utils'
+import serverlessOpsCatalogModule from '../src'
+
+createDevApp({
+ features: [serverlessOpsCatalogModule],
+})
diff --git a/src/plugins/serverlessops-catalog/package.json b/src/plugins/catalog-module-serverlessops/package.json
similarity index 86%
rename from src/plugins/serverlessops-catalog/package.json
rename to src/plugins/catalog-module-serverlessops/package.json
index 93796b9..6a7a39b 100644
--- a/src/plugins/serverlessops-catalog/package.json
+++ b/src/plugins/catalog-module-serverlessops/package.json
@@ -1,5 +1,5 @@
{
- "name": "@internal/backstage-plugin-serverlessops-catalog",
+ "name": "@internal/backstage-plugin-catalog-module-serverlessops",
"version": "0.1.0",
"main": "src/index.ts",
"types": "src/index.ts",
@@ -11,8 +11,9 @@
"types": "dist/index.d.ts"
},
"backstage": {
- "role": "frontend-plugin",
- "pluginId": "serverlessops-catalog"
+ "role": "frontend-plugin-module",
+ "pluginId": "catalog",
+ "moduleId": "serverlessops"
},
"sideEffects": false,
"scripts": {
@@ -42,7 +43,10 @@
"@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"
+ "@remixicon/react": "^4.9.0",
+ "@roadiehq/backstage-plugin-github-insights": "^3.5.0",
+ "react-use": "^17.2.4",
+ "zod": "^4.4.3"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
diff --git a/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/ActivityCatalogEntityContent.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/ActivityCatalogEntityContent.tsx
new file mode 100644
index 0000000..1143a7e
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/ActivityCatalogEntityContent.tsx
@@ -0,0 +1,13 @@
+import { Grid } from '@material-ui/core';
+import { GithubIssuesCard } from '@backstage-community/plugin-github-issues'
+
+export const ActivityCatalogEntityContent = () => {
+
+ return (
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/CicdCatalogEntityContent.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/CicdCatalogEntityContent.tsx
new file mode 100644
index 0000000..5e4218f
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityContent/CicdCatalogEntityContent.tsx
@@ -0,0 +1,55 @@
+import {
+ useEntity,
+ MissingAnnotationEmptyState,
+} from '@backstage/plugin-catalog-react';
+import { Grid, Typography } from '@material-ui/core';
+import {
+ EntityLatestGithubActionRunCard,
+ EntityRecentGithubActionsRunsCard,
+ isGithubActionsAvailable,
+ GITHUB_ACTIONS_ANNOTATION
+} from '@backstage-community/plugin-github-actions';
+import { EntityGithubDeploymentsCard } from '@backstage-community/plugin-github-deployments';
+
+export const CicdCatalogEntityContent = () => {
+ const { entity } = useEntity();
+ if (!isGithubActionsAvailable(entity)) {
+ return (
+
+ );
+ }
+
+ return (
+
+
+ Build
+
+
+
+
+
+
+
+ Main branch
+
+
+
+
+
+
+ All branches
+
+
+
+
+
+
+ Deploy
+
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogEntityPage/catalogEntityPage.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogEntityPage/catalogEntityPage.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogEntityPage/catalogEntityPage.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogEntityPage/catalogEntityPage.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexColumns/columns.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexColumns/columns.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexColumns/columns.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexColumns/columns.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx
similarity index 91%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx
index 178224d..ab131eb 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ApiCatalogIndexPageEntityList.tsx
@@ -18,7 +18,7 @@ const defaultColumns: TableColumn[] = [
columnFactories.createSpecTypeColumn({ width: 'auto' }),
columnFactories.createMetadataDescriptionColumn({ width: 'auto' }),
]
-export function ApiCatalogIndexPageEntityList() {
+export function ApiCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/CatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/CatalogIndexPageEntityList.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/CatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/CatalogIndexPageEntityList.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx
similarity index 91%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx
index 01eab36..6420832 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ComponentCatalogIndexPageEntityList.tsx
@@ -18,7 +18,7 @@ const defaultColumns: TableColumn[] = [
columnFactories.createMetadataDescriptionColumn({ width: 'auto' }),
]
-export function ComponentCatalogIndexPageEntityList() {
+export function ComponentCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx
similarity index 90%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx
index e66db94..074edce 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/DomainCatalogIndexPageEntityList.tsx
@@ -16,7 +16,7 @@ const defaultColumns: TableColumn[] = [
columnFactories.createMetadataDescriptionColumn({width: 'auto'}),
]
-export function DomainCatalogIndexPageEntityList() {
+export function DomainCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/GroupCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/GroupCatalogIndexPageEntityList.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/GroupCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/GroupCatalogIndexPageEntityList.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx
similarity index 84%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx
index b9ff38c..dc6ac9f 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/LocationCatalogIndexPageEntityList.tsx
@@ -7,7 +7,7 @@ import {
UserListPicker,
} from '@backstage/plugin-catalog-react';
-export function LocationCatalogIndexPageEntityList() {
+export function LocationCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx
similarity index 91%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx
index 22ae44f..52ec15f 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/ResourceCatalogIndexPageEntityList.tsx
@@ -19,7 +19,7 @@ const defaultColumns: TableColumn[] = [
columnFactories.createMetadataDescriptionColumn({ width: 'auto' }),
]
-export function ResourceCatalogIndexPageEntityList() {
+export function ResourceCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx
similarity index 91%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx
index 1f489ee..a3c62ae 100644
--- a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/SystemCatalogIndexPageEntityList.tsx
@@ -18,7 +18,7 @@ const defaultColumns: TableColumn[] = [
// columnFactories.createDomainColumn({ width: 'auto' }),
columnFactories.createMetadataDescriptionColumn({ width: 'auto' }),
]
-export function SystemCatalogIndexPageEntityList() {
+export function SystemCatalogIndexPageEntityList({ pagination }: { pagination?: any }) {
return (
)
}
\ No newline at end of file
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/UserCatalogIndexPageEntityList.tsx b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/UserCatalogIndexPageEntityList.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/UserCatalogIndexPageEntityList.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/UserCatalogIndexPageEntityList.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/index.ts b/src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/index.ts
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/CatalogIndexPageEntityList/index.ts
rename to src/plugins/catalog-module-serverlessops/src/components/CatalogIndexPageEntityList/index.ts
diff --git a/src/plugins/serverlessops-catalog/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx b/src/plugins/catalog-module-serverlessops/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx
similarity index 67%
rename from src/plugins/serverlessops-catalog/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx
index 9b4f919..9de34d9 100644
--- a/src/plugins/serverlessops-catalog/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx
+++ b/src/plugins/catalog-module-serverlessops/src/components/TabbedCatalogIndexPage/TabbedCatalogIndexPage.tsx
@@ -9,8 +9,14 @@ import {
SystemCatalogIndexPageEntityList
} from '../CatalogIndexPageEntityList';
+type TabbedCatalogIndexPageProps = {
+ pagination?: {
+ mode?: 'offset' | 'cursor';
+ limit?: number;
+ };
+};
-export function TabbedCatalogIndexPage() {
+export function TabbedCatalogIndexPage({ pagination }: TabbedCatalogIndexPageProps) {
const configApi = useApi(configApiRef);
const organizationName =
@@ -24,22 +30,22 @@ export function TabbedCatalogIndexPage() {
>
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/plugins/serverlessops-catalog/src/components/TabbedCatalogIndexPage/index.ts b/src/plugins/catalog-module-serverlessops/src/components/TabbedCatalogIndexPage/index.ts
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/TabbedCatalogIndexPage/index.ts
rename to src/plugins/catalog-module-serverlessops/src/components/TabbedCatalogIndexPage/index.ts
diff --git a/src/plugins/serverlessops-catalog/src/components/TabbedDirectoryIndexPage/TabbedDirectoryIndexPage.tsx b/src/plugins/catalog-module-serverlessops/src/components/TabbedDirectoryIndexPage/TabbedDirectoryIndexPage.tsx
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/TabbedDirectoryIndexPage/TabbedDirectoryIndexPage.tsx
rename to src/plugins/catalog-module-serverlessops/src/components/TabbedDirectoryIndexPage/TabbedDirectoryIndexPage.tsx
diff --git a/src/plugins/serverlessops-catalog/src/components/TabbedDirectoryIndexPage/index.ts b/src/plugins/catalog-module-serverlessops/src/components/TabbedDirectoryIndexPage/index.ts
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/components/TabbedDirectoryIndexPage/index.ts
rename to src/plugins/catalog-module-serverlessops/src/components/TabbedDirectoryIndexPage/index.ts
diff --git a/src/plugins/catalog-module-serverlessops/src/index.ts b/src/plugins/catalog-module-serverlessops/src/index.ts
new file mode 100644
index 0000000..f941130
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/src/index.ts
@@ -0,0 +1,5 @@
+export {
+ SoActivityCatalogEntityContent,
+ SoCicdCatalogEntityContent,
+ serverlessOpsCatalogModule as default,
+} from './module';
diff --git a/src/plugins/catalog-module-serverlessops/src/module.tsx b/src/plugins/catalog-module-serverlessops/src/module.tsx
new file mode 100644
index 0000000..a20955d
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/src/module.tsx
@@ -0,0 +1,88 @@
+import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
+import { GitHubIcon, UserIcon } from '@backstage/core-components'
+import { z } from 'zod'
+import {
+ createFrontendModule,
+ createRouteRef,
+ PageBlueprint,
+} from '@backstage/frontend-plugin-api'
+import { RiGitPullRequestLine } from "@remixicon/react"
+
+const cicdRouteRef = createRouteRef()
+const activityRouteRef = createRouteRef()
+const tabbedDirectoryRouteRef = createRouteRef()
+
+export const SoCicdCatalogEntityContent = EntityContentBlueprint.make({
+ name: 'cicd',
+ params: {
+ path: 'cicd',
+ title: 'CI/CD',
+ filter: 'kind:component',
+ icon: ,
+ routeRef: cicdRouteRef,
+ loader: async () => {
+ const { CicdCatalogEntityContent } = await import('./components/CatalogEntityContent/CicdCatalogEntityContent')
+ return
+ }
+ },
+})
+
+export const SoActivityCatalogEntityContent = EntityContentBlueprint.make({
+ name: 'activity',
+ params: {
+ path: 'activity',
+ title: 'Activity',
+ filter: 'kind:component',
+ icon: ,
+ routeRef: activityRouteRef,
+ loader: async () => {
+ const { ActivityCatalogEntityContent } = await import('./components/CatalogEntityContent/ActivityCatalogEntityContent')
+ return
+ }
+ },
+})
+
+export const SoCatalogTabbedIndexPage = PageBlueprint.makeWithOverrides({
+ configSchema: {
+ pagination: z
+ .object({
+ mode: z.enum(['offset', 'cursor']).optional(),
+ limit: z.number().optional(),
+ })
+ .optional(),
+ },
+ factory(originalFactory, { config }) {
+ return originalFactory({
+ path: '/catalog',
+ routeRef: createRouteRef({ aliasFor: 'catalog.catalogIndex' }),
+ loader: async () => {
+ const { TabbedCatalogIndexPage } = await import('./components/TabbedCatalogIndexPage')
+ return
+ },
+ })
+ },
+})
+
+export const SoCatalogTabbedDirectoryIndexPage = PageBlueprint.make({
+ name: 'directory',
+ params: {
+ path: '/directory',
+ title: 'Directory',
+ icon: ,
+ routeRef: tabbedDirectoryRouteRef,
+ loader: async () => {
+ const { TabbedDirectoryIndexPage } = await import('./components/TabbedDirectoryIndexPage')
+ return < TabbedDirectoryIndexPage />
+ }
+ },
+})
+
+export const serverlessOpsCatalogModule = createFrontendModule({
+ pluginId: 'catalog',
+ extensions: [
+ SoCatalogTabbedIndexPage,
+ SoCatalogTabbedDirectoryIndexPage,
+ SoActivityCatalogEntityContent,
+ SoCicdCatalogEntityContent,
+ ]
+});
diff --git a/src/plugins/serverlessops-catalog/src/routes.ts b/src/plugins/catalog-module-serverlessops/src/routes.ts
similarity index 100%
rename from src/plugins/serverlessops-catalog/src/routes.ts
rename to src/plugins/catalog-module-serverlessops/src/routes.ts
diff --git a/src/plugins/catalog-module-serverlessops/src/setupTests.ts b/src/plugins/catalog-module-serverlessops/src/setupTests.ts
new file mode 100644
index 0000000..7b0828b
--- /dev/null
+++ b/src/plugins/catalog-module-serverlessops/src/setupTests.ts
@@ -0,0 +1 @@
+import '@testing-library/jest-dom';
diff --git a/src/plugins/serverlessops-catalog/dev/index.tsx b/src/plugins/serverlessops-catalog/dev/index.tsx
deleted file mode 100644
index 5145933..0000000
--- a/src/plugins/serverlessops-catalog/dev/index.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createDevApp } from '@backstage/frontend-dev-utils'
-import serverlessOpsCatalogPlugin from '../src'
-
-createDevApp({
- features: [serverlessOpsCatalogPlugin],
-})
diff --git a/src/plugins/serverlessops-catalog/src/index.ts b/src/plugins/serverlessops-catalog/src/index.ts
deleted file mode 100644
index 8f4e6d2..0000000
--- a/src/plugins/serverlessops-catalog/src/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export {
- SoCatalogTabbedIndexPage,
- SoCatalogTabbedDirectoryIndexPage,
- serverlessOpsCatalogPlugin as default,
-} from './plugin';
diff --git a/src/plugins/serverlessops-catalog/src/plugin.test.ts b/src/plugins/serverlessops-catalog/src/plugin.test.ts
deleted file mode 100644
index 89da1f8..0000000
--- a/src/plugins/serverlessops-catalog/src/plugin.test.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import {
- SoCatalogTabbedDirectoryIndexPage,
- SoCatalogTabbedIndexPage,
- serverlessOpsCatalogPlugin,
-} from './plugin';
-
-describe('catalog', () => {
- it('should export plugin SoCatalogTabbedDirectoryIndexPage', () => {
- expect(SoCatalogTabbedDirectoryIndexPage).toBeDefined();
- });
- it('should export plugin SoCatalogTabbedIndexPage', () => {
- expect(SoCatalogTabbedIndexPage).toBeDefined();
- });
- it('should export default plugin surface', () => {
- expect(serverlessOpsCatalogPlugin).toBeDefined();
- });
-});
diff --git a/src/plugins/serverlessops-catalog/src/plugin.tsx b/src/plugins/serverlessops-catalog/src/plugin.tsx
deleted file mode 100644
index e204669..0000000
--- a/src/plugins/serverlessops-catalog/src/plugin.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { createElement } from 'react'
-import {
- createFrontendPlugin,
- createRouteRef,
- PageBlueprint,
-} from '@backstage/frontend-plugin-api'
-
-export { TabbedCatalogIndexPage } from './components/TabbedCatalogIndexPage'
-
-const catalogIndexRouteRef = createRouteRef()
-const tabbedCatalogRouteRef = createRouteRef()
-const tabbedDirectoryRouteRef = createRouteRef()
-
-export const SoCatalogTabbedIndexPage = PageBlueprint.make({
- name: 'serverlessops-catalog-tabbed-index',
- params: {
- path: '/serverlessops-catalog/catalog',
- routeRef: tabbedCatalogRouteRef,
- loader: () =>
- import('./components/TabbedCatalogIndexPage').then(m =>
- createElement(m.TabbedCatalogIndexPage)
- ),
- },
-})
-
-export const SoCatalogTabbedDirectoryIndexPage = PageBlueprint.make({
- name: 'serverlessops-catalog-tabbed-directory-index',
- params: {
- path: '/serverlessops-catalog/directory',
- routeRef: tabbedDirectoryRouteRef,
- loader: () =>
- import('./components/TabbedDirectoryIndexPage').then(m =>
- createElement(m.TabbedDirectoryIndexPage)
- ),
- },
-})
-
-const serverlessOpsCatalogPlugin = createFrontendPlugin({
- pluginId: 'serverlessops-catalog',
- routes: {
- catalogIndex: catalogIndexRouteRef,
- tabbedCatalog: tabbedCatalogRouteRef,
- tabbedDirectory: tabbedDirectoryRouteRef,
- },
- extensions: [
- SoCatalogTabbedIndexPage,
- SoCatalogTabbedDirectoryIndexPage,
- ],
-})
-
-export { serverlessOpsCatalogPlugin }
\ No newline at end of file
diff --git a/src/yarn.lock b/src/yarn.lock
index 9a95c55..be47b0b 100644
--- a/src/yarn.lock
+++ b/src/yarn.lock
@@ -1232,6 +1232,93 @@ __metadata:
languageName: node
linkType: hard
+"@backstage-community/plugin-github-actions@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@backstage-community/plugin-github-actions@npm:1.2.0"
+ dependencies:
+ "@backstage/catalog-model": "npm:^1.9.0"
+ "@backstage/core-compat-api": "npm:^0.5.12"
+ "@backstage/core-components": "npm:^0.18.11"
+ "@backstage/core-plugin-api": "npm:^1.12.7"
+ "@backstage/frontend-plugin-api": "npm:^0.17.2"
+ "@backstage/integration": "npm:^2.0.3"
+ "@backstage/integration-react": "npm:^1.2.19"
+ "@backstage/plugin-catalog-react": "npm:^3.1.0"
+ "@backstage/ui": "npm:^0.16.0"
+ "@material-ui/core": "npm:^4.12.2"
+ "@material-ui/lab": "npm:4.0.0-alpha.61"
+ "@octokit/rest": "npm:^19.0.3"
+ "@remixicon/react": "npm:^4.2.0"
+ "@types/react": "npm:^16.13.1 || ^17.0.0 || ^18.0.0"
+ git-url-parse: "npm:^14.0.0"
+ luxon: "npm:^3.0.0"
+ react-aria-components: "npm:^1.3.0"
+ react-use: "npm:^17.2.4"
+ zod: "npm:^4.0.0"
+ 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-beta.0 || ^6.3.0
+ checksum: 10c0/dc02afa6552a48bc3ca671976b8f80d32c98a6da74a48325c14c57190aa923fb0faeb6c00008bd0b870a4355fa85bfd3dcf7512a77820a301d0a744b5ad039cb
+ languageName: node
+ linkType: hard
+
+"@backstage-community/plugin-github-deployments@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@backstage-community/plugin-github-deployments@npm:1.2.0"
+ dependencies:
+ "@backstage/catalog-model": "npm:^1.9.0"
+ "@backstage/core-compat-api": "npm:^0.5.12"
+ "@backstage/core-components": "npm:^0.18.11"
+ "@backstage/core-plugin-api": "npm:^1.12.7"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/frontend-plugin-api": "npm:^0.17.2"
+ "@backstage/integration": "npm:^2.0.3"
+ "@backstage/integration-react": "npm:^1.2.19"
+ "@backstage/plugin-catalog-react": "npm:^3.1.0"
+ "@backstage/ui": "npm:^0.16.0"
+ "@octokit/graphql": "npm:^5.0.0"
+ "@remixicon/react": "npm:^4.2.0"
+ "@types/react": "npm:^16.13.1 || ^17.0.0 || ^18.0.0"
+ luxon: "npm:^3.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-beta.0 || ^6.3.0
+ checksum: 10c0/e47a8077d7aa4df240a0cd11372d2c368a4fcd94d6964b7235ae91459ce530baf7aa4f3e77c23c20703fef1b3db5059f65e48ac0d2c1998dc191125c851438fc
+ languageName: node
+ linkType: hard
+
+"@backstage-community/plugin-github-issues@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "@backstage-community/plugin-github-issues@npm:1.2.1"
+ dependencies:
+ "@backstage/catalog-model": "npm:^1.9.0"
+ "@backstage/core-compat-api": "npm:^0.5.12"
+ "@backstage/core-components": "npm:^0.18.11"
+ "@backstage/core-plugin-api": "npm:^1.12.7"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/frontend-plugin-api": "npm:^0.17.2"
+ "@backstage/integration": "npm:^2.0.3"
+ "@backstage/integration-react": "npm:^1.2.19"
+ "@backstage/plugin-catalog-react": "npm:^3.1.0"
+ "@backstage/ui": "npm:^0.16.0"
+ "@material-ui/core": "npm:^4.12.4"
+ "@material-ui/lab": "npm:4.0.0-alpha.61"
+ "@remixicon/react": "npm:^4.2.0"
+ "@types/react": "npm:^16.13.1 || ^17.0.0 || ^18.0.0"
+ luxon: "npm:^3.0.0"
+ octokit: "npm:^3.0.0"
+ react-use: "npm:^17.4.0"
+ 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-beta.0 || ^6.3.0
+ checksum: 10c0/33ea79713db40058c57315238b8a838aff3baf9054a8fe15986f03eb2bd4fffa39a3c961ea338b89a0bb715694cb2800e4668920e39b3e90753a38f7a4d323c7
+ languageName: node
+ linkType: hard
+
"@backstage/backend-app-api@npm:^1.7.1":
version: 1.7.1
resolution: "@backstage/backend-app-api@npm:1.7.1"
@@ -1429,7 +1516,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/catalog-client@backstage:^::backstage=1.52.1&npm=1.16.0, @backstage/catalog-client@npm:^1.16.0":
+"@backstage/catalog-client@backstage:^::backstage=1.52.1&npm=1.16.0, @backstage/catalog-client@npm:^1.12.1, @backstage/catalog-client@npm:^1.16.0":
version: 1.16.0
resolution: "@backstage/catalog-client@npm:1.16.0"
dependencies:
@@ -1444,7 +1531,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/catalog-model@backstage:^::backstage=1.52.1&npm=1.9.0, @backstage/catalog-model@npm:^1.9.0":
+"@backstage/catalog-model@backstage:^::backstage=1.52.1&npm=1.9.0, @backstage/catalog-model@npm:^1.7.5, @backstage/catalog-model@npm:^1.7.6, @backstage/catalog-model@npm:^1.9.0":
version: 1.9.0
resolution: "@backstage/catalog-model@npm:1.9.0"
dependencies:
@@ -1899,7 +1986,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/config@backstage:^::backstage=1.52.1&npm=1.3.8, @backstage/config@npm:^1.3.8":
+"@backstage/config@backstage:^::backstage=1.52.1&npm=1.3.8, @backstage/config@npm:^1.3.6, @backstage/config@npm:^1.3.8":
version: 1.3.8
resolution: "@backstage/config@npm:1.3.8"
dependencies:
@@ -1923,7 +2010,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/core-app-api@backstage:^::backstage=1.52.1&npm=1.20.2, @backstage/core-app-api@npm:^1.20.2":
+"@backstage/core-app-api@backstage:^::backstage=1.52.1&npm=1.20.2, @backstage/core-app-api@npm:^1.19.4, @backstage/core-app-api@npm:^1.20.2":
version: 1.20.2
resolution: "@backstage/core-app-api@npm:1.20.2"
dependencies:
@@ -1952,7 +2039,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/core-compat-api@npm:^0.5.12":
+"@backstage/core-compat-api@npm:^0.5.12, @backstage/core-compat-api@npm:^0.5.3, @backstage/core-compat-api@npm:^0.5.7":
version: 0.5.12
resolution: "@backstage/core-compat-api@npm:0.5.12"
dependencies:
@@ -1977,7 +2064,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/core-components@backstage:^::backstage=1.52.1&npm=0.18.11, @backstage/core-components@npm:^0.18.11":
+"@backstage/core-components@backstage:^::backstage=1.52.1&npm=0.18.11, @backstage/core-components@npm:^0.18.11, @backstage/core-components@npm:^0.18.2, @backstage/core-components@npm:^0.18.6":
version: 0.18.11
resolution: "@backstage/core-components@npm:0.18.11"
dependencies:
@@ -2035,7 +2122,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/core-plugin-api@backstage:^::backstage=1.52.1&npm=1.12.7, @backstage/core-plugin-api@npm:^1.12.7":
+"@backstage/core-plugin-api@backstage:^::backstage=1.52.1&npm=1.12.7, @backstage/core-plugin-api@npm:^1.11.1, @backstage/core-plugin-api@npm:^1.12.1, @backstage/core-plugin-api@npm:^1.12.2, @backstage/core-plugin-api@npm:^1.12.4, @backstage/core-plugin-api@npm:^1.12.7":
version: 1.12.7
resolution: "@backstage/core-plugin-api@npm:1.12.7"
dependencies:
@@ -2073,7 +2160,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/errors@npm:^1.3.1":
+"@backstage/errors@npm:^1.2.7, @backstage/errors@npm:^1.3.1":
version: 1.3.1
resolution: "@backstage/errors@npm:1.3.1"
dependencies:
@@ -2106,6 +2193,32 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/frontend-app-api@npm:^0.14.1":
+ version: 0.14.1
+ resolution: "@backstage/frontend-app-api@npm:0.14.1"
+ dependencies:
+ "@backstage/config": "npm:^1.3.6"
+ "@backstage/core-app-api": "npm:^1.19.4"
+ "@backstage/core-plugin-api": "npm:^1.12.2"
+ "@backstage/errors": "npm:^1.2.7"
+ "@backstage/frontend-defaults": "npm:^0.3.6"
+ "@backstage/frontend-plugin-api": "npm:^0.13.4"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ lodash: "npm:^4.17.21"
+ zod: "npm:^3.25.76"
+ 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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/ebd55a914db7fd08315b59656c24d20becd9d4ee772b6ef93c9ed07239bef028078fd74636c8ff2b7ea61d283013002d918e44ee956b11bd64365dda26309f50
+ languageName: node
+ linkType: hard
+
"@backstage/frontend-app-api@npm:^0.16.4":
version: 0.16.5
resolution: "@backstage/frontend-app-api@npm:0.16.5"
@@ -2156,6 +2269,29 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/frontend-defaults@npm:^0.3.6":
+ version: 0.3.6
+ resolution: "@backstage/frontend-defaults@npm:0.3.6"
+ dependencies:
+ "@backstage/config": "npm:^1.3.6"
+ "@backstage/core-components": "npm:^0.18.6"
+ "@backstage/errors": "npm:^1.2.7"
+ "@backstage/frontend-app-api": "npm:^0.14.1"
+ "@backstage/frontend-plugin-api": "npm:^0.13.4"
+ "@backstage/plugin-app": "npm:^0.3.5"
+ "@react-hookz/web": "npm:^24.0.0"
+ 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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/dbb774da769fed52e343124b01d198e4a20544d621f81f661078bc5765cf3eca5e4a31ef1c0a6091087e2a1920253318e4801084895d3d589c5abc8610307e06
+ languageName: node
+ linkType: hard
+
"@backstage/frontend-dev-utils@backstage:^::backstage=1.52.1&npm=0.1.3, @backstage/frontend-dev-utils@npm:^0.1.3":
version: 0.1.3
resolution: "@backstage/frontend-dev-utils@npm:0.1.3"
@@ -2200,6 +2336,51 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/frontend-plugin-api@npm:^0.12.1":
+ version: 0.12.1
+ resolution: "@backstage/frontend-plugin-api@npm:0.12.1"
+ dependencies:
+ "@backstage/core-components": "npm:^0.18.2"
+ "@backstage/core-plugin-api": "npm:^1.11.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ "@material-ui/core": "npm:^4.12.4"
+ lodash: "npm:^4.17.21"
+ zod: "npm:^3.22.4"
+ zod-to-json-schema: "npm:^3.21.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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/e0dbd14a641668e69ec1f6fc466c26bac1b98516cd4f156a0e88677a2af1e2d5e4d810c99de3d79a21d05c771c889f87069d8a132c183a4dd61097a5b6cc59e8
+ languageName: node
+ linkType: hard
+
+"@backstage/frontend-plugin-api@npm:^0.13.3, @backstage/frontend-plugin-api@npm:^0.13.4":
+ version: 0.13.4
+ resolution: "@backstage/frontend-plugin-api@npm:0.13.4"
+ dependencies:
+ "@backstage/errors": "npm:^1.2.7"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ zod: "npm:^3.25.76"
+ zod-to-json-schema: "npm:^3.25.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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/0e7375c3abb20cc849c00f5013b33e05032fce83e3758affa20ece8075904778f430cf6bfdf77ead3fae3a0c492a6e299e1c98dbc7ba7952ee9c19033b36fcc4
+ languageName: node
+ linkType: hard
+
"@backstage/frontend-test-utils@backstage:^::backstage=1.52.1&npm=0.6.1, @backstage/frontend-test-utils@npm:^0.6.1":
version: 0.6.1
resolution: "@backstage/frontend-test-utils@npm:0.6.1"
@@ -2236,6 +2417,32 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/frontend-test-utils@npm:^0.4.5":
+ version: 0.4.5
+ resolution: "@backstage/frontend-test-utils@npm:0.4.5"
+ dependencies:
+ "@backstage/config": "npm:^1.3.6"
+ "@backstage/frontend-app-api": "npm:^0.14.1"
+ "@backstage/frontend-plugin-api": "npm:^0.13.4"
+ "@backstage/plugin-app": "npm:^0.3.5"
+ "@backstage/plugin-app-react": "npm:^0.1.0"
+ "@backstage/test-utils": "npm:^1.7.14"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ zod: "npm:^3.25.76"
+ peerDependencies:
+ "@testing-library/react": ^16.0.0
+ "@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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/009b7f6795688ac9950b67a9449291566918cc72503f1bd290e939031fef0283d412f7c9fc430ac613b002cb5f1c6b922c5bfd4df069d324b4d0316da93fa76a
+ languageName: node
+ linkType: hard
+
"@backstage/integration-aws-node@npm:^0.2.0":
version: 0.2.0
resolution: "@backstage/integration-aws-node@npm:0.2.0"
@@ -2251,7 +2458,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/integration-react@backstage:^::backstage=1.52.1&npm=1.2.19, @backstage/integration-react@npm:^1.2.19":
+"@backstage/integration-react@backstage:^::backstage=1.52.1&npm=1.2.19, @backstage/integration-react@npm:^1.2.11, @backstage/integration-react@npm:^1.2.14, @backstage/integration-react@npm:^1.2.19":
version: 1.2.19
resolution: "@backstage/integration-react@npm:1.2.19"
dependencies:
@@ -2272,6 +2479,24 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/integration@npm:^1.18.1":
+ version: 1.20.1
+ resolution: "@backstage/integration@npm:1.20.1"
+ dependencies:
+ "@azure/identity": "npm:^4.0.0"
+ "@azure/storage-blob": "npm:^12.5.0"
+ "@backstage/config": "npm:^1.3.6"
+ "@backstage/errors": "npm:^1.2.7"
+ "@octokit/auth-app": "npm:^4.0.0"
+ "@octokit/rest": "npm:^19.0.3"
+ cross-fetch: "npm:^4.0.0"
+ git-url-parse: "npm:^15.0.0"
+ lodash: "npm:^4.17.21"
+ luxon: "npm:^3.0.0"
+ checksum: 10c0/f117b378dd4865e3dd9d74992049d61df38c0534f95221afbaac6e9506d7ef543fa9cc5f7adc11633fc1bec298bf10064e7a62dc066b00b666f758056e51f187
+ languageName: node
+ linkType: hard
+
"@backstage/integration@npm:^2.0.3":
version: 2.0.3
resolution: "@backstage/integration@npm:2.0.3"
@@ -2406,6 +2631,25 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-app-react@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "@backstage/plugin-app-react@npm:0.1.0"
+ dependencies:
+ "@backstage/core-plugin-api": "npm:^1.12.1"
+ "@backstage/frontend-plugin-api": "npm:^0.13.3"
+ "@material-ui/core": "npm:^4.9.13"
+ 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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/a10716547b2c4a5c8c9d55d1283091b5009877996d2e0ad0b37babc631c35bd45a4cc359e18ae7f98f87b38b869baae5f68c5eeff5d79029ec79f9a9780abb19
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-app-visualizer@backstage:^::backstage=1.52.1&npm=0.2.5, @backstage/plugin-app-visualizer@npm:^0.2.5":
version: 0.2.5
resolution: "@backstage/plugin-app-visualizer@npm:0.2.5"
@@ -2428,6 +2672,37 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-app@npm:^0.3.5":
+ version: 0.3.5
+ resolution: "@backstage/plugin-app@npm:0.3.5"
+ dependencies:
+ "@backstage/core-components": "npm:^0.18.6"
+ "@backstage/core-plugin-api": "npm:^1.12.2"
+ "@backstage/frontend-plugin-api": "npm:^0.13.4"
+ "@backstage/integration-react": "npm:^1.2.14"
+ "@backstage/plugin-app-react": "npm:^0.1.0"
+ "@backstage/plugin-permission-react": "npm:^0.4.39"
+ "@backstage/theme": "npm:^0.7.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ "@material-ui/core": "npm:^4.9.13"
+ "@material-ui/icons": "npm:^4.9.1"
+ "@material-ui/lab": "npm:^4.0.0-alpha.61"
+ "@react-hookz/web": "npm:^24.0.0"
+ react-use: "npm:^17.2.4"
+ zod: "npm:^3.25.76"
+ 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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/4c29c3d2671aa87fe6f4607b67e86a6607170ae310a5afadbdd961089424c6650b4a8d2aeb552ed317b334765e99ba471d8745c1fc52d8d1ea9a71f5addbd85d
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-app@npm:^0.5.0":
version: 0.5.0
resolution: "@backstage/plugin-app@npm:0.5.0"
@@ -2712,7 +2987,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/plugin-catalog-common@npm:^1.1.10":
+"@backstage/plugin-catalog-common@npm:^1.1.10, @backstage/plugin-catalog-common@npm:^1.1.7":
version: 1.1.10
resolution: "@backstage/plugin-catalog-common@npm:1.1.10"
dependencies:
@@ -2865,6 +3140,47 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-catalog-react@npm:^1.21.2":
+ version: 1.21.6
+ resolution: "@backstage/plugin-catalog-react@npm:1.21.6"
+ dependencies:
+ "@backstage/catalog-client": "npm:^1.12.1"
+ "@backstage/catalog-model": "npm:^1.7.6"
+ "@backstage/core-compat-api": "npm:^0.5.7"
+ "@backstage/core-components": "npm:^0.18.6"
+ "@backstage/core-plugin-api": "npm:^1.12.2"
+ "@backstage/errors": "npm:^1.2.7"
+ "@backstage/frontend-plugin-api": "npm:^0.13.4"
+ "@backstage/frontend-test-utils": "npm:^0.4.5"
+ "@backstage/integration-react": "npm:^1.2.14"
+ "@backstage/plugin-catalog-common": "npm:^1.1.7"
+ "@backstage/plugin-permission-common": "npm:^0.9.5"
+ "@backstage/plugin-permission-react": "npm:^0.4.39"
+ "@backstage/types": "npm:^1.2.2"
+ "@backstage/version-bridge": "npm:^1.0.11"
+ "@material-ui/core": "npm:^4.12.2"
+ "@material-ui/icons": "npm:^4.9.1"
+ "@material-ui/lab": "npm:4.0.0-alpha.61"
+ "@react-hookz/web": "npm:^24.0.0"
+ classnames: "npm:^2.2.6"
+ lodash: "npm:^4.17.21"
+ material-ui-popup-state: "npm:^5.3.6"
+ qs: "npm:^6.9.4"
+ react-use: "npm:^17.2.4"
+ yaml: "npm:^2.0.0"
+ zen-observable: "npm:^0.10.0"
+ 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.3.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/b6670b0d47f0042e09392c91b4c56327ce12f548190ad8351828f8f7c8a6bf891d2ce4d0b196b4ae3a76993ec8fd90b4b0190653791743a008e94f71280f2c72
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-catalog-unprocessed-entities-common@npm:^0.0.16":
version: 0.0.16
resolution: "@backstage/plugin-catalog-unprocessed-entities-common@npm:0.0.16"
@@ -3126,7 +3442,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/plugin-permission-common@backstage:^::backstage=1.52.1&npm=0.9.9, @backstage/plugin-permission-common@npm:^0.9.9":
+"@backstage/plugin-permission-common@backstage:^::backstage=1.52.1&npm=0.9.9, @backstage/plugin-permission-common@npm:^0.9.5, @backstage/plugin-permission-common@npm:^0.9.7, @backstage/plugin-permission-common@npm:^0.9.9":
version: 0.9.9
resolution: "@backstage/plugin-permission-common@npm:0.9.9"
dependencies:
@@ -3157,6 +3473,27 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-permission-react@npm:^0.4.39":
+ version: 0.4.41
+ resolution: "@backstage/plugin-permission-react@npm:0.4.41"
+ dependencies:
+ "@backstage/config": "npm:^1.3.6"
+ "@backstage/core-plugin-api": "npm:^1.12.4"
+ "@backstage/plugin-permission-common": "npm:^0.9.7"
+ dataloader: "npm:^2.0.0"
+ swr: "npm:^2.0.0"
+ 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/d04a28f02cd98a0415f0ccc21b755fb88190bf3b1cf61c6f48086f4823d674ac25152fa14a5b273ae4232617e514334198efab670daae06aaa07b5ff1be7f4a6
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-permission-react@npm:^0.5.2":
version: 0.5.2
resolution: "@backstage/plugin-permission-react@npm:0.5.2"
@@ -3924,7 +4261,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/test-utils@backstage:^::backstage=1.52.1&npm=1.7.19, @backstage/test-utils@npm:^1.7.19":
+"@backstage/test-utils@backstage:^::backstage=1.52.1&npm=1.7.19, @backstage/test-utils@npm:^1.7.14, @backstage/test-utils@npm:^1.7.19":
version: 1.7.19
resolution: "@backstage/test-utils@npm:1.7.19"
dependencies:
@@ -3956,7 +4293,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/theme@backstage:^::backstage=1.52.1&npm=0.7.3, @backstage/theme@npm:^0.7.3":
+"@backstage/theme@backstage:^::backstage=1.52.1&npm=0.7.3, @backstage/theme@npm:^0.7.0, @backstage/theme@npm:^0.7.1, @backstage/theme@npm:^0.7.3":
version: 0.7.3
resolution: "@backstage/theme@npm:0.7.3"
dependencies:
@@ -4010,7 +4347,7 @@ __metadata:
languageName: node
linkType: hard
-"@backstage/version-bridge@npm:^1.0.12":
+"@backstage/version-bridge@npm:^1.0.11, @backstage/version-bridge@npm:^1.0.12":
version: 1.0.12
resolution: "@backstage/version-bridge@npm:1.0.12"
peerDependencies:
@@ -5090,6 +5427,16 @@ __metadata:
languageName: node
linkType: hard
+"@internal/backstage-plugin-app-module-nav@workspace:^, @internal/backstage-plugin-app-module-nav@workspace:plugins/app-module-nav":
+ version: 0.0.0-use.local
+ resolution: "@internal/backstage-plugin-app-module-nav@workspace:plugins/app-module-nav"
+ dependencies:
+ "@backstage/cli": "backstage:^"
+ "@backstage/frontend-plugin-api": "backstage:^"
+ "@testing-library/jest-dom": "npm:^6.0.0"
+ languageName: unknown
+ linkType: soft
+
"@internal/backstage-plugin-catalog-backend-module-google@workspace:^, @internal/backstage-plugin-catalog-backend-module-google@workspace:plugins/plugin-catalog-backend-module-google":
version: 0.0.0-use.local
resolution: "@internal/backstage-plugin-catalog-backend-module-google@workspace:plugins/plugin-catalog-backend-module-google"
@@ -5121,6 +5468,46 @@ __metadata:
languageName: unknown
linkType: soft
+"@internal/backstage-plugin-catalog-module-serverlessops@workspace:^, @internal/backstage-plugin-catalog-module-serverlessops@workspace:plugins/catalog-module-serverlessops":
+ version: 0.0.0-use.local
+ resolution: "@internal/backstage-plugin-catalog-module-serverlessops@workspace:plugins/catalog-module-serverlessops"
+ dependencies:
+ "@backstage/catalog-model": "backstage:^"
+ "@backstage/cli": "backstage:^"
+ "@backstage/core-app-api": "backstage:^"
+ "@backstage/core-components": "backstage:^"
+ "@backstage/core-plugin-api": "backstage:^"
+ "@backstage/frontend-dev-utils": "backstage:^"
+ "@backstage/frontend-plugin-api": "backstage:^"
+ "@backstage/plugin-api-docs": "backstage:^"
+ "@backstage/plugin-catalog": "backstage:^"
+ "@backstage/plugin-catalog-graph": "backstage:^"
+ "@backstage/plugin-catalog-react": "backstage:^"
+ "@backstage/plugin-org": "backstage:^"
+ "@backstage/plugin-techdocs": "backstage:^"
+ "@backstage/plugin-techdocs-module-addons-contrib": "backstage:^"
+ "@backstage/plugin-techdocs-react": "backstage:^"
+ "@backstage/test-utils": "backstage:^"
+ "@backstage/theme": "backstage:^"
+ "@backstage/types": "backstage:^"
+ "@material-ui/core": "npm:^4.9.13"
+ "@material-ui/icons": "npm:^4.9.1"
+ "@material-ui/lab": "npm:4.0.0-alpha.61"
+ "@remixicon/react": "npm:^4.9.0"
+ "@roadiehq/backstage-plugin-github-insights": "npm:^3.5.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"
+ react-use: "npm:^17.2.4"
+ zod: "npm:^4.4.3"
+ peerDependencies:
+ react: ^16.13.1 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0
+ languageName: unknown
+ linkType: soft
+
"@internal/backstage-plugin-scaffolder-backend-module-serverlessops@workspace:^, @internal/backstage-plugin-scaffolder-backend-module-serverlessops@workspace:plugins/scaffolder-backend-module-serverlessops":
version: 0.0.0-use.local
resolution: "@internal/backstage-plugin-scaffolder-backend-module-serverlessops@workspace:plugins/scaffolder-backend-module-serverlessops"
@@ -5164,43 +5551,6 @@ __metadata:
languageName: unknown
linkType: soft
-"@internal/backstage-plugin-serverlessops-catalog@workspace:^, @internal/backstage-plugin-serverlessops-catalog@workspace:plugins/serverlessops-catalog":
- version: 0.0.0-use.local
- resolution: "@internal/backstage-plugin-serverlessops-catalog@workspace:plugins/serverlessops-catalog"
- dependencies:
- "@backstage/catalog-model": "backstage:^"
- "@backstage/cli": "backstage:^"
- "@backstage/core-app-api": "backstage:^"
- "@backstage/core-components": "backstage:^"
- "@backstage/core-plugin-api": "backstage:^"
- "@backstage/frontend-dev-utils": "backstage:^"
- "@backstage/frontend-plugin-api": "backstage:^"
- "@backstage/plugin-api-docs": "backstage:^"
- "@backstage/plugin-catalog": "backstage:^"
- "@backstage/plugin-catalog-graph": "backstage:^"
- "@backstage/plugin-catalog-react": "backstage:^"
- "@backstage/plugin-org": "backstage:^"
- "@backstage/plugin-techdocs": "backstage:^"
- "@backstage/plugin-techdocs-module-addons-contrib": "backstage:^"
- "@backstage/plugin-techdocs-react": "backstage:^"
- "@backstage/test-utils": "backstage:^"
- "@backstage/theme": "backstage:^"
- "@backstage/types": "backstage:^"
- "@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-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
- languageName: unknown
- linkType: soft
-
"@internationalized/date@npm:^3.12.0, @internationalized/date@npm:^3.12.1, @internationalized/date@npm:^3.12.2":
version: 3.12.2
resolution: "@internationalized/date@npm:3.12.2"
@@ -6246,6 +6596,27 @@ __metadata:
languageName: node
linkType: hard
+"@material-ui/lab@npm:4.0.0-alpha.45":
+ version: 4.0.0-alpha.45
+ resolution: "@material-ui/lab@npm:4.0.0-alpha.45"
+ dependencies:
+ "@babel/runtime": "npm:^7.4.4"
+ "@material-ui/utils": "npm:^4.7.1"
+ clsx: "npm:^1.0.4"
+ prop-types: "npm:^15.7.2"
+ react-is: "npm:^16.8.0"
+ peerDependencies:
+ "@material-ui/core": ^4.9.0
+ "@types/react": ^16.8.6
+ react: ^16.8.0
+ react-dom: ^16.8.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/5c07c9f9fa68a2fac4a95086de1b79758e0b2aa11fd1c3cf0783e452bb0dbd49d57a1359c3e9dd98e52e65cda6445e5b42d5d2b79283241a8cde04129fa1bfdf
+ languageName: node
+ linkType: hard
+
"@material-ui/lab@npm:4.0.0-alpha.61, @material-ui/lab@npm:^4.0.0-alpha.60, @material-ui/lab@npm:^4.0.0-alpha.61":
version: 4.0.0-alpha.61
resolution: "@material-ui/lab@npm:4.0.0-alpha.61"
@@ -6349,7 +6720,7 @@ __metadata:
languageName: node
linkType: hard
-"@material-ui/utils@npm:^4.11.3":
+"@material-ui/utils@npm:^4.11.3, @material-ui/utils@npm:^4.7.1":
version: 4.11.3
resolution: "@material-ui/utils@npm:4.11.3"
dependencies:
@@ -8465,7 +8836,7 @@ __metadata:
languageName: node
linkType: hard
-"@remixicon/react@npm:^4.6.0":
+"@remixicon/react@npm:^4.2.0, @remixicon/react@npm:^4.6.0, @remixicon/react@npm:^4.9.0":
version: 4.9.0
resolution: "@remixicon/react@npm:4.9.0"
peerDependencies:
@@ -8531,6 +8902,54 @@ __metadata:
languageName: node
linkType: hard
+"@roadiehq/backstage-plugin-github-insights@npm:^3.5.0":
+ version: 3.5.0
+ resolution: "@roadiehq/backstage-plugin-github-insights@npm:3.5.0"
+ dependencies:
+ "@backstage/catalog-model": "npm:^1.7.5"
+ "@backstage/core-compat-api": "npm:^0.5.3"
+ "@backstage/core-components": "npm:^0.18.2"
+ "@backstage/core-plugin-api": "npm:^1.11.1"
+ "@backstage/frontend-plugin-api": "npm:^0.12.1"
+ "@backstage/integration": "npm:^1.18.1"
+ "@backstage/integration-react": "npm:^1.2.11"
+ "@backstage/plugin-catalog-react": "npm:^1.21.2"
+ "@backstage/theme": "npm:^0.7.0"
+ "@material-ui/core": "npm:^4.12.2"
+ "@material-ui/icons": "npm:^4.9.1"
+ "@material-ui/lab": "npm:4.0.0-alpha.45"
+ "@octokit/rest": "npm:^19.0.3"
+ "@octokit/types": "npm:^9.0.0"
+ "@roadiehq/github-auth-utils-react": "npm:^1.2.0"
+ git-url-parse: "npm:^16.1.0"
+ immer: "npm:9.0.7"
+ react-use: "npm:^17.2.4"
+ zustand: "npm:3.6.9"
+ peerDependencies:
+ react: ^16.13.1 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0
+ react-router: 6.0.0-beta.0 || ^6.3.0
+ checksum: 10c0/6609b33783ffa95642f179fca0ff6490ee7edfdcf8955cc79aa2efdde55468466a236752d5c6334b58f3ef100fc7ba9c80ae7531e9829e51f6a4657995f184b1
+ languageName: node
+ linkType: hard
+
+"@roadiehq/github-auth-utils-react@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@roadiehq/github-auth-utils-react@npm:1.2.0"
+ dependencies:
+ "@backstage/core-components": "npm:^0.18.2"
+ "@backstage/core-plugin-api": "npm:^1.11.1"
+ "@backstage/integration-react": "npm:^1.2.11"
+ "@material-ui/core": "npm:^4.12.2"
+ zustand: "npm:^4.5.6"
+ peerDependencies:
+ react: ^16.13.1 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0
+ react-router: 6.0.0-beta.0 || ^6.3.0
+ checksum: 10c0/8664d50d51fb76f6e4d759cc7b5e70d0a41fecad9778ef3011d90562f184ff01d6c79c4f55e688c5c4cc3522b6374ac03667f3e894cbaaba97a474ed6cb5973e
+ languageName: node
+ linkType: hard
+
"@rollup/plugin-commonjs@npm:^26.0.0":
version: 26.0.3
resolution: "@rollup/plugin-commonjs@npm:26.0.3"
@@ -11056,6 +11475,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/parse-path@npm:^7.0.0":
+ version: 7.0.3
+ resolution: "@types/parse-path@npm:7.0.3"
+ checksum: 10c0/8344b6c7acba4e4e5a8d542f56f53c297685fa92f9b0c085d7532cc7e1b661432cecfc1c75c76cdb0d161c95679b6ecfe0573d9fef7c836962aacf604150a984
+ languageName: node
+ linkType: hard
+
"@types/parse5@npm:^6.0.0":
version: 6.0.3
resolution: "@types/parse5@npm:6.0.3"
@@ -12399,6 +12825,9 @@ __metadata:
version: 0.0.0-use.local
resolution: "app@workspace:packages/app"
dependencies:
+ "@backstage-community/plugin-github-actions": "npm:^1.2.0"
+ "@backstage-community/plugin-github-deployments": "npm:^1.2.0"
+ "@backstage-community/plugin-github-issues": "npm:^1.2.1"
"@backstage/cli": "backstage:^"
"@backstage/core-components": "backstage:^"
"@backstage/core-plugin-api": "backstage:^"
@@ -12423,8 +12852,9 @@ __metadata:
"@backstage/plugin-techdocs-module-addons-contrib": "backstage:^"
"@backstage/plugin-user-settings": "backstage:^"
"@backstage/ui": "backstage:^"
+ "@internal/backstage-plugin-app-module-nav": "workspace:^"
+ "@internal/backstage-plugin-catalog-module-serverlessops": "workspace:^"
"@internal/backstage-plugin-scaffolder-entity-pickers": "workspace:^"
- "@internal/backstage-plugin-serverlessops-catalog": "workspace:^"
"@material-ui/core": "npm:^4.12.2"
"@material-ui/icons": "npm:^4.9.1"
"@playwright/test": "npm:^1.32.3"
@@ -18166,6 +18596,25 @@ __metadata:
languageName: node
linkType: hard
+"git-up@npm:^8.1.0":
+ version: 8.1.1
+ resolution: "git-up@npm:8.1.1"
+ dependencies:
+ is-ssh: "npm:^1.4.0"
+ parse-url: "npm:^9.2.0"
+ checksum: 10c0/2cc4461d8565a3f7a1ecd3d262a58ddb8df0a67f7f7d4915df2913c460b2e88ae570a6ea810700a6d22fb3b9e4bea8dd10a8eb469900ddc12e35c62208608c03
+ languageName: node
+ linkType: hard
+
+"git-url-parse@npm:^14.0.0":
+ version: 14.1.0
+ resolution: "git-url-parse@npm:14.1.0"
+ dependencies:
+ git-up: "npm:^7.0.0"
+ checksum: 10c0/cd91547210eccdfaca92c41c5ab018c23a75e881f36aa8d7c46cef8e10dea790a455aeb4ca91426109fd5f645c6e874c0cf80a38be6a8675ed91abb08ed904d4
+ languageName: node
+ linkType: hard
+
"git-url-parse@npm:^15.0.0":
version: 15.0.0
resolution: "git-url-parse@npm:15.0.0"
@@ -18175,6 +18624,15 @@ __metadata:
languageName: node
linkType: hard
+"git-url-parse@npm:^16.1.0":
+ version: 16.1.0
+ resolution: "git-url-parse@npm:16.1.0"
+ dependencies:
+ git-up: "npm:^8.1.0"
+ checksum: 10c0/b8f5ebcbd5b2baf9f1bb77a217376f0247c47fe1d42811ccaac3015768eebb0759a59051f758e50e70adf5c67ae059d1975bf6b750164f36bfd39138d11b940b
+ languageName: node
+ linkType: hard
+
"github-from-package@npm:0.0.0":
version: 0.0.0
resolution: "github-from-package@npm:0.0.0"
@@ -19305,6 +19763,13 @@ __metadata:
languageName: node
linkType: hard
+"immer@npm:9.0.7":
+ version: 9.0.7
+ resolution: "immer@npm:9.0.7"
+ checksum: 10c0/80740aede86e89eb3a1de5f97f9045a971fa41a45488a9471c930579ce49a268a001df757be3609af9133157dd6fefb45000f61fbc3ff24e853aaa0163c7a6b0
+ languageName: node
+ linkType: hard
+
"immer@npm:^9.0.6, immer@npm:^9.0.7":
version: 9.0.21
resolution: "immer@npm:9.0.21"
@@ -24494,6 +24959,16 @@ __metadata:
languageName: node
linkType: hard
+"parse-url@npm:^9.2.0":
+ version: 9.2.0
+ resolution: "parse-url@npm:9.2.0"
+ dependencies:
+ "@types/parse-path": "npm:^7.0.0"
+ parse-path: "npm:^7.0.0"
+ checksum: 10c0/b8f56cdb01e76616255dff82544f4b5ab4378f6f4bac8604ed6fde03a75b0f71c547d92688386d8f22f38fad3c928c075abf69458677c6185da76c841bfd7a93
+ languageName: node
+ linkType: hard
+
"parse5-htmlparser2-tree-adapter@npm:^6.0.0":
version: 6.0.1
resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1"
@@ -25894,7 +26369,7 @@ __metadata:
languageName: node
linkType: hard
-"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, qs@npm:^6.7.0, qs@npm:~6.15.1":
+"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, qs@npm:^6.7.0, qs@npm:^6.9.4, qs@npm:~6.15.1":
version: 6.15.3
resolution: "qs@npm:6.15.3"
dependencies:
@@ -26115,7 +26590,7 @@ __metadata:
languageName: node
linkType: hard
-"react-aria-components@npm:^1.14.0":
+"react-aria-components@npm:^1.14.0, react-aria-components@npm:^1.3.0":
version: 1.19.0
resolution: "react-aria-components@npm:1.19.0"
dependencies:
@@ -26420,7 +26895,7 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^16.13.1, react-is@npm:^16.7.0":
+"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.0":
version: 16.13.1
resolution: "react-is@npm:16.13.1"
checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1
@@ -26724,7 +27199,7 @@ __metadata:
languageName: node
linkType: hard
-"react-use@npm:^17.2.4, react-use@npm:^17.3.2, react-use@npm:^17.5.1":
+"react-use@npm:^17.2.4, react-use@npm:^17.3.2, react-use@npm:^17.4.0, react-use@npm:^17.5.1":
version: 17.6.1
resolution: "react-use@npm:17.6.1"
dependencies:
@@ -30560,7 +31035,7 @@ __metadata:
languageName: node
linkType: hard
-"use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.6.0":
+"use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.6.0":
version: 1.6.0
resolution: "use-sync-external-store@npm:1.6.0"
peerDependencies:
@@ -31528,7 +32003,7 @@ __metadata:
languageName: node
linkType: hard
-"zod-to-json-schema@npm:^3.23.5, zod-to-json-schema@npm:^3.25.1":
+"zod-to-json-schema@npm:^3.21.4, zod-to-json-schema@npm:^3.23.5, zod-to-json-schema@npm:^3.25.1":
version: 3.25.2
resolution: "zod-to-json-schema@npm:3.25.2"
peerDependencies:
@@ -31555,14 +32030,14 @@ __metadata:
languageName: node
linkType: hard
-"zod@npm:^3.23.8, zod@npm:^3.25.76":
+"zod@npm:^3.22.4, zod@npm:^3.23.8, zod@npm:^3.25.76":
version: 3.25.76
resolution: "zod@npm:3.25.76"
checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c
languageName: node
linkType: hard
-"zod@npm:^3.25 || ^4.0, zod@npm:^3.25.76 || ^4.0.0, zod@npm:^4.0.0":
+"zod@npm:^3.25 || ^4.0, zod@npm:^3.25.76 || ^4.0.0, zod@npm:^4.0.0, zod@npm:^4.4.3":
version: 4.4.3
resolution: "zod@npm:4.4.3"
checksum: 10c0/7ea31b558e88f9faf44f31dd185e2e1cbf51fed3081787fb96cc2534749b50c0acfc6da7f0922a7353ed092dd358c7d50c28ea96c94d04af64191bd33152eca3
@@ -31576,6 +32051,38 @@ __metadata:
languageName: node
linkType: hard
+"zustand@npm:3.6.9":
+ version: 3.6.9
+ resolution: "zustand@npm:3.6.9"
+ peerDependencies:
+ react: ">=16.8"
+ peerDependenciesMeta:
+ react:
+ optional: true
+ checksum: 10c0/032f5acafcb544aa8a6d9d1cd77e0e4034e090a80d5af514588f59d78ea0bfadfaad33a42fdbdf791e1a3b031c5b2d4a576a1c9d06b7c4967d334d9ac77affd3
+ languageName: node
+ linkType: hard
+
+"zustand@npm:^4.5.6":
+ version: 4.5.7
+ resolution: "zustand@npm:4.5.7"
+ dependencies:
+ use-sync-external-store: "npm:^1.2.2"
+ peerDependencies:
+ "@types/react": ">=16.8"
+ immer: ">=9.0.6"
+ react: ">=16.8"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ checksum: 10c0/55559e37a82f0c06cadc61cb08f08314c0fe05d6a93815e41e3376130c13db22a5017cbb0cd1f018c82f2dad0051afe3592561d40f980bd4082e32005e8a950c
+ languageName: node
+ linkType: hard
+
"zwitch@npm:^2.0.0":
version: 2.0.4
resolution: "zwitch@npm:2.0.4"
diff --git a/template.yaml b/template.yaml
index 54e5ee5..1613dfb 100644
--- a/template.yaml
+++ b/template.yaml
@@ -129,6 +129,16 @@ Parameters:
Description: Google OAuth client secret
NoEcho: true
+ AuthGithubClientId:
+ Type: String
+ Description: GitHub OAuth client ID
+ NoEcho: true
+
+ AuthGithubClientSecret:
+ Type: String
+ Description: GitHub OAuth client secret
+ NoEcho: true
+
BackstageAppUrl:
Type: String
Description: URL of application frontend
@@ -188,6 +198,10 @@ Resources:
Value: !Ref AuthGoogleClientId
- Name: AUTH_GOOGLE_CLIENT_SECRET
Value: !Ref AuthGoogleClientSecret
+ - Name: AUTH_GITHUB_CLIENT_ID
+ Value: !Ref AuthGithubClientId
+ - Name: AUTH_GITHUB_CLIENT_SECRET
+ Value: !Ref AuthGithubClientSecret
- Name: BACKSTAGE_APP_URL
Value: !Ref BackstageAppUrl
- Name: BACKSTAGE_BACKEND_URL