diff --git a/plugins/report-portal-backend/README.md b/plugins/report-portal-backend/README.md index 5fc78f75aa..839c755bbe 100644 --- a/plugins/report-portal-backend/README.md +++ b/plugins/report-portal-backend/README.md @@ -12,3 +12,64 @@ start` in the root directory, and then navigating to [/report-portal](http://loc You can also serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. + +## Installation + +- Install the plugin + ```shell + yarn workspace backend add @janus-idp/backstage-plugin-report-portal-backend + ``` +- Update the following files + + - Create `/packages/backend/src/plugins/report-portal.ts` and add following code: + + ```ts + import { createRouter } from '@appdev-platform/backstage-plugin-report-portal-backend'; + import { Router } from 'express'; + + import { PluginEnvironment } from '../types'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + return await createRouter({ logger: env.logger, config: env.config }); + } + ``` + + - Add following lines to `/packages/backend/src/index.ts`: + + ```ts + import reportPortal from './plugins/report-portal'; + + async function main() { + // add the files to create backend router + const reportPortalEnv = useHotMemoize(module, () => + createEnv('report-portal'), + ); + apiRouter.use('/report-portal', await reportPortal(reportPortalEnv)); + } + ``` + +- Add below configuration to `app-config.yaml`: + + ```yaml + reportPortal: + # under integrations you can configure- + # multiple instances of report portal + integrations: + # host address of your instance + # for e.g: report-portal.mycorp.com + - host: ${REPORT_PORTAL_HOST} + + # Baser API url of your instance + # for e.g: https://report-portal.mycorp.com/api/ + baseUrl: ${REPORT_PORTAL_BASE_URL} + + # Get the API key from profile page of your instance + # for e.g: Bearer fae22be1-0000-0000-8392-de1635eed9f4 + token: ${REPORT_PORTAL_TOKEN} + + # (optional) Filter the projects by type + # Default: "INTERNAL" + filterType: 'INTERNAL' + ``` diff --git a/plugins/report-portal-backend/config.d.ts b/plugins/report-portal-backend/config.d.ts index 3dec6e4add..f867b42a69 100644 --- a/plugins/report-portal-backend/config.d.ts +++ b/plugins/report-portal-backend/config.d.ts @@ -6,6 +6,7 @@ export interface Config { integrations: Array<{ /** * Host of report portal url + * @visibility frontend */ host: string; /** diff --git a/plugins/report-portal-backend/package.json b/plugins/report-portal-backend/package.json index 034f16aea7..378f5de8f6 100644 --- a/plugins/report-portal-backend/package.json +++ b/plugins/report-portal-backend/package.json @@ -40,7 +40,7 @@ "tsc": "tsc" }, "dependencies": { - "@backstage/backend-common": "^0.19.8", + "@backstage/backend-common": "^0.21.0", "@backstage/backend-plugin-api": "^0.6.6", "@backstage/backend-plugin-manager": "npm:@janus-idp/backend-plugin-manager@0.0.2-janus.5", "@backstage/config": "^1.1.1", diff --git a/plugins/report-portal-backend/src/service/router.test.ts b/plugins/report-portal-backend/src/service/router.test.ts index 0e13957bc8..1825569622 100644 --- a/plugins/report-portal-backend/src/service/router.test.ts +++ b/plugins/report-portal-backend/src/service/router.test.ts @@ -1,4 +1,5 @@ import { getVoidLogger } from '@backstage/backend-common'; +import { ConfigReader } from '@backstage/config'; import express from 'express'; import request from 'supertest'; @@ -11,6 +12,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ logger: getVoidLogger(), + config: new ConfigReader({}), }); app = express().use(router); }); diff --git a/plugins/report-portal-backend/src/service/router.ts b/plugins/report-portal-backend/src/service/router.ts index ad5fe27910..cf7c4f9750 100644 --- a/plugins/report-portal-backend/src/service/router.ts +++ b/plugins/report-portal-backend/src/service/router.ts @@ -14,7 +14,7 @@ export interface RouterOptions { export async function createRouter( options: RouterOptions, ): Promise { - const { logger, config } = options; + const { config } = options; const hostsConfig = config.getConfigArray('reportPortal.integrations'); const router = Router(); diff --git a/plugins/report-portal-backend/src/service/standaloneServer.ts b/plugins/report-portal-backend/src/service/standaloneServer.ts index 9964ca65d2..bcccc5138c 100644 --- a/plugins/report-portal-backend/src/service/standaloneServer.ts +++ b/plugins/report-portal-backend/src/service/standaloneServer.ts @@ -1,5 +1,5 @@ import { createServiceBuilder } from '@backstage/backend-common'; -import { Config, ConfigReader } from '@backstage/config'; +import { ConfigReader } from '@backstage/config'; import { Logger } from 'winston'; diff --git a/plugins/report-portal/README.md b/plugins/report-portal/README.md index cf4433cb3d..504019ab5c 100644 --- a/plugins/report-portal/README.md +++ b/plugins/report-portal/README.md @@ -11,3 +11,83 @@ Your plugin has been added to the example app in this repository, meaning you'll You can also serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. + +## Prequisite + +- [report-portal-backend](../report-portal/) plugin + +## Installation: + +- Run the following command in your backstage project + + ```shell + yarn workspace app add @janus-idp/report-portal + ``` + +- Now import the components + + - open `/packages/app/src/App.tsx` and add the following code + + ```js + import { ReportPortalGlobalPage } from '@janus-idp/backstage-plugin-report-portal'; + + export const AppBase = () => { + // In add the following route + } />; + }; + ``` + + - open `/packages/app/src/components/Root/Root.tsx` and add the following code + + ```js + import AssessmentIcon from '@material-ui/icons/Assessment'; + //... + //... + export const Root = ({ children }: PropsWithChildren<{}>) => ( + + + + + + ) + ``` + + - To add a card on overview tab of entity page, open `/packages/app/src/components/catalog/EntityPage.tsx` and add the following code: + + ```js + import { ReportPortalOverviewCard } from '@janus-idp/backstage-plugin-report-portal'; + + const overviewContent = ( + + + + + + + + ); + ``` + +- Add the below configuration to your `app-config.yaml` file + + ```yaml + reportPortal: + # under integrations you can configure- + # multiple instances of report portal + integrations: + # host address of your instance + # for e.g: report-portal.mycorp.com + - host: ${REPORT_PORTAL_HOST} + + # Baser API url of your instance + # for e.g: https://report-portal.mycorp.com/api/ + baseUrl: ${REPORT_PORTAL_BASE_URL} + + # Get the API key from profile page of your instance + # for e.g: Bearer fae22be1-0000-0000-8392-de1635eed9f4 + token: ${REPORT_PORTAL_TOKEN} + + # (optional) Filter the projects by type + # Default: "INTERNAL" + filterType: 'INTERNAL' + ``` diff --git a/plugins/report-portal/config.d.ts b/plugins/report-portal/config.d.ts index 5728ccd9e1..29da26f765 100644 --- a/plugins/report-portal/config.d.ts +++ b/plugins/report-portal/config.d.ts @@ -1 +1,19 @@ -export interface Config {} +export interface Config { + /** + * Configuration values for Report Portal plugin + */ + reportPortal: { + integrations: Array<{ + /** + * Host of report portal url + * @visibility frontend + */ + host: string; + /** + * Type of projects to list + * @visibility frontend + */ + filterType: string; + }>; + }; +} diff --git a/plugins/report-portal/dev/index.tsx b/plugins/report-portal/dev/index.tsx index 623d94d88a..6f050f14c1 100644 --- a/plugins/report-portal/dev/index.tsx +++ b/plugins/report-portal/dev/index.tsx @@ -4,7 +4,6 @@ import { createDevApp } from '@backstage/dev-utils'; import { EntityAboutCard, EntityHasSubcomponentsCard, - EntityLayout, EntityLinksCard, } from '@backstage/plugin-catalog'; import { EntityProvider } from '@backstage/plugin-catalog-react'; diff --git a/plugins/report-portal/package.json b/plugins/report-portal/package.json new file mode 100644 index 0000000000..49fa1f14cc --- /dev/null +++ b/plugins/report-portal/package.json @@ -0,0 +1,76 @@ +{ + "name": "@appdev-platform/backstage-plugin-report-portal", + "version": "0.1.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin" + }, + "sideEffects": false, + "scripts": { + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "export-dynamic": "janus-cli package export-dynamic-plugin", + "lint": "backstage-cli package lint", + "postpack": "backstage-cli package postpack", + "postversion": "yarn run export-dynamic", + "prepack": "backstage-cli package prepack", + "start": "backstage-cli package start", + "test": "backstage-cli package test --passWithNoTests --coverage", + "tsc": "tsc" + }, + "dependencies": { + "@backstage/catalog-model": "^1.4.4", + "@backstage/core-components": "^0.14.0", + "@backstage/core-plugin-api": "^1.9.0", + "@backstage/plugin-catalog-react": "^1.10.0", + "@backstage/theme": "^0.5.1", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.11.3", + "@material-ui/lab": "^4.0.0-alpha.61", + "moment": "^2.30.1", + "react-multi-progress": "^1.3.0", + "react-use": "^17.2.4" + }, + "peerDependencies": { + "react": "16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "^6.22.0" + }, + "devDependencies": { + "@backstage/cli": "0.25.2", + "@backstage/core-app-api": "1.11.0", + "@backstage/dev-utils": "1.0.22", + "@backstage/plugin-catalog": "^1.16.1", + "@backstage/test-utils": "1.5.0", + "@janus-idp/cli": "1.7.3", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "msw": "1.0.0" + }, + "files": [ + "dist", + "config.d.ts", + "dist-scalprum", + "app-config.janus-idp.yaml" + ], + "configSchema": "config.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/janus-idp/backstage-plugins", + "directory": "plugins/report-portal" + }, + "keywords": [ + "backstage", + "plugin" + ], + "homepage": "https://janus-idp.io/", + "bugs": "https://github.com/janus-idp/backstage-plugins/issues" +} diff --git a/plugins/report-portal/src/api/ReportPortalApi.ts b/plugins/report-portal/src/api/ReportPortalApi.ts index 4c9984cef7..19a3a36d57 100644 --- a/plugins/report-portal/src/api/ReportPortalApi.ts +++ b/plugins/report-portal/src/api/ReportPortalApi.ts @@ -1,6 +1,6 @@ import { ApiRef, createApiRef } from '@backstage/core-plugin-api'; -import { LaunchDetailsResp, ProjectDetails } from './types'; +import { LaunchDetailsResp, ProjectDetails, ProjectListResp } from './types'; /** @public */ export const reportPortalApiRef: ApiRef = createApiRef({ @@ -8,13 +8,18 @@ export const reportPortalApiRef: ApiRef = createApiRef({ }); export type ReportPortalApi = { + getReportPortalBaseUrl: (host: string) => string; getLaunchResults: ( projectId: string, - filter: string, host: string, + filters: { [key: string]: string | number } | undefined, ) => Promise; getProjectDetails: ( projectId: string, host: string, ) => Promise; + getInstanceDetails: ( + host: string, + filters: { [key: string]: string | number } | undefined, + ) => Promise; }; diff --git a/plugins/report-portal/src/api/ReportPortalClient.ts b/plugins/report-portal/src/api/ReportPortalClient.ts new file mode 100644 index 0000000000..30e82fff0c --- /dev/null +++ b/plugins/report-portal/src/api/ReportPortalClient.ts @@ -0,0 +1,66 @@ +import { DiscoveryApi } from '@backstage/core-plugin-api'; + +import { ReportPortalApi } from './ReportPortalApi'; +import { LaunchDetailsResp, ProjectDetails, ProjectListResp } from './types'; + +export class ReportPortalClient implements ReportPortalApi { + constructor(private readonly discoveryApi: DiscoveryApi) {} + + private async getBaseApiUrl() { + return `${await this.discoveryApi.getBaseUrl('report-portal')}/v1/`; + } + + getReportPortalBaseUrl(host: string) { + return `https://${host}/`; + } + + async getLaunchResults( + projectId: string, + host: string, + filters: { [key: string]: string | number } | undefined, + ) { + const baseUrl = new URL( + `${projectId}/launch/latest`, + await this.getBaseApiUrl(), + ); + if (filters) { + Object.keys(filters).forEach(key => + baseUrl.searchParams.append(key, filters[key] as string), + ); + } + baseUrl.searchParams.append('host', host); + const response = await fetch(baseUrl); + if (response.status >= 400 && response.status < 600) { + throw new Error('Failed to fetch launch details'); + } + return (await response.json()) as LaunchDetailsResp; + } + + async getProjectDetails(projectId: string, host: string) { + const baseUrl = new URL(`project/${projectId}`, await this.getBaseApiUrl()); + baseUrl.searchParams.append('host', host); + const response = await fetch(baseUrl); + if (response.status >= 400 && response.status < 600) { + throw new Error('Failed to fetch project details'); + } + return (await response.json()) as ProjectDetails; + } + + async getInstanceDetails( + host: string, + filters: { [key: string]: string | number } | undefined, + ) { + const baseUrl = new URL('project/list', await this.getBaseApiUrl()); + if (filters) { + Object.keys(filters).forEach(key => + baseUrl.searchParams.append(key, filters[key] as string), + ); + } + baseUrl.searchParams.append('host', host); + const response = await fetch(baseUrl); + if (response.status >= 400 && response.status < 600) { + throw new Error('Failed to get instance details'); + } + return (await response.json()) as ProjectListResp; + } +} diff --git a/plugins/report-portal/src/api/types.ts b/plugins/report-portal/src/api/types.ts index 8f1b5fc40c..38a3230275 100644 --- a/plugins/report-portal/src/api/types.ts +++ b/plugins/report-portal/src/api/types.ts @@ -1,6 +1,15 @@ export type ProjectDetails = { projectId: number; projectName: string; + usersQuantity: number; + id: number; + launchesQuantity: number; + launchesPerUser: null; + uniqueTickets: null; + launchesPerWeek: null; + lastRun: number; + entryType: string; + organization: null; configuration: { subTypes: { [key: string]: [ @@ -57,12 +66,19 @@ export type LaunchDetails = { }; }; +export type PageType = { + number: number; + size: number; + totalElements: number; + totalPages: number; +}; + export type LaunchDetailsResp = { - content: [LaunchDetails]; - page: { - number: number; - size: number; - totalElements: number; - totalPages: number; - }; + content: LaunchDetails[]; + page: PageType; +}; + +export type ProjectListResp = { + content: ProjectDetails[]; + page: PageType; }; diff --git a/plugins/report-portal/src/components/LaunchesPage/LaunchesPage.tsx b/plugins/report-portal/src/components/LaunchesPage/LaunchesPage.tsx new file mode 100644 index 0000000000..b512c7f4da --- /dev/null +++ b/plugins/report-portal/src/components/LaunchesPage/LaunchesPage.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +import { + Breadcrumbs, + Content, + Header, + HeaderIconLinkRow, + Link, + Page, + useQueryParamState, +} from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; + +import AssessmentIcon from '@material-ui/icons/Assessment'; + +import { projectsRouteRef, rootRouteRef } from '../../routes'; +import { LaunchesPageContent } from './LaunchesPageContent/LaunchesPageContent'; + +export const LaunchesPage = () => { + const rootR = useRouteRef(rootRouteRef); + const projectsPage = useRouteRef(projectsRouteRef); + const hostName = useQueryParamState('host')[0] as string; + const projectName = useQueryParamState('project')[0] as string; + + return ( + +
+ + + report-portal + + + {hostName} + + {projectName} + +
{projectName}
+ + } + > + , + }, + ]} + /> +
+ + + +
+ ); +}; diff --git a/plugins/report-portal/src/components/LaunchesPage/LaunchesPageContent/LaunchesPageContent.tsx b/plugins/report-portal/src/components/LaunchesPage/LaunchesPageContent/LaunchesPageContent.tsx new file mode 100644 index 0000000000..a25ef09111 --- /dev/null +++ b/plugins/report-portal/src/components/LaunchesPage/LaunchesPageContent/LaunchesPageContent.tsx @@ -0,0 +1,175 @@ +import React, { useEffect, useState } from 'react'; + +import { Table, TableColumn } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { IconButton, Link } from '@material-ui/core'; +import Launch from '@material-ui/icons/Launch'; +import moment from 'moment'; + +import { LaunchDetailsResp, PageType, reportPortalApiRef } from '../../../api'; + +type LaunchDetails = { + id: number; + launchName: string; + number: number; + total: number; + passed: number; + failed: number; + skipped: number; + startTime: number; +}; + +export const LaunchesPageContent = (props: { + host: string; + project: string; +}) => { + const { host, project } = props; + const reportPortalApi = useApi(reportPortalApiRef); + + const [loading, setLoading] = useState(true); + const [tableData, setTableData] = useState<{ + launches: LaunchDetails[]; + page: PageType; + }>({ + launches: [], + page: { + number: 1, + size: 10, + totalElements: 0, + totalPages: 1, + }, + }); + + useEffect(() => { + setLoading(true); + reportPortalApi + .getLaunchResults(project, host, { + 'page.size': 10, + 'page.page': 1, + 'page.sort': 'startTime,DESC', + }) + .then(res => { + responseHandler(res); + }); + }, [host, project, reportPortalApi]); + + function handlePageChange(page: number, pageSize: number) { + setLoading(true); + reportPortalApi + .getLaunchResults(project, host, { + 'page.size': pageSize, + 'page.page': page + 1, + 'page.sort': 'startTime,DESC', + }) + .then(res => { + responseHandler(res); + }); + } + + function responseHandler(res: LaunchDetailsResp) { + const tempArr: LaunchDetails[] = []; + res.content.forEach(data => { + tempArr.push({ + id: data.id, + launchName: data.name, + number: data.number, + total: data.statistics.executions.total ?? '-', + passed: data.statistics.executions.passed ?? '-', + failed: data.statistics.executions.failed ?? '-', + skipped: data.statistics.executions.skipped ?? '-', + startTime: data.startTime, + }); + }); + setTableData({ launches: tempArr, page: res.page }); + setLoading(false); + } + + const columns: TableColumn[] = [ + { + id: 0, + field: 'launchName', + title: 'Launch', + render: row => ( + + {row.launchName} #{row.number} + + ), + width: '50%', + searchable: true, + }, + { + id: 1, + title: 'Total', + align: 'center', + width: '5%', + render: row => {row.total}, + }, + { + id: 2, + title: 'Passed', + align: 'center', + width: '5%', + render: row => {row.passed}, + }, + { + id: 3, + title: 'Failed', + align: 'center', + width: '5%', + render: row => {row.failed}, + }, + { + id: 4, + title: 'Skipped', + align: 'center', + width: '5%', + render: row => {row.skipped}, + }, + { + id: 4, + title: 'Start Time', + align: 'center', + width: '25%', + render: row => moment(row.startTime).fromNow(), + }, + { + id: 5, + title: 'Actions', + align: 'left', + width: '5%', + render: row => ( + + + + ), + }, + ]; + return ( + + ); +}; diff --git a/plugins/report-portal/src/components/LaunchesPage/index.ts b/plugins/report-portal/src/components/LaunchesPage/index.ts new file mode 100644 index 0000000000..b804d467f9 --- /dev/null +++ b/plugins/report-portal/src/components/LaunchesPage/index.ts @@ -0,0 +1 @@ +export { LaunchesPage } from './LaunchesPage'; diff --git a/plugins/report-portal/src/components/ProjectsPage/ProjectsPage.tsx b/plugins/report-portal/src/components/ProjectsPage/ProjectsPage.tsx new file mode 100644 index 0000000000..c17a43c045 --- /dev/null +++ b/plugins/report-portal/src/components/ProjectsPage/ProjectsPage.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +import { + Breadcrumbs, + Content, + Header, + HeaderIconLinkRow, + Page, + useQueryParamState, +} from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; + +import Assessment from '@material-ui/icons/Assessment'; + +import { rootRouteRef } from '../../routes'; +import { ProjectsPageContent } from './ProjectsPageContent/ProjectsPageContent'; + +export const ProjectsPage = () => { + const rootR = useRouteRef(rootRouteRef); + const hostName = useQueryParamState('host')[0] as string; + + return ( + +
+ + + report-portal + + +
{hostName}
+ + } + > + , + }, + ]} + /> +
+ + + +
+ ); +}; diff --git a/plugins/report-portal/src/components/ProjectsPage/ProjectsPageContent/ProjectsPageContent.tsx b/plugins/report-portal/src/components/ProjectsPage/ProjectsPageContent/ProjectsPageContent.tsx new file mode 100644 index 0000000000..f95a82ee0c --- /dev/null +++ b/plugins/report-portal/src/components/ProjectsPage/ProjectsPageContent/ProjectsPageContent.tsx @@ -0,0 +1,139 @@ +import React, { useEffect, useState } from 'react'; + +import { Link, Table, TableColumn } from '@backstage/core-components'; +import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; + +import { IconButton } from '@material-ui/core'; +import Launch from '@material-ui/icons/Launch'; +import { Skeleton } from '@material-ui/lab'; + +import { + ProjectDetails, + ProjectListResp, + reportPortalApiRef, +} from '../../../api'; +import { launchRouteRef } from '../../../routes'; + +const UniqueLaunches = (props: { host: string; projectId: string }) => { + const { host, projectId } = props; + const [loading, setLoading] = useState(true); + const [noOfLaunches, setNoOfLaunches] = useState(0); + + const api = useApi(reportPortalApiRef); + useEffect(() => { + api.getLaunchResults(projectId, host, {}).then(res => { + setNoOfLaunches(res.content.length); + setLoading(false); + }); + }, [api, projectId, host]); + + return loading ? ( + + ) : ( + {noOfLaunches} + ); +}; + +export const ProjectsPageContent = (props: { host: string }) => { + const { host } = props; + const launchPageRoute = useRouteRef(launchRouteRef); + + const config = useApi(configApiRef).getConfigArray( + 'reportPortal.integrations', + ); + const filterType = + config + .find(value => value.getString('host') === host) + ?.getString('filterType') ?? 'INTERNAL'; + + const [loading, setLoading] = useState(true); + const [tableData, setTableData] = useState({ + content: [], + page: { + number: 1, + size: 10, + totalElements: 0, + totalPages: 1, + }, + }); + const reportPortalApi = useApi(reportPortalApiRef); + + useEffect(() => { + if (loading) { + reportPortalApi + .getInstanceDetails(host, { + 'filter.eq.type': filterType, + 'page.size': tableData.page.size, + 'page.page': tableData.page.number, + }) + .then(res => { + setTableData({ ...res }); + setLoading(false); + }); + } + }); + + const columns: TableColumn[] = [ + { + title: 'Project', + field: 'name', + render: row => ( + + {row.projectName} + + ), + width: '60%', + }, + { + title: 'Launches', + width: '30%', + render: row => , + }, + { + title: 'Actions', + align: 'center', + render: row => ( + + + + ), + }, + ]; + + function handlePageChange(page: number, pageSize: number) { + setLoading(true); + reportPortalApi + .getInstanceDetails(host, { + 'filter.eq.type': filterType, + 'page.size': pageSize, + 'page.page': page + 1, + }) + .then(res => { + setTableData({ ...res }); + setLoading(false); + }); + } + + return ( +
+ ); +}; diff --git a/plugins/report-portal/src/components/ProjectsPage/index.ts b/plugins/report-portal/src/components/ProjectsPage/index.ts new file mode 100644 index 0000000000..7b8a4b5b77 --- /dev/null +++ b/plugins/report-portal/src/components/ProjectsPage/index.ts @@ -0,0 +1 @@ +export { ProjectsPage } from './ProjectsPage'; diff --git a/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/GlobalPageContent.tsx b/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/GlobalPageContent.tsx new file mode 100644 index 0000000000..6e54b77966 --- /dev/null +++ b/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/GlobalPageContent.tsx @@ -0,0 +1,110 @@ +import React, { useEffect, useState } from 'react'; + +import { Link, Table, TableColumn } from '@backstage/core-components'; +import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; + +import { IconButton } from '@material-ui/core'; +import LaunchIcon from '@material-ui/icons/Launch'; +import { Skeleton } from '@material-ui/lab'; + +import { reportPortalApiRef } from '../../../api'; +import { useInstanceDetails } from '../../../hooks'; +import { projectsRouteRef } from '../../../routes'; + +type InstanceData = { + instance: string; + filterType: string; + projects: React.ReactNode; +}; + +const NoOfProjects = (props: { host: string; filter: string }) => { + const { loading, projectListData } = useInstanceDetails( + props.host, + props.filter, + ); + return loading ? ( + + ) : ( + {projectListData?.content.length} + ); +}; + +export const GlobalPageContent = () => { + const config = useApi(configApiRef); + const reportPortalApi = useApi(reportPortalApiRef); + const hostsConfig = config.getConfigArray('reportPortal.integrations'); + const [hosts, _] = useState< + { host: string; filterType: string }[] | undefined + >( + hostsConfig.map(value => ({ + host: value.getString('host'), + filterType: value.getString('filterType') ?? 'INTERNAL', + })), + ); + + const projectsPageRoute = useRouteRef(projectsRouteRef)(); + + const [instanceData, setInstanceData] = useState([]); + const columns: TableColumn[] = [ + { + id: 0, + field: 'instance', + title: 'Instances', + render: rowData => ( + + {rowData.instance} + + ), + width: '60%', + }, + { + id: 1, + field: 'projects', + title: 'Projects', + align: 'left', + render: rowData => rowData.projects, + width: '10%', + }, + { + id: 2, + field: 'portalLink', + title: 'Actions', + align: 'center', + render: rowData => ( + + + + ), + width: '30%', + }, + ]; + + useEffect(() => { + if (hosts) { + const tempArr: InstanceData[] = []; + hosts.forEach(value => { + tempArr.push({ + instance: value.host, + filterType: value.filterType, + projects: ( + + ), + }); + }); + setInstanceData(tempArr); + } + }, [hosts]); + + return ( +
+ ); +}; diff --git a/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/index.ts b/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/index.ts new file mode 100644 index 0000000000..c902ddcd13 --- /dev/null +++ b/plugins/report-portal/src/components/ReportPortalGlobalPage/GlobalPageContent/index.ts @@ -0,0 +1 @@ +export { GlobalPageContent } from './GlobalPageContent'; diff --git a/plugins/report-portal/src/components/ReportPortalGlobalPage/ReportPortalGlobalPage.tsx b/plugins/report-portal/src/components/ReportPortalGlobalPage/ReportPortalGlobalPage.tsx new file mode 100644 index 0000000000..3fffe00c6e --- /dev/null +++ b/plugins/report-portal/src/components/ReportPortalGlobalPage/ReportPortalGlobalPage.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import { Content, PageWithHeader } from '@backstage/core-components'; + +import { Grid } from '@material-ui/core'; + +import { GlobalPageContent } from './GlobalPageContent'; + +export const ReportPortalGlobalPage = () => { + return ( + + + + + + + + + + ); +}; diff --git a/plugins/report-portal/src/components/ReportPortalGlobalPage/index.ts b/plugins/report-portal/src/components/ReportPortalGlobalPage/index.ts new file mode 100644 index 0000000000..710f27aa30 --- /dev/null +++ b/plugins/report-portal/src/components/ReportPortalGlobalPage/index.ts @@ -0,0 +1 @@ +export * from './ReportPortalGlobalPage'; diff --git a/plugins/report-portal/src/components/ReportPortalOverviewCard/ReportPortalOverviewCard.tsx b/plugins/report-portal/src/components/ReportPortalOverviewCard/ReportPortalOverviewCard.tsx index 5d5270770b..6630cd4cb2 100644 --- a/plugins/report-portal/src/components/ReportPortalOverviewCard/ReportPortalOverviewCard.tsx +++ b/plugins/report-portal/src/components/ReportPortalOverviewCard/ReportPortalOverviewCard.tsx @@ -82,11 +82,16 @@ export const ReportPortalOverviewCard = (props: { entity.metadata.annotations?.['reportportal.io/launch-name'] ?? ''; const hostName = entity.metadata.annotations?.['reportportal.io/host'] ?? ''; const [defects, setDefects] = useState([]); + const [filters, _] = useState<{ [key: string]: string | number } | undefined>( + { + 'filter.eq.name': launchName, + }, + ); const { loading, launchDetails } = useLaunchDetails( projectId, - launchName, hostName, + filters, ); const { loading: projectLoading, projectDetails } = useProjectDetails( projectId, diff --git a/plugins/report-portal/src/components/Router.tsx b/plugins/report-portal/src/components/Router.tsx new file mode 100644 index 0000000000..c5bfe90788 --- /dev/null +++ b/plugins/report-portal/src/components/Router.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { Route, Routes } from 'react-router-dom'; + +import { launchRouteRef, projectsRouteRef } from '../routes'; +import { LaunchesPage } from './LaunchesPage'; +import { ProjectsPage } from './ProjectsPage'; +import { ReportPortalGlobalPage } from './ReportPortalGlobalPage'; + +export const Router = () => { + return ( + + } /> + } /> + } /> + + ); +}; diff --git a/plugins/report-portal/src/hooks/index.ts b/plugins/report-portal/src/hooks/index.ts index 6bae4c991c..6fd3dbad25 100644 --- a/plugins/report-portal/src/hooks/index.ts +++ b/plugins/report-portal/src/hooks/index.ts @@ -1,2 +1,3 @@ export * from './useProjectDetails'; export * from './useLaunchDetails'; +export * from './useInstanceDetails'; diff --git a/plugins/report-portal/src/hooks/useInstanceDetails.ts b/plugins/report-portal/src/hooks/useInstanceDetails.ts new file mode 100644 index 0000000000..770b41e60f --- /dev/null +++ b/plugins/report-portal/src/hooks/useInstanceDetails.ts @@ -0,0 +1,33 @@ +import React from 'react'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { ProjectListResp, reportPortalApiRef } from '../api'; + +export function useInstanceDetails(host: string, filterType: string) { + const reportPortalApi = useApi(reportPortalApiRef); + const [loading, setLoading] = React.useState(true); + const [projectListData, setProjectListData] = React.useState( + { + content: [], + page: { + number: 1, + size: 10, + totalElements: 0, + totalPages: 1, + }, + }, + ); + + React.useEffect(() => { + setLoading(true); + reportPortalApi + .getInstanceDetails(host, { 'filter.eq.type': filterType }) + .then(res => { + setProjectListData(res); + setLoading(false); + }); + }, [host, reportPortalApi, filterType]); + + return { loading, projectListData }; +} diff --git a/plugins/report-portal/src/hooks/useLaunchDetails.ts b/plugins/report-portal/src/hooks/useLaunchDetails.ts index 9503616078..582c6eb9e9 100644 --- a/plugins/report-portal/src/hooks/useLaunchDetails.ts +++ b/plugins/report-portal/src/hooks/useLaunchDetails.ts @@ -6,8 +6,8 @@ import { LaunchDetails, reportPortalApiRef } from '../api'; export function useLaunchDetails( projectId: string, - launchName: string, hostName: string, + filters: { [key: string]: string | number } | undefined, ) { const reportPortalApi = useApi(reportPortalApiRef); const [loading, setLoading] = useState(true); @@ -15,13 +15,11 @@ export function useLaunchDetails( useEffect(() => { setLoading(true); - reportPortalApi - .getLaunchResults(projectId, launchName, hostName) - .then(res => { - setLaunchDetails(res.content[0]); - setLoading(false); - }); - }, [projectId, launchName, hostName, reportPortalApi]); + reportPortalApi.getLaunchResults(projectId, hostName, filters).then(res => { + setLaunchDetails(res.content[0]); + setLoading(false); + }); + }, [filters, projectId, hostName, reportPortalApi]); return { loading, launchDetails }; } diff --git a/plugins/report-portal/src/index.ts b/plugins/report-portal/src/index.ts new file mode 100644 index 0000000000..5d7afd2cdf --- /dev/null +++ b/plugins/report-portal/src/index.ts @@ -0,0 +1,5 @@ +export { + reportPortalPlugin, + ReportPortalOverviewCard, + ReportPortalGlobalPage, +} from './plugin'; diff --git a/plugins/report-portal/src/plugin.ts b/plugins/report-portal/src/plugin.ts new file mode 100644 index 0000000000..257da53151 --- /dev/null +++ b/plugins/report-portal/src/plugin.ts @@ -0,0 +1,47 @@ +import { + createApiFactory, + createComponentExtension, + createPlugin, + createRoutableExtension, + discoveryApiRef, +} from '@backstage/core-plugin-api'; + +import { reportPortalApiRef, ReportPortalClient } from './api'; +import { entityRootRouteRef, rootRouteRef } from './routes'; + +export const reportPortalPlugin = createPlugin({ + id: 'report-portal', + routes: { + root: rootRouteRef, + entityRoot: entityRootRouteRef, + }, + apis: [ + createApiFactory({ + api: reportPortalApiRef, + deps: { + discovery: discoveryApiRef, + }, + factory: ({ discovery }) => new ReportPortalClient(discovery), + }), + ], +}); + +export const ReportPortalOverviewCard = reportPortalPlugin.provide( + createComponentExtension({ + name: 'ReportPortalOverviewCard', + component: { + lazy: () => + import('./components/ReportPortalOverviewCard').then( + m => m.ReportPortalOverviewCard, + ), + }, + }), +); + +export const ReportPortalGlobalPage = reportPortalPlugin.provide( + createRoutableExtension({ + name: 'RportPortalGlobalPage', + mountPoint: rootRouteRef, + component: () => import('./components/Router').then(m => m.Router), + }), +); diff --git a/plugins/report-portal/src/routes.ts b/plugins/report-portal/src/routes.ts new file mode 100644 index 0000000000..09b830609f --- /dev/null +++ b/plugins/report-portal/src/routes.ts @@ -0,0 +1,22 @@ +import { createRouteRef, createSubRouteRef } from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'report-portal', +}); + +export const projectsRouteRef = createSubRouteRef({ + id: 'report-portal:projects', + path: '/instance', + parent: rootRouteRef, +}); + +export const launchRouteRef = createSubRouteRef({ + id: 'report-portal:launches', + path: '/instance/project', + parent: rootRouteRef, +}); + +export const entityRootRouteRef = createRouteRef({ + id: 'report-portal:entity-page', + params: ['namespace', 'kind', 'name'], +}); diff --git a/yarn.lock b/yarn.lock index 40f19b5d3c..d4b8474218 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3263,7 +3263,7 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@backstage/app-defaults@^1.5.0": +"@backstage/app-defaults@^1.4.4", "@backstage/app-defaults@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@backstage/app-defaults/-/app-defaults-1.5.0.tgz#772e34818b2bfe47423d01f4060ceb11035e257c" integrity sha512-NiFPfs03sfWHYv5gqDFPuDdaht9vbuQ3y2n3EoFxbcxuUjUoFv8VJ9mQXlEv7t0v25p3QnVOxPZEE25xamhdFw== @@ -3276,7 +3276,7 @@ "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" -"@backstage/backend-app-api@0.5.13", "@backstage/backend-app-api@^0.5.13": +"@backstage/backend-app-api@0.5.13", "@backstage/backend-app-api@^0.5.10", "@backstage/backend-app-api@^0.5.13", "@backstage/backend-app-api@^0.5.8": version "0.5.13" resolved "https://registry.yarnpkg.com/@backstage/backend-app-api/-/backend-app-api-0.5.13.tgz#c77be3f0c7370825b1e2de7b08b49648480fe2e1" integrity sha512-bfONBBQ0iFEW3ZfYJQ1Dmefh2rN8VVJbLkQxko0bH2xSMly70UUypZRv/wd+ujMzrsX3ISyqpy0M3uUha63Uvg== @@ -3312,7 +3312,7 @@ winston "^3.2.1" winston-transport "^4.5.0" -"@backstage/backend-common@0.21.2", "@backstage/backend-common@^0.21.2": +"@backstage/backend-common@0.21.2", "@backstage/backend-common@^0.21.0", "@backstage/backend-common@^0.21.2": version "0.21.2" resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.21.2.tgz#02f4f8636708ce07c498669ce13396a73feb0e03" integrity sha512-gJ4lPwHk9aMK1KU07siiOfpbYKZLnXp74RZwev/AoUs9fCRJ2cGqDSUs5NuSlPaECKpUVYR9l4uSO+jxcx6tlw== @@ -3373,7 +3373,129 @@ yauzl "^2.10.0" yn "^4.0.0" -"@backstage/backend-dev-utils@^0.1.4": +"@backstage/backend-common@^0.19.8": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.19.10.tgz#be99cbdbc6946f8adbbf2a21bab33e26473206e7" + integrity sha512-SXWNDIqyJ4xu89IsO67/hyGfGiV4PJdVkrvz+eJTBs/xFk3+OfA5LzMp6reDSnIoaehOlAtPalqBm1Vur3bftA== + dependencies: + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@backstage/backend-app-api" "^0.5.8" + "@backstage/backend-dev-utils" "^0.1.2" + "@backstage/backend-plugin-api" "^0.6.7" + "@backstage/cli-common" "^0.1.13" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.5.3" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.7.2" + "@backstage/integration-aws-node" "^0.1.8" + "@backstage/types" "^1.1.1" + "@google-cloud/storage" "^6.0.0" + "@keyv/memcache" "^1.3.5" + "@keyv/redis" "^2.5.3" + "@kubernetes/client-node" "0.19.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^19.0.3" + "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" + "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + "@types/webpack-env" "^1.15.2" + archiver "^5.0.2" + base64-stream "^1.0.0" + compression "^1.7.4" + concat-stream "^2.0.0" + cors "^2.8.5" + dockerode "^3.3.1" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "10.1.0" + git-url-parse "^13.0.0" + helmet "^6.0.0" + isomorphic-git "^1.23.0" + jose "^4.6.0" + keyv "^4.5.2" + knex "^3.0.0" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^3.0.0" + minimatch "^5.0.0" + mysql2 "^2.2.5" + node-fetch "^2.6.7" + p-limit "^3.1.0" + pg "^8.11.3" + raw-body "^2.4.1" + tar "^6.1.12" + uuid "^8.3.2" + winston "^3.2.1" + winston-transport "^4.5.0" + yauzl "^2.10.0" + yn "^4.0.0" + +"@backstage/backend-common@^0.20.1": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.20.2.tgz#0ce5b7bfcb91918008c4ec6bb6aede72c4474e20" + integrity sha512-hQazpWVhjcOIic1bDMVKZ2pQn9Th4gKmI+1Q5aT2cls7dnXNF7Mwb3bRgnVQk+18bEn6sxHOUyCAFd8KzYTtLg== + dependencies: + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@backstage/backend-app-api" "^0.5.10" + "@backstage/backend-dev-utils" "^0.1.3" + "@backstage/backend-plugin-api" "^0.6.9" + "@backstage/cli-common" "^0.1.13" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.8.0" + "@backstage/integration-aws-node" "^0.1.8" + "@backstage/types" "^1.1.1" + "@google-cloud/storage" "^7.0.0" + "@keyv/memcache" "^1.3.5" + "@keyv/redis" "^2.5.3" + "@kubernetes/client-node" "0.20.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^19.0.3" + "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" + "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + "@types/webpack-env" "^1.15.2" + archiver "^6.0.0" + base64-stream "^1.0.0" + compression "^1.7.4" + concat-stream "^2.0.0" + cors "^2.8.5" + dockerode "^3.3.1" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "10.1.0" + git-url-parse "^13.0.0" + helmet "^6.0.0" + isomorphic-git "^1.23.0" + jose "^4.6.0" + keyv "^4.5.2" + knex "^3.0.0" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^3.0.0" + minimatch "^5.0.0" + mysql2 "^2.2.5" + node-fetch "^2.6.7" + p-limit "^3.1.0" + pg "^8.11.3" + raw-body "^2.4.1" + tar "^6.1.12" + uuid "^8.3.2" + winston "^3.2.1" + winston-transport "^4.5.0" + yauzl "^2.10.0" + yn "^4.0.0" + +"@backstage/backend-dev-utils@^0.1.2", "@backstage/backend-dev-utils@^0.1.3", "@backstage/backend-dev-utils@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.4.tgz#65d204939c49b5df6a2148e8ad4dc718ccd1df07" integrity sha512-5YgAPz4CRtnqdaUlYCHwGmXvpkGQ1jaUMoDtiQ81WDxQrf+0iYZCwS4ftVyQmB0Ga6BaGOUf6GG/OuFA56Y5mA== @@ -3428,7 +3550,7 @@ openapi-merge "^1.3.2" openapi3-ts "^3.1.2" -"@backstage/backend-plugin-api@0.6.12", "@backstage/backend-plugin-api@^0.6.12": +"@backstage/backend-plugin-api@0.6.12", "@backstage/backend-plugin-api@^0.6.12", "@backstage/backend-plugin-api@^0.6.6", "@backstage/backend-plugin-api@^0.6.7", "@backstage/backend-plugin-api@^0.6.9": version "0.6.12" resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.12.tgz#7e32cb019dc11258e985784fcb8e7f37f1b846f4" integrity sha512-7+x9oHgvb9JHwhMK9DoF9vM6Rw1FabxZxmIFmeqNsvTzPIMMNB2m85LkIgVrd72i5gCm0vu9+9S+EMKKJ09sgA== @@ -3442,7 +3564,35 @@ express "^4.17.1" knex "^3.0.0" -"@backstage/backend-tasks@^0.5.17": +"@backstage/backend-plugin-manager@npm:@janus-idp/backend-plugin-manager@0.0.2-janus.5": + version "0.0.2-janus.5" + resolved "https://registry.yarnpkg.com/@janus-idp/backend-plugin-manager/-/backend-plugin-manager-0.0.2-janus.5.tgz#58e3c9fa2fe096da7705b86f0262bae14b3bf0f5" + integrity sha512-XiBxG9trGZBiiBvCmbV+WbzlqRMavkqPhNg08fr0ode4oFxEbuJkCuZwxpPoNaes7i/TMklJwpm4dVrVhRX85Q== + dependencies: + "@backstage/backend-common" "^0.19.8" + "@backstage/backend-plugin-api" "^0.6.6" + "@backstage/backend-tasks" "^0.5.11" + "@backstage/cli-common" "^0.1.13" + "@backstage/cli-node" "^0.1.5" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/plugin-auth-node" "^0.4.0" + "@backstage/plugin-catalog-backend" "^1.14.0" + "@backstage/plugin-events-backend" "^0.2.15" + "@backstage/plugin-events-node" "^0.2.15" + "@backstage/plugin-permission-common" "^0.7.9" + "@backstage/plugin-permission-node" "^0.7.17" + "@backstage/plugin-scaffolder-node" "^0.2.7" + "@backstage/plugin-search-backend-node" "^1.2.10" + "@backstage/plugin-search-common" "^1.2.7" + "@backstage/types" "^1.1.1" + "@types/express" "^4.17.6" + chokidar "^3.5.3" + express "^4.17.1" + lodash "^4.17.21" + winston "^3.2.1" + +"@backstage/backend-tasks@^0.5.11", "@backstage/backend-tasks@^0.5.17": version "0.5.17" resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.5.17.tgz#76ba27d3356fd32bc8ee9701b9f6bc1b458271b2" integrity sha512-2h3pQV3ucSltBu6mzedgNPwT5p7FJW5vJiaHBUTb/pgK4AoPgBzNITlunHWCqNxXmrcz1YrQ1Ur7G95KYDj4cg== @@ -3494,7 +3644,7 @@ cross-fetch "^4.0.0" uri-template "^2.0.0" -"@backstage/catalog-model@1.4.4", "@backstage/catalog-model@^1.4.4": +"@backstage/catalog-model@1.4.4", "@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@^1.4.4": version "1.4.4" resolved "https://registry.yarnpkg.com/@backstage/catalog-model/-/catalog-model-1.4.4.tgz#53ebbe754c72a0e01bb7ea025af0358dc459db9c" integrity sha512-JiCeAgUdRMQTjO0+34QeKDxYh/UQrXtDUvVic5z11uf8WuX3L9N7LiPOqJG+3t9TAyc5side21nDD7REdHoVFA== @@ -3509,6 +3659,20 @@ resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.1.13.tgz#cbeda6a359ca4437fc782f0ac51bb957e8d49e73" integrity sha512-UMgNAIJSeEPSMkzxiWCP8aFR8APsG21XczDnzwHdL/41F7g2C+KA6UeQc/3tzbe8XQo+PxbNLpReZeKSSnSPSQ== +"@backstage/cli-node@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.1.5.tgz#8f6b0a3b7aef3d7fe49a2fb7d471629fccccd272" + integrity sha512-cator0BACfzAkQDzSYvcXwsKY6zT7FPYHx/m5POL0IiZPkZaHYlcbfkQeNDlg5aC3QHfavGivqR1sJ/qISnEJA== + dependencies: + "@backstage/cli-common" "^0.1.13" + "@backstage/errors" "^1.2.3" + "@backstage/types" "^1.1.1" + "@manypkg/get-packages" "^1.1.3" + "@yarnpkg/parsers" "^3.0.0-rc.4" + fs-extra "10.1.0" + semver "^7.5.3" + zod "^3.21.4" + "@backstage/cli-node@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.2.3.tgz#76d31a0ccd44326d110fb3a38c0db507b79e3ddf" @@ -3523,6 +3687,121 @@ semver "^7.5.3" zod "^3.22.4" +"@backstage/cli@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.23.0.tgz#881ad5ab9b6c175c9d5115d905da5dc8f58015f0" + integrity sha512-qYdTzipH1D9m/3Q+ClKMjH2dYaFyNgZBMmNYK/0syc33BhTE2hi//nMoIkfbeidIXntTFu86Iy+DsNwMpm5brw== + dependencies: + "@backstage/catalog-model" "^1.4.3" + "@backstage/cli-common" "^0.1.13" + "@backstage/cli-node" "^0.1.5" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.5.1" + "@backstage/errors" "^1.2.3" + "@backstage/eslint-plugin" "^0.1.3" + "@backstage/integration" "^1.7.1" + "@backstage/release-manifests" "^0.0.10" + "@backstage/types" "^1.1.1" + "@esbuild-kit/cjs-loader" "^2.4.1" + "@esbuild-kit/esm-loader" "^2.5.5" + "@manypkg/get-packages" "^1.1.3" + "@octokit/graphql" "^5.0.0" + "@octokit/graphql-schema" "^13.7.0" + "@octokit/oauth-app" "^4.2.0" + "@octokit/request" "^6.0.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.7" + "@rollup/plugin-commonjs" "^23.0.0" + "@rollup/plugin-json" "^5.0.0" + "@rollup/plugin-node-resolve" "^13.0.6" + "@rollup/plugin-yaml" "^4.0.0" + "@spotify/eslint-config-base" "^14.0.0" + "@spotify/eslint-config-react" "^14.0.0" + "@spotify/eslint-config-typescript" "^14.0.0" + "@sucrase/webpack-loader" "^2.0.0" + "@svgr/core" "6.5.x" + "@svgr/plugin-jsx" "6.5.x" + "@svgr/plugin-svgo" "6.5.x" + "@svgr/rollup" "6.5.x" + "@svgr/webpack" "6.5.x" + "@swc/core" "^1.3.46" + "@swc/helpers" "^0.5.0" + "@swc/jest" "^0.2.22" + "@types/jest" "^29.0.0" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "6.7.5" + "@typescript-eslint/parser" "^6.7.2" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.4" + bfj "^7.0.2" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^9.1.0" + cross-fetch "^3.1.5" + cross-spawn "^7.0.3" + css-loader "^6.5.1" + ctrlc-windows "^2.1.0" + diff "^5.0.0" + esbuild "^0.19.0" + esbuild-loader "^2.18.0" + eslint "^8.6.0" + eslint-config-prettier "^8.3.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-deprecation "^1.3.2" + eslint-plugin-import "^2.25.4" + eslint-plugin-jest "^27.0.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.28.0" + eslint-plugin-react-hooks "^4.3.0" + eslint-webpack-plugin "^3.1.1" + express "^4.17.1" + fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" + fs-extra "10.1.0" + git-url-parse "^13.0.0" + glob "^7.1.7" + global-agent "^3.0.0" + handlebars "^4.7.3" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + jest "^29.0.2" + jest-css-modules "^2.1.0" + jest-environment-jsdom "^29.0.2" + jest-runtime "^29.0.2" + json-schema "^0.4.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + minimatch "^5.1.1" + node-fetch "^2.6.7" + node-libs-browser "^2.2.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + postcss "^8.1.0" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.14.0" + recursive-readdir "^2.2.2" + replace-in-file "^6.0.0" + rollup "^2.60.2" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + run-script-webpack-plugin "^0.2.0" + semver "^7.5.3" + style-loader "^3.3.1" + sucrase "^3.20.2" + swc-loader "^0.2.3" + tar "^6.1.12" + terser-webpack-plugin "^5.1.3" + util "^0.12.3" + webpack "^5.70.0" + webpack-dev-server "^4.7.3" + webpack-node-externals "^3.0.0" + yaml "^2.0.0" + yml-loader "^2.1.0" + yn "^4.0.0" + zod "^3.21.4" + "@backstage/cli@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.25.2.tgz#53f27c99c988f17edffb9e77b1864a53bccb3334" @@ -3639,7 +3918,7 @@ yn "^4.0.0" zod "^3.22.4" -"@backstage/config-loader@^1.6.2": +"@backstage/config-loader@^1.5.1", "@backstage/config-loader@^1.5.3", "@backstage/config-loader@^1.6.1", "@backstage/config-loader@^1.6.2": version "1.6.2" resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.6.2.tgz#b3dea400ec18dc64e1f1236e450668fb5d27e221" integrity sha512-RFFK1NGhg2n6OKRxkBPCO8qRmuRJ8gtEwjQdMv17V8AuaituOVDIduKW7omrq2RNr1CNJFodhGmpkHxqSkpkiQ== @@ -3670,41 +3949,36 @@ "@backstage/types" "^1.1.1" lodash "^4.17.21" -"@backstage/core-app-api@1.12.0", "@backstage/core-app-api@^1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.12.0.tgz#9e010a938fbfe31a581581da9e842f0e7c248f6c" - integrity sha512-tR/2OcRM7Wlx2cLD5rfcwWpU65A31fjxLAkATYp8i49IGL8rtpJe4udrmws4uppjj27Qc+1PgRzG4qb0UDvllg== +"@backstage/core-app-api@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.11.0.tgz#ed0a9d3c0b390a2a895a2aebe38f579cb5bad372" + integrity sha512-YOW88AfLNZ0edfPSwaCCZmxH6O0hKMjdNNJsJLoY808WAjyX/VXPM6/5C8dezt+uQFkYXzHHcFzOO6HyUfPzSQ== dependencies: "@backstage/config" "^1.1.1" - "@backstage/core-plugin-api" "^1.9.0" + "@backstage/core-plugin-api" "^1.7.0" "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.7" + "@backstage/version-bridge" "^1.0.6" "@types/prop-types" "^15.7.3" - "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@types/react" "^16.13.1 || ^17.0.0" history "^5.0.0" i18next "^22.4.15" lodash "^4.17.21" prop-types "^15.7.2" react-use "^17.2.4" zen-observable "^0.10.0" - zod "^3.22.4" - -"@backstage/core-compat-api@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@backstage/core-compat-api/-/core-compat-api-0.2.0.tgz#7bd18842ac10272f22134ed74bc8468a4ee3befe" - integrity sha512-ZU1wQUyYVnNbhMvbdVfghJonGFTjf+troFZYMzFekJEPT9BJyuk4gJtywE/xhc1HgMC8JPfuAh6idFgy8i0v8w== + zod "^3.21.4" -"@backstage/core-app-api@^1.11.3": - version "1.11.3" - resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.11.3.tgz#49d97c6fd1ed051b4520e8afb1400951d93d587f" - integrity sha512-GVs4M5SarJXXW4MByqRQIHTb6B3RHsNsdoLVmd9BmdKJ9hoPh+UFQTUoXhQyO9sbbGLutiQEV5L6kZAaXkW9Fw== +"@backstage/core-app-api@1.12.0", "@backstage/core-app-api@^1.11.0", "@backstage/core-app-api@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.12.0.tgz#9e010a938fbfe31a581581da9e842f0e7c248f6c" + integrity sha512-tR/2OcRM7Wlx2cLD5rfcwWpU65A31fjxLAkATYp8i49IGL8rtpJe4udrmws4uppjj27Qc+1PgRzG4qb0UDvllg== dependencies: "@backstage/config" "^1.1.1" - "@backstage/core-plugin-api" "^1.8.2" + "@backstage/core-plugin-api" "^1.9.0" "@backstage/types" "^1.1.1" "@backstage/version-bridge" "^1.0.7" "@types/prop-types" "^15.7.3" - "@types/react" "^16.13.1 || ^17.0.0" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" history "^5.0.0" i18next "^22.4.15" lodash "^4.17.21" @@ -3713,21 +3987,10 @@ zen-observable "^0.10.0" zod "^3.22.4" -"@backstage/core-compat-api@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@backstage/core-compat-api/-/core-compat-api-0.1.1.tgz#e7c0f0ae47a634de2df35decf58776c4308f1bfd" - integrity sha512-Cv53pBB4Q6nRtTeBkpMXBowK8cc7mGiDjn0NHbdz1pzdUpXX2hXm6CwT/2IHtpJJTtML3TiwIyueyDsQkR0c6g== - dependencies: - "@backstage/core-app-api" "^1.11.3" - "@backstage/core-plugin-api" "^1.8.2" - "@backstage/frontend-plugin-api" "^0.5.0" - "@backstage/version-bridge" "^1.0.7" - "@types/react" "^16.13.1 || ^17.0.0" - -"@backstage/core-components@0.13.6", "@backstage/core-components@^0.13.6": - version "0.13.6" - resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.13.6.tgz#c34b9ec741c993db7a63634bc25b9d23e4939e6b" - integrity sha512-jT1GYFjbBMEQXqGNdtUoL8Iuk1Q4ho1HC1WGv96C8gSjU8S3I9pK0DzVo5s2pAK2QuU+Lm4MFf8kP1mlmrPtEg== +"@backstage/core-compat-api@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@backstage/core-compat-api/-/core-compat-api-0.2.0.tgz#7bd18842ac10272f22134ed74bc8468a4ee3befe" + integrity sha512-ZU1wQUyYVnNbhMvbdVfghJonGFTjf+troFZYMzFekJEPT9BJyuk4gJtywE/xhc1HgMC8JPfuAh6idFgy8i0v8w== dependencies: "@backstage/core-app-api" "^1.12.0" "@backstage/core-plugin-api" "^1.9.0" @@ -3780,7 +4043,56 @@ zen-observable "^0.10.0" zod "^3.22.4" -"@backstage/core-plugin-api@1.9.0", "@backstage/core-plugin-api@^1.9.0": +"@backstage/core-components@^0.13.6": + version "0.13.6" + resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.13.6.tgz#c34b9ec741c993db7a63634bc25b9d23e4939e6b" + integrity sha512-jT1GYFjbBMEQXqGNdtUoL8Iuk1Q4ho1HC1WGv96C8gSjU8S3I9pK0DzVo5s2pAK2QuU+Lm4MFf8kP1mlmrPtEg== + dependencies: + "@backstage/catalog-model" "^1.4.3" + "@backstage/config" "^1.1.1" + "@backstage/core-plugin-api" "^1.7.0" + "@backstage/errors" "^1.2.3" + "@backstage/plugin-catalog-react" "^1.8.5" + "@backstage/theme" "^0.4.3" + "@backstage/version-bridge" "^1.0.6" + "@date-io/core" "^1.3.13" + "@material-table/core" "^3.1.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.61" + "@react-hookz/web" "^20.0.0" + "@types/react" "^16.13.1 || ^17.0.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" + linkify-react "4.1.1" + linkifyjs "4.1.1" + lodash "^4.17.21" + pluralize "^8.0.0" + qs "^6.9.4" + rc-progress "3.5.1" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-idle-timer "5.6.2" + react-markdown "^8.0.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.19.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.11" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.10.0" + zod "^3.21.4" + +"@backstage/core-plugin-api@1.9.0", "@backstage/core-plugin-api@^1.7.0", "@backstage/core-plugin-api@^1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.9.0.tgz#49cda87ab82b968c9c7439da99549a4c34c4f720" integrity sha512-k+w9TfJCFv/5YyiATuZfnlg/8KkJEL0fo9MHGFcOTOeqX0rcb0eecEWmb2kiA4NfPzLmEeNSSc4Nv8zdRQwCQA== @@ -3792,6 +4104,24 @@ "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" history "^5.0.0" +"@backstage/dev-utils@1.0.22": + version "1.0.22" + resolved "https://registry.yarnpkg.com/@backstage/dev-utils/-/dev-utils-1.0.22.tgz#3c6b3844bda776858e16361c6a990ec8c3873b6e" + integrity sha512-6X6/EXL1dm2uP0zbV6I829+R8ZJEqTJTNhh0vSUk8h4eE4vo8WO6nwFiQzWOywurmNNef+XPJX+mME6/rF9gYg== + dependencies: + "@backstage/app-defaults" "^1.4.4" + "@backstage/catalog-model" "^1.4.3" + "@backstage/core-app-api" "^1.11.0" + "@backstage/core-components" "^0.13.6" + "@backstage/core-plugin-api" "^1.7.0" + "@backstage/integration-react" "^1.1.20" + "@backstage/plugin-catalog-react" "^1.8.5" + "@backstage/theme" "^0.4.3" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@types/react" "^16.13.1 || ^17.0.0" + react-use "^17.2.4" + "@backstage/dev-utils@1.0.27": version "1.0.27" resolved "https://registry.yarnpkg.com/@backstage/dev-utils/-/dev-utils-1.0.27.tgz#0da942c0c8cae11f9b771ec106b0b881cc84fdc1" @@ -3818,7 +4148,7 @@ "@backstage/types" "^1.1.1" serialize-error "^8.0.1" -"@backstage/eslint-plugin@^0.1.5": +"@backstage/eslint-plugin@^0.1.3", "@backstage/eslint-plugin@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@backstage/eslint-plugin/-/eslint-plugin-0.1.5.tgz#0c34170b3b5be356500e26c3617a87c3b6608408" integrity sha512-vyZtBtXQhH2KvDyxcDA8UbMCScbFx3gvvAN0HTzAijGl+REz5597FwiKcHg3B2jtUvUfNy9EFQhBYgol/t+4Yg== @@ -3841,7 +4171,7 @@ zod "^3.22.4" zod-to-json-schema "^3.21.4" -"@backstage/integration-aws-node@^0.1.9": +"@backstage/integration-aws-node@^0.1.8", "@backstage/integration-aws-node@^0.1.9": version "0.1.9" resolved "https://registry.yarnpkg.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.9.tgz#66d6898e855a6a8d495d7d1bcb3bb79b6c61479c" integrity sha512-nr3LHM9vFGtWPqWSp1lutm5+/1H6pBcMCZ2bkTn7qy/Y5Ds7l9qY+0LSMxPbIyPoaQMM2D1x/gDPEMr/pNwPAA== @@ -3854,7 +4184,7 @@ "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" -"@backstage/integration-react@^1.1.24": +"@backstage/integration-react@^1.1.20", "@backstage/integration-react@^1.1.24": version "1.1.24" resolved "https://registry.yarnpkg.com/@backstage/integration-react/-/integration-react-1.1.24.tgz#2ae41ca6ad73cf5064bbe988229f0c942ba39198" integrity sha512-C7aIYFCU14drZx9k0knDZeY4uq4oN5gbI4OVYJtQFVdZlgWwUuycxtw8ar9XAEzIl+UgPcpIpIWsbvOLBb8Qaw== @@ -3866,7 +4196,7 @@ "@material-ui/icons" "^4.9.1" "@types/react" "^16.13.1 || ^17.0.0" -"@backstage/integration@^1.9.0": +"@backstage/integration@^1.7.1", "@backstage/integration@^1.7.2", "@backstage/integration@^1.8.0", "@backstage/integration@^1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.9.0.tgz#c60b33a7ec9b3970ccd4e8d54662b686b7ad27bf" integrity sha512-lqZcjcfLeDyHxDdmTKxiko3GX+vQCyhoNM/lgPFLJFih9TiE3V+hTc9isEfkpQqRE9dCEy1w7rgUrNHXlz0pTA== @@ -4125,7 +4455,7 @@ winston "^3.2.1" yn "^4.0.0" -"@backstage/plugin-auth-node@0.4.7", "@backstage/plugin-auth-node@^0.4.7": +"@backstage/plugin-auth-node@0.4.7", "@backstage/plugin-auth-node@^0.4.0", "@backstage/plugin-auth-node@^0.4.7": version "0.4.7" resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.4.7.tgz#2704da71bac450b042659570cdef8a0df00d434f" integrity sha512-pw5J6by30vV50rXQ1TzBaFeuAIeDShHJrok9+iIyMjvzLqZXgdqWcTeLdGuDpkD+L574StwgToVO/KYjsiqDhg== @@ -4159,7 +4489,7 @@ "@backstage/plugin-catalog-node" "^1.7.2" "@backstage/plugin-scaffolder-common" "^1.5.0" -"@backstage/plugin-catalog-backend@1.17.2", "@backstage/plugin-catalog-backend@^1.17.2": +"@backstage/plugin-catalog-backend@1.17.2", "@backstage/plugin-catalog-backend@^1.14.0", "@backstage/plugin-catalog-backend@^1.17.2": version "1.17.2" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-backend/-/plugin-catalog-backend-1.17.2.tgz#5cb2701f352c83b62efd5c96e11c6f698ff66d23" integrity sha512-WZPI+hC0Cj0y1t9qVaWCs4sWwMS2I4ztaGi2jh70qEykb3rSlks9JPZizfl6TuXSIqBh+PoqdNOX0NRYcs4JeQ== @@ -4279,7 +4609,7 @@ "@backstage/plugin-permission-node" "^0.7.23" "@backstage/types" "^1.1.1" -"@backstage/plugin-catalog-react@^1.10.0": +"@backstage/plugin-catalog-react@^1.10.0", "@backstage/plugin-catalog-react@^1.8.5": version "1.10.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.10.0.tgz#5c0bab60bd2bf854f4778c111e1f06e2db8ae881" integrity sha512-xeejxqVp20NCtQIlWrOfvI/scWOefu7PsfQ0Eovqn0dULDVKAJTSgULpdm/AwgJ4E3F46voGw4FE/k5Rlf8Glg== @@ -4309,7 +4639,7 @@ yaml "^2.0.0" zen-observable "^0.10.0" -"@backstage/plugin-catalog@1.17.0", "@backstage/plugin-catalog@^1.17.0": +"@backstage/plugin-catalog@1.17.0", "@backstage/plugin-catalog@^1.16.1", "@backstage/plugin-catalog@^1.17.0": version "1.17.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog/-/plugin-catalog-1.17.0.tgz#700b8aa419f8a9a83c80a6b00ff864ba7f68512b" integrity sha512-c810IqfFs7pm8b+whCqoKCbdKaUHdLlfp7h9TEM9qNHI8hR4ngR8ZGLajUelJvakq1R00ukWRE2SG3oBMHMi0g== @@ -4342,7 +4672,7 @@ react-use "^17.2.4" zen-observable "^0.10.0" -"@backstage/plugin-events-backend@^0.2.21": +"@backstage/plugin-events-backend@^0.2.15", "@backstage/plugin-events-backend@^0.2.21": version "0.2.21" resolved "https://registry.yarnpkg.com/@backstage/plugin-events-backend/-/plugin-events-backend-0.2.21.tgz#697efe2868ea6fcec1c6f0b1d69788b6357ec0c7" integrity sha512-fv3b6lU25jCi/uFjB4S8i4WMThBAZr7NG+GcylkOoLPBw/ntR246RYdwCMkLl4fYHyF8XRYOQ43nnj0Rw22BIQ== @@ -4356,7 +4686,7 @@ express-promise-router "^4.1.0" winston "^3.2.1" -"@backstage/plugin-events-node@^0.2.21": +"@backstage/plugin-events-node@^0.2.15", "@backstage/plugin-events-node@^0.2.21": version "0.2.21" resolved "https://registry.yarnpkg.com/@backstage/plugin-events-node/-/plugin-events-node-0.2.21.tgz#05e0b54b828b4edd192d6d03342ff9d2aa4c40ae" integrity sha512-r6atLesi3DoLlS7nUY1fauwrR/7mxUxGgLmXUImXhakwqoJGBaqU1QeuKJTkVcE0WZKMSyHmrDFBsEVzCtgiQw== @@ -4536,7 +4866,7 @@ yn "^4.0.0" zod "^3.22.4" -"@backstage/plugin-permission-common@0.7.12", "@backstage/plugin-permission-common@^0.7.12": +"@backstage/plugin-permission-common@0.7.12", "@backstage/plugin-permission-common@^0.7.12", "@backstage/plugin-permission-common@^0.7.9": version "0.7.12" resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.7.12.tgz#22cae2c00dc801a7147ab2a0e8c286a21a72f62d" integrity sha512-uddvojjoD6by8oxkFbGTAsFftL2aHvwVNYvLgTr26RWRmtudVGvhM4lZHzZTkednDR8gc73klT8D6HCi72qS4Q== @@ -4548,7 +4878,7 @@ uuid "^8.0.0" zod "^3.22.4" -"@backstage/plugin-permission-node@0.7.23", "@backstage/plugin-permission-node@^0.7.23": +"@backstage/plugin-permission-node@0.7.23", "@backstage/plugin-permission-node@^0.7.17", "@backstage/plugin-permission-node@^0.7.23": version "0.7.23" resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.23.tgz#853c9076ea97b6021a82c9291ee0ec7dd18daead" integrity sha512-TCDKaKfI1OyIpl79QY2SDZzz4QIDdjYJedQAbIgUqo4ANw4XmOlCQVYyA4/Pf5E3U5b6L5P7ezV3PnBNDeIp4A== @@ -4769,7 +5099,7 @@ zen-observable "^0.10.0" zod "^3.22.4" -"@backstage/plugin-scaffolder-common@^1.5.0": +"@backstage/plugin-scaffolder-common@^1.4.5", "@backstage/plugin-scaffolder-common@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.5.0.tgz#c599271c685514de9fb2701062d5a0b3a29e8928" integrity sha512-byj0crG5rlH5JsiJdywi2DdR7qGe+OptIxERRImTSHTto8fa7z+f+1qeFW0/2oXIo7KFvS9uQ3g5+LSVqz58ug== @@ -4798,6 +5128,26 @@ zod "^3.22.4" zod-to-json-schema "^3.20.4" +"@backstage/plugin-scaffolder-node@^0.2.7": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.2.10.tgz#ba0b97e4e8e86d48b991bc4233d64d3d9f389c5c" + integrity sha512-3/JQL5JKhRchd/N2gTLTSEnHFhkfCcbSUdZoQDSj4bTkTALl7vNeR6XpW4QqOuKhnaDGndrLORtUiNiCugjRCA== + dependencies: + "@backstage/backend-common" "^0.20.1" + "@backstage/backend-plugin-api" "^0.6.9" + "@backstage/catalog-model" "^1.4.3" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.8.0" + "@backstage/plugin-scaffolder-common" "^1.4.5" + "@backstage/types" "^1.1.1" + fs-extra "10.1.0" + globby "^11.0.0" + jsonschema "^1.2.6" + p-limit "^3.1.0" + winston "^3.2.1" + zod "^3.22.4" + zod-to-json-schema "^3.20.4" + "@backstage/plugin-scaffolder-react@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-scaffolder-react/-/plugin-scaffolder-react-1.8.0.tgz#67b833716806b21d1f4b879aa93df89ed758fdfc" @@ -4940,7 +5290,7 @@ p-limit "^3.1.0" winston "^3.2.1" -"@backstage/plugin-search-backend-node@^1.2.16": +"@backstage/plugin-search-backend-node@^1.2.10", "@backstage/plugin-search-backend-node@^1.2.16": version "1.2.16" resolved "https://registry.yarnpkg.com/@backstage/plugin-search-backend-node/-/plugin-search-backend-node-1.2.16.tgz#aadfe7e8752b35b1ee93632986aabb4afc6fa71d" integrity sha512-YO0O2z3ozfONLNxON8Xj25YELM8RHOpb/8LzPdzprJUXZVhkE+/HSXjgZ2rWrgWXfH5X77OBVQuXP93s6i0JvA== @@ -4984,7 +5334,7 @@ yn "^4.0.0" zod "^3.22.4" -"@backstage/plugin-search-common@^1.2.10": +"@backstage/plugin-search-common@^1.2.10", "@backstage/plugin-search-common@^1.2.7": version "1.2.10" resolved "https://registry.yarnpkg.com/@backstage/plugin-search-common/-/plugin-search-common-1.2.10.tgz#c9a8294e546a124ff1eca50dbb6d04bbb2143e37" integrity sha512-yn18Beo+oXocDLfbOoCwFd8p8n7veGyDxKN/8rL6EZjMjNL13ZFvUIAOSrhg7wcx/avLKGwpYoFxMde2LxD/cA== @@ -5016,31 +5366,6 @@ version "1.4.6" resolved "https://registry.yarnpkg.com/@backstage/plugin-search/-/plugin-search-1.4.6.tgz#34b807b7f5ca0d8e6f91483ca223ea2983c01502" integrity sha512-QZkJEUc6rlLr6JMSDuI8PAZL7uXs2SwBorH+Yv49//0LUp+ktPd3wIs28aq0I2EB7LoXQNZtTnNZkh7n8JeGZw== - -"@backstage/plugin-search-react@^1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search-react/-/plugin-search-react-1.7.5.tgz#2ee2079db75a988965d20a99280f1533351b1007" - integrity sha512-c69LMiMLDxHBd21g+MXjm3vzcAUMyjLxtFtsjfm43eikj0nf0eUxwzVKua/QuHVtjsvMA8pQmHBGCGCJgqWWLw== - dependencies: - "@backstage/core-components" "^0.13.10" - "@backstage/core-plugin-api" "^1.8.2" - "@backstage/frontend-plugin-api" "^0.5.0" - "@backstage/plugin-search-common" "^1.2.10" - "@backstage/theme" "^0.5.0" - "@backstage/types" "^1.1.1" - "@backstage/version-bridge" "^1.0.7" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.61" - "@types/react" "^16.13.1 || ^17.0.0" - lodash "^4.17.21" - qs "^6.9.4" - react-use "^17.3.2" - -"@backstage/plugin-search@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@backstage/plugin-search/-/plugin-search-1.4.1.tgz#1638bdeeb8debc0a62690125065f5649d0e2bc71" - integrity sha512-ne5HjDQD/jiT8OYBZZO15QKPpbsQYEKNO1Hh72SUPKYbEGT42MNGpX3mZ7moSi3mFfPx5JVoaMDwNoycF6L5vg== dependencies: "@backstage/core-compat-api" "^0.2.0" "@backstage/core-components" "^0.14.0" @@ -5222,6 +5547,13 @@ react-use "^17.2.4" zen-observable "^0.10.0" +"@backstage/release-manifests@^0.0.10": + version "0.0.10" + resolved "https://registry.yarnpkg.com/@backstage/release-manifests/-/release-manifests-0.0.10.tgz#10f0c23cd1a00ca9b2ac5bf5c199592ba0abedae" + integrity sha512-MKGY1IqYGqItQyX+qbI+U0VPqgh9VqFIQreCOC8JXU1sh7v8XfR2DWZGmw1qVzVtIitNeqsNwIwIJyqtiMokow== + dependencies: + cross-fetch "^3.1.5" + "@backstage/release-manifests@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@backstage/release-manifests/-/release-manifests-0.0.11.tgz#e842816d249f6903c8121253358a3211425ac83e" @@ -5294,12 +5626,21 @@ "@emotion/styled" "^11.10.5" "@mui/material" "^5.12.2" +"@backstage/theme@^0.4.3": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@backstage/theme/-/theme-0.4.4.tgz#807735b58a5e1b2a0cdb50fc05ad83656f2f66cb" + integrity sha512-Mvs0FrEnQtyO2dVNPyo1wjkNHbN3vefIdj4V27SFiX9W9sj+R1b4rzFACF6xjVzfdV9oo9HdsL59CMnFlDxz4Q== + dependencies: + "@emotion/react" "^11.10.5" + "@emotion/styled" "^11.10.5" + "@mui/material" "^5.12.2" + "@backstage/types@1.1.1", "@backstage/types@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@backstage/types/-/types-1.1.1.tgz#c9ccb30357005e7fb5fa2ac140198059976eb076" integrity sha512-1cUGu+FwiJZCBOuecd0BOhIRkQYllb+7no9hHhxpAsx/DvsPGMVQMGOMvtdTycdT9SQ5MuSyFwI9wpXp2DwVvQ== -"@backstage/version-bridge@^1.0.7": +"@backstage/version-bridge@^1.0.6", "@backstage/version-bridge@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@backstage/version-bridge/-/version-bridge-1.0.7.tgz#8eb52f998d0aef9ceba53fd6dca80a7fa1703534" integrity sha512-BlkI2av9OjhMjs783wP5XHmTUmUGFsnJ4j/eQJUVvnqFjaP3IpUHfAIFD/vAhx3JvPiYOY93m+dAunTc1DiHLA== @@ -5594,6 +5935,30 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@esbuild-kit/cjs-loader@^2.4.1": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.4.tgz#8638177732e2de258a3243597bfdba082993c442" + integrity sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg== + dependencies: + "@esbuild-kit/core-utils" "^3.2.3" + get-tsconfig "^4.7.0" + +"@esbuild-kit/core-utils@^3.2.3", "@esbuild-kit/core-utils@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz#186b6598a5066f0413471d7c4d45828e399ba96c" + integrity sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ== + dependencies: + esbuild "~0.18.20" + source-map-support "^0.5.21" + +"@esbuild-kit/esm-loader@^2.5.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz#6eedee46095d7d13b1efc381e2211ed1c60e64ea" + integrity sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA== + dependencies: + "@esbuild-kit/core-utils" "^3.3.2" + get-tsconfig "^4.7.0" + "@esbuild/aix-ppc64@0.19.12": version "0.19.12" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" @@ -6334,6 +6699,14 @@ google-gax "^4.0.4" protobufjs "^7.2.5" +"@google-cloud/paginator@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== + dependencies: + arrify "^2.0.0" + extend "^3.0.2" + "@google-cloud/paginator@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-5.0.0.tgz#b8cc62f151685095d11467402cbf417c41bf14e6" @@ -6342,16 +6715,50 @@ arrify "^2.0.0" extend "^3.0.2" +"@google-cloud/projectify@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" + integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== + "@google-cloud/projectify@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be" integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA== +"@google-cloud/promisify@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e" + integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA== + "@google-cloud/promisify@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1" integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== +"@google-cloud/storage@^6.0.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.12.0.tgz#a5d3093cc075252dca5bd19a3cfda406ad3a9de1" + integrity sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw== + dependencies: + "@google-cloud/paginator" "^3.0.7" + "@google-cloud/projectify" "^3.0.0" + "@google-cloud/promisify" "^3.0.0" + abort-controller "^3.0.0" + async-retry "^1.3.3" + compressible "^2.0.12" + duplexify "^4.0.0" + ent "^2.2.0" + extend "^3.0.2" + fast-xml-parser "^4.2.2" + gaxios "^5.0.0" + google-auth-library "^8.0.1" + mime "^3.0.0" + mime-types "^2.0.8" + p-limit "^3.0.1" + retry-request "^5.0.0" + teeny-request "^8.0.0" + uuid "^8.0.0" + "@google-cloud/storage@^7.0.0": version "7.7.0" resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.7.0.tgz#d942ebea018386d276256bad93ceec9bdb955333" @@ -6688,6 +7095,132 @@ "@backstage/config" "^1.1.1" deep-freeze "^0.0.1" +"@janus-idp/cli@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@janus-idp/cli/-/cli-1.7.1.tgz#efb372462a7fb171e66815a618b69eb046a37e20" + integrity sha512-Ck/5xwLn2IAnmLEfLSksFo3r7UTMW7IUjwYN7hC5Jyw3xS4pkmyx5Vuyf+dejIIstl2cSVi78DnhTSeP4Tl3Xw== + dependencies: + "@backstage/cli-common" "^0.1.13" + "@backstage/cli-node" "^0.1.5" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.5.1" + "@backstage/errors" "^1.2.3" + "@backstage/eslint-plugin" "^0.1.3" + "@backstage/types" "^1.1.1" + "@manypkg/get-packages" "^1.1.3" + "@openshift/dynamic-plugin-sdk-webpack" "^3.0.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.7" + "@rollup/plugin-commonjs" "^25.0.4" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.2.1" + "@rollup/plugin-yaml" "^4.0.0" + "@svgr/rollup" "^8.1.0" + "@svgr/webpack" "^6.5.1" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.4" + bfj "^7.0.2" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^9.1.0" + css-loader "^6.5.1" + esbuild "^0.19.0" + esbuild-loader "^2.18.0" + eslint "^8.49.0" + eslint-config-prettier "^8.10.0" + eslint-webpack-plugin "^3.2.0" + express "^4.18.2" + fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" + fs-extra "^10.1.0" + handlebars "^4.7.7" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + node-libs-browser "^2.2.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + postcss "^8.2.13" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.14.0" + recursive-readdir "^2.2.2" + rollup "^2.78.0" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + semver "^7.5.4" + style-loader "^3.3.1" + swc-loader "^0.2.3" + typescript-json-schema "^0.62.0" + webpack "^5.89.0" + webpack-dev-server "^4.15.1" + yml-loader "^2.1.0" + yn "^4.0.0" + +"@janus-idp/cli@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@janus-idp/cli/-/cli-1.7.3.tgz#aa59928d6d4e0461d95977ae9bc301ccf60a512e" + integrity sha512-OKvjN4lqh4KWhzQ7tixggRu/RSymVfEhl8azeuvS6MzWahWb+FBevUS/LB+OuSbUusvCWei4kPrJVPRJklXd7g== + dependencies: + "@backstage/cli-common" "^0.1.13" + "@backstage/cli-node" "^0.2.3" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.2" + "@backstage/errors" "^1.2.3" + "@backstage/eslint-plugin" "^0.1.5" + "@backstage/types" "^1.1.1" + "@manypkg/get-packages" "^1.1.3" + "@openshift/dynamic-plugin-sdk-webpack" "^3.0.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.7" + "@rollup/plugin-commonjs" "^25.0.4" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.2.1" + "@rollup/plugin-yaml" "^4.0.0" + "@svgr/rollup" "^8.1.0" + "@svgr/webpack" "^6.5.1" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.4" + bfj "^7.0.2" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^9.1.0" + css-loader "^6.5.1" + esbuild "^0.19.0" + esbuild-loader "^2.18.0" + eslint "^8.49.0" + eslint-config-prettier "^8.10.0" + eslint-webpack-plugin "^3.2.0" + express "^4.18.2" + fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" + fs-extra "^10.1.0" + handlebars "^4.7.7" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + node-libs-browser "^2.2.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + postcss "^8.2.13" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.14.0" + recursive-readdir "^2.2.2" + rollup "^2.78.0" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + semver "^7.5.4" + style-loader "^3.3.1" + swc-loader "^0.2.3" + typescript-json-schema "^0.62.0" + webpack "^5.89.0" + webpack-dev-server "^4.15.1" + yml-loader "^2.1.0" + yn "^4.0.0" + "@jest/console@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" @@ -6936,7 +7469,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -7343,6 +7876,28 @@ ajv-formats-draft2019 "^1.6.1" tslib "^2.4.0" +"@kubernetes/client-node@0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@kubernetes/client-node/-/client-node-0.19.0.tgz#ebd2121e5c8dc1a47ff1b2574bda1e760d0abb82" + integrity sha512-WTOjGuFQ8yeW3+qD6JrAYhpwpoQbe9R8cA/61WCyFrNawSTUgLstHu7EsZRYEs39er3jDn3wCEaczz+VOFlc2Q== + dependencies: + "@types/js-yaml" "^4.0.1" + "@types/node" "^20.1.1" + "@types/request" "^2.47.1" + "@types/ws" "^8.5.3" + byline "^5.0.0" + isomorphic-ws "^5.0.0" + js-yaml "^4.1.0" + jsonpath-plus "^7.2.0" + request "^2.88.0" + rfc4648 "^1.3.0" + stream-buffers "^3.0.2" + tar "^6.1.11" + tslib "^2.4.1" + ws "^8.11.0" + optionalDependencies: + openid-client "^5.3.0" + "@kubernetes/client-node@0.20.0", "@kubernetes/client-node@^0.20.0": version "0.20.0" resolved "https://registry.yarnpkg.com/@kubernetes/client-node/-/client-node-0.20.0.tgz#4447ae27fd6eef3d4830a5a039f3b84ffd5c5913" @@ -9955,6 +10510,18 @@ lodash "^4.17.21" lodash-es "^4.17.21" +"@rollup/plugin-commonjs@^23.0.0": + version "23.0.7" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.7.tgz#7d26d879caa54283086de1974b66f512ef60abdc" + integrity sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.27.0" + "@rollup/plugin-commonjs@^25.0.0", "@rollup/plugin-commonjs@^25.0.4": version "25.0.7" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf" @@ -9967,6 +10534,13 @@ is-reference "1.2.1" magic-string "^0.30.3" +"@rollup/plugin-json@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.2.tgz#d7dbbac62ff74064876b3e5d0d863cb3ad1e7cdb" + integrity sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@rollup/plugin-json@^6.0.0": version "6.0.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.1.tgz#7e2efcf5ed549963f1444e010611d22f463931c0" @@ -9974,6 +10548,18 @@ dependencies: "@rollup/pluginutils" "^5.0.1" +"@rollup/plugin-node-resolve@^13.0.6": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + deepmerge "^4.2.2" + is-builtin-module "^3.1.0" + is-module "^1.0.0" + resolve "^1.19.0" + "@rollup/plugin-node-resolve@^15.0.0", "@rollup/plugin-node-resolve@^15.2.1": version "15.2.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" @@ -9995,6 +10581,15 @@ js-yaml "^4.1.0" tosource "^2.0.0-alpha.3" +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@rollup/pluginutils@^4.1.1", "@rollup/pluginutils@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" @@ -13466,7 +14061,7 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@6.4.2": +"@testing-library/jest-dom@6.4.2", "@testing-library/jest-dom@^6.0.0": version "6.4.2" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz#38949f6b63722900e2d75ba3c6d9bf8cffb3300e" integrity sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw== @@ -13480,20 +14075,6 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/jest-dom@6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.0.0.tgz#d2ba5a3fd13724d5966b3f8cd24d2cedcab4fa76" - integrity sha512-Ye2R3+/oM27jir8CzYPmuWdavTaKwNZcu0d22L9pO/vnOYE0wmrtpw79TQJa8H6gV8/i7yd+pLaqeLlA0rTMfg== - dependencies: - "@adobe/css-tools" "^4.0.1" - "@babel/runtime" "^7.9.2" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - "@testing-library/react-hooks@8.0.1": version "8.0.1" resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz#0924bbd5b55e0c0c0502d1754657ada66947ca12" @@ -13502,7 +14083,7 @@ "@babel/runtime" "^7.12.5" react-error-boundary "^3.1.0" -"@testing-library/react@14.2.1": +"@testing-library/react@14.2.1", "@testing-library/react@^14.0.0": version "14.2.1" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.2.1.tgz#bf69aa3f71c36133349976a4a2da3687561d8310" integrity sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A== @@ -13516,25 +14097,16 @@ resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.0.0.tgz#3906aa6f0e56fd012d73559f5f05c02e63ba18dd" integrity sha512-hZhjNrle/DMi1ziHwHy8LS0fYJtf+cID7fuG5+4h+Bk83xQaRDQT/DlqfL4hJYw3mxW6KTIxoODrhGnhqJebdQ== -"@testing-library/react@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" - integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" - "@types/react-dom" "^18.0.0" - -"@testing-library/user-event@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.0.0.tgz#3906aa6f0e56fd012d73559f5f05c02e63ba18dd" - integrity sha512-hZhjNrle/DMi1ziHwHy8LS0fYJtf+cID7fuG5+4h+Bk83xQaRDQT/DlqfL4hJYw3mxW6KTIxoODrhGnhqJebdQ== - "@testing-library/user-event@14.5.1", "@testing-library/user-event@^14.4.0": version "14.5.1" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.1.tgz#27337d72046d5236b32fd977edee3f74c71d332f" integrity sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg== +"@testing-library/user-event@^14.0.0": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== + "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" @@ -14075,6 +14647,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -14100,9 +14677,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/express@^4.17.14", "@types/express@^4.7.0": - -"@types/express@^*", "@types/express@^4.7.0": +"@types/express@^*", "@types/express@^4.17.14", "@types/express@^4.7.0": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -14247,7 +14822,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/jest@^29.5.11": +"@types/jest@^29.0.0", "@types/jest@^29.5.11": version "29.5.12" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== @@ -14601,11 +15176,6 @@ version "18.2.19" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.19.tgz#b84b7c30c635a6c26c6a6dfbb599b2da9788be58" integrity sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA== - -"@types/react-dom@17.0.21", "@types/react-dom@<18.0.0", "@types/react-dom@^17", "@types/react-dom@^17.0.21", "@types/react-dom@^18.0.0": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.25.tgz#e0e5b3571e1069625b3a3da2b279379aa33a0cb5" - integrity sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA== dependencies: "@types/react" "*" @@ -14714,6 +15284,13 @@ "@types/tough-cookie" "*" form-data "^2.5.0" +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" @@ -14846,8 +15423,6 @@ "@types/superagent" "*" "@types/supertest@2.0.16": - -"@types/supertest@2.0.16", "@types/supertest@^2.0.12": version "2.0.16" resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== @@ -14987,6 +15562,23 @@ resolved "https://registry.yarnpkg.com/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.4.tgz#445251eb00bd9c1e751f82c7c6bf4f714edfd464" integrity sha512-/emrKCfQMQmFCqRqqBJ0JueHBT06jBRM3e8OgnvDUcvuExONujIk2hFA5dNsN9Nt41ljGVDdChvCydATZ+KOZw== +"@typescript-eslint/eslint-plugin@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f" + integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/type-utils" "6.7.5" + "@typescript-eslint/utils" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/eslint-plugin@^6.12.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" @@ -15031,6 +15623,14 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" +"@typescript-eslint/scope-manager@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" + integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== + dependencies: + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/scope-manager@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" @@ -15049,6 +15649,16 @@ debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/type-utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz#0a65949ec16588d8956f6d967f7d9c84ddb2d72a" + integrity sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g== + dependencies: + "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/utils" "6.7.5" + debug "^4.3.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" @@ -15059,6 +15669,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/types@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" + integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== + "@typescript-eslint/types@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" @@ -15091,6 +15706,19 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" + integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== + dependencies: + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/typescript-estree@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" @@ -15117,6 +15745,19 @@ "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" +"@typescript-eslint/utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" + integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + semver "^7.5.4" + "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.45.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" @@ -15160,6 +15801,14 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" + integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== + dependencies: + "@typescript-eslint/types" "6.7.5" + eslint-visitor-keys "^3.4.1" + "@typescript-eslint/visitor-keys@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" @@ -15920,7 +16569,7 @@ archiver-utils@^4.0.1: normalize-path "^3.0.0" readable-stream "^3.6.0" -archiver@^5.3.0, archiver@^5.3.1: +archiver@^5.0.2, archiver@^5.3.0, archiver@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.2.tgz#99991d5957e53bd0303a392979276ac4ddccf3b0" integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== @@ -20431,7 +21080,7 @@ esbuild@^0.16.17: "@esbuild/win32-ia32" "0.16.17" "@esbuild/win32-x64" "0.16.17" -esbuild@^0.18.0: +esbuild@^0.18.0, esbuild@~0.18.20: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== @@ -20603,7 +21252,7 @@ escodegen@^2.0.0, escodegen@^2.1.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^8.10.0: +eslint-config-prettier@^8.10.0, eslint-config-prettier@^8.3.0: version "8.10.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== @@ -20640,6 +21289,15 @@ eslint-module-utils@^2.8.0: dependencies: debug "^3.2.7" +eslint-plugin-deprecation@^1.3.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-1.6.0.tgz#b12d0c5a9baf3bcde0752ff6337703c059a4ae23" + integrity sha512-rld+Vrneh/NXRtDB0vQifOvgUy0HJYoejaxWlVnsk/LK7iij2tCWQIFcCKG4uzQb+Ef86bDke39w1lh4wnon4Q== + dependencies: + "@typescript-eslint/utils" "^6.0.0" + tslib "^2.3.1" + tsutils "^3.21.0" + eslint-plugin-deprecation@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-deprecation/-/eslint-plugin-deprecation-2.0.0.tgz#9804707a4c19f3a53615c6babc0ced3d429d69cf" @@ -20784,7 +21442,7 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-webpack-plugin@^3.2.0: +eslint-webpack-plugin@^3.1.1, eslint-webpack-plugin@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== @@ -20970,6 +21628,11 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -21393,6 +22056,13 @@ fast-xml-parser@4.2.5: dependencies: strnum "^1.0.5" +fast-xml-parser@^4.2.2: + version "4.3.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz#e2f2a2ae8377e9c3dc321b151e58f420ca7e5ccc" + integrity sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ== + dependencies: + strnum "^1.0.5" + fast-xml-parser@^4.3.0, fast-xml-parser@^4.3.1: version "4.3.3" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.3.tgz#aeaf5778392329f17168c40c51bcbfec8ff965be" @@ -22362,6 +23032,13 @@ git-up@^7.0.0: is-ssh "^1.4.0" parse-url "^8.1.0" +git-url-parse@^13.0.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.1.tgz#664bddf0857c6a75b3c1f0ae6239abb08a1486d4" + integrity sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ== + dependencies: + git-up "^7.0.0" + git-url-parse@^13.1.0: version "13.1.0" resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" @@ -22582,7 +23259,7 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" -google-auth-library@^8.0.0: +google-auth-library@^8.0.0, google-auth-library@^8.0.1: version "8.9.0" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== @@ -23883,7 +24560,7 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-builtin-module@^3.2.1: +is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== @@ -24199,12 +24876,6 @@ is-ssh@^1.4.0: dependencies: protocols "^2.0.1" - -is-stream-ended@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" - integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== - is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -24963,7 +25634,7 @@ jest-worker@^29.5.0, jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: +jest@^29.0.2, jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -26599,6 +27270,13 @@ magic-string@^0.26.6: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + magic-string@^0.30.3: version "0.30.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" @@ -27669,6 +28347,11 @@ moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + monaco-editor-webpack-plugin@7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.0.1.tgz#ba19c60aba990184e36ad8722b1ed6a564527c7c" @@ -32305,6 +32988,14 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry-request@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" + integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== + dependencies: + debug "^4.1.1" + extend "^3.0.2" + retry-request@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.1.tgz#b0163aeb934bd3fa2de76902d683b09b8ce364ba" @@ -33270,7 +33961,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.21, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -33942,8 +34633,6 @@ sucrase@^3.20.2: ts-interface-checker "^0.1.9" superagent@^8.0.0, superagent@^8.0.5: - -superagent@^8.0.0, superagent@^8.0.5, superagent@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== @@ -34239,6 +34928,17 @@ tdigest@^0.1.1: dependencies: bintrees "1.0.2" +teeny-request@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" + integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + stream-events "^1.0.5" + uuid "^9.0.0" + teeny-request@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" @@ -37071,7 +37771,7 @@ zod-to-json-schema@^3.20.4, zod-to-json-schema@^3.21.4: resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.21.4.tgz#de97c5b6d4a25e9d444618486cb55c0c7fb949fd" integrity sha512-fjUZh4nQ1s6HMccgIeE0VP4QG/YRGPmyjO9sAh890aQKPEk3nqbfUXhMFaC+Dr5KvYBm8BCyvfpZf2jY9aGSsw== -zod@^3.22.4: +zod@^3.21.4, zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==