From b7e3431fce5609dadffcdbc4573a271e8d975bf8 Mon Sep 17 00:00:00 2001 From: Kavindu Sachinthe Date: Wed, 12 Aug 2026 17:39:31 +0530 Subject: [PATCH] feat: add SonarQube integration to entity pages Signed-off-by: Kavindu Sachinthe --- .changeset/sonarqube-entity-integration.md | 6 + app-config.yaml | 7 + packages/backend/package.json | 2 + packages/backend/src/index.ts | 3 + packages/backend/src/sonarqube.test.ts | 16 + packages/backend/src/sonarqube.ts | 26 + packages/portal-app/package.json | 2 + packages/portal-app/src/apis.ts | 11 + .../src/components/catalog/EntityPage.tsx | 20 + yarn.lock | 1362 ++++++++++++++++- 10 files changed, 1439 insertions(+), 16 deletions(-) create mode 100644 .changeset/sonarqube-entity-integration.md create mode 100644 packages/backend/src/sonarqube.test.ts create mode 100644 packages/backend/src/sonarqube.ts diff --git a/.changeset/sonarqube-entity-integration.md b/.changeset/sonarqube-entity-integration.md new file mode 100644 index 000000000..bb62e8f3f --- /dev/null +++ b/.changeset/sonarqube-entity-integration.md @@ -0,0 +1,6 @@ +--- +'@openchoreo/backstage-portal-app': patch +'backend': patch +--- + +Add SonarQube community plugin integration — shows a Code Quality tab on entity pages when the `sonarqube.org/project-key` annotation is present. Wires up `@backstage-community/plugin-sonarqube-backend` in the backend and `EntitySonarQubeContentPage` in the frontend. diff --git a/app-config.yaml b/app-config.yaml index 043f41d46..117167836 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -102,6 +102,13 @@ integrations: # username: ${JENKINS_USERNAME} # apiKey: ${JENKINS_API_KEY} +# SonarQube Configuration +# Uncomment and configure in app-config.local.yaml to enable code quality metrics on entity pages. +# Requires the `sonarqube.org/project-key` annotation on catalog entities to show the tab. +# sonarqube: +# baseUrl: ${SONARQUBE_BASE_URL} # e.g. https://sonarqube.example.com (no trailing slash) +# apiKey: ${SONARQUBE_API_KEY} # User token with at least Browse permission on the project + proxy: ### Example for how to add a proxy endpoint for the frontend. ### A typical reason to do this is to handle HTTPS and CORS for internal services. diff --git a/packages/backend/package.json b/packages/backend/package.json index b11ffb968..02fad44cd 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -21,6 +21,7 @@ "build-image": "docker buildx build ../.. -f Dockerfile --tag openchoreo-ui:local --load" }, "dependencies": { + "@backstage-community/plugin-sonarqube-backend": "^1.1.1", "@backstage/backend-defaults": "^0.17.1", "@backstage/backend-plugin-api": "^1.9.1", "@backstage/config": "^1.3.8", @@ -41,6 +42,7 @@ "pg": "8.16.3" }, "devDependencies": { + "@backstage/backend-test-utils": "^1.11.5", "@backstage/cli": "^0.36.2", "@types/cookie-parser": "1.4.8", "@types/express-session": "1.18.2" diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 337c305b9..722d1d540 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -8,6 +8,7 @@ import { createBackend } from '@backstage/backend-defaults'; import { portalBackendFeatures } from '@openchoreo/backstage-portal-backend'; +import { conditionalSonarQube } from './sonarqube'; // Guest mode: when OpenChoreo auth is explicitly disabled, the portal has no // IDP and needs guest sign-in plus an open default auth policy. These feed the @@ -28,6 +29,8 @@ const backend = createBackend(); backend.add(portalBackendFeatures); // External CI Platform Integrations +// SonarQube: Proxies metrics API. Conditionally registers only if 'sonarqube' config is present. +backend.add(conditionalSonarQube); // GitLab: Requires integrations.gitlab config at startup. Uncomment after configuring in app-config.local.yaml // For production, config is in app-config.production.yaml with Helm-injected env vars // backend.add(import('@immobiliarelabs/backstage-plugin-gitlab-backend')); diff --git a/packages/backend/src/sonarqube.test.ts b/packages/backend/src/sonarqube.test.ts new file mode 100644 index 000000000..1c3d1c35d --- /dev/null +++ b/packages/backend/src/sonarqube.test.ts @@ -0,0 +1,16 @@ +import { startTestBackend, mockServices } from '@backstage/backend-test-utils'; +import { conditionalSonarQube } from './sonarqube'; + +describe('conditionalSonarQube backend module', () => { + it('should start successfully without a sonarqube configuration section', async () => { + // The test will fail (promise rejects) if the feature loader crashes. + const backend = await startTestBackend({ + features: [ + conditionalSonarQube, + mockServices.rootConfig.factory({ data: {} }), // empty configuration (no 'sonarqube') + ], + }); + + expect(backend).toBeDefined(); + }); +}); diff --git a/packages/backend/src/sonarqube.ts b/packages/backend/src/sonarqube.ts new file mode 100644 index 000000000..075e04107 --- /dev/null +++ b/packages/backend/src/sonarqube.ts @@ -0,0 +1,26 @@ +import { + createBackendFeatureLoader, + coreServices, +} from '@backstage/backend-plugin-api'; + +/** + * SonarQube backend feature loader. + * Conditionally registers the SonarQube plugin only if 'sonarqube' config is present. + */ +export const conditionalSonarQube = createBackendFeatureLoader({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.rootLogger, + }, + *loader({ config, logger }) { + if (config.getOptionalConfig('sonarqube')) { + // Use require() instead of import() to avoid ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING_FLAG in Jest + const plugin = require('@backstage-community/plugin-sonarqube-backend'); + yield plugin.default || plugin; + } else { + logger.info( + 'SonarQube configuration is missing, skipping plugin-sonarqube-backend registration.', + ); + } + }, +}); diff --git a/packages/portal-app/package.json b/packages/portal-app/package.json index ca81a869b..0296db131 100644 --- a/packages/portal-app/package.json +++ b/packages/portal-app/package.json @@ -33,6 +33,8 @@ "dependencies": { "@backstage-community/plugin-github-actions": "^0.20.0", "@backstage-community/plugin-jenkins": "^0.28.0", + "@backstage-community/plugin-sonarqube": "^1.1.0", + "@backstage-community/plugin-sonarqube-react": "^1.1.0", "@backstage/catalog-client": "^1.15.1", "@backstage/catalog-model": "^1.9.0", "@backstage/config": "^1.3.8", diff --git a/packages/portal-app/src/apis.ts b/packages/portal-app/src/apis.ts index bdd63f61e..edfa353d9 100644 --- a/packages/portal-app/src/apis.ts +++ b/packages/portal-app/src/apis.ts @@ -38,6 +38,8 @@ import { perchAgentApiRef, PerchAgentClient, } from '@openchoreo/backstage-plugin-openchoreo-portal-assistant'; +import { SonarQubeClient } from '@backstage-community/plugin-sonarqube'; +import { sonarQubeApiRef } from '@backstage-community/plugin-sonarqube-react'; export const apis: AnyApiFactory[] = [ createApiFactory({ @@ -146,4 +148,13 @@ export const apis: AnyApiFactory[] = [ factory: ({ discoveryApi, fetchApi }) => new PerchAgentClient({ discoveryApi, fetchApi }), }), + createApiFactory({ + api: sonarQubeApiRef, + deps: { + discoveryApi: discoveryApiRef, + fetchApi: fetchApiRef, + }, + factory: ({ discoveryApi, fetchApi }) => + new SonarQubeClient({ discoveryApi, fetchApi }), + }), ]; diff --git a/packages/portal-app/src/components/catalog/EntityPage.tsx b/packages/portal-app/src/components/catalog/EntityPage.tsx index ce254f19e..5edc2d11b 100644 --- a/packages/portal-app/src/components/catalog/EntityPage.tsx +++ b/packages/portal-app/src/components/catalog/EntityPage.tsx @@ -158,6 +158,8 @@ import { WorkflowsOrExternalCICard } from './WorkflowsOrExternalCICard'; import { EntityJenkinsContent } from '@backstage-community/plugin-jenkins'; import { EntityGithubActionsContent } from '@backstage-community/plugin-github-actions'; import { EntityGitlabContent } from '@immobiliarelabs/backstage-plugin-gitlab'; +import { EntitySonarQubeContentPage } from '@backstage-community/plugin-sonarqube'; +import { isSonarQubeAvailable } from '@backstage-community/plugin-sonarqube-react'; // Wires perch's per-row assistant button into the observability log // tables via the plugin's render-prop slot. Lives here (not inside the @@ -450,6 +452,15 @@ const ServiceEntityPage = () => { > + + {/* SonarQube code quality tab — only shown when annotation is present */} + + + ); }; @@ -573,6 +584,15 @@ const GenericComponentEntityPage = () => { > + + {/* SonarQube code quality tab — only shown when annotation is present */} + + + ); }; diff --git a/yarn.lock b/yarn.lock index ade1497ca..f8c63d7fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1643,6 +1643,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.20.15": + version: 7.29.8 + resolution: "@babel/parser@npm:7.29.8" + dependencies: + "@babel/types": "npm:^7.29.8" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/acc890c5e6a6dd40863a47b50bac111d7185ee6fbbe163ebe11d5214854ca2adb901462ad4d718a65090ef84bd2230e9e8ab45a2e0caccc685f1f57ab0bb1e28 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -1889,6 +1900,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.29.8": + version: 7.29.8 + resolution: "@babel/types@npm:7.29.8" + dependencies: + "@babel/helper-string-parser": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + checksum: 10c0/be7c279f0abf2a086c633e21b49c7ca80275d05283cc5a268b67a708c9914bd0c944f1422b3eb3cb37682a2af5d560abf520ccf9b01b53ecbfe6b71fbc3fdde6 + languageName: node + linkType: hard + "@backstage-community/plugin-github-actions@npm:^0.20.0": version: 0.20.0 resolution: "@backstage-community/plugin-github-actions@npm:0.20.0" @@ -1977,6 +1998,68 @@ __metadata: languageName: node linkType: hard +"@backstage-community/plugin-sonarqube-backend@npm:^1.1.1": + version: 1.1.1 + resolution: "@backstage-community/plugin-sonarqube-backend@npm:1.1.1" + dependencies: + "@backstage/backend-defaults": "npm:^0.16.0" + "@backstage/backend-plugin-api": "npm:^1.8.0" + "@backstage/catalog-model": "npm:^1.7.7" + "@backstage/config": "npm:^1.3.6" + "@backstage/errors": "npm:^1.2.7" + "@backstage/plugin-catalog-node": "npm:^2.1.0" + "@types/express": "npm:*" + express: "npm:^4.18.1" + express-promise-router: "npm:^4.1.0" + node-fetch: "npm:^2.6.7" + yn: "npm:^5.0.0" + checksum: 10c0/3bd74db23057ee9f61cc6122e1ad401bf8a06aed31fb9763888d8f35eb918ec6676d552335c1d8901da90d52943a6e63a0f6b72a8f032d9bce62518b3093f6db + languageName: node + linkType: hard + +"@backstage-community/plugin-sonarqube-react@npm:^1.1.0": + version: 1.1.0 + resolution: "@backstage-community/plugin-sonarqube-react@npm:1.1.0" + dependencies: + "@backstage/catalog-model": "npm:^1.7.7" + "@backstage/core-plugin-api": "npm:^1.12.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/343c01b7ea3e4d472fbc878f6be43be3e6e051b9fb00065fbc5b7858c7375ba015cb3bb6b3a35f9e84844a79bc4726cf9cdb569a6ae4f99c72788cd6e4b04ad0 + languageName: node + linkType: hard + +"@backstage-community/plugin-sonarqube@npm:^1.1.0": + version: 1.1.0 + resolution: "@backstage-community/plugin-sonarqube@npm:1.1.0" + dependencies: + "@backstage-community/plugin-sonarqube-react": "npm:^1.1.0" + "@backstage/catalog-model": "npm:^1.7.7" + "@backstage/core-compat-api": "npm:^0.5.9" + "@backstage/core-components": "npm:^0.18.8" + "@backstage/core-plugin-api": "npm:^1.12.4" + "@backstage/errors": "npm:^1.2.7" + "@backstage/frontend-app-api": "npm:^0.16.1" + "@backstage/frontend-plugin-api": "npm:^0.15.1" + "@backstage/plugin-catalog-react": "npm:^2.1.1" + "@material-ui/core": "npm:^4.12.2" + "@material-ui/icons": "npm:^4.9.1" + "@material-ui/styles": "npm:^4.10.0" + "@types/react": "npm:^16.13.1 || ^17.0.0 || ^18.0.0" + cross-fetch: "npm:^4.0.0" + luxon: "npm:^3.0.0" + rc-progress: "npm:4.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/649e3ddfb1d4318b4288a5043ed53b7c931bcd101a666fb8451698065e0f95a0643614038ebddc41d23786d1c9ee32856d77cb878090f1c63e852f8d64e57f12 + languageName: node + linkType: hard + "@backstage/app-defaults@npm:^1.7.8": version: 1.7.8 resolution: "@backstage/app-defaults@npm:1.7.8" @@ -2011,6 +2094,18 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-app-api@npm:^1.6.0, @backstage/backend-app-api@npm:^1.7.2": + version: 1.7.2 + resolution: "@backstage/backend-app-api@npm:1.7.2" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/config": "npm:^1.3.8" + "@backstage/connections": "npm:^0.2.0" + "@backstage/errors": "npm:^1.3.1" + checksum: 10c0/4e353210f963dc451dffff9bde3ebbddbff8b92d185c30d57d28b43d35e22d0cd517bb8951fa77b9cc2fd36b9ab0e7ef7523809b51dfcc729c0bc107d34d67b9 + languageName: node + linkType: hard + "@backstage/backend-defaults@npm:^0.15.1": version: 0.15.1 resolution: "@backstage/backend-defaults@npm:0.15.1" @@ -2097,6 +2192,94 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-defaults@npm:^0.16.0": + version: 0.16.0 + resolution: "@backstage/backend-defaults@npm:0.16.0" + dependencies: + "@aws-sdk/abort-controller": "npm:^3.347.0" + "@aws-sdk/client-codecommit": "npm:^3.350.0" + "@aws-sdk/client-s3": "npm:^3.350.0" + "@aws-sdk/credential-providers": "npm:^3.350.0" + "@aws-sdk/types": "npm:^3.347.0" + "@azure/identity": "npm:^4.0.0" + "@azure/storage-blob": "npm:^12.5.0" + "@backstage/backend-app-api": "npm:^1.6.0" + "@backstage/backend-dev-utils": "npm:^0.1.7" + "@backstage/backend-plugin-api": "npm:^1.8.0" + "@backstage/cli-node": "npm:^0.3.0" + "@backstage/config": "npm:^1.3.6" + "@backstage/config-loader": "npm:^1.10.9" + "@backstage/errors": "npm:^1.2.7" + "@backstage/integration": "npm:^2.0.0" + "@backstage/integration-aws-node": "npm:^0.1.20" + "@backstage/plugin-auth-node": "npm:^0.6.14" + "@backstage/plugin-events-node": "npm:^0.4.20" + "@backstage/plugin-permission-common": "npm:^0.9.7" + "@backstage/plugin-permission-node": "npm:^0.10.11" + "@backstage/types": "npm:^1.2.2" + "@google-cloud/storage": "npm:^7.0.0" + "@keyv/memcache": "npm:^2.0.1" + "@keyv/redis": "npm:^4.0.1" + "@keyv/valkey": "npm:^1.0.1" + "@manypkg/get-packages": "npm:^1.1.3" + "@octokit/rest": "npm:^19.0.3" + "@opentelemetry/api": "npm:^1.9.0" + "@types/cors": "npm:^2.8.6" + "@types/express": "npm:^4.17.6" + archiver: "npm:^7.0.0" + base64-stream: "npm:^1.0.0" + compression: "npm:^1.7.4" + concat-stream: "npm:^2.0.0" + cookie: "npm:^0.7.0" + cors: "npm:^2.8.5" + cron: "npm:^3.0.0" + express: "npm:^4.22.0" + express-promise-router: "npm:^4.1.0" + express-rate-limit: "npm:^8.2.2" + fs-extra: "npm:^11.2.0" + git-url-parse: "npm:^15.0.0" + helmet: "npm:^6.0.0" + infinispan: "npm:^0.12.0" + is-glob: "npm:^4.0.3" + jose: "npm:^5.0.0" + keyv: "npm:^5.2.1" + knex: "npm:^3.0.0" + lodash: "npm:^4.17.21" + logform: "npm:^2.3.2" + luxon: "npm:^3.0.0" + minimatch: "npm:^10.2.1" + mysql2: "npm:^3.0.0" + node-fetch: "npm:^2.7.0" + node-forge: "npm:^1.3.2" + p-limit: "npm:^3.1.0" + path-to-regexp: "npm:^8.0.0" + pg: "npm:^8.11.3" + pg-connection-string: "npm:^2.3.0" + pg-format: "npm:^1.0.4" + rate-limit-redis: "npm:^4.2.0" + raw-body: "npm:^2.4.1" + selfsigned: "npm:^2.0.0" + tar: "npm:^7.5.6" + triple-beam: "npm:^1.4.1" + uuid: "npm:^11.0.0" + winston: "npm:^3.2.1" + winston-transport: "npm:^4.5.0" + yauzl: "npm:^3.2.1" + yn: "npm:^4.0.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + peerDependencies: + "@google-cloud/cloud-sql-connector": ^1.4.0 + better-sqlite3: ^12.0.0 + peerDependenciesMeta: + "@google-cloud/cloud-sql-connector": + optional: true + better-sqlite3: + optional: true + checksum: 10c0/2baa5887860fb0e7ae5f8ff9d450f737011e8673373ac384dbdf550d61511ac404d5d41264e01cc256f3bc2be3d478ba8b93413c0f9b0f6184adaf5d0c9bafb8 + languageName: node + linkType: hard + "@backstage/backend-defaults@npm:^0.17.1": version: 0.17.1 resolution: "@backstage/backend-defaults@npm:0.17.1" @@ -2186,6 +2369,95 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-defaults@npm:^0.17.5": + version: 0.17.6 + resolution: "@backstage/backend-defaults@npm:0.17.6" + dependencies: + "@aws-sdk/abort-controller": "npm:^3.347.0" + "@aws-sdk/client-codecommit": "npm:^3.350.0" + "@aws-sdk/client-s3": "npm:^3.350.0" + "@aws-sdk/credential-providers": "npm:^3.350.0" + "@aws-sdk/rds-signer": "npm:^3.0.0" + "@aws-sdk/types": "npm:^3.347.0" + "@azure/identity": "npm:^4.0.0" + "@azure/storage-blob": "npm:^12.5.0" + "@backstage/backend-app-api": "npm:^1.7.2" + "@backstage/backend-dev-utils": "npm:^0.1.7" + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/cli-node": "npm:^0.3.4" + "@backstage/config": "npm:^1.3.8" + "@backstage/config-loader": "npm:^1.11.1" + "@backstage/errors": "npm:^1.3.1" + "@backstage/integration": "npm:^2.0.3" + "@backstage/integration-aws-node": "npm:^0.2.0" + "@backstage/plugin-auth-node": "npm:^0.7.3" + "@backstage/plugin-events-node": "npm:^0.4.24" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@backstage/plugin-permission-node": "npm:^0.11.2" + "@backstage/types": "npm:^1.2.2" + "@google-cloud/storage": "npm:^7.0.0" + "@keyv/memcache": "npm:^2.0.1" + "@keyv/redis": "npm:^4.0.1" + "@keyv/valkey": "npm:^1.0.1" + "@manypkg/get-packages": "npm:^1.1.3" + "@octokit/rest": "npm:^19.0.3" + "@opentelemetry/api": "npm:^1.9.0" + "@types/cors": "npm:^2.8.6" + "@types/express": "npm:^4.17.6" + archiver: "npm:^7.0.0" + base64-stream: "npm:^1.0.0" + compression: "npm:^1.7.4" + concat-stream: "npm:^2.0.0" + cookie: "npm:^0.7.0" + cors: "npm:^2.8.5" + cron: "npm:^3.0.0" + express: "npm:^4.22.0" + express-promise-router: "npm:^4.1.0" + express-rate-limit: "npm:^8.2.2" + fs-extra: "npm:^11.2.0" + git-url-parse: "npm:^15.0.0" + helmet: "npm:^6.0.0" + infinispan: "npm:^0.13.0" + iovalkey: "npm:^0.3.3" + is-glob: "npm:^4.0.3" + jose: "npm:^5.0.0" + keyv: "npm:^5.2.1" + knex: "npm:^3.0.0" + lodash: "npm:^4.17.21" + logform: "npm:^2.3.2" + luxon: "npm:^3.0.0" + minimatch: "npm:^10.2.1" + mysql2: "npm:^3.0.0" + node-fetch: "npm:^2.7.0" + node-forge: "npm:^1.3.2" + p-limit: "npm:^3.1.0" + path-to-regexp: "npm:^8.0.0" + pg: "npm:^8.11.3" + pg-connection-string: "npm:^2.3.0" + pg-format: "npm:^1.0.4" + rate-limit-redis: "npm:^4.2.0" + raw-body: "npm:^2.4.1" + selfsigned: "npm:^2.0.0" + tar: "npm:^7.5.6" + triple-beam: "npm:^1.4.1" + winston: "npm:^3.2.1" + winston-transport: "npm:^4.5.0" + yauzl: "npm:^3.2.1" + yn: "npm:^4.0.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + peerDependencies: + "@google-cloud/cloud-sql-connector": ^1.4.0 + better-sqlite3: ^12.0.0 + peerDependenciesMeta: + "@google-cloud/cloud-sql-connector": + optional: true + better-sqlite3: + optional: true + checksum: 10c0/a9a2d68c086a7dd626bf928df887af87a689740fafbe3016739505e69d1a8b64d2d2cc219ddef5cdf7f536ec83c523679b06103454ec4c511340ccde8db3f447 + languageName: node + linkType: hard + "@backstage/backend-dev-utils@npm:^0.1.6, @backstage/backend-dev-utils@npm:^0.1.7": version: 0.1.7 resolution: "@backstage/backend-dev-utils@npm:0.1.7" @@ -2239,6 +2511,27 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-plugin-api@npm:^1.8.0, @backstage/backend-plugin-api@npm:^1.9.0, @backstage/backend-plugin-api@npm:^1.9.3": + version: 1.9.3 + resolution: "@backstage/backend-plugin-api@npm:1.9.3" + dependencies: + "@backstage/cli-common": "npm:^0.3.0" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/plugin-auth-node": "npm:^0.7.3" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@backstage/plugin-permission-node": "npm:^0.11.2" + "@backstage/types": "npm:^1.2.2" + "@types/express": "npm:^4.17.6" + "@types/json-schema": "npm:^7.0.6" + "@types/luxon": "npm:^3.0.0" + knex: "npm:^3.0.0" + luxon: "npm:^3.0.0" + zod: "npm:^3.25.76 || ^4.0.0" + checksum: 10c0/cf8547920e88bc94b812aae4b93a2d68dcf8e1cba0aa9065ca4530b795f6e89a9ec8e184a4e44ed342612ec2bb4fb25e195325a25b08edd1264b3e2de76208c2 + languageName: node + linkType: hard + "@backstage/backend-test-utils@npm:^1.11.3": version: 1.11.3 resolution: "@backstage/backend-test-utils@npm:1.11.3" @@ -2283,6 +2576,50 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-test-utils@npm:^1.11.5": + version: 1.11.5 + resolution: "@backstage/backend-test-utils@npm:1.11.5" + dependencies: + "@backstage/backend-app-api": "npm:^1.7.2" + "@backstage/backend-defaults": "npm:^0.17.5" + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/plugin-auth-node": "npm:^0.7.3" + "@backstage/plugin-events-node": "npm:^0.4.24" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@backstage/types": "npm:^1.2.2" + "@keyv/memcache": "npm:^2.0.1" + "@keyv/redis": "npm:^4.0.1" + "@keyv/valkey": "npm:^1.0.1" + "@types/express": "npm:^4.17.6" + "@types/express-serve-static-core": "npm:^4.17.5" + "@types/keyv": "npm:^4.2.0" + "@types/qs": "npm:^6.9.6" + better-sqlite3: "npm:^12.0.0" + cookie: "npm:^0.7.0" + express: "npm:^4.22.0" + fs-extra: "npm:^11.0.0" + keyv: "npm:^5.2.1" + knex: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mysql2: "npm:^3.0.0" + pg: "npm:^8.11.3" + pg-connection-string: "npm:^2.3.0" + testcontainers: "npm:^11.9.0" + text-extensions: "npm:^2.4.0" + yn: "npm:^4.0.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + peerDependencies: + "@types/jest": "*" + peerDependenciesMeta: + "@types/jest": + optional: true + checksum: 10c0/dc12f41c413cea72e18d33e33af97d3e889f64c3e0e766a46adba475636996431e730a93f7a16b6fcb7b10957cfd4224d0808d19bb081fbc01a4305a817c3c62 + languageName: node + linkType: hard + "@backstage/catalog-client@npm:^1.12.1, @backstage/catalog-client@npm:^1.15.1": version: 1.15.1 resolution: "@backstage/catalog-client@npm:1.15.1" @@ -2297,7 +2634,22 @@ __metadata: languageName: node linkType: hard -"@backstage/catalog-model@npm:^1.7.5, @backstage/catalog-model@npm:^1.7.6, @backstage/catalog-model@npm:^1.9.0": +"@backstage/catalog-client@npm:^1.14.0, @backstage/catalog-client@npm:^1.15.0, @backstage/catalog-client@npm:^1.16.1": + version: 1.16.1 + resolution: "@backstage/catalog-client@npm:1.16.1" + dependencies: + "@backstage/catalog-model": "npm:^1.9.0" + "@backstage/errors": "npm:^1.3.1" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/plugin-catalog-common": "npm:^1.1.10" + cross-fetch: "npm:^4.0.0" + lodash: "npm:^4.17.21" + uri-template: "npm:^2.0.0" + checksum: 10c0/4b00fbada78234dd7a17863cef6134193b6d0396888cbcbfcda397d7321c594826f4f092d6bd6ac725e32a91ac3baf44a53a3bab5645ac7ef7c7ee803388f64f + languageName: node + linkType: hard + +"@backstage/catalog-model@npm:^1.7.5, @backstage/catalog-model@npm:^1.7.6, @backstage/catalog-model@npm:^1.7.7, @backstage/catalog-model@npm:^1.8.0, @backstage/catalog-model@npm:^1.9.0": version: 1.9.0 resolution: "@backstage/catalog-model@npm:1.9.0" dependencies: @@ -2347,6 +2699,16 @@ __metadata: languageName: node linkType: hard +"@backstage/cli-common@npm:^0.3.0": + version: 0.3.0 + resolution: "@backstage/cli-common@npm:0.3.0" + dependencies: + "@backstage/errors": "npm:^1.3.1" + cross-spawn: "npm:^7.0.3" + checksum: 10c0/c6ae3bf3697bf463e0043150c0e56e4075ff9fd516e786593845c02de47ee72c4dad64cc1cfd9f54685b11ba9ed075ffa11eb764cc65da58ca3367da18a5dca1 + languageName: node + linkType: hard + "@backstage/cli-defaults@npm:^0.1.2": version: 0.1.2 resolution: "@backstage/cli-defaults@npm:0.1.2" @@ -2701,6 +3063,37 @@ __metadata: languageName: node linkType: hard +"@backstage/cli-node@npm:^0.3.0, @backstage/cli-node@npm:^0.3.4": + version: 0.3.4 + resolution: "@backstage/cli-node@npm:0.3.4" + dependencies: + "@backstage/cli-common": "npm:^0.3.0" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + "@manypkg/get-packages": "npm:^1.1.3" + "@yarnpkg/lockfile": "npm:^1.1.0" + "@yarnpkg/parsers": "npm:^3.0.0" + chalk: "npm:^4.0.0" + cleye: "npm:^2.6.0" + fs-extra: "npm:^11.2.0" + keytar: "npm:^7.9.0" + pirates: "npm:^4.0.6" + proper-lockfile: "npm:^4.1.2" + semver: "npm:^7.5.3" + yaml: "npm:^2.0.0" + zod: "npm:^3.25.76 || ^4.0.0" + peerDependencies: + "@swc/core": ^1.15.6 + dependenciesMeta: + keytar: + optional: true + peerDependenciesMeta: + "@swc/core": + optional: true + checksum: 10c0/373e2d3acdc1e4274fe70774e671157a30e0f1c3a5d7a1fddf44488d1d2559abeb2fb3d56eb8e2b5aef80e6145d4aed829d6515318238a02e73c0d5a0bd81331 + languageName: node + linkType: hard + "@backstage/cli-node@npm:^0.3.2": version: 0.3.2 resolution: "@backstage/cli-node@npm:0.3.2" @@ -2978,7 +3371,30 @@ __metadata: languageName: node linkType: hard -"@backstage/config@npm:^1.3.3, @backstage/config@npm:^1.3.6, @backstage/config@npm:^1.3.8": +"@backstage/config-loader@npm:^1.10.9, @backstage/config-loader@npm:^1.11.1": + version: 1.11.1 + resolution: "@backstage/config-loader@npm:1.11.1" + dependencies: + "@backstage/cli-common": "npm:^0.3.0" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + "@types/json-schema": "npm:^7.0.6" + ajv: "npm:^8.10.0" + chokidar: "npm:^3.5.2" + fs-extra: "npm:^11.2.0" + json-schema-merge-allof: "npm:^0.8.1" + json-schema-traverse: "npm:^1.0.0" + lodash: "npm:^4.17.21" + minimist: "npm:^1.2.5" + ts-json-schema-generator: "npm:^2.9.0" + typescript: "npm:^5.9.3" + yaml: "npm:^2.0.0" + checksum: 10c0/049ce1dd070623ea9b217022daf1ec1d31dd6222c1397247f48ee736e69f6bf37f8960dd76398eda2a69700ffd4ca4ed76fdfecc916860fd627dbfcdb35c3713 + languageName: node + linkType: hard + +"@backstage/config@npm:^1.3.3, @backstage/config@npm:^1.3.6, @backstage/config@npm:^1.3.7, @backstage/config@npm:^1.3.8": version: 1.3.8 resolution: "@backstage/config@npm:1.3.8" dependencies: @@ -2989,6 +3405,19 @@ __metadata: languageName: node linkType: hard +"@backstage/connections@npm:^0.2.0": + version: 0.2.0 + resolution: "@backstage/connections@npm:0.2.0" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + zod: "npm:^3.25.76 || ^4.0.0" + checksum: 10c0/ac3188dc2dfd5c305d9588892ebfe25b841ce4685e05e1d3949a6fa15d7432813b4549335b90c43a759d7b3466f607165c0b3209d95b6f56dd0055e0e8a18ce6 + languageName: node + linkType: hard + "@backstage/core-app-api@npm:^1.19.4, @backstage/core-app-api@npm:^1.20.1": version: 1.20.1 resolution: "@backstage/core-app-api@npm:1.20.1" @@ -3018,6 +3447,60 @@ __metadata: languageName: node linkType: hard +"@backstage/core-app-api@npm:^1.20.3": + version: 1.20.3 + resolution: "@backstage/core-app-api@npm:1.20.3" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/types": "npm:^1.2.2" + "@backstage/ui": "npm:^0.17.0" + "@backstage/version-bridge": "npm:^1.0.12" + "@types/prop-types": "npm:^15.7.3" + history: "npm:^5.0.0" + i18next: "npm:^22.4.15" + lodash: "npm:^4.17.21" + prop-types: "npm:^15.7.2" + react-use: "npm:^17.2.4" + zen-observable: "npm:^0.10.0" + zod: "npm:^3.25.76 || ^4.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/505b3dac1d91c4f5ae0e63eca9bf619e2f1e9559833036dd190fa81fab9db2908064aa89c0e9ecf15c452a558f48d23c41951a0403b5c3abb44cf292bd6202e9 + languageName: node + linkType: hard + +"@backstage/core-compat-api@npm:^0.5.10, @backstage/core-compat-api@npm:^0.5.13, @backstage/core-compat-api@npm:^0.5.9": + version: 0.5.13 + resolution: "@backstage/core-compat-api@npm:0.5.13" + dependencies: + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/plugin-app-react": "npm:^0.2.5" + "@backstage/plugin-catalog-react": "npm:^3.2.0" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + lodash: "npm:^4.17.21" + 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/63ad4d56aea675e6764488069922d091652e411e64fcf98618b00a71b32a300896312d6b15a22b5b97d8e253741c94bbcd0babc9f44b7a9f2bc6a14d74202b69 + languageName: node + linkType: hard + "@backstage/core-compat-api@npm:^0.5.11, @backstage/core-compat-api@npm:^0.5.7": version: 0.5.11 resolution: "@backstage/core-compat-api@npm:0.5.11" @@ -3155,6 +3638,65 @@ __metadata: languageName: node linkType: hard +"@backstage/core-components@npm:^0.18.12, @backstage/core-components@npm:^0.18.8, @backstage/core-components@npm:^0.18.9": + version: 0.18.12 + resolution: "@backstage/core-components@npm:0.18.12" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/theme": "npm:^0.7.3" + "@backstage/ui": "npm:^0.17.0" + "@backstage/version-bridge": "npm:^1.0.12" + "@dagrejs/dagre": "npm:^1.1.4" + "@date-io/core": "npm:^1.3.13" + "@material-table/core": "npm:^3.1.0" + "@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" + "@testing-library/react": "npm:^16.0.0" + "@types/react-sparklines": "npm:^1.7.0" + ansi-regex: "npm:^6.0.1" + classnames: "npm:^2.2.6" + csstype: "npm:^3.0.2" + d3-selection: "npm:^3.0.0" + d3-shape: "npm:^3.0.0" + d3-zoom: "npm:^3.0.0" + js-yaml: "npm:^4.2.0" + linkify-react: "npm:4.3.2" + linkifyjs: "npm:4.3.2" + lodash: "npm:^4.17.21" + parse5: "npm:^6.0.0" + qs: "npm:^6.15.2" + rc-progress: "npm:3.5.1" + react-full-screen: "npm:^1.1.1" + react-helmet: "npm:6.1.0" + react-hook-form: "npm:^7.12.2" + react-idle-timer: "npm:5.7.2" + react-markdown: "npm:^8.0.0" + react-sparklines: "npm:^1.7.0" + react-syntax-highlighter: "npm:^15.4.5" + react-use: "npm:^17.3.2" + react-virtualized-auto-sizer: "npm:^1.0.11" + react-window: "npm:^1.8.6" + rehype-raw: "npm:^6.0.0" + rehype-sanitize: "npm:^5.0.0" + remark-gfm: "npm:^3.0.1" + zen-observable: "npm:^0.10.0" + zod: "npm:^3.25.76 || ^4.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/fa94668cf0f8facac7512dc8b2fff70c3dceefcfee569ae2983aa67e72452b35120674f1123a91a965781ae27bd9fa3bdf8af22d88dc6c15cc8220013e500627 + languageName: node + linkType: hard + "@backstage/core-plugin-api@npm:^1.10.9, @backstage/core-plugin-api@npm:^1.12.1, @backstage/core-plugin-api@npm:^1.12.2, @backstage/core-plugin-api@npm:^1.12.6": version: 1.12.6 resolution: "@backstage/core-plugin-api@npm:1.12.6" @@ -3178,6 +3720,29 @@ __metadata: languageName: node linkType: hard +"@backstage/core-plugin-api@npm:^1.12.4, @backstage/core-plugin-api@npm:^1.12.5, @backstage/core-plugin-api@npm:^1.12.8": + version: 1.12.8 + resolution: "@backstage/core-plugin-api@npm:1.12.8" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + history: "npm:^5.0.0" + zod: "npm:^3.25.76 || ^4.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/87d99483edca1969a6d56f91b9dccdd1ec544f67f566c0abf15ecfc67984b0322c18128defa841de8fdaaab89be931e8d38a70b14359868056ddd458cbd283bd + languageName: node + linkType: hard + "@backstage/dev-utils@npm:^1.1.23": version: 1.1.23 resolution: "@backstage/dev-utils@npm:1.1.23" @@ -3221,7 +3786,7 @@ __metadata: languageName: node linkType: hard -"@backstage/errors@npm:^1.2.7, @backstage/errors@npm:^1.3.1": +"@backstage/errors@npm:^1.2.7, @backstage/errors@npm:^1.3.0, @backstage/errors@npm:^1.3.1": version: 1.3.1 resolution: "@backstage/errors@npm:1.3.1" dependencies: @@ -3251,6 +3816,19 @@ __metadata: languageName: node linkType: hard +"@backstage/filter-predicates@npm:^0.1.1, @backstage/filter-predicates@npm:^0.1.2, @backstage/filter-predicates@npm:^0.1.4": + version: 0.1.4 + resolution: "@backstage/filter-predicates@npm:0.1.4" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + zod: "npm:^3.25.76 || ^4.0.0" + zod-validation-error: "npm:^5.0.0" + checksum: 10c0/0e54760800797c45df47f58f0c1138cd2667939f0d1a4b83c63466fed82b293ffc144751bf98684b2e61edcc111c1cb34ebf607f19befd361e9b8f061f04d1cc + languageName: node + linkType: hard + "@backstage/filter-predicates@npm:^0.1.3": version: 0.1.3 resolution: "@backstage/filter-predicates@npm:0.1.3" @@ -3290,6 +3868,33 @@ __metadata: languageName: node linkType: hard +"@backstage/frontend-app-api@npm:^0.16.1, @backstage/frontend-app-api@npm:^0.16.6": + version: 0.16.6 + resolution: "@backstage/frontend-app-api@npm:0.16.6" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-app-api": "npm:^1.20.3" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/frontend-defaults": "npm:^0.5.4" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + lodash: "npm:^4.17.21" + zod: "npm:^3.25.76 || ^4.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/7474488213a3045d4a6166cb85973ce92dbedd930d93428775bf7171064f485f69fd224876d4a08228e79fa80626e1767f31fd3563afbd919a880cb210cb4cfe + languageName: node + linkType: hard + "@backstage/frontend-app-api@npm:^0.16.3": version: 0.16.3 resolution: "@backstage/frontend-app-api@npm:0.16.3" @@ -3363,6 +3968,29 @@ __metadata: languageName: node linkType: hard +"@backstage/frontend-defaults@npm:^0.5.4": + version: 0.5.4 + resolution: "@backstage/frontend-defaults@npm:0.5.4" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-components": "npm:^0.18.12" + "@backstage/errors": "npm:^1.3.1" + "@backstage/frontend-app-api": "npm:^0.16.6" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/plugin-app": "npm:^0.5.1" + "@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.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/851f014b0c89c41232d4bc4cb527afce1cd3b359c88809b9bdeb9a225a4f78d7ea81da2ecdb1039aedeb9d9980b8d55358d7c349d6b29d8ba700c3d0d0aa2df9 + 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" @@ -3384,6 +4012,51 @@ __metadata: languageName: node linkType: hard +"@backstage/frontend-plugin-api@npm:^0.15.1": + version: 0.15.1 + resolution: "@backstage/frontend-plugin-api@npm:0.15.1" + dependencies: + "@backstage/errors": "npm:^1.2.7" + "@backstage/filter-predicates": "npm:^0.1.1" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + zod: "npm:^3.25.76 || ^4.0.0" + 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.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/8064e0845849f7f27af62ff30007bc08a89fc052330e46138735669280e962f2643485a5e2e38dcec16d0ad8a93c150d5fc0b94b9e045106cba11c23bff365dc + languageName: node + linkType: hard + +"@backstage/frontend-plugin-api@npm:^0.16.2": + version: 0.16.2 + resolution: "@backstage/frontend-plugin-api@npm:0.16.2" + dependencies: + "@backstage/errors": "npm:^1.3.0" + "@backstage/filter-predicates": "npm:^0.1.2" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + "@standard-schema/spec": "npm:^1.1.0" + zod: "npm:^4.0.0" + 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.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/7308d6417d922f285446cf8f59d98f807fa69bfcfe22e6db7be0cf8640b67bbecad4520c009bce8a3e21dd29f938e8c154b51472e56918dac06bae9a0dccaeb0 + languageName: node + linkType: hard + "@backstage/frontend-plugin-api@npm:^0.17.0": version: 0.17.0 resolution: "@backstage/frontend-plugin-api@npm:0.17.0" @@ -3407,6 +4080,30 @@ __metadata: languageName: node linkType: hard +"@backstage/frontend-plugin-api@npm:^0.17.3": + version: 0.17.3 + resolution: "@backstage/frontend-plugin-api@npm:0.17.3" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/types": "npm:^1.2.2" + "@backstage/version-bridge": "npm:^1.0.12" + "@standard-schema/spec": "npm:^1.1.0" + zod: "npm:^4.0.0" + 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.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/d321dd4e37d655a2b1e5a4b50aa280d5d21e9b96dc674505bce2b35820c33e04926f89a9335c3f1ea658e4321d6480efb7ce75eb2729fbeeb07af40d426cd7be + 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" @@ -3484,6 +4181,21 @@ __metadata: languageName: node linkType: hard +"@backstage/integration-aws-node@npm:^0.1.20": + version: 0.1.21 + resolution: "@backstage/integration-aws-node@npm:0.1.21" + dependencies: + "@aws-sdk/client-sts": "npm:^3.350.0" + "@aws-sdk/credential-provider-node": "npm:^3.350.0" + "@aws-sdk/credential-providers": "npm:^3.350.0" + "@aws-sdk/types": "npm:^3.347.0" + "@aws-sdk/util-arn-parser": "npm:^3.310.0" + "@backstage/config": "npm:^1.3.7" + "@backstage/errors": "npm:^1.3.0" + checksum: 10c0/817e32110f39fa61020bec48c89087af11b0d9696fd304b8fac375e4d773541128ce46e7595e0ef41a529ea27eb377d84c590387683964a55fbf4758f8a24112 + 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" @@ -3520,6 +4232,27 @@ __metadata: languageName: node linkType: hard +"@backstage/integration-react@npm:^1.2.17, @backstage/integration-react@npm:^1.2.20": + version: 1.2.20 + resolution: "@backstage/integration-react@npm:1.2.20" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/integration": "npm:^2.0.3" + "@material-ui/core": "npm:^4.12.2" + "@material-ui/icons": "npm:^4.9.1" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + react-router-dom: ^6.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/fe94dae7691c206ba325207fce9849d13142783583af62a661bba2718aff3dc4c5781837fce31cbf948bfd255c452c14886b76aa80af5a8bea32f7e9ee985991 + languageName: node + linkType: hard + "@backstage/integration@npm:^1.17.1, @backstage/integration@npm:^1.19.2": version: 1.19.2 resolution: "@backstage/integration@npm:1.19.2" @@ -3556,6 +4289,25 @@ __metadata: languageName: node linkType: hard +"@backstage/integration@npm:^2.0.0, @backstage/integration@npm:^2.0.3": + version: 2.0.3 + resolution: "@backstage/integration@npm:2.0.3" + dependencies: + "@azure/identity": "npm:^4.0.0" + "@azure/storage-blob": "npm:^12.5.0" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@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" + p-throttle: "npm:^4.1.1" + checksum: 10c0/d56a5be601813b541dbb1899624a4379944ff3c44e3fca47ddd00ca0cf785fc3b4f1beead2be55af8dfa8adc03fb8f804f80784e66d7a85d615c4830a0dbbdb6 + languageName: node + linkType: hard + "@backstage/integration@npm:^2.0.2": version: 2.0.2 resolution: "@backstage/integration@npm:2.0.2" @@ -3709,6 +4461,25 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-app-react@npm:^0.2.5": + version: 0.2.5 + resolution: "@backstage/plugin-app-react@npm:0.2.5" + dependencies: + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/frontend-plugin-api": "npm:^0.17.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.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/9f570ec91eb2799e60193e9734a7d5e7981fb3314b7e297cb60df9f2734cfdc8e0c42296a7feef184c23ea4a38e9826eeba4cd6828dfba6bf08d2031f39853e9 + languageName: node + linkType: hard + "@backstage/plugin-app@npm:^0.3.5": version: 0.3.5 resolution: "@backstage/plugin-app@npm:0.3.5" @@ -3778,6 +4549,44 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-app@npm:^0.5.1": + version: 0.5.1 + resolution: "@backstage/plugin-app@npm:0.5.1" + dependencies: + "@backstage/core-components": "npm:^0.18.12" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/integration-react": "npm:^1.2.20" + "@backstage/plugin-app-react": "npm:^0.2.5" + "@backstage/plugin-permission-react": "npm:^0.5.3" + "@backstage/theme": "npm:^0.7.3" + "@backstage/types": "npm:^1.2.2" + "@backstage/ui": "npm:^0.17.0" + "@backstage/version-bridge": "npm:^1.0.12" + "@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" + "@remixicon/react": "npm:>=4.6.0 <4.9.0" + motion: "npm:^12.0.0" + react-aria: "npm:~3.48.0" + react-stately: "npm:~3.46.0" + react-use: "npm:^17.2.4" + zen-observable: "npm:^0.10.0" + zod: "npm:^4.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/f588bedef9391cf0d4fb3885f5e191e926b1f8c6730519e8aebdfa5469f0ee39ec471ed8b73f136a667af9a55fc7170205e78a2e7d57fd064459c360dbad3164 + languageName: node + linkType: hard + "@backstage/plugin-auth-backend-module-github-provider@npm:^0.5.3": version: 0.5.3 resolution: "@backstage/plugin-auth-backend-module-github-provider@npm:0.5.3" @@ -3874,6 +4683,52 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-auth-node@npm:^0.6.14": + version: 0.6.14 + resolution: "@backstage/plugin-auth-node@npm:0.6.14" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.8.0" + "@backstage/catalog-client": "npm:^1.14.0" + "@backstage/catalog-model": "npm:^1.7.7" + "@backstage/config": "npm:^1.3.6" + "@backstage/errors": "npm:^1.2.7" + "@backstage/types": "npm:^1.2.2" + "@types/express": "npm:^4.17.6" + "@types/passport": "npm:^1.0.3" + express: "npm:^4.22.0" + jose: "npm:^5.0.0" + lodash: "npm:^4.17.21" + passport: "npm:^0.7.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + zod-validation-error: "npm:^4.0.2" + checksum: 10c0/c78a40c7057e9819cd4303b6aca111a1b50b40c60e903c259b1ef346819650e91ffae5140388c1eece2ebbf8f9c0993143d2b4c61948e9ae4dba9fe91497daa2 + languageName: node + linkType: hard + +"@backstage/plugin-auth-node@npm:^0.7.0, @backstage/plugin-auth-node@npm:^0.7.3": + version: 0.7.3 + resolution: "@backstage/plugin-auth-node@npm:0.7.3" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/catalog-client": "npm:^1.16.1" + "@backstage/catalog-model": "npm:^1.9.0" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + "@types/express": "npm:^4.17.6" + "@types/passport": "npm:^1.0.3" + express: "npm:^4.22.0" + jose: "npm:^5.0.0" + lodash: "npm:^4.17.21" + passport: "npm:^0.7.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + zod-validation-error: "npm:^5.0.0" + checksum: 10c0/faf274cc6d13193ef8aa6daa8dba33219ee8661029e603c6eb8e80f3ed7a35860a7b5603b2667c61b9c2df976a1ede836467ee3a94be08b4b31cb910fea10f90 + languageName: node + linkType: hard + "@backstage/plugin-auth-node@npm:^0.7.1": version: 0.7.1 resolution: "@backstage/plugin-auth-node@npm:0.7.1" @@ -3984,7 +4839,7 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-catalog-common@npm:^1.1.10, @backstage/plugin-catalog-common@npm:^1.1.7": +"@backstage/plugin-catalog-common@npm:^1.1.10, @backstage/plugin-catalog-common@npm:^1.1.7, @backstage/plugin-catalog-common@npm:^1.1.9": version: 1.1.10 resolution: "@backstage/plugin-catalog-common@npm:1.1.10" dependencies: @@ -4085,6 +4940,30 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-catalog-node@npm:^2.1.0": + version: 2.2.3 + resolution: "@backstage/plugin-catalog-node@npm:2.2.3" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/catalog-client": "npm:^1.16.1" + "@backstage/catalog-model": "npm:^1.9.0" + "@backstage/errors": "npm:^1.3.1" + "@backstage/plugin-catalog-common": "npm:^1.1.10" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@backstage/plugin-permission-node": "npm:^0.11.2" + "@backstage/types": "npm:^1.2.2" + "@opentelemetry/api": "npm:^1.9.0" + lodash: "npm:^4.17.21" + yaml: "npm:^2.0.0" + peerDependencies: + "@backstage/backend-test-utils": ^1.11.5 + peerDependenciesMeta: + "@backstage/backend-test-utils": + optional: true + checksum: 10c0/57291ea0acbe791af9a3a88cc5461af481a29f7100f55f98fd970e89515df10f2df705484e6dce556dd083d298cdb843a724856043a42b064d272258d95135aa + languageName: node + linkType: hard + "@backstage/plugin-catalog-node@npm:^2.2.1": version: 2.2.1 resolution: "@backstage/plugin-catalog-node@npm:2.2.1" @@ -4150,6 +5029,53 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-catalog-react@npm:^2.1.1": + version: 2.1.4 + resolution: "@backstage/plugin-catalog-react@npm:2.1.4" + dependencies: + "@backstage/catalog-client": "npm:^1.15.0" + "@backstage/catalog-model": "npm:^1.8.0" + "@backstage/core-compat-api": "npm:^0.5.10" + "@backstage/core-components": "npm:^0.18.9" + "@backstage/core-plugin-api": "npm:^1.12.5" + "@backstage/errors": "npm:^1.3.0" + "@backstage/filter-predicates": "npm:^0.1.2" + "@backstage/frontend-plugin-api": "npm:^0.16.2" + "@backstage/integration-react": "npm:^1.2.17" + "@backstage/plugin-catalog-common": "npm:^1.1.9" + "@backstage/plugin-permission-common": "npm:^0.9.8" + "@backstage/plugin-permission-react": "npm:^0.5.0" + "@backstage/types": "npm:^1.2.2" + "@backstage/ui": "npm:^0.14.2" + "@backstage/version-bridge": "npm:^1.0.12" + "@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" + "@remixicon/react": "npm:^4.6.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" + zod: "npm:^4.0.0" + peerDependencies: + "@backstage/frontend-test-utils": ^0.5.2 + "@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: + "@backstage/frontend-test-utils": + optional: true + "@types/react": + optional: true + checksum: 10c0/581d670a099835254d12ff224db6c67e7b986e227b975ced5cb1f2df349011102b85434fc51d2e49a50c513613e3feab8e99a00224c852440cb3bfbbebbb2ca4 + languageName: node + linkType: hard + "@backstage/plugin-catalog-react@npm:^3.0.0": version: 3.0.0 resolution: "@backstage/plugin-catalog-react@npm:3.0.0" @@ -4196,6 +5122,52 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-catalog-react@npm:^3.2.0": + version: 3.2.0 + resolution: "@backstage/plugin-catalog-react@npm:3.2.0" + dependencies: + "@backstage/catalog-client": "npm:^1.16.1" + "@backstage/catalog-model": "npm:^1.9.0" + "@backstage/core-compat-api": "npm:^0.5.13" + "@backstage/core-components": "npm:^0.18.12" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/filter-predicates": "npm:^0.1.4" + "@backstage/frontend-plugin-api": "npm:^0.17.3" + "@backstage/integration-react": "npm:^1.2.20" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@backstage/plugin-permission-react": "npm:^0.5.3" + "@backstage/types": "npm:^1.2.2" + "@backstage/ui": "npm:^0.17.0" + "@backstage/version-bridge": "npm:^1.0.12" + "@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" + "@remixicon/react": "npm:>=4.6.0 <4.9.0" + classnames: "npm:^2.2.6" + lodash: "npm:^4.17.21" + material-ui-popup-state: "npm:^5.3.6" + qs: "npm:^6.15.2" + react-use: "npm:^17.2.4" + yaml: "npm:^2.0.0" + zen-observable: "npm:^0.10.0" + zod: "npm:^4.0.0" + peerDependencies: + "@backstage/frontend-test-utils": ^0.6.2 + "@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: + "@backstage/frontend-test-utils": + optional: true + "@types/react": + optional: true + checksum: 10c0/dee0b80998d0ab98c073e1dd688c6c4398e59f5a247402096a3d9b02c71e0f332f223203c530518ebc9e15347954c963f8e869ab03b7c37a4fda4e2ddbfc4244 + languageName: node + linkType: hard + "@backstage/plugin-catalog@npm:^2.0.5": version: 2.0.5 resolution: "@backstage/plugin-catalog@npm:2.0.5" @@ -4279,6 +5251,23 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-events-node@npm:^0.4.20, @backstage/plugin-events-node@npm:^0.4.24": + version: 0.4.24 + resolution: "@backstage/plugin-events-node@npm:0.4.24" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/errors": "npm:^1.3.1" + "@backstage/types": "npm:^1.2.2" + "@types/content-type": "npm:^1.1.8" + "@types/express": "npm:^4.17.6" + content-type: "npm:^1.0.5" + cross-fetch: "npm:^4.0.0" + express: "npm:^4.22.0" + uri-template: "npm:^2.0.0" + checksum: 10c0/2a115f81c5b6ddad01a1aeaa0bcd5fe331f07490ec2f9658dbb2b61a4472f5a7039d7af18cf3219c5aa84c895dae91679d3c1bc6f200a506cadcc02fe1c17b9b + languageName: node + linkType: hard + "@backstage/plugin-home-react@npm:^0.1.38": version: 0.1.38 resolution: "@backstage/plugin-home-react@npm:0.1.38" @@ -4521,7 +5510,7 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-permission-common@npm:^0.9.3, @backstage/plugin-permission-common@npm:^0.9.5, @backstage/plugin-permission-common@npm:^0.9.9": +"@backstage/plugin-permission-common@npm:^0.9.3, @backstage/plugin-permission-common@npm:^0.9.5, @backstage/plugin-permission-common@npm:^0.9.7, @backstage/plugin-permission-common@npm:^0.9.8, @backstage/plugin-permission-common@npm:^0.9.9": version: 0.9.9 resolution: "@backstage/plugin-permission-common@npm:0.9.9" dependencies: @@ -4535,6 +5524,24 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-permission-node@npm:^0.10.11": + version: 0.10.12 + resolution: "@backstage/plugin-permission-node@npm:0.10.12" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.0" + "@backstage/config": "npm:^1.3.7" + "@backstage/errors": "npm:^1.3.0" + "@backstage/plugin-auth-node": "npm:^0.7.0" + "@backstage/plugin-permission-common": "npm:^0.9.8" + "@types/express": "npm:^4.17.6" + express: "npm:^4.22.0" + express-promise-router: "npm:^4.1.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + checksum: 10c0/5ce96d2c168586b5c9ae70e1df120d8829315d07e978029dc3ba8f5aff3548702abf5e7cb75504747ce2bcf63405dd764a69cc81dad065cad5a74985ad3df139 + languageName: node + linkType: hard + "@backstage/plugin-permission-node@npm:^0.10.7, @backstage/plugin-permission-node@npm:^0.10.9": version: 0.10.9 resolution: "@backstage/plugin-permission-node@npm:0.10.9" @@ -4570,6 +5577,23 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-permission-node@npm:^0.11.2": + version: 0.11.2 + resolution: "@backstage/plugin-permission-node@npm:0.11.2" + dependencies: + "@backstage/backend-plugin-api": "npm:^1.9.3" + "@backstage/config": "npm:^1.3.8" + "@backstage/errors": "npm:^1.3.1" + "@backstage/plugin-permission-common": "npm:^0.9.9" + "@types/express": "npm:^4.17.6" + express: "npm:^4.22.0" + express-promise-router: "npm:^4.1.0" + zod: "npm:^3.25.76 || ^4.0.0" + zod-to-json-schema: "npm:^3.25.1" + checksum: 10c0/70ac2494ff39fd55dfb82dad8f7be6fab91b0b21fdba3e978b2108b63cf4848f89f7bd38578629d71ddd072af7b3c4ad0c1d8916e20e4bdce88e8201c7e97d3d + languageName: node + linkType: hard + "@backstage/plugin-permission-react@npm:^0.4.39": version: 0.4.39 resolution: "@backstage/plugin-permission-react@npm:0.4.39" @@ -4590,6 +5614,26 @@ __metadata: languageName: node linkType: hard +"@backstage/plugin-permission-react@npm:^0.5.0, @backstage/plugin-permission-react@npm:^0.5.3": + version: 0.5.3 + resolution: "@backstage/plugin-permission-react@npm:0.5.3" + dependencies: + "@backstage/config": "npm:^1.3.8" + "@backstage/core-plugin-api": "npm:^1.12.8" + "@backstage/plugin-permission-common": "npm:^0.9.9" + 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 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/2cc5c076fdc7bf28aee8dd68b8073b2f1439a9d8f73b8fb486517f94d84493e4ab36ac3bd4ca92b235d4f41a4849757f288c253488c45821d2c052ef815a32e4 + languageName: node + linkType: hard + "@backstage/plugin-permission-react@npm:^0.5.1": version: 0.5.1 resolution: "@backstage/plugin-permission-react@npm:0.5.1" @@ -5405,6 +6449,30 @@ __metadata: languageName: node linkType: hard +"@backstage/ui@npm:^0.14.2": + version: 0.14.3 + resolution: "@backstage/ui@npm:0.14.3" + dependencies: + "@backstage/version-bridge": "npm:^1.0.12" + "@remixicon/react": "npm:^4.6.0" + "@tanstack/react-table": "npm:^8.21.3" + clsx: "npm:^2.1.1" + react-aria: "npm:~3.48.0" + react-aria-components: "npm:~1.17.0" + react-stately: "npm:~3.46.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + "@types/react": ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + react-router-dom: ^6.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/1b1854db882f94d605ee270160cb95b72e8e8328b2fcc638d03590a27f3e4579da04272059168bbf152baf3bdf7b91e8d1ed55659bd80bde582fa5d8f20e7c72 + languageName: node + linkType: hard + "@backstage/ui@npm:^0.15.0": version: 0.15.0 resolution: "@backstage/ui@npm:0.15.0" @@ -5432,6 +6500,33 @@ __metadata: languageName: node linkType: hard +"@backstage/ui@npm:^0.17.0": + version: 0.17.0 + resolution: "@backstage/ui@npm:0.17.0" + dependencies: + "@backstage/version-bridge": "npm:^1.0.12" + "@braintree/sanitize-url": "npm:^7.1.2" + "@internationalized/date": "npm:^3.12.0" + "@remixicon/react": "npm:>=4.6.0 <4.9.0" + "@tanstack/react-table": "npm:^8.21.3" + clsx: "npm:^2.1.1" + marked: "npm:^15.0.12" + react-aria: "npm:~3.48.0" + react-aria-components: "npm:~1.17.0" + react-stately: "npm:~3.46.0" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + "@types/react": ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + react-router-dom: ^6.30.2 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/0e36fa81bfc6b872ef69e369e00fae6a020232e49e6997bb81ba027f783d6a8a539ecc761ed93cf5b80c2810ee71a20ef27e475f2a33b8343333c699348ad68d + languageName: node + linkType: hard + "@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" @@ -7644,6 +8739,15 @@ __metadata: languageName: node linkType: hard +"@jsdoc/salty@npm:^0.2.1": + version: 0.2.12 + resolution: "@jsdoc/salty@npm:0.2.12" + dependencies: + lodash: "npm:^4.18.1" + checksum: 10c0/46eff8275fed2102dea17762a1ee6266532b154ebce99326775e5cd4a1953d2f0ad4f6418539af09d017c855f65ce71a01270a62d16d0006e04776997aac5bd6 + languageName: node + linkType: hard + "@jsep-plugin/assignment@npm:^1.3.0": version: 1.3.0 resolution: "@jsep-plugin/assignment@npm:1.3.0" @@ -10313,6 +11417,8 @@ __metadata: dependencies: "@backstage-community/plugin-github-actions": "npm:^0.20.0" "@backstage-community/plugin-jenkins": "npm:^0.28.0" + "@backstage-community/plugin-sonarqube": "npm:^1.1.0" + "@backstage-community/plugin-sonarqube-react": "npm:^1.1.0" "@backstage/catalog-client": "npm:^1.15.1" "@backstage/catalog-model": "npm:^1.9.0" "@backstage/cli": "npm:^0.36.2" @@ -15562,6 +16668,13 @@ __metadata: languageName: node linkType: hard +"@types/linkify-it@npm:^5": + version: 5.0.0 + resolution: "@types/linkify-it@npm:5.0.0" + checksum: 10c0/7bbbf45b9dde17bf3f184fee585aef0e7342f6954f0377a24e4ff42ab5a85d5b806aaa5c8d16e2faf2a6b87b2d94467a196b7d2b85c9c7de2f0eaac5487aaab8 + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.189": version: 4.17.20 resolution: "@types/lodash@npm:4.17.20" @@ -15597,6 +16710,16 @@ __metadata: languageName: node linkType: hard +"@types/markdown-it@npm:^14.1.1": + version: 14.1.2 + resolution: "@types/markdown-it@npm:14.1.2" + dependencies: + "@types/linkify-it": "npm:^5" + "@types/mdurl": "npm:^2" + checksum: 10c0/34f709f0476bd4e7b2ba7c3341072a6d532f1f4cb6f70aef371e403af8a08a7c372ba6907ac426bc618d356dab660c5b872791ff6c1ead80c483e0d639c6f127 + languageName: node + linkType: hard + "@types/mdast@npm:^3.0.0": version: 3.0.15 resolution: "@types/mdast@npm:3.0.15" @@ -15615,6 +16738,13 @@ __metadata: languageName: node linkType: hard +"@types/mdurl@npm:^2": + version: 2.0.0 + resolution: "@types/mdurl@npm:2.0.0" + checksum: 10c0/cde7bb571630ed1ceb3b92a28f7b59890bb38b8f34cd35326e2df43eebfc74985e6aa6fd4184e307393bad8a9e0783a519a3f9d13c8e03788c0f98e5ec869c5e + languageName: node + linkType: hard + "@types/mdx@npm:^2.0.0": version: 2.0.14 resolution: "@types/mdx@npm:2.0.14" @@ -17690,8 +18820,10 @@ __metadata: version: 0.0.0-use.local resolution: "backend@workspace:packages/backend" dependencies: + "@backstage-community/plugin-sonarqube-backend": "npm:^1.1.1" "@backstage/backend-defaults": "npm:^0.17.1" "@backstage/backend-plugin-api": "npm:^1.9.1" + "@backstage/backend-test-utils": "npm:^1.11.5" "@backstage/cli": "npm:^0.36.2" "@backstage/config": "npm:^1.3.8" "@backstage/plugin-auth-node": "npm:^0.7.1" @@ -18579,6 +19711,15 @@ __metadata: languageName: node linkType: hard +"catharsis@npm:^0.9.0": + version: 0.9.0 + resolution: "catharsis@npm:0.9.0" + dependencies: + lodash: "npm:^4.17.15" + checksum: 10c0/9ac03ca48154ac63cfdb6c1645481d9d04f3c3e0dea131debf3116a0c12aa47e8864be7dcf770932c46d75bdd844a99f0c116c234e57232ad1f427751498e7ed + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -18821,7 +19962,7 @@ __metadata: languageName: node linkType: hard -"cleye@npm:^2.3.0": +"cleye@npm:^2.3.0, cleye@npm:^2.6.0": version: 2.6.0 resolution: "cleye@npm:2.6.0" dependencies: @@ -22363,7 +23504,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.21.2, express@npm:^4.22.0, express@npm:^4.22.1": +"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.21.2, express@npm:^4.22.0, express@npm:^4.22.1": version: 4.22.2 resolution: "express@npm:4.22.2" dependencies: @@ -23025,7 +24166,7 @@ __metadata: languageName: node linkType: hard -"formstream@npm:^1.1.1": +"formstream@npm:^1.1.1, formstream@npm:^1.5.2": version: 1.5.2 resolution: "formstream@npm:1.5.2" dependencies: @@ -23574,7 +24715,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^13.0.0": +"glob@npm:^13.0.0, glob@npm:^13.0.6": version: 13.0.6 resolution: "glob@npm:13.0.6" dependencies: @@ -23751,7 +24892,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -24856,6 +25997,20 @@ __metadata: languageName: node linkType: hard +"infinispan@npm:^0.13.0": + version: 0.13.0 + resolution: "infinispan@npm:0.13.0" + dependencies: + buffer-xor: "npm:^2.0.2" + jsdoc: "npm:^4.0.2" + log4js: "npm:^6.4.6" + protobufjs: "npm:^7.0.0" + underscore: "npm:^1.13.3" + urllib: "npm:^4.9.0" + checksum: 10c0/1aa487b35584dc490e481b9530fee98c41485c69a250bbc8c52583fc898e01221233d977a4c51cd6f5e3734ab1b447b5c5b5b34820d78dd007320198e833d4ce + languageName: node + linkType: hard + "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -26389,6 +27544,26 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.2.0": + version: 4.3.1 + resolution: "js-yaml@npm:4.3.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/13c500ca322e0c3f8c81686e6ecda96d2ea37b45247a420c17c7db36932d6965cc27391abc2d1a104501600e7f0d947a5f8b7be6db619c4fefa87901b3512807 + languageName: node + linkType: hard + +"js2xmlparser@npm:^4.0.2": + version: 4.0.2 + resolution: "js2xmlparser@npm:4.0.2" + dependencies: + xmlcreate: "npm:^2.0.4" + checksum: 10c0/b00de9351649d67d225e21734a08f456a4ecb3c29cafcd3bbecb36a8ab61ec841fad7f425bed50e21936fe387f472e49cfe75ce71d0beaacb0475b077c88ed39 + languageName: node + linkType: hard + "jsbn@npm:^1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -26403,6 +27578,31 @@ __metadata: languageName: node linkType: hard +"jsdoc@npm:^4.0.2": + version: 4.0.5 + resolution: "jsdoc@npm:4.0.5" + dependencies: + "@babel/parser": "npm:^7.20.15" + "@jsdoc/salty": "npm:^0.2.1" + "@types/markdown-it": "npm:^14.1.1" + bluebird: "npm:^3.7.2" + catharsis: "npm:^0.9.0" + escape-string-regexp: "npm:^2.0.0" + js2xmlparser: "npm:^4.0.2" + klaw: "npm:^3.0.0" + markdown-it: "npm:^14.1.0" + markdown-it-anchor: "npm:^8.6.7" + marked: "npm:^4.0.10" + mkdirp: "npm:^1.0.4" + requizzle: "npm:^0.2.3" + strip-json-comments: "npm:^3.1.0" + underscore: "npm:~1.13.2" + bin: + jsdoc: jsdoc.js + checksum: 10c0/8192c234f60c58ee67342eb0532f66118849a921df9486fe15132c9228badb5e1bc7d10233b0821e661ab02e94c045f4cb8c110f6264620aae9b73bee84e1cc5 + languageName: node + linkType: hard + "jsdom@npm:^20.0.0": version: 20.0.3 resolution: "jsdom@npm:20.0.3" @@ -26916,6 +28116,15 @@ __metadata: languageName: node linkType: hard +"klaw@npm:^3.0.0": + version: 3.0.0 + resolution: "klaw@npm:3.0.0" + dependencies: + graceful-fs: "npm:^4.1.9" + checksum: 10c0/8391cf6df6337dce02e44628b620b39412d007eff162d907d37063c23986041d9b5c3558851d473c2fae92c1ccb0fde8864e36f9c55ac339fc469b517a2caa1b + languageName: node + linkType: hard + "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -27668,6 +28877,16 @@ __metadata: languageName: node linkType: hard +"markdown-it-anchor@npm:^8.6.7": + version: 8.6.7 + resolution: "markdown-it-anchor@npm:8.6.7" + peerDependencies: + "@types/markdown-it": "*" + markdown-it: "*" + checksum: 10c0/f117866488013b7e4085a6b59d12bf62879181aef65ea2851f01ed1b763b8c052580c2c27fa8bd009421886220c6beeb373a65af9e885ce63a36ee9f8dcd0e89 + languageName: node + linkType: hard + "markdown-it@npm:^14.1.0": version: 14.1.0 resolution: "markdown-it@npm:14.1.0" @@ -27729,7 +28948,7 @@ __metadata: languageName: node linkType: hard -"marked@npm:^4.0.14": +"marked@npm:^4.0.10, marked@npm:^4.0.14": version: 4.3.0 resolution: "marked@npm:4.3.0" bin: @@ -29283,7 +30502,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -32234,7 +33453,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.12.2": +"qs@npm:^6.12.2, qs@npm:^6.15.0, qs@npm:^6.15.2": version: 6.15.3 resolution: "qs@npm:6.15.3" dependencies: @@ -32454,6 +33673,20 @@ __metadata: languageName: node linkType: hard +"rc-progress@npm:4.0.0": + version: 4.0.0 + resolution: "rc-progress@npm:4.0.0" + dependencies: + "@babel/runtime": "npm:^7.10.1" + classnames: "npm:^2.2.6" + rc-util: "npm:^5.16.1" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10c0/d3b47565470c5fec71a16f8d1939f1b1dd7d2dc9260893c6f70cafa84d9ee4231f3466be817db5fb9580932af46e34d52c74a710700ca9391b1901fa06c31f1e + languageName: node + linkType: hard + "rc-util@npm:^5.16.1": version: 5.44.4 resolution: "rc-util@npm:5.44.4" @@ -33691,6 +34924,15 @@ __metadata: languageName: node linkType: hard +"requizzle@npm:^0.2.3": + version: 0.2.4 + resolution: "requizzle@npm:0.2.4" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/ad138f987943aeda5f96cd1ccba9752c96352a729a7e3c3e2545568703f7fc9b978d9b46715803408ef178b0d61d36a4b1b506b367b7e78fe6d041fa5bfa5e06 + languageName: node + linkType: hard + "reselect@npm:5.1.1, reselect@npm:^5.1.0, reselect@npm:^5.1.1": version: 5.1.1 resolution: "reselect@npm:5.1.1" @@ -34367,7 +35609,7 @@ __metadata: languageName: node linkType: hard -"safe-stable-stringify@npm:^2.2.0, safe-stable-stringify@npm:^2.3.1": +"safe-stable-stringify@npm:^2.2.0, safe-stable-stringify@npm:^2.3.1, safe-stable-stringify@npm:^2.5.0": version: 2.5.0 resolution: "safe-stable-stringify@npm:2.5.0" checksum: 10c0/baea14971858cadd65df23894a40588ed791769db21bafb7fd7608397dbdce9c5aac60748abae9995e0fc37e15f2061980501e012cd48859740796bea2987f49 @@ -35660,7 +36902,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -36686,6 +37928,24 @@ __metadata: languageName: node linkType: hard +"ts-json-schema-generator@npm:^2.9.0": + version: 2.9.0 + resolution: "ts-json-schema-generator@npm:2.9.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + commander: "npm:^14.0.3" + glob: "npm:^13.0.6" + json5: "npm:^2.2.3" + normalize-path: "npm:^3.0.0" + safe-stable-stringify: "npm:^2.5.0" + tslib: "npm:^2.8.1" + typescript: "npm:^5.9.3" + bin: + ts-json-schema-generator: bin/ts-json-schema-generator.js + checksum: 10c0/edd3b2b9bd4bcff3074c2ac706965ea7c00f3f63f42bba557e32f12d9ed486f700e0a180a027462a53235ad22b08a2dda2ce8d1101f2d3724c9df3487abdf0da + languageName: node + linkType: hard + "ts-mixer@npm:^6.0.3, ts-mixer@npm:^6.0.4": version: 6.0.4 resolution: "ts-mixer@npm:6.0.4" @@ -36868,7 +38128,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.3.1, type-fest@npm:^4.39.1": +"type-fest@npm:^4.3.1, type-fest@npm:^4.39.1, type-fest@npm:^4.41.0": version: 4.41.0 resolution: "type-fest@npm:4.41.0" checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4 @@ -37008,6 +38268,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^5.9.3": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 + languageName: node + linkType: hard + "typescript@npm:~5.5.0": version: 5.5.4 resolution: "typescript@npm:5.5.4" @@ -37028,6 +38298,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6f7e53bf0d9702350deeb6f35e08b69cbc8b958c33e0ec77bdc0ad6a6c8e280f3959dcbfde6f5b0848bece57810696489deaaa53d75de3578ff255d168c1efbd + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A~5.5.0#optional!builtin": version: 5.5.4 resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=379a07" @@ -37096,6 +38376,13 @@ __metadata: languageName: node linkType: hard +"underscore@npm:~1.13.2": + version: 1.13.8 + resolution: "underscore@npm:1.13.8" + checksum: 10c0/6677688daeda30484823e77c0b89ce4dcf29964a77d5a06f37299c007ab4bb1c66a0ff75e0d274620b62a1fe2a6ba29879f8214533ca611d71a1ae504f2bfc9b + languageName: node + linkType: hard + "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -37140,6 +38427,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.24.0": + version: 7.29.0 + resolution: "undici@npm:7.29.0" + checksum: 10c0/85ea96e91e7f3de24de678cbbc54230fdd641a3b0643005f2aef044af1f1a2db8fbecb88b28e6fa78bb41ffeafda4479b57075b6b6ab92beac4b7b5ab53f9b10 + languageName: node + linkType: hard + "unicode-emoji-modifier-base@npm:^1.0.0": version: 1.0.0 resolution: "unicode-emoji-modifier-base@npm:1.0.0" @@ -37480,6 +38774,21 @@ __metadata: languageName: node linkType: hard +"urllib@npm:^4.9.0": + version: 4.9.1 + resolution: "urllib@npm:4.9.1" + dependencies: + form-data: "npm:^4.0.5" + formstream: "npm:^1.5.2" + mime-types: "npm:^2.1.35" + qs: "npm:^6.15.0" + type-fest: "npm:^4.41.0" + undici: "npm:^7.24.0" + ylru: "npm:^2.0.0" + checksum: 10c0/e73d0b0a3ae781e65ab79729e539519d4b941a28e0d8be55e4a1de9cd4723d6611cbaa74bc23cf855504b3461064ccdfed8bb2ad25621e0b97ddebcee6058a7a + languageName: node + linkType: hard + "urlpattern-polyfill@npm:^8.0.0": version: 8.0.2 resolution: "urlpattern-polyfill@npm:8.0.2" @@ -38536,6 +39845,13 @@ __metadata: languageName: node linkType: hard +"xmlcreate@npm:^2.0.4": + version: 2.0.4 + resolution: "xmlcreate@npm:2.0.4" + checksum: 10c0/fc4234e2d1942877d761d4f3d64410b54633d2ec60b13a5d56a6a06545aba39a0df8ed7ded10785a302f632eb4f0a4fedbf4bf10e17892e11d5075244b9e5705 + languageName: node + linkType: hard + "xtend@npm:^4.0.0, xtend@npm:^4.0.2": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -38655,6 +39971,13 @@ __metadata: languageName: node linkType: hard +"ylru@npm:^2.0.0": + version: 2.0.0 + resolution: "ylru@npm:2.0.0" + checksum: 10c0/f44f0b3cdeedff3cc298c3db680bf9eb536d6fb8cff1d881b7497e181d52173f9e206f95d2a869fd2596515c2ae21aad57e2c0e98f51da40a0179858bdb34201 + languageName: node + linkType: hard + "yml-loader@npm:^2.1.0": version: 2.1.0 resolution: "yml-loader@npm:2.1.0" @@ -38679,6 +40002,13 @@ __metadata: languageName: node linkType: hard +"yn@npm:^5.0.0": + version: 5.1.0 + resolution: "yn@npm:5.1.0" + checksum: 10c0/feac0bc3520dc3e6366d0b14c89713c55edcfdcbab6d39a098528279069cbb4caaa54938b90a36f52f72289b83d93d50fa8184693467f096aeb040b559ec8699 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"