From 1e87fd3704fded7b87619beac52c250af70277c2 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Tue, 16 Jul 2024 22:40:44 -0400 Subject: [PATCH 01/56] Add project link to optimizations breakdown page https://issues.redhat.com/browse/COST-4527 --- .../details/awsBreakdown/awsBreakdown.tsx | 2 +- .../details/azureBreakdown/azureBreakdown.tsx | 2 +- .../components/breakdown/breakdownBase.tsx | 13 ++++++++----- .../components/breakdown/breakdownHeader.tsx | 19 +++++++++++-------- .../details/gcpBreakdown/gcpBreakdown.tsx | 2 +- .../details/ibmBreakdown/ibmBreakdown.tsx | 2 +- .../details/ociBreakdown/ociBreakdown.tsx | 2 +- .../details/ocpBreakdown/ocpBreakdown.tsx | 5 +++-- .../details/ocpBreakdown/optimizations.tsx | 4 +++- .../details/rhelBreakdown/rhelBreakdown.tsx | 2 +- .../optimizationsBreakdown.tsx | 17 +---------------- .../optimizationsDetails.tsx | 1 + src/routes/utils/queryState.ts | 4 ++-- 13 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/routes/details/awsBreakdown/awsBreakdown.tsx b/src/routes/details/awsBreakdown/awsBreakdown.tsx index 1c6bbf6a1..9800a1a6a 100644 --- a/src/routes/details/awsBreakdown/awsBreakdown.tsx +++ b/src/routes/details/awsBreakdown/awsBreakdown.tsx @@ -109,12 +109,12 @@ const mapStateToProps = createMapStateToProps ), costType, currency, - defaultBreadcrumbPath: formatPath(routes.awsDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.awsDetailsTitle), diff --git a/src/routes/details/azureBreakdown/azureBreakdown.tsx b/src/routes/details/azureBreakdown/azureBreakdown.tsx index cb7014dbe..455fe3c20 100644 --- a/src/routes/details/azureBreakdown/azureBreakdown.tsx +++ b/src/routes/details/azureBreakdown/azureBreakdown.tsx @@ -89,9 +89,9 @@ const mapStateToProps = createMapStateToProps, currency, - defaultBreadcrumbPath: formatPath(routes.azureDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.azureDetailsTitle), diff --git a/src/routes/details/components/breakdown/breakdownBase.tsx b/src/routes/details/components/breakdown/breakdownBase.tsx index 756017622..52f401c60 100644 --- a/src/routes/details/components/breakdown/breakdownBase.tsx +++ b/src/routes/details/components/breakdown/breakdownBase.tsx @@ -55,13 +55,14 @@ interface BreakdownOwnProps extends RouterComponentProps { } export interface BreakdownStateProps { + breadcrumbLabel?: string; + breadcrumbPath?: string; // Default breadcrumb path clusterInfoComponent?: React.ReactNode; costDistribution?: string; costOverviewComponent?: React.ReactNode; costType?: string; currency?: string; dataDetailsComponent?: React.ReactNode; - defaultBreadcrumbPath?: string; description?: string; detailsURL?: string; emptyStateTitle?: string; @@ -280,12 +281,13 @@ class BreakdownBase extends React.Component { public render() { const { + breadcrumbLabel, + breadcrumbPath, clusterInfoComponent, costDistribution, costType, currency, dataDetailsComponent, - defaultBreadcrumbPath, description, detailsURL, emptyStateTitle, @@ -327,10 +329,11 @@ class BreakdownBase extends React.Component { return ( <> { public state: BreakdownHeaderState = { ...this.defaultState }; private getBackToLink = groupByKey => { - const { breadcrumb, intl, router, tagPathsType } = this.props; + const { breadcrumbLabel, breadcrumbPath, intl, router, tagPathsType } = this.props; - if (!breadcrumb) { + if (!breadcrumbPath) { return null; } return ( - - {intl.formatMessage(messages.breakdownBackToDetails, { - value: intl.formatMessage(messages.breakdownBackToTitles, { value: tagPathsType }), - groupBy: groupByKey, - })} + + {breadcrumbLabel + ? breadcrumbLabel + : intl.formatMessage(messages.breakdownBackToDetails, { + value: intl.formatMessage(messages.breakdownBackToTitles, { value: tagPathsType }), + groupBy: groupByKey, + })} ); }; diff --git a/src/routes/details/gcpBreakdown/gcpBreakdown.tsx b/src/routes/details/gcpBreakdown/gcpBreakdown.tsx index 6255147d8..e64ffb9d3 100644 --- a/src/routes/details/gcpBreakdown/gcpBreakdown.tsx +++ b/src/routes/details/gcpBreakdown/gcpBreakdown.tsx @@ -87,9 +87,9 @@ const mapStateToProps = createMapStateToProps, currency, - defaultBreadcrumbPath: formatPath(routes.gcpDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.gcpDetailsTitle), diff --git a/src/routes/details/ibmBreakdown/ibmBreakdown.tsx b/src/routes/details/ibmBreakdown/ibmBreakdown.tsx index c2531ae2b..7b1478e45 100644 --- a/src/routes/details/ibmBreakdown/ibmBreakdown.tsx +++ b/src/routes/details/ibmBreakdown/ibmBreakdown.tsx @@ -87,9 +87,9 @@ const mapStateToProps = createMapStateToProps, currency, - defaultBreadcrumbPath: formatPath(routes.ibmDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.ibmDetailsTitle), diff --git a/src/routes/details/ociBreakdown/ociBreakdown.tsx b/src/routes/details/ociBreakdown/ociBreakdown.tsx index 1e222391b..689d8bd82 100644 --- a/src/routes/details/ociBreakdown/ociBreakdown.tsx +++ b/src/routes/details/ociBreakdown/ociBreakdown.tsx @@ -87,9 +87,9 @@ const mapStateToProps = createMapStateToProps( ); return { + breadcrumbPath: formatPath(routes.ociDetails.path), costOverviewComponent: , currency, - defaultBreadcrumbPath: formatPath(routes.ociDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.ociDetailsTitle), diff --git a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx index e869e4cc1..bb6009e0e 100644 --- a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx +++ b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx @@ -23,7 +23,7 @@ import { providersQuery, providersSelectors } from 'store/providers'; import { reportActions, reportSelectors } from 'store/reports'; import { uiActions } from 'store/ui'; import { formatPath } from 'utils/paths'; -import { breakdownDescKey, breakdownTitleKey, platformCategoryKey } from 'utils/props'; +import { breadcrumbLabelKey, breakdownDescKey, breakdownTitleKey, platformCategoryKey } from 'utils/props'; import type { RouterComponentProps } from 'utils/router'; import { withRouter } from 'utils/router'; import { getCostDistribution, getCurrency } from 'utils/sessionStorage'; @@ -94,9 +94,11 @@ const mapStateToProps = createMapStateToProps : undefined, dataDetailsComponent: groupBy === 'cluster' ? : undefined, costDistribution, @@ -111,7 +113,6 @@ const mapStateToProps = createMapStateToProps ), currency, - defaultBreadcrumbPath: formatPath(routes.ocpDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.ocpDetailsTitle), diff --git a/src/routes/details/ocpBreakdown/optimizations.tsx b/src/routes/details/ocpBreakdown/optimizations.tsx index a6e446545..05e8b903d 100644 --- a/src/routes/details/ocpBreakdown/optimizations.tsx +++ b/src/routes/details/ocpBreakdown/optimizations.tsx @@ -24,7 +24,8 @@ const Optimizations: React.FC = () => { const groupByValue = getGroupByValue(queryFromRoute); const otimizationsTab = location.search.indexOf('optimizationsTab') === -1 ? '&optimizationsTab=true' : ''; - const clusterFilter = queryState?.filter_by?.cluster ? queryState.filter_by.cluster : undefined; + const clusterFilter = queryState?.filter_by?.cluster; + const isOptimizationsPath = queryFromRoute?.optimizationsPath === 'true'; return ( = () => { cluster={clusterFilter} hideCluster={clusterFilter !== undefined} hideProject={groupBy === 'project'} + isOptimizationsPath={isOptimizationsPath} linkPath={formatPath(routes.optimizationsBreakdown.path)} linkState={{ ...(location.state && location.state), diff --git a/src/routes/details/rhelBreakdown/rhelBreakdown.tsx b/src/routes/details/rhelBreakdown/rhelBreakdown.tsx index c57ff7e12..ea5b92ec7 100644 --- a/src/routes/details/rhelBreakdown/rhelBreakdown.tsx +++ b/src/routes/details/rhelBreakdown/rhelBreakdown.tsx @@ -89,9 +89,9 @@ const mapStateToProps = createMapStateToProps, currency, - defaultBreadcrumbPath: formatPath(routes.rhelDetails.path), description: queryFromRoute[breakdownDescKey], detailsURL, emptyStateTitle: intl.formatMessage(messages.rhelDetailsTitle), diff --git a/src/routes/optimizations/optimizationsBreakdown/optimizationsBreakdown.tsx b/src/routes/optimizations/optimizationsBreakdown/optimizationsBreakdown.tsx index 862f94742..63962ce2e 100644 --- a/src/routes/optimizations/optimizationsBreakdown/optimizationsBreakdown.tsx +++ b/src/routes/optimizations/optimizationsBreakdown/optimizationsBreakdown.tsx @@ -1,10 +1,5 @@ import AsyncComponent from '@redhat-cloud-services/frontend-components/AsyncComponent'; -import messages from 'locales/messages'; import React from 'react'; -import { useIntl } from 'react-intl'; -import { routes } from 'routes'; -import { useQueryFromRoute } from 'utils/hooks'; -import { formatPath } from 'utils/paths'; import { styles } from './optimizationsBreakdown.styles'; @@ -15,19 +10,9 @@ interface OptimizationsBreakdownOwnProps { type OptimizationsBreakdownProps = OptimizationsBreakdownOwnProps; const OptimizationsBreakdown: React.FC = () => { - const intl = useIntl(); - const queryFromRoute = useQueryFromRoute(); - return (
- +
); }; diff --git a/src/routes/optimizations/optimizationsDetails/optimizationsDetails.tsx b/src/routes/optimizations/optimizationsDetails/optimizationsDetails.tsx index 1042343e0..d116c9259 100644 --- a/src/routes/optimizations/optimizationsDetails/optimizationsDetails.tsx +++ b/src/routes/optimizations/optimizationsDetails/optimizationsDetails.tsx @@ -30,6 +30,7 @@ const OptimizationsDetails: React.FC = () => { linkState={{ ...(location.state && location.state), }} + projectPath={formatPath(routes.ocpBreakdown.path)} /> ); diff --git a/src/routes/utils/queryState.ts b/src/routes/utils/queryState.ts index 8f9feea74..ce566d681 100644 --- a/src/routes/utils/queryState.ts +++ b/src/routes/utils/queryState.ts @@ -2,11 +2,11 @@ import type * as H from 'history'; import { cloneDeep } from 'lodash'; export function clearQueryState(location: H.Location, key: string) { - if (location?.state && location.state[key]) { + if (location?.state?.[key]) { location.state[key] = undefined; } } export function getQueryState(location: H.Location, key: string) { - return location?.state && location.state[key] ? cloneDeep(location.state[key]) : undefined; + return location?.state?.[key] ? cloneDeep(location.state[key]) : undefined; } From b95077f38fe590e01f607055fd03d1e0687de26d Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Thu, 18 Jul 2024 15:09:21 -0400 Subject: [PATCH 02/56] OCP unallocated and unattributed projects should be exportable https://issues.redhat.com/browse/COST-5301 --- src/routes/components/dataToolbar/dataToolbar.styles.ts | 3 +++ src/routes/components/dataToolbar/utils/actions.tsx | 6 +++++- src/routes/details/ocpDetails/detailsTable.tsx | 9 +++------ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/routes/components/dataToolbar/dataToolbar.styles.ts b/src/routes/components/dataToolbar/dataToolbar.styles.ts index 695011321..054c1a36f 100644 --- a/src/routes/components/dataToolbar/dataToolbar.styles.ts +++ b/src/routes/components/dataToolbar/dataToolbar.styles.ts @@ -11,4 +11,7 @@ export const styles = { paddingBottom: global_spacer_md.value, paddingTop: global_spacer_md.value, }, + platformCosts: { + marginTop: '6px', + }, } as { [className: string]: React.CSSProperties }; diff --git a/src/routes/components/dataToolbar/utils/actions.tsx b/src/routes/components/dataToolbar/utils/actions.tsx index cde5db443..615f53948 100644 --- a/src/routes/components/dataToolbar/utils/actions.tsx +++ b/src/routes/components/dataToolbar/utils/actions.tsx @@ -3,6 +3,7 @@ import { ExportIcon } from '@patternfly/react-icons/dist/esm/icons/export-icon'; import { intl } from 'components/i18n'; import messages from 'locales/messages'; import React from 'react'; +import { styles } from 'routes/components/dataToolbar/dataToolbar.styles'; import { DropdownWrapper } from 'routes/components/dropdownWrapper'; // Column management @@ -64,7 +65,10 @@ export const getPlatformCosts = ({ onPlatformCostsChanged?: (checked: boolean) => void; }) => { return ( - + 0) || (item.cost.workerUnallocatedDistributed && item.cost.workerUnallocatedDistributed.value > 0)); const desc = item.id && item.id !== item.label ?
{item.id}
: null; - const isDisabled = - label === `${noPrefix}${groupBy}` || - label === `${noPrefix}${groupByTagKey}` || - isUnallocatedProject || - isUnattributedCosts; + const isDisabled = label === `${noPrefix}${groupBy}` || label === `${noPrefix}${groupByTagKey}`; + const isLinkDisabled = isDisabled || isUnallocatedProject || isUnattributedCosts; const actions = this.getActions(item, isDisabled); - const name = isDisabled ? ( + const name = isLinkDisabled ? ( (label as any) ) : ( Date: Mon, 22 Jul 2024 10:10:19 +0000 Subject: [PATCH 03/56] (chore): Bump the lint-dependencies group with 2 updates Bumps the lint-dependencies group with 2 updates: [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) and [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react). Updates `eslint-plugin-jsdoc` from 48.7.0 to 48.8.3 - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v48.7.0...v48.8.3) Updates `eslint-plugin-react` from 7.34.4 to 7.35.0 - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.4...v7.35.0) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 41 ++++++++++++++--------------------------- package.json | 4 ++-- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 208498c10..4733f7491 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,11 +67,11 @@ "eslint": "^9.7.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^48.7.0", + "eslint-plugin-jsdoc": "^48.8.3", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.2.2", @@ -4958,18 +4958,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", @@ -8494,9 +8482,9 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.7.0.tgz", - "integrity": "sha512-5oiVf7Y+ZxGYQTlLq81X72n+S+hjvS/u0upAdbpPEeaIZILK3MKN8lm/6QqKioBjm/qZ0B5XpMQUtc2fUkqXAg==", + "version": "48.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.8.3.tgz", + "integrity": "sha512-AtIvwwW9D17MRkM0Z0y3/xZYaa9mdAvJrkY6fU/HNUwGbmMtHVvK4qRM9CDixGVtfNrQitb8c6zQtdh6cTOvLg==", "dev": true, "dependencies": { "@es-joy/jsdoccomment": "~0.46.0", @@ -8506,9 +8494,9 @@ "escape-string-regexp": "^4.0.0", "esquery": "^1.6.0", "parse-imports": "^2.1.1", - "semver": "^7.6.2", + "semver": "^7.6.3", "spdx-expression-parse": "^4.0.0", - "synckit": "^0.9.0" + "synckit": "^0.9.1" }, "engines": { "node": ">=18" @@ -8547,9 +8535,9 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8874,15 +8862,14 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", - "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", @@ -8903,7 +8890,7 @@ "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { diff --git a/package.json b/package.json index 0fa81ea88..32fc574ff 100644 --- a/package.json +++ b/package.json @@ -107,11 +107,11 @@ "eslint": "^9.7.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^48.7.0", + "eslint-plugin-jsdoc": "^48.8.3", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.2.2", From 94e739bdd445aad8138c29e9fcb149442090fbc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 10:10:54 +0000 Subject: [PATCH 04/56] (chore): Bump ts-jest in the test-dependencies group Bumps the test-dependencies group with 1 update: [ts-jest](https://github.com/kulshekhar/ts-jest). Updates `ts-jest` from 29.2.2 to 29.2.3 - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.2.2...v29.2.3) --- updated-dependencies: - dependency-name: ts-jest dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 208498c10..955cb35da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,7 +87,7 @@ "prettier": "^3.3.3", "rimraf": "^6.0.1", "swc_mut_cjs_exports": "^0.99.0", - "ts-jest": "^29.2.2", + "ts-jest": "^29.2.3", "ts-patch": "^3.2.1", "typescript": "^5.5.3", "webpack-bundle-analyzer": "^4.10.2" @@ -18714,13 +18714,13 @@ } }, "node_modules/ts-jest": { - "version": "29.2.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.2.tgz", - "integrity": "sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg==", + "version": "29.2.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.3.tgz", + "integrity": "sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ==", "dev": true, "dependencies": { "bs-logger": "0.x", - "ejs": "^3.0.0", + "ejs": "^3.1.10", "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", "json5": "^2.2.3", diff --git a/package.json b/package.json index 0fa81ea88..ace91906a 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "prettier": "^3.3.3", "rimraf": "^6.0.1", "swc_mut_cjs_exports": "^0.99.0", - "ts-jest": "^29.2.2", + "ts-jest": "^29.2.3", "ts-patch": "^3.2.1", "typescript": "^5.5.3", "webpack-bundle-analyzer": "^4.10.2" From 0219d7f5a130ee4b732f81643aea4d4bc8c69346 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 10:12:07 +0000 Subject: [PATCH 05/56] (chore): Bump @redhat-cloud-services/frontend-components-utilities Bumps the ci-dependencies group with 1 update: [@redhat-cloud-services/frontend-components-utilities](https://github.com/RedHatInsights/frontend-components). Updates `@redhat-cloud-services/frontend-components-utilities` from 4.0.13 to 4.0.14 - [Commits](https://github.com/RedHatInsights/frontend-components/commits) --- updated-dependencies: - dependency-name: "@redhat-cloud-services/frontend-components-utilities" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 208498c10..7dc34219b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@redhat-cloud-services/frontend-components": "^4.2.13", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.13", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", "@redhat-cloud-services/rbac-client": "^2.0.4", "@reduxjs/toolkit": "^2.2.6", "@unleash/proxy-client-react": "^4.3.0", @@ -2673,9 +2673,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-utilities": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.13.tgz", - "integrity": "sha512-UBvfUlrf0IVPRcqhipRXGBNIuMP1+CG4FRNyGKCb8PuZM/iPX951JmEbelgBAyEwKGffnEPojP0A+9Xu6iFlJg==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.14.tgz", + "integrity": "sha512-Xf3zvEZ9nPZJ24qlDYtIkmFW/zsWwQHzU4rfaftNDol7mP+X21PunW3pMb9YSCDzRiqKiwWDUjtgiVjiuNTb3w==", "dependencies": { "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", "@redhat-cloud-services/types": "^1.0.9", diff --git a/package.json b/package.json index 0fa81ea88..9e37a9955 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@redhat-cloud-services/frontend-components": "^4.2.13", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.13", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", "@redhat-cloud-services/rbac-client": "^2.0.4", "@reduxjs/toolkit": "^2.2.6", "@unleash/proxy-client-react": "^4.3.0", From cd947af84e860cf2cc57c2d0ecfec43d22894c7f Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 22 Jul 2024 12:59:48 -0400 Subject: [PATCH 06/56] API URLs need trailing slash for Safari https://issues.redhat.com/browse/COST-5313 --- src/api/settings.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/api/settings.ts b/src/api/settings.ts index 39c8ac023..0d8d1d44d 100644 --- a/src/api/settings.ts +++ b/src/api/settings.ts @@ -56,17 +56,17 @@ export const SettingsTypePaths: Partial> = { [SettingsType.costCategoriesEnable]: 'settings/aws_category_keys/enable/', [SettingsType.costCategoriesDisable]: 'settings/aws_category_keys/disable/', [SettingsType.platformProjects]: 'settings/cost-groups/', - [SettingsType.platformProjectsAdd]: 'settings/cost-groups/add', - [SettingsType.platformProjectsRemove]: 'settings/cost-groups/remove', - [SettingsType.tags]: 'settings/tags', + [SettingsType.platformProjectsAdd]: 'settings/cost-groups/add/', + [SettingsType.platformProjectsRemove]: 'settings/cost-groups/remove/', + [SettingsType.tags]: 'settings/tags/', [SettingsType.tagsEnable]: 'settings/tags/enable/', [SettingsType.tagsDisable]: 'settings/tags/disable/', - [SettingsType.tagsMappings]: 'settings/tags/mappings', - [SettingsType.tagsMappingsChild]: 'settings/tags/mappings/child', - [SettingsType.tagsMappingsChildAdd]: 'settings/tags/mappings/child/add', - [SettingsType.tagsMappingsChildRemove]: 'settings/tags/mappings/child/remove', - [SettingsType.tagsMappingsParent]: 'settings/tags/mappings/parent', - [SettingsType.tagsMappingsParentRemove]: 'settings/tags/mappings/parent/remove', + [SettingsType.tagsMappings]: 'settings/tags/mappings/', + [SettingsType.tagsMappingsChild]: 'settings/tags/mappings/child/', + [SettingsType.tagsMappingsChildAdd]: 'settings/tags/mappings/child/add/', + [SettingsType.tagsMappingsChildRemove]: 'settings/tags/mappings/child/remove/', + [SettingsType.tagsMappingsParent]: 'settings/tags/mappings/parent/', + [SettingsType.tagsMappingsParentRemove]: 'settings/tags/mappings/parent/remove/', }; export function fetchSettings(settingsType: SettingsType, query: string) { From 5f155416ccaa8334c5b73b4a5204c2b10ca295a6 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 22 Jul 2024 14:12:44 -0400 Subject: [PATCH 07/56] Dependency updates --- package-lock.json | 108 ++++++++++++++++++++++++---------------------- package.json | 6 +-- 2 files changed, 59 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8278911d6..2a16eabfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", "@redhat-cloud-services/rbac-client": "^2.0.4", "@reduxjs/toolkit": "^2.2.6", - "@unleash/proxy-client-react": "^4.3.0", + "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.2", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", @@ -60,8 +60,8 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^7.16.1", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/eslint-plugin": "^7.17.0", + "@typescript-eslint/parser": "^7.17.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.7.0", @@ -4116,17 +4116,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", - "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", + "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/type-utils": "7.16.1", - "@typescript-eslint/utils": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/type-utils": "7.17.0", + "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4150,16 +4150,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", - "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "debug": "^4.3.4" }, "engines": { @@ -4179,14 +4179,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", - "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", + "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1" + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4197,14 +4197,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", - "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", + "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/utils": "7.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4225,9 +4225,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", - "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", "dev": true, "license": "MIT", "engines": { @@ -4239,14 +4239,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", - "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", + "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4297,16 +4297,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", - "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", + "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1" + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -4320,13 +4320,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", - "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/types": "7.17.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4351,14 +4351,15 @@ } }, "node_modules/@unleash/proxy-client-react": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-4.3.0.tgz", - "integrity": "sha512-WCsTcuxIcchW8j5g1vSKZZ1C2yRU9cJog0PVgUSgqLQE01bDXLmo4Nhx2vE8d4XQ3o2bC5FxPa9g87ipuObMCA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-4.3.1.tgz", + "integrity": "sha512-AZ53XY+M/TVG1LRqULiikxc+IMUZMvfr4Sb7axWBOJbNwmQ39vHOWXy19dEFS3ha2b9EpHA1bC3IdaDWzR3euQ==", + "license": "Apache-2.0", "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "unleash-proxy-client": "^3.5.1" + "unleash-proxy-client": "^3.5.2" } }, "node_modules/@webassemblyjs/ast": { @@ -18586,6 +18587,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT", "peer": true }, "node_modules/tiny-warning": { @@ -19302,9 +19304,10 @@ } }, "node_modules/unleash-proxy-client": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/unleash-proxy-client/-/unleash-proxy-client-3.5.1.tgz", - "integrity": "sha512-vfWAozp5O16ZedPPH7wFobsZaj8TQQEp/pfj+4jpWZTnOXyFpH6fAgrztRHO26bQ6iC95vVtfeVRQvgw9lo5zA==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/unleash-proxy-client/-/unleash-proxy-client-3.5.2.tgz", + "integrity": "sha512-fbxTmNyJ/B6uKAZSRcfzZ9IXHokPikWgI14/6DQU3poJjZr+P7hX2KyZbkucd1/0VFYWnNTPAn+ihwyV3C8F/Q==", + "license": "Apache-2.0", "peer": true, "dependencies": { "tiny-emitter": "^2.1.0", @@ -19319,6 +19322,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "peer": true, "bin": { "uuid": "dist/bin/uuid" diff --git a/package.json b/package.json index 89bab951e..c25fddda3 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", "@redhat-cloud-services/rbac-client": "^2.0.4", "@reduxjs/toolkit": "^2.2.6", - "@unleash/proxy-client-react": "^4.3.0", + "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.2", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", @@ -100,8 +100,8 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^7.16.1", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/eslint-plugin": "^7.17.0", + "@typescript-eslint/parser": "^7.17.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.7.0", From 63ab0202c23edcff569d050b9e49e6bf78adf2c4 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 19 Jul 2024 15:05:10 -0400 Subject: [PATCH 08/56] Wire up the new AWS EC2 API https://issues.redhat.com/browse/COST-4855 --- src/api/reports/awsReports.ts | 9 +- src/api/resources/awsResource.ts | 2 + src/api/resources/resource.ts | 3 + src/api/resources/resourceUtils.ts | 2 + .../components/dataToolbar/dataToolbar.tsx | 3 + .../components/dataToolbar/utils/category.tsx | 7 +- .../components/dataToolbar/utils/common.ts | 1 + .../dataToolbar/utils/orgUntits.tsx | 4 +- .../components/dataToolbar/utils/tags.tsx | 4 +- src/routes/components/export/exportModal.tsx | 8 +- src/routes/components/export/exportSubmit.tsx | 28 +- .../resourceTypeahead/resourceFetch.tsx | 5 +- .../resourceTypeahead/resourceTypeahead.tsx | 3 + .../details/awsBreakdown/instances/data.ts | 429 ------------------ .../awsBreakdown/instances/instances.tsx | 34 +- .../awsBreakdown/instances/instancesTable.tsx | 17 +- .../instances/instancesToolbar.tsx | 17 +- src/routes/details/awsDetails/awsDetails.tsx | 1 + .../details/awsDetails/detailsToolbar.tsx | 6 +- .../details/azureDetails/azureDetails.tsx | 1 + .../details/components/actions/actions.tsx | 6 +- src/routes/details/gcpDetails/gcpDetails.tsx | 1 + src/routes/details/ibmDetails/ibmDetails.tsx | 1 + src/routes/details/ociDetails/ociDetails.tsx | 1 + .../details/ocpDetails/detailsToolbar.tsx | 6 +- src/routes/details/ocpDetails/ocpDetails.tsx | 1 + .../details/rhelDetails/rhelDetails.tsx | 1 + src/routes/explorer/explorer.tsx | 2 + src/routes/utils/filter.ts | 6 +- 29 files changed, 127 insertions(+), 482 deletions(-) delete mode 100644 src/routes/details/awsBreakdown/instances/data.ts diff --git a/src/api/reports/awsReports.ts b/src/api/reports/awsReports.ts index 98104ff26..1014664fd 100644 --- a/src/api/reports/awsReports.ts +++ b/src/api/reports/awsReports.ts @@ -1,5 +1,4 @@ import { axiosInstance } from 'api'; -import { default as devAxiosInstance } from 'api/apiDev'; import type { Report, ReportData, ReportItem, ReportItemValue, ReportMeta, ReportValue } from './report'; import { ReportType } from './report'; @@ -63,9 +62,9 @@ export const ReportTypePaths: Partial> = { export function runReport(reportType: ReportType, query: string) { const path = ReportTypePaths[reportType]; - // For use with API development - if (reportType === ReportType.ec2Compute) { - return devAxiosInstance.get(`${path}?${query}`); - } + // For use with API development -- see 'api/apiDev' + // if (reportType === ReportType.ec2Compute) { + // return devAxiosInstance.get(`${path}?${query}`); + // } return axiosInstance.get(`${path}?${query}`); } diff --git a/src/api/resources/awsResource.ts b/src/api/resources/awsResource.ts index b955c84fe..a08b1345f 100644 --- a/src/api/resources/awsResource.ts +++ b/src/api/resources/awsResource.ts @@ -6,6 +6,8 @@ import { ResourceType } from './resource'; export const ResourceTypePaths: Partial> = { [ResourceType.account]: 'resource-types/aws-accounts/', [ResourceType.aws_category]: 'resource-types/aws-categories/', + [ResourceType.aws_ec2_instance]: 'resource-types/aws-ec2-compute-instances/', + [ResourceType.aws_ec2_os]: 'resource-types/aws-ec2-compute-os/', [ResourceType.region]: 'resource-types/aws-regions/', [ResourceType.service]: 'resource-types/aws-services/', }; diff --git a/src/api/resources/resource.ts b/src/api/resources/resource.ts index 72866d563..6d1066e02 100644 --- a/src/api/resources/resource.ts +++ b/src/api/resources/resource.ts @@ -3,6 +3,7 @@ import type { PagedMetaData, PagedResponse } from 'api/api'; export interface ResourceData { account_alias?: string; cluster_alias?: string; + instance_name?: string; key?: string; value?: string | string[]; } @@ -13,6 +14,8 @@ export interface Resource extends PagedResponse {} export const enum ResourceType { account = 'account', aws_category = 'aws_category', + aws_ec2_instance = 'instance', + aws_ec2_os = 'operating_system', cluster = 'cluster', gcpProject = 'gcp_project', node = 'node', diff --git a/src/api/resources/resourceUtils.ts b/src/api/resources/resourceUtils.ts index e8e699370..0de641df3 100644 --- a/src/api/resources/resourceUtils.ts +++ b/src/api/resources/resourceUtils.ts @@ -32,6 +32,8 @@ export function isResourceTypeValid(resourcePathsType: ResourcePathsType, resour switch (resourceType) { case ResourceType.account: case ResourceType.aws_category: + case ResourceType.aws_ec2_instance: + case ResourceType.aws_ec2_os: case ResourceType.cluster: case ResourceType.gcpProject: case ResourceType.node: diff --git a/src/routes/components/dataToolbar/dataToolbar.tsx b/src/routes/components/dataToolbar/dataToolbar.tsx index 0caa8ea9a..c1a1af26f 100644 --- a/src/routes/components/dataToolbar/dataToolbar.tsx +++ b/src/routes/components/dataToolbar/dataToolbar.tsx @@ -273,6 +273,9 @@ export class DataToolbarBase extends React.Component onCategoryInputSelect(value, categoryOption.key)} placeholder={intl.formatMessage(messages.filterByPlaceholder, { value: placeholderKey })} + resourceKey={categoryOption.resourceKey} resourcePathsType={resourcePathsType} resourceType={categoryOption.key as ResourceType} /> @@ -124,12 +125,12 @@ export const onCategoryInput = ({ key?: string; }) => { if (event && event.key && event.key !== 'Enter') { - return {}; + return {}; // For destructure } const val = cleanInput(categoryInput); if (val.trim() === '') { - return {}; + return {}; // For destructure } const isExcludes = currentExclude === ExcludeType.exclude; diff --git a/src/routes/components/dataToolbar/utils/common.ts b/src/routes/components/dataToolbar/utils/common.ts index 52b425667..b71d23a9c 100644 --- a/src/routes/components/dataToolbar/utils/common.ts +++ b/src/routes/components/dataToolbar/utils/common.ts @@ -13,6 +13,7 @@ export interface Filters { export interface ToolbarChipGroupExt extends ToolbarChipGroup { ariaLabelKey?: string; placeholderKey?: string; + resourceKey?: string; selectClassName?: string; // A selector from routes/components/dataToolbar/dataToolbar.scss selectOptions?: ToolbarChipGroup[]; } diff --git a/src/routes/components/dataToolbar/utils/orgUntits.tsx b/src/routes/components/dataToolbar/utils/orgUntits.tsx index d9e3b9ed7..63e626f78 100644 --- a/src/routes/components/dataToolbar/utils/orgUntits.tsx +++ b/src/routes/components/dataToolbar/utils/orgUntits.tsx @@ -32,14 +32,14 @@ export const getOrgUnitSelect = ({ const selectOptions: SelectWrapperOption[] = getOrgUnitOptions(orgReport).map(option => ({ description: option.key, compareTo: item => - filters[orgUnitIdKey] ? (filters[orgUnitIdKey] as any).find(filter => filter.value === item.value) : false, + filters?.[orgUnitIdKey] ? (filters[orgUnitIdKey] as any).find(filter => filter.value === item.value) : false, toString: () => option.name, value: option.key, })); const chips = []; // Get selected items as PatternFly's ToolbarChip type const selections = []; // Select options and selections must be same type - if (filters[orgUnitIdKey] && Array.isArray(filters[orgUnitIdKey])) { + if (filters?.[orgUnitIdKey] && Array.isArray(filters[orgUnitIdKey])) { (filters[orgUnitIdKey] as any).map(filter => { const selection = selectOptions.find(option => option.value === filter.value); if (selection) { diff --git a/src/routes/components/dataToolbar/utils/tags.tsx b/src/routes/components/dataToolbar/utils/tags.tsx index bd152c672..e32a09fe5 100644 --- a/src/routes/components/dataToolbar/utils/tags.tsx +++ b/src/routes/components/dataToolbar/utils/tags.tsx @@ -137,7 +137,7 @@ export const getTagValueSelect = ({ return ( filter.value) : []} + selections={filters?.tag?.[tagKeyOption.key] ? filters.tag[tagKeyOption.key].map(filter => filter.value) : []} tagKey={currentTagKey} tagKeyValue={tagKeyValueInput} tagPathsType={tagPathsType} diff --git a/src/routes/components/export/exportModal.tsx b/src/routes/components/export/exportModal.tsx index 5194a1bba..3faa1c1ef 100644 --- a/src/routes/components/export/exportModal.tsx +++ b/src/routes/components/export/exportModal.tsx @@ -13,7 +13,7 @@ import { Radio, TextInput, } from '@patternfly/react-core'; -import type { ReportPathsType } from 'api/reports/report'; +import type { ReportPathsType, ReportType } from 'api/reports/report'; import type { AxiosError } from 'axios'; import { format } from 'date-fns'; import messages from 'locales/messages'; @@ -35,10 +35,12 @@ export interface ExportModalOwnProps { groupBy?: string; isAllItems?: boolean; isOpen: boolean; + isTimeScoped?: boolean; items?: ComputedReportItem[]; onClose(isOpen: boolean); reportPathsType: ReportPathsType; reportQueryString: string; + reportType: ReportType; resolution?: 'daily' | 'monthly'; // Default resolution showAggregateType?: boolean; // Monthly resolution filters are not valid with date range showFormatType?: boolean; // Format type; CVS / JSON @@ -144,9 +146,11 @@ export class ExportModalBase extends React.Component, - - - - - - - + return ; +}; + +const useMapToProps = (): ClusterDetailsStateProps => { + // PermissionsWrapper has already made an API request + const providersQueryString = getProvidersQuery(providersQuery); + const providers = useSelector((state: RootState) => + providersSelectors.selectProviders(state, ProviderType.all, providersQueryString) + ); + const providersError = useSelector((state: RootState) => + providersSelectors.selectProvidersError(state, ProviderType.all, providersQueryString) ); + const providersFetchStatus = useSelector((state: RootState) => + providersSelectors.selectProvidersFetchStatus(state, ProviderType.all, providersQueryString) + ); + + return { + providers, + providersError, + providersFetchStatus, + providersQueryString, + }; }; -export default ClusterDetails; +export { ClusterDetails }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx b/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx new file mode 100644 index 000000000..334c99a64 --- /dev/null +++ b/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx @@ -0,0 +1,52 @@ +import { Button, ButtonVariant } from '@patternfly/react-core'; +import { Modal, ModalBody, ModalHeader, ModalVariant } from '@patternfly/react-core/next'; +import messages from 'locales/messages'; +import React, { useState } from 'react'; +import { useIntl } from 'react-intl'; +import { OverallStatus } from 'routes/details/components/providerDetails/clusterDetails/components/overallStatus'; + +import { styles } from './clusterDetails.styles'; +import { ClusterDetailsContent } from './clusterDetailsContent'; + +interface ClusterDetailsModalOwnProps { + clusterId?: string; + showStatus?: boolean; +} + +type ClusterDetailsModalProps = ClusterDetailsModalOwnProps; + +const ClusterDetailsModal: React.FC = ({ + clusterId, + showStatus = true, +}: ClusterDetailsModalProps) => { + const intl = useIntl(); + const [isOpen, setIsOpen] = useState(false); + + const handleOnClose = () => { + setIsOpen(false); + }; + + const handleOnClick = () => { + setIsOpen(!isOpen); + }; + + // PatternFly modal appends to document.body, which is outside the scoped "costManagement" dom tree. + // Use className="costManagement" to override PatternFly styles or append the modal to an element within the tree + + return ( + <> + {showStatus && } + + + + + + + + + ); +}; + +export { ClusterDetailsModal }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx b/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx new file mode 100644 index 000000000..e642eca7a --- /dev/null +++ b/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx @@ -0,0 +1,83 @@ +import type { Providers, ProviderType } from 'api/providers'; +import messages from 'locales/messages'; +import React, { useEffect, useState } from 'react'; +import { useIntl } from 'react-intl'; +import { DataTable } from 'routes/components/dataTable'; +import { styles } from 'routes/components/dataTable/dataTable.styles'; +import { filterProviders } from 'routes/utils/providers'; +import { getReleasePath } from 'utils/paths'; + +import { ClusterDetailsModal } from './clusterDetailsModal'; +import { OverallStatus } from './components/overallStatus'; + +interface ClusterDetailsTableOwnProps { + providers?: Providers; + providerType?: ProviderType; +} + +type ClusterDetailsTableProps = ClusterDetailsTableOwnProps; + +const ClusterDetailsTable: React.FC = ({ providers, providerType }) => { + const intl = useIntl(); + const [columns, setColumns] = useState([]); + const [rows, setRows] = useState([]); + + const initDatum = () => { + if (!providers) { + return; + } + + // Filter OCP providers to skip an extra API request + const filteredProviders = filterProviders(providers, providerType)?.data?.filter(item => item.status !== null); + + const newRows = []; + const newColumns = [ + { + name: intl.formatMessage(messages.integration), + }, + { + name: intl.formatMessage(messages.lastUpdated), + }, + { + name: intl.formatMessage(messages.status), + }, + { + name: '', + }, + ]; + + const release = getReleasePath(); + + filteredProviders.map(item => { + const clusterId = item?.authentication?.credentials?.cluster_id; + + newRows.push({ + cells: [ + { + value: ( + <> + {item.name || clusterId} + {clusterId !== item.name &&
{clusterId}
} + + ), + }, + { value: }, + { value: }, + { value: }, + ], + item, + }); + }); + + setColumns(newColumns); + setRows(newRows); + }; + + useEffect(() => { + initDatum(); + }, [providers]); + + return ; +}; + +export { ClusterDetailsTable }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx b/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx index 5f1f3c57f..131122660 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx +++ b/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx @@ -2,11 +2,13 @@ import type { Providers } from 'api/providers'; import { ProviderType } from 'api/providers'; import { getProvidersQuery } from 'api/queries/providersQuery'; import type { AxiosError } from 'axios/index'; +import messages from 'locales/messages'; import React from 'react'; import type { MessageDescriptor } from 'react-intl'; import { useIntl } from 'react-intl'; import { useSelector } from 'react-redux'; import { styles } from 'routes/details/components/providerDetails/clusterDetails/clusterDetails.styles'; +import { formatDate } from 'routes/details/components/providerDetails/clusterDetails/utils/format'; import { getOverallStatusIcon } from 'routes/details/components/providerDetails/clusterDetails/utils/icon'; import { getProviderAvailability, @@ -20,6 +22,8 @@ import { providersQuery, providersSelectors } from 'store/providers'; interface OverallStatusOwnProps { clusterId?: string; + isLastUpdated?: boolean; + isStatusMsg?: boolean; } interface OverallStatusStateProps { @@ -31,7 +35,7 @@ interface OverallStatusStateProps { type OverallStatusProps = OverallStatusOwnProps; -const OverallStatus: React.FC = ({ clusterId }: OverallStatusProps) => { +const OverallStatus: React.FC = ({ clusterId, isLastUpdated, isStatusMsg }: OverallStatusProps) => { const { providers, providersError } = useMapToProps(); const intl = useIntl(); @@ -44,7 +48,8 @@ const OverallStatus: React.FC = ({ clusterId }: OverallStatu const clusterProvider = ocpProviders?.data?.find(val => val.authentication?.credentials?.cluster_id === clusterId); const cloudProvider = providers?.data?.find(val => val.uuid === clusterProvider?.infrastructure?.uuid); - const getOverallStatus = (): { msg: MessageDescriptor; status: StatusType } => { + const getOverallStatus = (): { lastUpdated: string; msg: MessageDescriptor; status: StatusType } => { + let lastUpdated; let msg; let status; @@ -65,20 +70,25 @@ const OverallStatus: React.FC = ({ clusterId }: OverallStatu (state3 === undefined || state3?.status === statusType) && (state4 === undefined || state4?.status === statusType) ) { + lastUpdated = state1.lastUpdated; msg = state1.msg; status = statusType; } } else { if (state1?.status === statusType) { + lastUpdated = state1.lastUpdated; msg = state1.msg; status = statusType; } else if (state2?.status === statusType) { + lastUpdated = state2.lastUpdated; msg = state2.msg; status = statusType; } else if (state3?.status === statusType) { + lastUpdated = state3.lastUpdated; msg = state3.msg; status = statusType; } else if (state4?.status === statusType) { + lastUpdated = state4.lastUpdated; msg = state4.msg; status = statusType; } @@ -93,15 +103,23 @@ const OverallStatus: React.FC = ({ clusterId }: OverallStatu initializeState(StatusType.pending, cloudAvailability, clusterAvailability, cloudStatus, clusterStatus); initializeState(StatusType.complete, clusterStatus, cloudStatus, clusterAvailability, cloudAvailability); // Must display the cluster status msg here - return { msg, status }; + return { lastUpdated, msg, status }; }; const overallStatus = getOverallStatus(); + + if (isLastUpdated) { + return overallStatus.lastUpdated ? formatDate(overallStatus.lastUpdated) : null; + } if (overallStatus.msg && overallStatus.status) { return ( <> {getOverallStatusIcon(overallStatus.status)} - {intl.formatMessage(overallStatus.msg)} + + {isStatusMsg + ? intl.formatMessage(messages.statusMsg, { value: overallStatus.status }) + : intl.formatMessage(overallStatus.msg)} + ); } diff --git a/src/routes/details/components/providerDetails/clusterDetails/index.ts b/src/routes/details/components/providerDetails/clusterDetails/index.ts index 9bc3da19e..2cf4a2807 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/index.ts +++ b/src/routes/details/components/providerDetails/clusterDetails/index.ts @@ -1 +1,2 @@ -export { default as DataDetails } from './clusterDetails'; +export { ClusterDetails } from './clusterDetails'; +export { ClusterDetailsModal } from './clusterDetailsModal'; diff --git a/src/routes/details/components/providerDetails/clusterDetails/utils/status.ts b/src/routes/details/components/providerDetails/clusterDetails/utils/status.ts index 3f38d53e6..7da4f4a90 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/utils/status.ts +++ b/src/routes/details/components/providerDetails/clusterDetails/utils/status.ts @@ -78,13 +78,21 @@ const getProviderStatusMsg = ( export const getProviderStatus = ( provider: Provider, isCloud = false -): { msg: MessageDescriptor; status: StatusType } => { +): { lastUpdated: string; msg: MessageDescriptor; status: StatusType } => { let status; let msg; if (!provider) { return status; } + const lastUpdated = + provider.status?.summary?.end || + provider.status?.summary?.start || + provider.status?.processing?.end || + provider.status?.processing?.start || + provider.status?.download?.end || + provider.status?.download?.start; + // Skip summaryState for cloud const downloadState = lookupKey(provider.status?.download?.state); const processingState = lookupKey(provider.status?.processing?.state); @@ -119,5 +127,5 @@ export const getProviderStatus = ( status = StatusType.complete; msg = messages.dataDetailsIntegrationAndFinalization; // only one final step } - return { msg, status }; + return { lastUpdated, msg, status }; }; diff --git a/src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfoModal.tsx similarity index 85% rename from src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx rename to src/routes/details/ocpBreakdown/clusterInfo/clusterInfoModal.tsx index 6c210ff74..01090f2d7 100644 --- a/src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx +++ b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfoModal.tsx @@ -7,13 +7,13 @@ import { useIntl } from 'react-intl'; import { styles } from './clusterInfo.styles'; import { ClusterInfoContent } from './clusterInfoContent'; -interface ClusterInfoOwnProps { +interface ClusterInfoModalOwnProps { clusterId?: string; } -type ClusterInfoProps = ClusterInfoOwnProps; +type ClusterInfoModalProps = ClusterInfoModalOwnProps; -const ClusterInfo: React.FC = ({ clusterId }: ClusterInfoProps) => { +const ClusterInfoModal: React.FC = ({ clusterId }: ClusterInfoModalProps) => { const intl = useIntl(); const [isOpen, setIsOpen] = useState(false); @@ -43,4 +43,4 @@ const ClusterInfo: React.FC = ({ clusterId }: ClusterInfoProps ); }; -export default ClusterInfo; +export { ClusterInfoModal }; diff --git a/src/routes/details/ocpBreakdown/clusterInfo/index.ts b/src/routes/details/ocpBreakdown/clusterInfo/index.ts index 43774fc38..138a3c25f 100644 --- a/src/routes/details/ocpBreakdown/clusterInfo/index.ts +++ b/src/routes/details/ocpBreakdown/clusterInfo/index.ts @@ -1 +1 @@ -export { default as ClusterInfo } from './clusterInfo'; +export { ClusterInfoModal } from './clusterInfoModal'; diff --git a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx index 0d7504f92..73e8a19ce 100644 --- a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx +++ b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx @@ -12,8 +12,8 @@ import { connect } from 'react-redux'; import { routes } from 'routes'; import type { BreakdownStateProps } from 'routes/details/components/breakdown'; import { BreakdownBase } from 'routes/details/components/breakdown'; -import { DataDetails } from 'routes/details/components/providerDetails/clusterDetails'; -import { ClusterInfo } from 'routes/details/ocpBreakdown/clusterInfo'; +import { ClusterDetailsModal } from 'routes/details/components/providerDetails/clusterDetails'; +import { ClusterInfoModal } from 'routes/details/ocpBreakdown/clusterInfo'; import { getGroupById, getGroupByValue } from 'routes/utils/groupBy'; import { filterProviders } from 'routes/utils/providers'; import { getQueryState } from 'routes/utils/queryState'; @@ -99,8 +99,8 @@ const mapStateToProps = createMapStateToProps : undefined, - dataDetailsComponent: groupBy === 'cluster' ? : undefined, + clusterInfoComponent: groupBy === 'cluster' ? : undefined, + dataDetailsComponent: groupBy === 'cluster' ? : undefined, costDistribution, costOverviewComponent: ( { costDistribution, currency, intl, + isAccountInfoEmptyStateToggleEnabled, providers, providersFetchStatus, query, @@ -432,7 +435,12 @@ class OcpDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined} + title={title} + /> + ); } } return ( @@ -519,6 +527,7 @@ const mapStateToProps = createMapStateToProps state[stateKey]; export const selectHasFeatureToggle = (state: RootState) => selectFeatureToggleState(state).hasFeatureToggle; +export const selectIsAccountInfoEmptyStateToggleEnabled = (state: RootState) => + selectFeatureToggleState(state).isAccountInfoEmptyStateToggleEnabled; export const selectIsAwsEc2InstancesToggleEnabled = (state: RootState) => selectFeatureToggleState(state).isAwsEc2InstancesToggleEnabled; export const selectIsDebugToggleEnabled = (state: RootState) => selectFeatureToggleState(state).isDebugToggleEnabled; From 26eba8e65b84d4e8b6ca973690464e3a113cf0ff Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 9 Aug 2024 13:04:32 -0400 Subject: [PATCH 26/56] Refactored cluster details to be generic for all providers --- locales/data.json | 12 ++++ locales/translations.json | 2 + src/locales/messages.ts | 10 +++ .../providerDetails/clusterDetails/index.ts | 2 - .../components/cloudData.tsx | 11 ++-- .../components/clusterData.tsx | 11 ++-- .../component.styles.ts} | 7 --- .../finalization.tsx} | 31 ++++----- .../components/overallStatus.tsx | 63 +++++++++++-------- .../components/sourceLink.styles.ts | 8 --- .../providerDetails/components/sourceLink.tsx | 2 +- .../components/providerDetails/index.ts | 2 + .../providerDetails/providerDetails.styles.ts | 12 ++++ ...clusterDetails.tsx => providerDetails.tsx} | 20 +++--- ...Content.tsx => providerDetailsContent.tsx} | 38 ++++++----- ...ailsModal.tsx => providerDetailsModal.tsx} | 25 +++++--- ...ailsTable.tsx => providerDetailsTable.tsx} | 36 ++++------- .../{clusterDetails => }/utils/format.ts | 0 .../{clusterDetails => }/utils/icon.tsx | 0 .../{clusterDetails => }/utils/status.ts | 0 .../{clusterDetails => }/utils/variant.ts | 0 .../details/ocpBreakdown/ocpBreakdown.tsx | 7 ++- src/routes/details/ocpDetails/ocpDetails.tsx | 4 +- 23 files changed, 173 insertions(+), 130 deletions(-) delete mode 100644 src/routes/details/components/providerDetails/clusterDetails/index.ts rename src/routes/details/components/providerDetails/{clusterDetails => }/components/cloudData.tsx (92%) rename src/routes/details/components/providerDetails/{clusterDetails => }/components/clusterData.tsx (91%) rename src/routes/details/components/providerDetails/{clusterDetails/clusterDetails.styles.ts => components/component.styles.ts} (78%) rename src/routes/details/components/providerDetails/{clusterDetails/components/costData.tsx => components/finalization.tsx} (63%) rename src/routes/details/components/providerDetails/{clusterDetails => }/components/overallStatus.tsx (69%) delete mode 100644 src/routes/details/components/providerDetails/components/sourceLink.styles.ts create mode 100644 src/routes/details/components/providerDetails/index.ts create mode 100644 src/routes/details/components/providerDetails/providerDetails.styles.ts rename src/routes/details/components/providerDetails/{clusterDetails/clusterDetails.tsx => providerDetails.tsx} (77%) rename src/routes/details/components/providerDetails/{clusterDetails/clusterDetailsContent.tsx => providerDetailsContent.tsx} (66%) rename src/routes/details/components/providerDetails/{clusterDetails/clusterDetailsModal.tsx => providerDetailsModal.tsx} (61%) rename src/routes/details/components/providerDetails/{clusterDetails/clusterDetailsTable.tsx => providerDetailsTable.tsx} (53%) rename src/routes/details/components/providerDetails/{clusterDetails => }/utils/format.ts (100%) rename src/routes/details/components/providerDetails/{clusterDetails => }/utils/icon.tsx (100%) rename src/routes/details/components/providerDetails/{clusterDetails => }/utils/status.ts (100%) rename src/routes/details/components/providerDetails/{clusterDetails => }/utils/variant.ts (100%) diff --git a/locales/data.json b/locales/data.json index 508a216ce..046f771c8 100644 --- a/locales/data.json +++ b/locales/data.json @@ -8207,6 +8207,12 @@ "value": "This page shows filtered results. To undo filters, clear filters on the previous page." } ], + "finalization": [ + { + "type": 0, + "value": "Finalization" + } + ], "forDate": [ { "type": 1, @@ -11775,6 +11781,12 @@ "value": "Rate must be a positive number" } ], + "providerDetails": [ + { + "type": 0, + "value": "Integrations details" + } + ], "pvcTitle": [ { "type": 0, diff --git a/locales/translations.json b/locales/translations.json index 8c842ffb3..5141319cb 100644 --- a/locales/translations.json +++ b/locales/translations.json @@ -336,6 +336,7 @@ "filterByValuesAriaLabel": "Values", "filteredBy": "Filtered by", "filteredByWarning": "This page shows filtered results. To undo filters, clear filters on the previous page.", + "finalization": "Finalization", "forDate": "{value} for {dateRange}", "gcp": "Google Cloud Platform", "gcpComputeTitle": "Compute instances usage", @@ -505,6 +506,7 @@ "priceListEmptyRateDesc": "To add rates to the price list, click on the \"Add\" rate button above.", "priceListNumberRate": "Rate must be a number", "priceListPosNumberRate": "Rate must be a positive number", + "providerDetails": "Integrations details", "pvcTitle": "Persistent Volume Claims", "rate": "Rate", "rawCostDesc": "The costs reported by a cloud provider without any cost model calculations applied.", diff --git a/src/locales/messages.ts b/src/locales/messages.ts index ba70f69bd..c9b82c04f 100644 --- a/src/locales/messages.ts +++ b/src/locales/messages.ts @@ -2124,6 +2124,11 @@ export default defineMessages({ description: 'This page shows filtered results. To undo filters, clear filters on the previous page.', id: 'filteredByWarning', }, + finalization: { + defaultMessage: 'Finalization', + description: 'Finalization', + id: 'finalization', + }, forDate: { defaultMessage: '{value} for {dateRange}', description: '{value} for {Jan 1-31}', @@ -3137,6 +3142,11 @@ export default defineMessages({ description: 'Rate must be a positive number', id: 'priceListPosNumberRate', }, + providerDetails: { + defaultMessage: 'Integrations details', + description: 'Integrations details', + id: 'providerDetails', + }, pvcTitle: { defaultMessage: 'Persistent Volume Claims', description: 'Persistent Volume Claims', diff --git a/src/routes/details/components/providerDetails/clusterDetails/index.ts b/src/routes/details/components/providerDetails/clusterDetails/index.ts deleted file mode 100644 index 2cf4a2807..000000000 --- a/src/routes/details/components/providerDetails/clusterDetails/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { ClusterDetails } from './clusterDetails'; -export { ClusterDetailsModal } from './clusterDetailsModal'; diff --git a/src/routes/details/components/providerDetails/clusterDetails/components/cloudData.tsx b/src/routes/details/components/providerDetails/components/cloudData.tsx similarity index 92% rename from src/routes/details/components/providerDetails/clusterDetails/components/cloudData.tsx rename to src/routes/details/components/providerDetails/components/cloudData.tsx index 0ab83a41f..d8bb804e7 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/components/cloudData.tsx +++ b/src/routes/details/components/providerDetails/components/cloudData.tsx @@ -3,12 +3,13 @@ import type { Provider } from 'api/providers'; import messages from 'locales/messages'; import React from 'react'; import { useIntl } from 'react-intl'; -import { styles } from 'routes/details/components/providerDetails/clusterDetails/clusterDetails.styles'; -import { formatDate } from 'routes/details/components/providerDetails/clusterDetails/utils/format'; -import { getProgressStepIcon } from 'routes/details/components/providerDetails/clusterDetails/utils/icon'; -import { getProviderAvailability } from 'routes/details/components/providerDetails/clusterDetails/utils/status'; -import { getProgressStepVariant } from 'routes/details/components/providerDetails/clusterDetails/utils/variant'; import { SourceLink } from 'routes/details/components/providerDetails/components/sourceLink'; +import { formatDate } from 'routes/details/components/providerDetails/utils/format'; +import { getProgressStepIcon } from 'routes/details/components/providerDetails/utils/icon'; +import { getProviderAvailability } from 'routes/details/components/providerDetails/utils/status'; +import { getProgressStepVariant } from 'routes/details/components/providerDetails/utils/variant'; + +import { styles } from './component.styles'; interface CloudDataOwnProps { provider: Provider; diff --git a/src/routes/details/components/providerDetails/clusterDetails/components/clusterData.tsx b/src/routes/details/components/providerDetails/components/clusterData.tsx similarity index 91% rename from src/routes/details/components/providerDetails/clusterDetails/components/clusterData.tsx rename to src/routes/details/components/providerDetails/components/clusterData.tsx index 496dce0c2..3a4ae83e8 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/components/clusterData.tsx +++ b/src/routes/details/components/providerDetails/components/clusterData.tsx @@ -3,12 +3,13 @@ import type { Provider } from 'api/providers'; import messages from 'locales/messages'; import React from 'react'; import { useIntl } from 'react-intl'; -import { styles } from 'routes/details/components/providerDetails/clusterDetails/clusterDetails.styles'; -import { formatDate } from 'routes/details/components/providerDetails/clusterDetails/utils/format'; -import { getProgressStepIcon } from 'routes/details/components/providerDetails/clusterDetails/utils/icon'; -import { getProviderAvailability } from 'routes/details/components/providerDetails/clusterDetails/utils/status'; -import { getProgressStepVariant } from 'routes/details/components/providerDetails/clusterDetails/utils/variant'; import { SourceLink } from 'routes/details/components/providerDetails/components/sourceLink'; +import { formatDate } from 'routes/details/components/providerDetails/utils/format'; +import { getProgressStepIcon } from 'routes/details/components/providerDetails/utils/icon'; +import { getProviderAvailability } from 'routes/details/components/providerDetails/utils/status'; +import { getProgressStepVariant } from 'routes/details/components/providerDetails/utils/variant'; + +import { styles } from './component.styles'; interface ClusterDataOwnProps { provider: Provider; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetails.styles.ts b/src/routes/details/components/providerDetails/components/component.styles.ts similarity index 78% rename from src/routes/details/components/providerDetails/clusterDetails/clusterDetails.styles.ts rename to src/routes/details/components/providerDetails/components/component.styles.ts index 33f39d5aa..44aa60ec0 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/clusterDetails.styles.ts +++ b/src/routes/details/components/providerDetails/components/component.styles.ts @@ -1,4 +1,3 @@ -import global_BackgroundColor_light_100 from '@patternfly/react-tokens/dist/js/global_BackgroundColor_light_100'; import global_disabled_color_100 from '@patternfly/react-tokens/dist/js/global_disabled_color_100'; import global_FontSize_xs from '@patternfly/react-tokens/dist/js/global_FontSize_xs'; import global_spacer_lg from '@patternfly/react-tokens/dist/js/global_spacer_lg'; @@ -7,16 +6,10 @@ import global_spacer_sm from '@patternfly/react-tokens/dist/js/global_spacer_sm' import type React from 'react'; export const styles = { - dataDetailsButton: { - fontSize: global_FontSize_xs.value, - }, description: { color: global_disabled_color_100.value, fontSize: global_FontSize_xs.value, }, - loading: { - backgroundColor: global_BackgroundColor_light_100.value, - }, sourceLink: { fontSize: global_FontSize_xs.value, }, diff --git a/src/routes/details/components/providerDetails/clusterDetails/components/costData.tsx b/src/routes/details/components/providerDetails/components/finalization.tsx similarity index 63% rename from src/routes/details/components/providerDetails/clusterDetails/components/costData.tsx rename to src/routes/details/components/providerDetails/components/finalization.tsx index 43adb3913..6c9d784d5 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/components/costData.tsx +++ b/src/routes/details/components/providerDetails/components/finalization.tsx @@ -1,36 +1,39 @@ import { ProgressStep, ProgressStepper, Text, TextContent, TextVariants } from '@patternfly/react-core'; import type { Provider } from 'api/providers'; +import { ProviderType } from 'api/providers'; import messages from 'locales/messages'; import React from 'react'; import { useIntl } from 'react-intl'; -import { styles } from 'routes/details/components/providerDetails/clusterDetails/clusterDetails.styles'; -import { formatDate } from 'routes/details/components/providerDetails/clusterDetails/utils/format'; -import { getProgressStepIcon } from 'routes/details/components/providerDetails/clusterDetails/utils/icon'; -import { getProgressStepVariant } from 'routes/details/components/providerDetails/clusterDetails/utils/variant'; +import { formatDate } from 'routes/details/components/providerDetails/utils/format'; +import { getProgressStepIcon } from 'routes/details/components/providerDetails/utils/icon'; +import { getProgressStepVariant } from 'routes/details/components/providerDetails/utils/variant'; -interface CostDataOwnProps { +import { styles } from './component.styles'; + +interface FinalizationDataOwnProps { provider: Provider; + providerType: ProviderType; } -type CostDataProps = CostDataOwnProps; +type FinalizationDataProps = FinalizationDataOwnProps; -const CostData: React.FC = ({ provider }: CostDataProps) => { +const Finalization: React.FC = ({ provider, providerType }: FinalizationDataProps) => { const intl = useIntl(); if (!provider) { return null; } + const title = intl.formatMessage( + providerType === ProviderType.ocp ? messages.dataDetailsCostManagementData : messages.finalization + ); + return ( <> - {intl.formatMessage(messages.dataDetailsCostManagementData)} + {title} - + = ({ provider }: CostDataProps) => { ); }; -export { CostData }; +export { Finalization }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx b/src/routes/details/components/providerDetails/components/overallStatus.tsx similarity index 69% rename from src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx rename to src/routes/details/components/providerDetails/components/overallStatus.tsx index 131122660..0ef2a2c1f 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/components/overallStatus.tsx +++ b/src/routes/details/components/providerDetails/components/overallStatus.tsx @@ -7,23 +7,26 @@ import React from 'react'; import type { MessageDescriptor } from 'react-intl'; import { useIntl } from 'react-intl'; import { useSelector } from 'react-redux'; -import { styles } from 'routes/details/components/providerDetails/clusterDetails/clusterDetails.styles'; -import { formatDate } from 'routes/details/components/providerDetails/clusterDetails/utils/format'; -import { getOverallStatusIcon } from 'routes/details/components/providerDetails/clusterDetails/utils/icon'; +import { formatDate } from 'routes/details/components/providerDetails/utils/format'; +import { getOverallStatusIcon } from 'routes/details/components/providerDetails/utils/icon'; import { getProviderAvailability, getProviderStatus, StatusType, -} from 'routes/details/components/providerDetails/clusterDetails/utils/status'; +} from 'routes/details/components/providerDetails/utils/status'; import { filterProviders } from 'routes/utils/providers'; import type { RootState } from 'store'; import type { FetchStatus } from 'store/common'; import { providersQuery, providersSelectors } from 'store/providers'; +import { styles } from './component.styles'; + interface OverallStatusOwnProps { clusterId?: string; isLastUpdated?: boolean; isStatusMsg?: boolean; + providerId?: string; + providerType: ProviderType; } interface OverallStatusStateProps { @@ -35,7 +38,13 @@ interface OverallStatusStateProps { type OverallStatusProps = OverallStatusOwnProps; -const OverallStatus: React.FC = ({ clusterId, isLastUpdated, isStatusMsg }: OverallStatusProps) => { +const OverallStatus: React.FC = ({ + clusterId, + isLastUpdated, + isStatusMsg, + providerId, + providerType, +}: OverallStatusProps) => { const { providers, providersError } = useMapToProps(); const intl = useIntl(); @@ -44,9 +53,11 @@ const OverallStatus: React.FC = ({ clusterId, isLastUpdated, } // Filter OCP providers to skip an extra API request - const ocpProviders = filterProviders(providers, ProviderType.ocp); - const clusterProvider = ocpProviders?.data?.find(val => val.authentication?.credentials?.cluster_id === clusterId); - const cloudProvider = providers?.data?.find(val => val.uuid === clusterProvider?.infrastructure?.uuid); + const filteredProviders = filterProviders(providers, providerType); + const provider = filteredProviders?.data?.find( + val => providerId === val.id || val.authentication?.credentials?.cluster_id === clusterId + ); + const cloudProvider = providers?.data?.find(val => val.uuid === provider?.infrastructure?.uuid); const getOverallStatus = (): { lastUpdated: string; msg: MessageDescriptor; status: StatusType } => { let lastUpdated; @@ -54,9 +65,9 @@ const OverallStatus: React.FC = ({ clusterId, isLastUpdated, let status; const cloudAvailability = getProviderAvailability(cloudProvider); - const clusterAvailability = getProviderAvailability(clusterProvider); + const providerAvailability = getProviderAvailability(provider); const cloudStatus = getProviderStatus(cloudProvider, true); - const clusterStatus = getProviderStatus(clusterProvider); + const providerStatus = getProviderStatus(provider); const initializeState = (statusType: StatusType, state1, state2, state3, state4) => { if (msg && status) { @@ -65,31 +76,31 @@ const OverallStatus: React.FC = ({ clusterId, isLastUpdated, if (statusType === StatusType.complete) { // A cluster may not have an integration, so cloudProvider could be undefined if ( - (state1 === undefined || state1.status === statusType) && + (state1 === undefined || state1?.status === statusType) && (state2 === undefined || state2?.status === statusType) && (state3 === undefined || state3?.status === statusType) && (state4 === undefined || state4?.status === statusType) ) { - lastUpdated = state1.lastUpdated; - msg = state1.msg; + lastUpdated = state1?.lastUpdated; + msg = state1?.msg; status = statusType; } } else { if (state1?.status === statusType) { - lastUpdated = state1.lastUpdated; - msg = state1.msg; + lastUpdated = state1?.lastUpdated; + msg = state1?.msg; status = statusType; } else if (state2?.status === statusType) { - lastUpdated = state2.lastUpdated; - msg = state2.msg; + lastUpdated = state2?.lastUpdated; + msg = state2?.msg; status = statusType; } else if (state3?.status === statusType) { - lastUpdated = state3.lastUpdated; - msg = state3.msg; + lastUpdated = state3?.lastUpdated; + msg = state3?.msg; status = statusType; } else if (state4?.status === statusType) { - lastUpdated = state4.lastUpdated; - msg = state4.msg; + lastUpdated = state4?.lastUpdated; + msg = state4?.msg; status = statusType; } } @@ -97,11 +108,11 @@ const OverallStatus: React.FC = ({ clusterId, isLastUpdated, // Note: status is not synchronous; however, status shall be applied in order provided below (e.g., failed takes precedence over any other state). // Cloud availability takes precedence over cloud status, while cluster availability takes precedence over cluster status, and so on... - initializeState(StatusType.failed, cloudAvailability, clusterAvailability, cloudStatus, clusterStatus); - initializeState(StatusType.paused, cloudAvailability, clusterAvailability, cloudStatus, clusterStatus); - initializeState(StatusType.inProgress, cloudAvailability, clusterAvailability, cloudStatus, clusterStatus); // Availability won't likely have in-progress and pending states - initializeState(StatusType.pending, cloudAvailability, clusterAvailability, cloudStatus, clusterStatus); - initializeState(StatusType.complete, clusterStatus, cloudStatus, clusterAvailability, cloudAvailability); // Must display the cluster status msg here + initializeState(StatusType.failed, cloudAvailability, providerAvailability, cloudStatus, providerStatus); + initializeState(StatusType.paused, cloudAvailability, providerAvailability, cloudStatus, providerStatus); + initializeState(StatusType.inProgress, cloudAvailability, providerAvailability, cloudStatus, providerStatus); // Availability won't likely have in-progress and pending states + initializeState(StatusType.pending, cloudAvailability, providerAvailability, cloudStatus, providerStatus); + initializeState(StatusType.complete, providerStatus, cloudStatus, providerAvailability, cloudAvailability); // Must display the cluster status msg here return { lastUpdated, msg, status }; }; diff --git a/src/routes/details/components/providerDetails/components/sourceLink.styles.ts b/src/routes/details/components/providerDetails/components/sourceLink.styles.ts deleted file mode 100644 index 81c67d5f0..000000000 --- a/src/routes/details/components/providerDetails/components/sourceLink.styles.ts +++ /dev/null @@ -1,8 +0,0 @@ -import global_spacer_md from '@patternfly/react-tokens/dist/js/global_spacer_md'; -import type React from 'react'; - -export const styles = { - spacingRight: { - marginRight: global_spacer_md.value, - }, -} as { [className: string]: React.CSSProperties }; diff --git a/src/routes/details/components/providerDetails/components/sourceLink.tsx b/src/routes/details/components/providerDetails/components/sourceLink.tsx index 7e50d5c0d..e02c4a60a 100644 --- a/src/routes/details/components/providerDetails/components/sourceLink.tsx +++ b/src/routes/details/components/providerDetails/components/sourceLink.tsx @@ -5,7 +5,7 @@ import { useIntl } from 'react-intl'; import { normalize } from 'routes/details/components/providerDetails/utils/normailize'; import { getReleasePath } from 'utils/paths'; -import { styles } from './sourceLink.styles'; +import { styles } from './component.styles'; interface SourceLinkOwnProps { provider: Provider; diff --git a/src/routes/details/components/providerDetails/index.ts b/src/routes/details/components/providerDetails/index.ts new file mode 100644 index 000000000..61e26dae5 --- /dev/null +++ b/src/routes/details/components/providerDetails/index.ts @@ -0,0 +1,2 @@ +export { ProviderDetails } from './providerDetails'; +export { ProviderDetailsModal } from './providerDetailsModal'; diff --git a/src/routes/details/components/providerDetails/providerDetails.styles.ts b/src/routes/details/components/providerDetails/providerDetails.styles.ts new file mode 100644 index 000000000..baedf2d15 --- /dev/null +++ b/src/routes/details/components/providerDetails/providerDetails.styles.ts @@ -0,0 +1,12 @@ +import global_BackgroundColor_light_100 from '@patternfly/react-tokens/dist/js/global_BackgroundColor_light_100'; +import global_FontSize_xs from '@patternfly/react-tokens/dist/js/global_FontSize_xs'; +import type React from 'react'; + +export const styles = { + dataDetailsButton: { + fontSize: global_FontSize_xs.value, + }, + loading: { + backgroundColor: global_BackgroundColor_light_100.value, + }, +} as { [className: string]: React.CSSProperties }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetails.tsx b/src/routes/details/components/providerDetails/providerDetails.tsx similarity index 77% rename from src/routes/details/components/providerDetails/clusterDetails/clusterDetails.tsx rename to src/routes/details/components/providerDetails/providerDetails.tsx index 1b01d6208..9eea513b1 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/clusterDetails.tsx +++ b/src/routes/details/components/providerDetails/providerDetails.tsx @@ -12,28 +12,28 @@ import type { RootState } from 'store'; import { FetchStatus } from 'store/common'; import { providersQuery, providersSelectors } from 'store/providers'; -import { styles } from './clusterDetails.styles'; -import { ClusterDetailsTable } from './clusterDetailsTable'; +import { styles } from './providerDetails.styles'; +import { ProviderDetailsTable } from './providerDetailsTable'; -interface ClusterDetailsOwnProps { +interface ProviderDetailsOwnProps { // TBD... } -interface ClusterDetailsStateProps { +interface ProviderDetailsStateProps { providers: Providers; providersError: AxiosError; providersFetchStatus: FetchStatus; providersQueryString: string; } -type ClusterDetailsProps = ClusterDetailsOwnProps; +type ProviderDetailsProps = ProviderDetailsOwnProps; -const ClusterDetails: React.FC = () => { +const ProviderDetails: React.FC = () => { const intl = useIntl(); const { providers, providersError, providersFetchStatus } = useMapToProps(); - const title = intl.formatMessage(messages.ocpClusterDetails); + const title = intl.formatMessage(messages.providerDetails); if (providersError) { return ; @@ -47,10 +47,10 @@ const ClusterDetails: React.FC = () => { ); } - return ; + return ; }; -const useMapToProps = (): ClusterDetailsStateProps => { +const useMapToProps = (): ProviderDetailsStateProps => { // PermissionsWrapper has already made an API request const providersQueryString = getProvidersQuery(providersQuery); const providers = useSelector((state: RootState) => @@ -71,4 +71,4 @@ const useMapToProps = (): ClusterDetailsStateProps => { }; }; -export { ClusterDetails }; +export { ProviderDetails }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsContent.tsx b/src/routes/details/components/providerDetails/providerDetailsContent.tsx similarity index 66% rename from src/routes/details/components/providerDetails/clusterDetails/clusterDetailsContent.tsx rename to src/routes/details/components/providerDetails/providerDetailsContent.tsx index 94de324e2..4abee58d9 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsContent.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsContent.tsx @@ -8,30 +8,36 @@ import { useIntl } from 'react-intl'; import { useSelector } from 'react-redux'; import { NotAvailable } from 'routes/components/page/notAvailable'; import { LoadingState } from 'routes/components/state/loadingState'; -import { CloudData } from 'routes/details/components/providerDetails/clusterDetails/components/cloudData'; -import { ClusterData } from 'routes/details/components/providerDetails/clusterDetails/components/clusterData'; -import { CostData } from 'routes/details/components/providerDetails/clusterDetails/components/costData'; import { filterProviders } from 'routes/utils/providers'; import type { RootState } from 'store'; import { FetchStatus } from 'store/common'; import { providersQuery, providersSelectors } from 'store/providers'; -import { styles } from './clusterDetails.styles'; +import { CloudData } from './components/cloudData'; +import { ClusterData } from './components/clusterData'; +import { Finalization } from './components/finalization'; +import { styles } from './providerDetails.styles'; -interface ClusterDetailsContentOwnProps { +interface ProviderDetailsContentOwnProps { clusterId?: string; + providerId?: string; + providerType: ProviderType; } -interface ClusterDetailsContentStateProps { +interface ProviderDetailsContentStateProps { providers: Providers; providersError: AxiosError; providersFetchStatus: FetchStatus; providersQueryString: string; } -type ClusterDetailsContentProps = ClusterDetailsContentOwnProps; +type ProviderDetailsContentProps = ProviderDetailsContentOwnProps; -const ClusterDetailsContent: React.FC = ({ clusterId }: ClusterDetailsContentProps) => { +const ProviderDetailsContent: React.FC = ({ + clusterId, + providerId, + providerType, +}: ProviderDetailsContentProps) => { const intl = useIntl(); const { providers, providersError, providersFetchStatus } = useMapToProps(); @@ -51,20 +57,22 @@ const ClusterDetailsContent: React.FC = ({ clusterId } // Filter OCP providers to skip an extra API request - const ocpProviders = filterProviders(providers, ProviderType.ocp); - const clusterProvider = ocpProviders?.data?.find(val => val.authentication?.credentials?.cluster_id === clusterId); - const cloudProvider = providers?.data?.find(val => val.uuid === clusterProvider?.infrastructure?.uuid); + const ocpProviders = filterProviders(providers, providerType); + const provider = ocpProviders?.data?.find( + val => providerId === val.id || val.authentication?.credentials?.cluster_id === clusterId + ); + const cloudProvider = providers?.data?.find(val => val.uuid === provider?.infrastructure?.uuid); return ( <> {cloudProvider && } - {clusterProvider && } - {clusterProvider && } + {provider && } + {provider && } ); }; -const useMapToProps = (): ClusterDetailsContentStateProps => { +const useMapToProps = (): ProviderDetailsContentStateProps => { // PermissionsWrapper has already made an API request const providersQueryString = getProvidersQuery(providersQuery); const providers = useSelector((state: RootState) => @@ -85,4 +93,4 @@ const useMapToProps = (): ClusterDetailsContentStateProps => { }; }; -export { ClusterDetailsContent }; +export { ProviderDetailsContent }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx b/src/routes/details/components/providerDetails/providerDetailsModal.tsx similarity index 61% rename from src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx rename to src/routes/details/components/providerDetails/providerDetailsModal.tsx index 334c99a64..aa3765084 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsModal.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsModal.tsx @@ -1,24 +1,29 @@ import { Button, ButtonVariant } from '@patternfly/react-core'; import { Modal, ModalBody, ModalHeader, ModalVariant } from '@patternfly/react-core/next'; +import type { ProviderType } from 'api/providers'; import messages from 'locales/messages'; import React, { useState } from 'react'; import { useIntl } from 'react-intl'; -import { OverallStatus } from 'routes/details/components/providerDetails/clusterDetails/components/overallStatus'; -import { styles } from './clusterDetails.styles'; -import { ClusterDetailsContent } from './clusterDetailsContent'; +import { OverallStatus } from './components/overallStatus'; +import { styles } from './providerDetails.styles'; +import { ProviderDetailsContent } from './providerDetailsContent'; -interface ClusterDetailsModalOwnProps { +interface ProviderDetailsModalOwnProps { clusterId?: string; showStatus?: boolean; + providerId?: string; + providerType: ProviderType; } -type ClusterDetailsModalProps = ClusterDetailsModalOwnProps; +type ProviderDetailsModalProps = ProviderDetailsModalOwnProps; -const ClusterDetailsModal: React.FC = ({ +const ProviderDetailsModal: React.FC = ({ clusterId, + providerId, + providerType, showStatus = true, -}: ClusterDetailsModalProps) => { +}: ProviderDetailsModalProps) => { const intl = useIntl(); const [isOpen, setIsOpen] = useState(false); @@ -35,18 +40,18 @@ const ClusterDetailsModal: React.FC = ({ return ( <> - {showStatus && } + {showStatus && } - + ); }; -export { ClusterDetailsModal }; +export { ProviderDetailsModal }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx b/src/routes/details/components/providerDetails/providerDetailsTable.tsx similarity index 53% rename from src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx rename to src/routes/details/components/providerDetails/providerDetailsTable.tsx index e642eca7a..8925999dc 100644 --- a/src/routes/details/components/providerDetails/clusterDetails/clusterDetailsTable.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsTable.tsx @@ -3,21 +3,20 @@ import messages from 'locales/messages'; import React, { useEffect, useState } from 'react'; import { useIntl } from 'react-intl'; import { DataTable } from 'routes/components/dataTable'; -import { styles } from 'routes/components/dataTable/dataTable.styles'; import { filterProviders } from 'routes/utils/providers'; -import { getReleasePath } from 'utils/paths'; -import { ClusterDetailsModal } from './clusterDetailsModal'; import { OverallStatus } from './components/overallStatus'; +import { SourceLink } from './components/sourceLink'; +import { ProviderDetailsModal } from './providerDetailsModal'; -interface ClusterDetailsTableOwnProps { +interface ProviderDetailsTableOwnProps { providers?: Providers; providerType?: ProviderType; } -type ClusterDetailsTableProps = ClusterDetailsTableOwnProps; +type ProviderDetailsTableProps = ProviderDetailsTableOwnProps; -const ClusterDetailsTable: React.FC = ({ providers, providerType }) => { +const ProviderDetailsTable: React.FC = ({ providers, providerType }) => { const intl = useIntl(); const [columns, setColumns] = useState([]); const [rows, setRows] = useState([]); @@ -28,7 +27,7 @@ const ClusterDetailsTable: React.FC = ({ providers, pr } // Filter OCP providers to skip an extra API request - const filteredProviders = filterProviders(providers, providerType)?.data?.filter(item => item.status !== null); + const filteredProviders = filterProviders(providers, providerType); const newRows = []; const newColumns = [ @@ -46,24 +45,15 @@ const ClusterDetailsTable: React.FC = ({ providers, pr }, ]; - const release = getReleasePath(); - - filteredProviders.map(item => { - const clusterId = item?.authentication?.credentials?.cluster_id; + filteredProviders?.data?.map(item => { + // const clusterId = item?.authentication?.credentials?.cluster_id; newRows.push({ cells: [ - { - value: ( - <> - {item.name || clusterId} - {clusterId !== item.name &&
{clusterId}
} - - ), - }, - { value: }, - { value: }, - { value: }, + { value: }, + { value: }, + { value: }, + { value: }, ], item, }); @@ -80,4 +70,4 @@ const ClusterDetailsTable: React.FC = ({ providers, pr return ; }; -export { ClusterDetailsTable }; +export { ProviderDetailsTable }; diff --git a/src/routes/details/components/providerDetails/clusterDetails/utils/format.ts b/src/routes/details/components/providerDetails/utils/format.ts similarity index 100% rename from src/routes/details/components/providerDetails/clusterDetails/utils/format.ts rename to src/routes/details/components/providerDetails/utils/format.ts diff --git a/src/routes/details/components/providerDetails/clusterDetails/utils/icon.tsx b/src/routes/details/components/providerDetails/utils/icon.tsx similarity index 100% rename from src/routes/details/components/providerDetails/clusterDetails/utils/icon.tsx rename to src/routes/details/components/providerDetails/utils/icon.tsx diff --git a/src/routes/details/components/providerDetails/clusterDetails/utils/status.ts b/src/routes/details/components/providerDetails/utils/status.ts similarity index 100% rename from src/routes/details/components/providerDetails/clusterDetails/utils/status.ts rename to src/routes/details/components/providerDetails/utils/status.ts diff --git a/src/routes/details/components/providerDetails/clusterDetails/utils/variant.ts b/src/routes/details/components/providerDetails/utils/variant.ts similarity index 100% rename from src/routes/details/components/providerDetails/clusterDetails/utils/variant.ts rename to src/routes/details/components/providerDetails/utils/variant.ts diff --git a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx index 73e8a19ce..cfe1c2a2e 100644 --- a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx +++ b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx @@ -12,7 +12,7 @@ import { connect } from 'react-redux'; import { routes } from 'routes'; import type { BreakdownStateProps } from 'routes/details/components/breakdown'; import { BreakdownBase } from 'routes/details/components/breakdown'; -import { ClusterDetailsModal } from 'routes/details/components/providerDetails/clusterDetails'; +import { ProviderDetailsModal } from 'routes/details/components/providerDetails'; import { ClusterInfoModal } from 'routes/details/ocpBreakdown/clusterInfo'; import { getGroupById, getGroupByValue } from 'routes/utils/groupBy'; import { filterProviders } from 'routes/utils/providers'; @@ -100,7 +100,10 @@ const mapStateToProps = createMapStateToProps : undefined, - dataDetailsComponent: groupBy === 'cluster' ? : undefined, + dataDetailsComponent: + groupBy === 'cluster' ? ( + + ) : undefined, costDistribution, costOverviewComponent: ( { if (!hasCurrentMonthData(providers)) { return ( : undefined} + detailsComponent={isAccountInfoEmptyStateToggleEnabled ? : undefined} title={title} /> ); From b22c66cae90454631ede2a2f3f8f0f02be58327d Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 9 Aug 2024 13:37:01 -0400 Subject: [PATCH 27/56] Added account info to AWS details empty state --- src/routes/details/awsDetails/awsDetails.tsx | 14 ++++++++++++- .../providerDetails/components/cloudData.tsx | 12 +++++------ .../providerDetails/providerDetails.tsx | 6 +++--- .../providerDetailsContent.tsx | 20 +++++++++++++------ src/routes/details/ocpDetails/ocpDetails.tsx | 4 +++- 5 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/routes/details/awsDetails/awsDetails.tsx b/src/routes/details/awsDetails/awsDetails.tsx index e7bf6d5b1..6edf8b3f1 100644 --- a/src/routes/details/awsDetails/awsDetails.tsx +++ b/src/routes/details/awsDetails/awsDetails.tsx @@ -20,6 +20,7 @@ import { Loading } from 'routes/components/page/loading'; import { NoData } from 'routes/components/page/noData'; import { NoProviders } from 'routes/components/page/noProviders'; import { NotAvailable } from 'routes/components/page/notAvailable'; +import { ProviderDetails } from 'routes/details/components/providerDetails'; import { getIdKeyForGroupBy } from 'routes/utils/computedReport/getComputedAwsReportItems'; import type { ComputedReportItem } from 'routes/utils/computedReport/getComputedReportItems'; import { getUnsortedComputedReportItems } from 'routes/utils/computedReport/getComputedReportItems'; @@ -36,6 +37,7 @@ import { handleOnSort, } from 'routes/utils/queryNavigate'; import { createMapStateToProps, FetchStatus } from 'store/common'; +import { FeatureToggleSelectors } from 'store/featureToggle'; import { providersQuery, providersSelectors } from 'store/providers'; import { reportActions, reportSelectors } from 'store/reports'; import { formatPath } from 'utils/paths'; @@ -52,6 +54,7 @@ import { DetailsToolbar } from './detailsToolbar'; interface AwsDetailsStateProps { costType: string; currency?: string; + isAccountInfoEmptyStateToggleEnabled?: boolean; providers: Providers; providersError: AxiosError; providersFetchStatus: FetchStatus; @@ -365,6 +368,7 @@ class AwsDetails extends React.Component { costType, currency, intl, + isAccountInfoEmptyStateToggleEnabled, providers, providersFetchStatus, query, @@ -392,7 +396,14 @@ class AwsDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } return ( @@ -480,6 +491,7 @@ const mapStateToProps = createMapStateToProps = ({ provider }: CloudDataProps) => {
{intl.formatMessage(messages.dataDetailsAvailability)} @@ -54,8 +54,8 @@ const CloudData: React.FC = ({ provider }: CloudDataProps) => { {intl.formatMessage(messages.dataDetailsRetrieval)} @@ -66,8 +66,8 @@ const CloudData: React.FC = ({ provider }: CloudDataProps) => { {intl.formatMessage(messages.dataDetailsProcessing)} diff --git a/src/routes/details/components/providerDetails/providerDetails.tsx b/src/routes/details/components/providerDetails/providerDetails.tsx index 9eea513b1..5739a9c88 100644 --- a/src/routes/details/components/providerDetails/providerDetails.tsx +++ b/src/routes/details/components/providerDetails/providerDetails.tsx @@ -16,7 +16,7 @@ import { styles } from './providerDetails.styles'; import { ProviderDetailsTable } from './providerDetailsTable'; interface ProviderDetailsOwnProps { - // TBD... + providerType: ProviderType; } interface ProviderDetailsStateProps { @@ -28,7 +28,7 @@ interface ProviderDetailsStateProps { type ProviderDetailsProps = ProviderDetailsOwnProps; -const ProviderDetails: React.FC = () => { +const ProviderDetails: React.FC = ({ providerType }: ProviderDetailsProps) => { const intl = useIntl(); const { providers, providersError, providersFetchStatus } = useMapToProps(); @@ -47,7 +47,7 @@ const ProviderDetails: React.FC = () => { ); } - return ; + return ; }; const useMapToProps = (): ProviderDetailsStateProps => { diff --git a/src/routes/details/components/providerDetails/providerDetailsContent.tsx b/src/routes/details/components/providerDetails/providerDetailsContent.tsx index 4abee58d9..4b6df6349 100644 --- a/src/routes/details/components/providerDetails/providerDetailsContent.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsContent.tsx @@ -57,17 +57,25 @@ const ProviderDetailsContent: React.FC = ({ } // Filter OCP providers to skip an extra API request - const ocpProviders = filterProviders(providers, providerType); - const provider = ocpProviders?.data?.find( + const filteredProviders = filterProviders(providers, providerType); + const provider = filteredProviders?.data?.find( val => providerId === val.id || val.authentication?.credentials?.cluster_id === clusterId ); - const cloudProvider = providers?.data?.find(val => val.uuid === provider?.infrastructure?.uuid); + if (providerType === ProviderType.ocp) { + const cloudProvider = providers?.data?.find(val => val.uuid === provider?.infrastructure?.uuid); + return ( + <> + + + + + ); + } return ( <> - {cloudProvider && } - {provider && } - {provider && } + + ); }; diff --git a/src/routes/details/ocpDetails/ocpDetails.tsx b/src/routes/details/ocpDetails/ocpDetails.tsx index b5c85adf8..10f33c99b 100644 --- a/src/routes/details/ocpDetails/ocpDetails.tsx +++ b/src/routes/details/ocpDetails/ocpDetails.tsx @@ -437,7 +437,9 @@ class OcpDetails extends React.Component { if (!hasCurrentMonthData(providers)) { return ( : undefined} + detailsComponent={ + isAccountInfoEmptyStateToggleEnabled ? : undefined + } title={title} /> ); From 1e37aa0790dec43294a3d9e9565118930a527af0 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 9 Aug 2024 14:56:29 -0400 Subject: [PATCH 28/56] Added account info to Azure, GCP, IBM, and OCI details empty states --- src/routes/details/awsDetails/awsDetails.tsx | 1 + .../details/azureDetails/azureDetails.tsx | 15 +++++++++- .../components/overallStatus.tsx | 6 ++-- .../providerDetailsContent.tsx | 6 ++-- .../providerDetails/providerDetailsTable.tsx | 4 +-- src/routes/details/gcpDetails/gcpDetails.tsx | 28 +++++++++++++++++-- src/routes/details/ibmDetails/ibmDetails.tsx | 28 +++++++++++++++++-- src/routes/details/ociDetails/ociDetails.tsx | 15 +++++++++- src/routes/details/ocpDetails/ocpDetails.tsx | 1 + .../details/rhelDetails/rhelDetails.tsx | 28 +++++++++++++++++-- 10 files changed, 113 insertions(+), 19 deletions(-) diff --git a/src/routes/details/awsDetails/awsDetails.tsx b/src/routes/details/awsDetails/awsDetails.tsx index 6edf8b3f1..581496b2a 100644 --- a/src/routes/details/awsDetails/awsDetails.tsx +++ b/src/routes/details/awsDetails/awsDetails.tsx @@ -406,6 +406,7 @@ class AwsDetails extends React.Component { ); } } + return (
const { currency, intl, + isAccountInfoEmptyStateToggleEnabled, providers, providersFetchStatus, query, @@ -352,9 +356,17 @@ class AzureDetails extends React.Component return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } + return (
= ({ } // Filter OCP providers to skip an extra API request - const filteredProviders = filterProviders(providers, providerType); - const provider = filteredProviders?.data?.find( - val => providerId === val.id || val.authentication?.credentials?.cluster_id === clusterId + const filteredProviders = filterProviders(providers, providerType)?.data?.filter(data => data.status !== null); + const provider = filteredProviders?.find( + val => providerId === val.id || (clusterId && val.authentication?.credentials?.cluster_id === clusterId) ); const cloudProvider = providers?.data?.find(val => val.uuid === provider?.infrastructure?.uuid); diff --git a/src/routes/details/components/providerDetails/providerDetailsContent.tsx b/src/routes/details/components/providerDetails/providerDetailsContent.tsx index 4b6df6349..1730c91e0 100644 --- a/src/routes/details/components/providerDetails/providerDetailsContent.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsContent.tsx @@ -57,9 +57,9 @@ const ProviderDetailsContent: React.FC = ({ } // Filter OCP providers to skip an extra API request - const filteredProviders = filterProviders(providers, providerType); - const provider = filteredProviders?.data?.find( - val => providerId === val.id || val.authentication?.credentials?.cluster_id === clusterId + const filteredProviders = filterProviders(providers, providerType)?.data?.filter(data => data.status !== null); + const provider = filteredProviders?.find( + val => providerId === val.id || (clusterId && val.authentication?.credentials?.cluster_id === clusterId) ); if (providerType === ProviderType.ocp) { diff --git a/src/routes/details/components/providerDetails/providerDetailsTable.tsx b/src/routes/details/components/providerDetails/providerDetailsTable.tsx index 8925999dc..8f44e93a1 100644 --- a/src/routes/details/components/providerDetails/providerDetailsTable.tsx +++ b/src/routes/details/components/providerDetails/providerDetailsTable.tsx @@ -27,7 +27,7 @@ const ProviderDetailsTable: React.FC = ({ providers, } // Filter OCP providers to skip an extra API request - const filteredProviders = filterProviders(providers, providerType); + const filteredProviders = filterProviders(providers, providerType)?.data?.filter(data => data.status !== null); const newRows = []; const newColumns = [ @@ -45,7 +45,7 @@ const ProviderDetailsTable: React.FC = ({ providers, }, ]; - filteredProviders?.data?.map(item => { + filteredProviders?.map(item => { // const clusterId = item?.authentication?.credentials?.cluster_id; newRows.push({ diff --git a/src/routes/details/gcpDetails/gcpDetails.tsx b/src/routes/details/gcpDetails/gcpDetails.tsx index df05c8249..f10ff25b8 100644 --- a/src/routes/details/gcpDetails/gcpDetails.tsx +++ b/src/routes/details/gcpDetails/gcpDetails.tsx @@ -18,6 +18,7 @@ import { Loading } from 'routes/components/page/loading'; import { NoData } from 'routes/components/page/noData'; import { NoProviders } from 'routes/components/page/noProviders'; import { NotAvailable } from 'routes/components/page/notAvailable'; +import { ProviderDetails } from 'routes/details/components/providerDetails'; import { getIdKeyForGroupBy } from 'routes/utils/computedReport/getComputedGcpReportItems'; import type { ComputedReportItem } from 'routes/utils/computedReport/getComputedReportItems'; import { getUnsortedComputedReportItems } from 'routes/utils/computedReport/getComputedReportItems'; @@ -33,6 +34,7 @@ import { handleOnSort, } from 'routes/utils/queryNavigate'; import { createMapStateToProps, FetchStatus } from 'store/common'; +import { FeatureToggleSelectors } from 'store/featureToggle'; import { providersQuery, providersSelectors } from 'store/providers'; import { reportActions, reportSelectors } from 'store/reports'; import { formatPath } from 'utils/paths'; @@ -48,6 +50,7 @@ import { styles } from './gcpDetails.styles'; interface GcpDetailsStateProps { currency?: string; + isAccountInfoEmptyStateToggleEnabled?: boolean; providers: Providers; providersError: AxiosError; providersFetchStatus: FetchStatus; @@ -320,8 +323,18 @@ class GcpDetails extends React.Component { }; public render() { - const { currency, intl, providers, providersFetchStatus, query, report, reportError, reportFetchStatus, router } = - this.props; + const { + currency, + intl, + isAccountInfoEmptyStateToggleEnabled, + providers, + providersFetchStatus, + query, + report, + reportError, + reportFetchStatus, + router, + } = this.props; const computedItems = this.getComputedItems(); const groupById = getIdKeyForGroupBy(query.group_by); @@ -341,9 +354,17 @@ class GcpDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } + return (
{ }; public render() { - const { currency, intl, providers, providersFetchStatus, query, report, reportError, reportFetchStatus, router } = - this.props; + const { + currency, + intl, + isAccountInfoEmptyStateToggleEnabled, + providers, + providersFetchStatus, + query, + report, + reportError, + reportFetchStatus, + router, + } = this.props; const computedItems = this.getComputedItems(); const groupById = getIdKeyForGroupBy(query.group_by); @@ -343,9 +356,17 @@ class IbmDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } + return (
{ const { currency, intl, + isAccountInfoEmptyStateToggleEnabled, providers, providersFetchStatus, query, @@ -352,9 +356,17 @@ class OciDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } + return (
{ ); } } + return (
{ }; public render() { - const { currency, intl, providers, providersFetchStatus, query, report, reportError, reportFetchStatus, router } = - this.props; + const { + currency, + intl, + isAccountInfoEmptyStateToggleEnabled, + providers, + providersFetchStatus, + query, + report, + reportError, + reportFetchStatus, + router, + } = this.props; const computedItems = this.getComputedItems(); const groupById = getIdKeyForGroupBy(query.group_by); @@ -399,9 +412,17 @@ class RhelDetails extends React.Component { return ; } if (!hasCurrentMonthData(providers)) { - return ; + return ( + : undefined + } + title={title} + /> + ); } } + return (
Date: Fri, 9 Aug 2024 15:41:02 -0400 Subject: [PATCH 29/56] Dependency updates --- package-lock.json | 213 +++++++++++++++++++++++++++------------------- package.json | 8 +- 2 files changed, 130 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index 326d5c6be..b69de5afb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", - "@redhat-cloud-services/rbac-client": "^2.1.0", + "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.3", @@ -47,9 +47,9 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.1.3", + "@redhat-cloud-services/frontend-components-config": "^6.2.2", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.6", + "@swc/core": "^1.7.9", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -67,7 +67,7 @@ "eslint": "^9.8.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^48.11.0", + "eslint-plugin-jsdoc": "^50.0.0", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", @@ -2110,6 +2110,7 @@ "resolved": "https://registry.npmjs.org/@openshift/dynamic-plugin-sdk-webpack/-/dynamic-plugin-sdk-webpack-4.1.0.tgz", "integrity": "sha512-Pkq6R+fkoE0llgv9WJBcotViAPywrzDkpWK0HSTmrVyfEuWS5cuZUs8ono6L5w9BqDBRXm3ceEuUAZA/Zrar1w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lodash": "^4.17.21", "semver": "^7.3.7", @@ -2123,10 +2124,11 @@ } }, "node_modules/@openshift/dynamic-plugin-sdk-webpack/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2424,14 +2426,14 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.1.3.tgz", - "integrity": "sha512-3Obim/Ig54dtMeSuwcLom9wFJhvsK0A6LRJe/YGgYUbC9QHHaVsfgBOzV+1055pUuXasWRas+HSyZC4r9KmbDg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.2.2.tgz", + "integrity": "sha512-l+XVF/BDahzeQ9qBNsr/vpppNNWADHsjhjMBJ22AyzQ5DbLIx/XU/hW/oDWu3Kt/Cg56aPi9ydq6E2he9aWjMg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.8", - "@redhat-cloud-services/frontend-components-config-utilities": "^3.1.0", + "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.1", "@redhat-cloud-services/tsc-transform-imports": "^1.0.12", "@swc/core": "^1.3.76", "assert": "^2.0.0", @@ -2448,7 +2450,7 @@ "glob": "^7.2.3", "html-replace-webpack-plugin": "^2.6.0", "html-webpack-plugin": "^5.5.0", - "http-server": "^13.1.0", + "http-server": "^14.0.0", "https-proxy-agent": "^5.0.1", "inquirer": "^8.2.4", "js-yaml": "^4.1.0", @@ -2478,10 +2480,11 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config-utilities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.1.0.tgz", - "integrity": "sha512-55ooVQXv8qvs3zbBza8Bg9yLPwgFnz6AkG6gAGSoaIUyymvezvBq5FlXRPFMr+tcaRwkgxRqsL2x/GTvtUD81w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.2.1.tgz", + "integrity": "sha512-hM2aXdOk2ylghGZta90XgVWgij/z4/5CIh7eeuR6HESYYObtGvkBQ0k6Lfqc2ipCZDaNEklFFmUL7rxAx2s0Mw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@openshift/dynamic-plugin-sdk-webpack": "^4.0.1", "chalk": "^4.1.2", @@ -2496,6 +2499,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2511,6 +2515,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2527,6 +2532,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2538,13 +2544,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@redhat-cloud-services/frontend-components-config-utilities/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2554,6 +2562,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2726,9 +2735,9 @@ } }, "node_modules/@redhat-cloud-services/rbac-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.1.0.tgz", - "integrity": "sha512-BaRkL3NqRz+wOl8lpoOfLoeDwzQHhPA46Xk5qpgvdrSVAHZ58J4QGLsOTEOdpYuoCABEu0yIM70oXNTb5VVm+Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.2.0.tgz", + "integrity": "sha512-crytQeif+qr5yWwIpP5baMA4slk7SGmV9CC/1HiyyM91OoC9Iculqp2kYjWY3FtEEw0iJRaOyjV2RRfR+Cmzyw==", "license": "Apache-2.0", "dependencies": { "@redhat-cloud-services/javascript-clients-shared": "^1.2.2", @@ -2983,9 +2992,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.6.tgz", - "integrity": "sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.9.tgz", + "integrity": "sha512-GUS7qH2/vOgLIiu3lCUheCo/r/ppj/fDjhRUuhXb/S13CeTQ1YJwLYpL5QCUZDas2Hn0aKrB4TiQtyM1cCpDRA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -3001,16 +3010,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.6", - "@swc/core-darwin-x64": "1.7.6", - "@swc/core-linux-arm-gnueabihf": "1.7.6", - "@swc/core-linux-arm64-gnu": "1.7.6", - "@swc/core-linux-arm64-musl": "1.7.6", - "@swc/core-linux-x64-gnu": "1.7.6", - "@swc/core-linux-x64-musl": "1.7.6", - "@swc/core-win32-arm64-msvc": "1.7.6", - "@swc/core-win32-ia32-msvc": "1.7.6", - "@swc/core-win32-x64-msvc": "1.7.6" + "@swc/core-darwin-arm64": "1.7.9", + "@swc/core-darwin-x64": "1.7.9", + "@swc/core-linux-arm-gnueabihf": "1.7.9", + "@swc/core-linux-arm64-gnu": "1.7.9", + "@swc/core-linux-arm64-musl": "1.7.9", + "@swc/core-linux-x64-gnu": "1.7.9", + "@swc/core-linux-x64-musl": "1.7.9", + "@swc/core-win32-arm64-msvc": "1.7.9", + "@swc/core-win32-ia32-msvc": "1.7.9", + "@swc/core-win32-x64-msvc": "1.7.9" }, "peerDependencies": { "@swc/helpers": "*" @@ -3022,9 +3031,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.6.tgz", - "integrity": "sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.9.tgz", + "integrity": "sha512-OIfjf7iK0OCZ87IASLymq6HO9nT0s80R7hI9zHfsJJ9vxKc63iAKe+oxgXzljecBGPlkjUjj6nTFlN0wVeraUQ==", "cpu": [ "arm64" ], @@ -3039,9 +3048,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.6.tgz", - "integrity": "sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.9.tgz", + "integrity": "sha512-8ekLnd6IdOudNtm2ru0FrUCEBzs46Gg5f5Wkm7TPV6xA1hgIQMUbc9NJ/unRTh0FRvO1hbtoIz06GGD9MRQW8Q==", "cpu": [ "x64" ], @@ -3056,9 +3065,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.6.tgz", - "integrity": "sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.9.tgz", + "integrity": "sha512-6kSe+cCp0nrf1JP9MYrJxsjATq2Abs4RrZ501EXfcJuP9pJrdlX3UlGvT7kboeXP1723eWgMOEjRsx/qW5E4QQ==", "cpu": [ "arm" ], @@ -3073,9 +3082,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.6.tgz", - "integrity": "sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.9.tgz", + "integrity": "sha512-I+cGw4N9xqprsvPywU1vt+Ni4LnZMlDzH7Ow3n4KWKRJ34V9/0jnnmTYd7twpjpib9TsdEzAADFwlP3dVvetCQ==", "cpu": [ "arm64" ], @@ -3090,9 +3099,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.6.tgz", - "integrity": "sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.9.tgz", + "integrity": "sha512-u5ryq5fe8DZMLoyv8h3970NzuNdsdOmOod48b0EFVbNwHm0Tpz9wTRuzzGfpZXOR5xjgBiO+MbxiTU2vSdHo/g==", "cpu": [ "arm64" ], @@ -3107,9 +3116,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.6.tgz", - "integrity": "sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.9.tgz", + "integrity": "sha512-rpdjz8kqLDqLyWEfhzYtGkGxh4oDRxnf7xLmNUptX6WyBDnOxcAjyBpeaNIV2mhIM4e1jmNtiUHDTwjLX15ECA==", "cpu": [ "x64" ], @@ -3124,9 +3133,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.6.tgz", - "integrity": "sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.9.tgz", + "integrity": "sha512-KPTzWcAbnb1Cu8Jjs/Kty26TGT+PwT6l1jmXtVoKlc+5/ewM7CxSD7ZbutvFriJrg4Z1i3oyEOaQ2eM9T+LOVA==", "cpu": [ "x64" ], @@ -3141,9 +3150,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.6.tgz", - "integrity": "sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.9.tgz", + "integrity": "sha512-ZFbgm7ye/mTyeXik4o/3KqoEOSA2E2eb3e4JkAsVJB0K/hZdAoUtyyRCKlnq7nqbInhyKr0Pxqas6LkfyCQ48g==", "cpu": [ "arm64" ], @@ -3158,9 +3167,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.6.tgz", - "integrity": "sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.9.tgz", + "integrity": "sha512-xIcQost/1XcDL38pPQtBG1E4cOGHUorBxfD1S3/B9vVJlaAJIfZ8vwmOKpMIcRGXAQOXd0MXsBz+kaaOIJfqQQ==", "cpu": [ "ia32" ], @@ -3175,9 +3184,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.6.tgz", - "integrity": "sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.9.tgz", + "integrity": "sha512-VSMce64nnvz1dDjbpUrtvi7wcXqdXkCwyXLp5ohAKG/ECy2JxZXdDB+FiP4BeYgH59ANRVVlmcaPrQGpK3QAnQ==", "cpu": [ "x64" ], @@ -5299,14 +5308,25 @@ ] }, "node_modules/basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha512-CtGuTyWf3ig+sgRyC7uP6DM3N+5ur/p8L+FPfsd+BbIfIs74TFfCajZTHnCw6K5dqM0bZEbRIqRy1fAdiUJhTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -6461,6 +6481,7 @@ "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -8458,9 +8479,9 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.11.0.tgz", - "integrity": "sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==", + "version": "50.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.0.0.tgz", + "integrity": "sha512-czyJ5F7/qY2LIhUD5Bl6q1CCZ8mjvfEA9HQN5nvIp/Pb8VLIlUNd+DMZdA2OKN74QQMS3pobC06hFqAOJyOv5Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10822,29 +10843,31 @@ } }, "node_modules/http-server": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-13.1.0.tgz", - "integrity": "sha512-MLqBMXeY/YN0FYMz4ifeOQCcg8pKj8YdmzX1pr/Vb2VrNnbxHN1s4K9BuZRVSyK/j3DQ8UVrrABb8m6EmFjWog==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, + "license": "MIT", "dependencies": { - "basic-auth": "^1.0.3", + "basic-auth": "^2.0.1", "chalk": "^4.1.2", "corser": "^2.0.1", - "he": "^1.1.0", - "http-proxy": "^1.18.0", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", "mime": "^1.6.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "opener": "^1.5.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.28", "secure-compare": "3.0.1", "union": "~0.5.0", - "url-join": "^2.0.5" + "url-join": "^4.0.1" }, "bin": { "http-server": "bin/http-server" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/http-server/node_modules/ansi-styles": { @@ -10852,6 +10875,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10867,6 +10891,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10883,6 +10908,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10894,13 +10920,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-server/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10910,6 +10938,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -15263,6 +15292,7 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -15282,19 +15312,22 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -16240,6 +16273,7 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, + "license": "MIT", "dependencies": { "async": "^2.6.4", "debug": "^3.2.7", @@ -16254,6 +16288,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } @@ -16263,6 +16298,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -16272,6 +16308,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -17513,7 +17550,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/select-hose": { "version": "2.0.0", @@ -19364,10 +19402,11 @@ } }, "node_modules/url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha512-c2H1fIgpUdwFRIru9HFno5DT73Ok8hg5oOb5AT3ayIgvCRfxgs2jyt5Slw8kEB7j3QUr6yJmMPDT/odjk7jXow==", - "dev": true + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" }, "node_modules/url-parse": { "version": "1.5.10", diff --git a/package.json b/package.json index 452655b9a..e66886b0b 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", - "@redhat-cloud-services/rbac-client": "^2.1.0", + "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.3", @@ -87,9 +87,9 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.1.3", + "@redhat-cloud-services/frontend-components-config": "^6.2.2", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.6", + "@swc/core": "^1.7.9", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -107,7 +107,7 @@ "eslint": "^9.8.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^48.11.0", + "eslint-plugin-jsdoc": "^50.0.0", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", From f04c1fa54a9f1c47f726ffc4cfb3bf950552b12c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:17:04 +0000 Subject: [PATCH 30/56] (chore): Bump the lint-dependencies group with 2 updates Bumps the lint-dependencies group with 2 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) and [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc). Updates `@eslint/js` from 9.8.0 to 9.9.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.9.0/packages/js) Updates `eslint-plugin-jsdoc` from 50.0.0 to 50.0.1 - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.0.0...v50.0.1) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 26 +++++++++++++++++--------- package.json | 4 ++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index b69de5afb..438e792d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "devDependencies": { "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "^9.8.0", + "@eslint/js": "^9.9.0", "@formatjs/cli": "^6.2.12", "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", @@ -67,7 +67,7 @@ "eslint": "^9.8.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^50.0.0", + "eslint-plugin-jsdoc": "^50.0.1", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", @@ -813,9 +813,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", - "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8479,11 +8479,10 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.0.0.tgz", - "integrity": "sha512-czyJ5F7/qY2LIhUD5Bl6q1CCZ8mjvfEA9HQN5nvIp/Pb8VLIlUNd+DMZdA2OKN74QQMS3pobC06hFqAOJyOv5Q==", + "version": "50.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.0.1.tgz", + "integrity": "sha512-UayhAysIk1Du8InV27WMbV4AMSJSu60+bekmeuGK2OUy4QJSFPr1srYT6AInykGkmMdRuHfDX6Q0tJEr8BtDtg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.46.0", "are-docs-informative": "^0.0.2", @@ -9262,6 +9261,15 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", diff --git a/package.json b/package.json index e66886b0b..9147cb82b 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "devDependencies": { "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "^9.8.0", + "@eslint/js": "^9.9.0", "@formatjs/cli": "^6.2.12", "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", @@ -107,7 +107,7 @@ "eslint": "^9.8.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^50.0.0", + "eslint-plugin-jsdoc": "^50.0.1", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", From 012530d56fbfe49829a0be4f013344e30df03864 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:18:42 +0000 Subject: [PATCH 31/56] (chore): Bump @redhat-cloud-services/frontend-components-utilities Bumps the ci-dependencies group with 1 update: [@redhat-cloud-services/frontend-components-utilities](https://github.com/RedHatInsights/frontend-components). Updates `@redhat-cloud-services/frontend-components-utilities` from 4.0.14 to 4.0.15 - [Commits](https://github.com/RedHatInsights/frontend-components/commits) --- updated-dependencies: - dependency-name: "@redhat-cloud-services/frontend-components-utilities" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b69de5afb..01c9b79dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@redhat-cloud-services/frontend-components": "^4.2.13", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.15", "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", @@ -2683,9 +2683,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-utilities": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.14.tgz", - "integrity": "sha512-Xf3zvEZ9nPZJ24qlDYtIkmFW/zsWwQHzU4rfaftNDol7mP+X21PunW3pMb9YSCDzRiqKiwWDUjtgiVjiuNTb3w==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.15.tgz", + "integrity": "sha512-09aUgj0Ly1CXbh2n4UJX35zL6JxCLzdacCv4IfpBljyMemWKm1t2q111l8a4lmsZgSihq/YYPjgnoFMEAze8YQ==", "dependencies": { "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", "@redhat-cloud-services/types": "^1.0.9", diff --git a/package.json b/package.json index e66886b0b..4748c3600 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@redhat-cloud-services/frontend-components": "^4.2.13", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.14", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.15", "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", From 003b03c5316066130d3e74e370c5505012f5fe2a Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 12 Aug 2024 10:59:08 -0400 Subject: [PATCH 32/56] Dependency updates --- package-lock.json | 124 +++++++++++++++++++++++----------------------- package.json | 8 +-- 2 files changed, 66 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c97018fc..a1acc9dda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", "@redhat-cloud-services/frontend-components-config": "^6.2.2", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.9", + "@swc/core": "^1.7.10", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -64,7 +64,7 @@ "@typescript-eslint/parser": "^8.0.1", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", - "eslint": "^9.8.0", + "eslint": "^9.9.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsdoc": "^50.0.1", @@ -74,7 +74,7 @@ "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", - "eslint-plugin-testing-library": "^6.2.2", + "eslint-plugin-testing-library": "^6.3.0", "git-revision-webpack-plugin": "^5.0.0", "globals": "^15.9.0", "identity-obj-proxy": "^3.0.0", @@ -2992,9 +2992,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.9.tgz", - "integrity": "sha512-GUS7qH2/vOgLIiu3lCUheCo/r/ppj/fDjhRUuhXb/S13CeTQ1YJwLYpL5QCUZDas2Hn0aKrB4TiQtyM1cCpDRA==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.10.tgz", + "integrity": "sha512-l0xrFwBQ9atizhmV94yC2nwcecTk/oftofwMNPiFMGe56dqdmi2ArHaTV3PCtMlgaUH6rGCehoRMt5OrCI1ktg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -3010,16 +3010,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.9", - "@swc/core-darwin-x64": "1.7.9", - "@swc/core-linux-arm-gnueabihf": "1.7.9", - "@swc/core-linux-arm64-gnu": "1.7.9", - "@swc/core-linux-arm64-musl": "1.7.9", - "@swc/core-linux-x64-gnu": "1.7.9", - "@swc/core-linux-x64-musl": "1.7.9", - "@swc/core-win32-arm64-msvc": "1.7.9", - "@swc/core-win32-ia32-msvc": "1.7.9", - "@swc/core-win32-x64-msvc": "1.7.9" + "@swc/core-darwin-arm64": "1.7.10", + "@swc/core-darwin-x64": "1.7.10", + "@swc/core-linux-arm-gnueabihf": "1.7.10", + "@swc/core-linux-arm64-gnu": "1.7.10", + "@swc/core-linux-arm64-musl": "1.7.10", + "@swc/core-linux-x64-gnu": "1.7.10", + "@swc/core-linux-x64-musl": "1.7.10", + "@swc/core-win32-arm64-msvc": "1.7.10", + "@swc/core-win32-ia32-msvc": "1.7.10", + "@swc/core-win32-x64-msvc": "1.7.10" }, "peerDependencies": { "@swc/helpers": "*" @@ -3031,9 +3031,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.9.tgz", - "integrity": "sha512-OIfjf7iK0OCZ87IASLymq6HO9nT0s80R7hI9zHfsJJ9vxKc63iAKe+oxgXzljecBGPlkjUjj6nTFlN0wVeraUQ==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.10.tgz", + "integrity": "sha512-TYp4x/9w/C/yMU1olK5hTKq/Hi7BjG71UJ4V1U1WxI1JA3uokjQ/GoktDfmH5V5pX4dgGSOJwUe2RjoN8Z/XnA==", "cpu": [ "arm64" ], @@ -3048,9 +3048,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.9.tgz", - "integrity": "sha512-8ekLnd6IdOudNtm2ru0FrUCEBzs46Gg5f5Wkm7TPV6xA1hgIQMUbc9NJ/unRTh0FRvO1hbtoIz06GGD9MRQW8Q==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.10.tgz", + "integrity": "sha512-P3LJjAWh5yLc6p5IUwV5LgRfA3R1oDCZDMabYyb2BVQuJTD4MfegW9DhBcUUF5dhBLwq3191KpLVzE+dLTbiXw==", "cpu": [ "x64" ], @@ -3065,9 +3065,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.9.tgz", - "integrity": "sha512-6kSe+cCp0nrf1JP9MYrJxsjATq2Abs4RrZ501EXfcJuP9pJrdlX3UlGvT7kboeXP1723eWgMOEjRsx/qW5E4QQ==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.10.tgz", + "integrity": "sha512-yGOFjE7w/akRTmqGY3FvWYrqbxO7OB2N2FHj2LO5HtzXflfoABb5RyRvdEquX+17J6mEpu4EwjYNraTD/WHIEQ==", "cpu": [ "arm" ], @@ -3082,9 +3082,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.9.tgz", - "integrity": "sha512-I+cGw4N9xqprsvPywU1vt+Ni4LnZMlDzH7Ow3n4KWKRJ34V9/0jnnmTYd7twpjpib9TsdEzAADFwlP3dVvetCQ==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.10.tgz", + "integrity": "sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==", "cpu": [ "arm64" ], @@ -3099,9 +3099,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.9.tgz", - "integrity": "sha512-u5ryq5fe8DZMLoyv8h3970NzuNdsdOmOod48b0EFVbNwHm0Tpz9wTRuzzGfpZXOR5xjgBiO+MbxiTU2vSdHo/g==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.10.tgz", + "integrity": "sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==", "cpu": [ "arm64" ], @@ -3116,9 +3116,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.9.tgz", - "integrity": "sha512-rpdjz8kqLDqLyWEfhzYtGkGxh4oDRxnf7xLmNUptX6WyBDnOxcAjyBpeaNIV2mhIM4e1jmNtiUHDTwjLX15ECA==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.10.tgz", + "integrity": "sha512-Sc+pY55gknCAmBQBR6DhlA7jZSxHaLSDb5Sevzi6DOFMXR79NpA6zWTNKwp1GK2AnRIkbAfvYLgOxS5uWTFVpg==", "cpu": [ "x64" ], @@ -3133,9 +3133,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.9.tgz", - "integrity": "sha512-KPTzWcAbnb1Cu8Jjs/Kty26TGT+PwT6l1jmXtVoKlc+5/ewM7CxSD7ZbutvFriJrg4Z1i3oyEOaQ2eM9T+LOVA==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.10.tgz", + "integrity": "sha512-g5NKx2LXaGd0K26hmEts1Cvb7ptIvq3MHSgr6/D1tRPcDZw1Sp0dYsmyOv0ho4F5GOJyiCooG3oE9FXdb7jIpQ==", "cpu": [ "x64" ], @@ -3150,9 +3150,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.9.tgz", - "integrity": "sha512-ZFbgm7ye/mTyeXik4o/3KqoEOSA2E2eb3e4JkAsVJB0K/hZdAoUtyyRCKlnq7nqbInhyKr0Pxqas6LkfyCQ48g==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.10.tgz", + "integrity": "sha512-plRIsOcfy9t9Q/ivm5DA7I0HaIvfAWPbI+bvVRrr3C/1K2CSqnqZJjEWOAmx2LiyipijNnEaFYuLBp0IkGuJpg==", "cpu": [ "arm64" ], @@ -3167,9 +3167,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.9.tgz", - "integrity": "sha512-xIcQost/1XcDL38pPQtBG1E4cOGHUorBxfD1S3/B9vVJlaAJIfZ8vwmOKpMIcRGXAQOXd0MXsBz+kaaOIJfqQQ==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.10.tgz", + "integrity": "sha512-GntrVNT23viHtbfzmlK8lfBiKeajH24GzbDT7qXhnoO20suUPcyYZxyvCb4gWM2zu8ZBTPHNlqfrNsriQCZ+lQ==", "cpu": [ "ia32" ], @@ -3184,9 +3184,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.9.tgz", - "integrity": "sha512-VSMce64nnvz1dDjbpUrtvi7wcXqdXkCwyXLp5ohAKG/ECy2JxZXdDB+FiP4BeYgH59ANRVVlmcaPrQGpK3QAnQ==", + "version": "1.7.10", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.10.tgz", + "integrity": "sha512-uXIF8GuSappe1imm6Lf7pHGepfCBjDQlS+qTqvEGE0wZAsL1IVATK9P/cH/OCLfJXeQDTLeSYmrpwjtXNt46tQ==", "cpu": [ "x64" ], @@ -7763,9 +7763,9 @@ } }, "node_modules/eslint": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", - "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "dev": true, "license": "MIT", "dependencies": { @@ -7773,7 +7773,7 @@ "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.8.0", + "@eslint/js": "9.9.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -7812,6 +7812,14 @@ }, "funding": { "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-compat-utils": { @@ -9046,10 +9054,11 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.2.tgz", - "integrity": "sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.3.0.tgz", + "integrity": "sha512-GYcEErTt6EGwE0bPDY+4aehfEBpB2gDBFKohir8jlATSUvzStEyzCx8QWB/14xeKc/AwyXkzScSzMHnFojkWrA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.58.0" }, @@ -9261,15 +9270,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", - "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", diff --git a/package.json b/package.json index ad2ecb91b..e3db86f65 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", "@redhat-cloud-services/frontend-components-config": "^6.2.2", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.9", + "@swc/core": "^1.7.10", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -104,7 +104,7 @@ "@typescript-eslint/parser": "^8.0.1", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", - "eslint": "^9.8.0", + "eslint": "^9.9.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsdoc": "^50.0.1", @@ -114,7 +114,7 @@ "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", - "eslint-plugin-testing-library": "^6.2.2", + "eslint-plugin-testing-library": "^6.3.0", "git-revision-webpack-plugin": "^5.0.0", "globals": "^15.9.0", "identity-obj-proxy": "^3.0.0", @@ -134,7 +134,7 @@ }, "overrides": { "@typescript-eslint/eslint-plugin": "^8.0.1", - "eslint": "^9.8.0", + "eslint": "^9.9.0", "redux": "^5.0.1" }, "insights": { From 80a48c0fc6186c2857a43e79c57d170c2323df01 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 15 Aug 2024 00:32:36 +0000 Subject: [PATCH 33/56] fix: package.json & package-lock.json to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-AXIOS-7361793 --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1acc9dda..28a2f8d51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.3", + "axios": "^1.7.4", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", @@ -5086,9 +5086,10 @@ } }, "node_modules/axios": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", - "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/package.json b/package.json index e3db86f65..3613c8d80 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.3", + "axios": "^1.7.4", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", From f489834a61db78133f8ecbc791ef173d63fc48ef Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Thu, 15 Aug 2024 10:08:15 -0400 Subject: [PATCH 34/56] Update cost model tests to use GiB-hours --- src/api/costModels.data.ts | 4 ++-- .../settings/costModels/components/addPriceList.test.tsx | 6 +++--- .../costModels/costModel/updateRateModel.test.tsx | 4 ++-- src/store/metrics/store.test.ts | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/api/costModels.data.ts b/src/api/costModels.data.ts index b4ecce286..347e7b857 100644 --- a/src/api/costModels.data.ts +++ b/src/api/costModels.data.ts @@ -104,7 +104,7 @@ export const page1 = { name: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Usage', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, description: '', tiered_rates: [ @@ -125,7 +125,7 @@ export const page1 = { name: 'memory_gb_request_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, description: '', tiered_rates: [ diff --git a/src/routes/settings/costModels/components/addPriceList.test.tsx b/src/routes/settings/costModels/components/addPriceList.test.tsx index 4363d9638..db51486e6 100644 --- a/src/routes/settings/costModels/components/addPriceList.test.tsx +++ b/src/routes/settings/costModels/components/addPriceList.test.tsx @@ -32,7 +32,7 @@ const metricsHash: any = { metric: 'memory_gb_request_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', default_cost_type: 'Supplementary', }, Usage: { @@ -40,7 +40,7 @@ const metricsHash: any = { metric: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Usage', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', default_cost_type: 'Supplementary', }, }, @@ -78,7 +78,7 @@ function RenderFormDataUI({ cancel, submit }) { name: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, description: '', tag_rates: { diff --git a/src/routes/settings/costModels/costModel/updateRateModel.test.tsx b/src/routes/settings/costModels/costModel/updateRateModel.test.tsx index 7c02b26f6..845509e79 100644 --- a/src/routes/settings/costModels/costModel/updateRateModel.test.tsx +++ b/src/routes/settings/costModels/costModel/updateRateModel.test.tsx @@ -188,7 +188,7 @@ const initial = { metric: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Usage', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', default_cost_type: 'Supplementary', }, { @@ -196,7 +196,7 @@ const initial = { metric: 'memory_gb_request_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', default_cost_type: 'Supplementary', }, { diff --git a/src/store/metrics/store.test.ts b/src/store/metrics/store.test.ts index 571e2378f..c529e1e79 100644 --- a/src/store/metrics/store.test.ts +++ b/src/store/metrics/store.test.ts @@ -48,14 +48,14 @@ test('fetch metrics', async () => { metric: 'memory_gb_request_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, { source_type: 'Openshift Container Platform', metric: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Usage', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, ], }, @@ -90,14 +90,14 @@ test('fetch metrics', async () => { metric: 'memory_gb_request_per_hour', label_metric: 'Memory', label_measurement: 'Request', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, Usage: { source_type: 'Openshift Container Platform', metric: 'memory_gb_usage_per_hour', label_metric: 'Memory', label_measurement: 'Usage', - label_measurement_unit: 'GB-hours', + label_measurement_unit: 'GiB-hours', }, }, }); From a1e89bfe5203d8919dd8a88e3e9f7c217a409dec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:00:32 +0000 Subject: [PATCH 35/56] (chore): Bump the lint-dependencies group with 2 updates Bumps the lint-dependencies group with 2 updates: [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc). Updates `@typescript-eslint/parser` from 8.0.1 to 8.1.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.1.0/packages/parser) Updates `eslint-plugin-jsdoc` from 50.0.1 to 50.2.2 - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.0.1...v50.2.2) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 179 +++++++++++++++++++++++++++++++++++----------- package.json | 4 +- 2 files changed, 140 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 28a2f8d51..eb9367a1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,13 +61,13 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.0.1", - "@typescript-eslint/parser": "^8.0.1", + "@typescript-eslint/parser": "^8.1.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^50.0.1", + "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", @@ -657,14 +657,14 @@ "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", - "integrity": "sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", + "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", "dev": true, "dependencies": { "comment-parser": "1.4.1", "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.0.0" + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { "node": ">=16" @@ -4138,15 +4138,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz", - "integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz", + "integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4" }, "engines": { @@ -4165,6 +4165,120 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", + "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.1.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", @@ -6975,9 +7089,9 @@ "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -8488,15 +8602,15 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.0.1.tgz", - "integrity": "sha512-UayhAysIk1Du8InV27WMbV4AMSJSu60+bekmeuGK2OUy4QJSFPr1srYT6AInykGkmMdRuHfDX6Q0tJEr8BtDtg==", + "version": "50.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz", + "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.46.0", + "@es-joy/jsdoccomment": "~0.48.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.5", + "debug": "^4.3.6", "escape-string-regexp": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.6.0", @@ -8512,23 +8626,6 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -14157,9 +14254,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, "engines": { "node": ">=12.0.0" diff --git a/package.json b/package.json index 3613c8d80..6d588298e 100644 --- a/package.json +++ b/package.json @@ -101,13 +101,13 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.0.1", - "@typescript-eslint/parser": "^8.0.1", + "@typescript-eslint/parser": "^8.1.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.0", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", - "eslint-plugin-jsdoc": "^50.0.1", + "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.3.0", "eslint-plugin-prettier": "^5.2.1", From 94b50690f30dcdcb198852b512fb8d03db7c6ddf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:02:34 +0000 Subject: [PATCH 36/56] (chore): Bump the ci-dependencies group with 3 updates Bumps the ci-dependencies group with 3 updates: [@redhat-cloud-services/frontend-components](https://github.com/RedHatInsights/frontend-components), [@redhat-cloud-services/frontend-components-utilities](https://github.com/RedHatInsights/frontend-components) and [@redhat-cloud-services/rbac-client](https://github.com/RedHatInsights/javascript-clients). Updates `@redhat-cloud-services/frontend-components` from 4.2.13 to 4.2.14 - [Commits](https://github.com/RedHatInsights/frontend-components/commits) Updates `@redhat-cloud-services/frontend-components-utilities` from 4.0.15 to 4.0.17 - [Commits](https://github.com/RedHatInsights/frontend-components/commits) Updates `@redhat-cloud-services/rbac-client` from 2.2.0 to 2.2.1 - [Release notes](https://github.com/RedHatInsights/javascript-clients/releases) - [Changelog](https://github.com/RedHatInsights/javascript-clients/blob/main/release.config.js) - [Commits](https://github.com/RedHatInsights/javascript-clients/compare/@redhat-cloud-services/rbac-client-2.2.0...@redhat-cloud-services/rbac-client-2.2.1) --- updated-dependencies: - dependency-name: "@redhat-cloud-services/frontend-components" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies - dependency-name: "@redhat-cloud-services/frontend-components-utilities" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies - dependency-name: "@redhat-cloud-services/rbac-client" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 25 ++++++++++++------------- package.json | 6 +++--- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 28a2f8d51..c7b9a3e20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,11 +17,11 @@ "@patternfly/react-icons": "5.3.2", "@patternfly/react-table": "5.3.4", "@patternfly/react-tokens": "5.3.1", - "@redhat-cloud-services/frontend-components": "^4.2.13", + "@redhat-cloud-services/frontend-components": "^4.2.14", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.15", - "@redhat-cloud-services/rbac-client": "^2.2.0", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.17", + "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.4", @@ -2400,9 +2400,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-4.2.13.tgz", - "integrity": "sha512-k72Yf6jvAt1zb5QJBvqyYue0e0I0QxF6685OcSduML5Zm6mqvSQEi7yFyqe7RcZ1DB4bGHSxt49AeNT2iR7YIQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-4.2.14.tgz", + "integrity": "sha512-q3RgMJiJ4Zk4Qim0sKbCzn9IJtQT9oJWetu11FbHwYZV2w25mORM22QA9LS1jOsaywJJJc4J453CPVRBQhrkGw==", "dependencies": { "@patternfly/react-component-groups": "^5.0.0", "@redhat-cloud-services/frontend-components-utilities": "^4.0.0", @@ -2683,9 +2683,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-utilities": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.15.tgz", - "integrity": "sha512-09aUgj0Ly1CXbh2n4UJX35zL6JxCLzdacCv4IfpBljyMemWKm1t2q111l8a4lmsZgSihq/YYPjgnoFMEAze8YQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-4.0.17.tgz", + "integrity": "sha512-A/KIw44ZRFzd/iLNF6hLWvKPyOvnpGCKwgsT3x9EhsJBS1I7KJU+g7h4M+XDy7vwDyUTIkfnTSbaaVdNnzmEFg==", "dependencies": { "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", "@redhat-cloud-services/types": "^1.0.9", @@ -2735,10 +2735,9 @@ } }, "node_modules/@redhat-cloud-services/rbac-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.2.0.tgz", - "integrity": "sha512-crytQeif+qr5yWwIpP5baMA4slk7SGmV9CC/1HiyyM91OoC9Iculqp2kYjWY3FtEEw0iJRaOyjV2RRfR+Cmzyw==", - "license": "Apache-2.0", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.2.1.tgz", + "integrity": "sha512-3Z8yQK9XUGBrRwif+oeCXkGL0LQGdg/oOdeohvfhICnv97UKfd19XelL3VNettatSMshwZMsDkVxr5//uKrM7w==", "dependencies": { "@redhat-cloud-services/javascript-clients-shared": "^1.2.2", "axios": "^1.7.2", diff --git a/package.json b/package.json index 3613c8d80..6aed2788d 100644 --- a/package.json +++ b/package.json @@ -57,11 +57,11 @@ "@patternfly/react-icons": "5.3.2", "@patternfly/react-table": "5.3.4", "@patternfly/react-tokens": "5.3.1", - "@redhat-cloud-services/frontend-components": "^4.2.13", + "@redhat-cloud-services/frontend-components": "^4.2.14", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", - "@redhat-cloud-services/frontend-components-utilities": "^4.0.15", - "@redhat-cloud-services/rbac-client": "^2.2.0", + "@redhat-cloud-services/frontend-components-utilities": "^4.0.17", + "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", "axios": "^1.7.4", From 8df5aaba4268f7be9bbe2eb3d424f28db776adaf Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 19 Aug 2024 11:49:17 -0400 Subject: [PATCH 37/56] Dependency updates --- package-lock.json | 310 +++++++++++++++------------------------------- package.json | 10 +- 2 files changed, 103 insertions(+), 217 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2aea0cd47..060e8ae1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "react-dom": "^18.3.1", "react-intl": "^6.6.8", "react-redux": "^9.1.2", - "react-router-dom": "^6.26.0", + "react-router-dom": "^6.26.1", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", @@ -47,9 +47,9 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.2.2", + "@redhat-cloud-services/frontend-components-config": "^6.2.6", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.10", + "@swc/core": "^1.7.14", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -60,7 +60,7 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^8.1.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", @@ -2426,14 +2426,14 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.2.2.tgz", - "integrity": "sha512-l+XVF/BDahzeQ9qBNsr/vpppNNWADHsjhjMBJ22AyzQ5DbLIx/XU/hW/oDWu3Kt/Cg56aPi9ydq6E2he9aWjMg==", + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.2.6.tgz", + "integrity": "sha512-MbsGc1MHA4CPMryHvs2bGAeLoiKUuiW6Bsr076ANkGAlueCZguAZMotDlPC3vML5cyJ2wNrQ7fPnbCW9ElXqvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.8", - "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.1", + "@redhat-cloud-services/frontend-components-config-utilities": "^3.2.2", "@redhat-cloud-services/tsc-transform-imports": "^1.0.12", "@swc/core": "^1.3.76", "assert": "^2.0.0", @@ -2480,9 +2480,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config-utilities": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.2.1.tgz", - "integrity": "sha512-hM2aXdOk2ylghGZta90XgVWgij/z4/5CIh7eeuR6HESYYObtGvkBQ0k6Lfqc2ipCZDaNEklFFmUL7rxAx2s0Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config-utilities/-/frontend-components-config-utilities-3.2.2.tgz", + "integrity": "sha512-Zfc1lEvvhZcRWklSZCa17UlytCjCEh/cn3umEEpx7LLcBYfRRIQjNc7L/iKxGpA1mJUVOaNk1G7i1oO39D7FCQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2802,9 +2802,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.0.tgz", - "integrity": "sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -2991,9 +2991,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.10.tgz", - "integrity": "sha512-l0xrFwBQ9atizhmV94yC2nwcecTk/oftofwMNPiFMGe56dqdmi2ArHaTV3PCtMlgaUH6rGCehoRMt5OrCI1ktg==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.14.tgz", + "integrity": "sha512-9aeXeifnyuvc2pcuuhPQgVUwdpGEzZ+9nJu0W8/hNl/aESFsJGR5i9uQJRGu0atoNr01gK092fvmqMmQAPcKow==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -3009,16 +3009,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.10", - "@swc/core-darwin-x64": "1.7.10", - "@swc/core-linux-arm-gnueabihf": "1.7.10", - "@swc/core-linux-arm64-gnu": "1.7.10", - "@swc/core-linux-arm64-musl": "1.7.10", - "@swc/core-linux-x64-gnu": "1.7.10", - "@swc/core-linux-x64-musl": "1.7.10", - "@swc/core-win32-arm64-msvc": "1.7.10", - "@swc/core-win32-ia32-msvc": "1.7.10", - "@swc/core-win32-x64-msvc": "1.7.10" + "@swc/core-darwin-arm64": "1.7.14", + "@swc/core-darwin-x64": "1.7.14", + "@swc/core-linux-arm-gnueabihf": "1.7.14", + "@swc/core-linux-arm64-gnu": "1.7.14", + "@swc/core-linux-arm64-musl": "1.7.14", + "@swc/core-linux-x64-gnu": "1.7.14", + "@swc/core-linux-x64-musl": "1.7.14", + "@swc/core-win32-arm64-msvc": "1.7.14", + "@swc/core-win32-ia32-msvc": "1.7.14", + "@swc/core-win32-x64-msvc": "1.7.14" }, "peerDependencies": { "@swc/helpers": "*" @@ -3030,9 +3030,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.10.tgz", - "integrity": "sha512-TYp4x/9w/C/yMU1olK5hTKq/Hi7BjG71UJ4V1U1WxI1JA3uokjQ/GoktDfmH5V5pX4dgGSOJwUe2RjoN8Z/XnA==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.14.tgz", + "integrity": "sha512-V0OUXjOH+hdGxDYG8NkQzy25mKOpcNKFpqtZEzLe5V/CpLJPnpg1+pMz70m14s9ZFda9OxsjlvPbg1FLUwhgIQ==", "cpu": [ "arm64" ], @@ -3047,9 +3047,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.10.tgz", - "integrity": "sha512-P3LJjAWh5yLc6p5IUwV5LgRfA3R1oDCZDMabYyb2BVQuJTD4MfegW9DhBcUUF5dhBLwq3191KpLVzE+dLTbiXw==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.14.tgz", + "integrity": "sha512-9iFvUnxG6FC3An5ogp5jbBfQuUmTTwy8KMB+ZddUoPB3NR1eV+Y9vOh/tfWcenSJbgOKDLgYC5D/b1mHAprsrQ==", "cpu": [ "x64" ], @@ -3064,9 +3064,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.10.tgz", - "integrity": "sha512-yGOFjE7w/akRTmqGY3FvWYrqbxO7OB2N2FHj2LO5HtzXflfoABb5RyRvdEquX+17J6mEpu4EwjYNraTD/WHIEQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.14.tgz", + "integrity": "sha512-zGJsef9qPivKSH8Vv4F/HiBXBTHZ5Hs3ZjVGo/UIdWPJF8fTL9OVADiRrl34Q7zOZEtGXRwEKLUW1SCQcbDvZA==", "cpu": [ "arm" ], @@ -3081,9 +3081,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.10.tgz", - "integrity": "sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.14.tgz", + "integrity": "sha512-AxV3MPsoI7i4B8FXOew3dx3N8y00YoJYvIPfxelw07RegeCEH3aHp2U2DtgbP/NV1ugZMx0TL2Z2DEvocmA51g==", "cpu": [ "arm64" ], @@ -3098,9 +3098,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.10.tgz", - "integrity": "sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.14.tgz", + "integrity": "sha512-JDLdNjUj3zPehd4+DrQD8Ltb3B5lD8D05IwePyDWw+uR/YPc7w/TX1FUVci5h3giJnlMCJRvi1IQYV7K1n7KtQ==", "cpu": [ "arm64" ], @@ -3115,9 +3115,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.10.tgz", - "integrity": "sha512-Sc+pY55gknCAmBQBR6DhlA7jZSxHaLSDb5Sevzi6DOFMXR79NpA6zWTNKwp1GK2AnRIkbAfvYLgOxS5uWTFVpg==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.14.tgz", + "integrity": "sha512-Siy5OvPCLLWmMdx4msnEs8HvEVUEigSn0+3pbLjv78iwzXd0qSBNHUPZyC1xeurVaUbpNDxZTpPRIwpqNE2+Og==", "cpu": [ "x64" ], @@ -3132,9 +3132,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.10.tgz", - "integrity": "sha512-g5NKx2LXaGd0K26hmEts1Cvb7ptIvq3MHSgr6/D1tRPcDZw1Sp0dYsmyOv0ho4F5GOJyiCooG3oE9FXdb7jIpQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.14.tgz", + "integrity": "sha512-FtEGm9mwtRYQNK43WMtUIadxHs/ja2rnDurB99os0ZoFTGG2IHuht2zD97W0wB8JbqEabT1XwSG9Y5wmN+ciEQ==", "cpu": [ "x64" ], @@ -3149,9 +3149,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.10.tgz", - "integrity": "sha512-plRIsOcfy9t9Q/ivm5DA7I0HaIvfAWPbI+bvVRrr3C/1K2CSqnqZJjEWOAmx2LiyipijNnEaFYuLBp0IkGuJpg==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.14.tgz", + "integrity": "sha512-Jp8KDlfq7Ntt2/BXr0y344cYgB1zf0DaLzDZ1ZJR6rYlAzWYSccLYcxHa97VGnsYhhPspMpmCvHid97oe2hl4A==", "cpu": [ "arm64" ], @@ -3166,9 +3166,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.10.tgz", - "integrity": "sha512-GntrVNT23viHtbfzmlK8lfBiKeajH24GzbDT7qXhnoO20suUPcyYZxyvCb4gWM2zu8ZBTPHNlqfrNsriQCZ+lQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.14.tgz", + "integrity": "sha512-I+cFsXF0OU0J9J4zdWiQKKLURO5dvCujH9Jr8N0cErdy54l9d4gfIxdctfTF+7FyXtWKLTCkp+oby9BQhkFGWA==", "cpu": [ "ia32" ], @@ -3183,9 +3183,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.10.tgz", - "integrity": "sha512-uXIF8GuSappe1imm6Lf7pHGepfCBjDQlS+qTqvEGE0wZAsL1IVATK9P/cH/OCLfJXeQDTLeSYmrpwjtXNt46tQ==", + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.14.tgz", + "integrity": "sha512-NNrprQCK6d28mG436jVo2TD+vACHseUECacEBGZ9Ef0qfOIWS1XIt2MisQKG0Oea2VvLFl6tF/V4Lnx/H0Sn3Q==", "cpu": [ "x64" ], @@ -4103,17 +4103,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", - "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz", + "integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/type-utils": "8.0.1", - "@typescript-eslint/utils": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/type-utils": "8.1.0", + "@typescript-eslint/utils": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4164,11 +4164,12 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.1.0", "@typescript-eslint/visitor-keys": "8.1.0" @@ -4181,130 +4182,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", - "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", - "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.1.0", - "@typescript-eslint/visitor-keys": "8.1.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", - "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.1.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", - "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", - "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz", + "integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/utils": "8.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4322,9 +4208,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, "license": "MIT", "engines": { @@ -4336,14 +4222,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", - "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4394,16 +4280,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", - "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz", + "integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1" + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4417,13 +4303,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.1.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -16926,12 +16812,12 @@ } }, "node_modules/react-router": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.0.tgz", - "integrity": "sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.0" + "@remix-run/router": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -16941,13 +16827,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.0.tgz", - "integrity": "sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.0", - "react-router": "6.26.0" + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" }, "engines": { "node": ">=14.0.0" diff --git a/package.json b/package.json index 17717ef85..ce6f72da5 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "react-dom": "^18.3.1", "react-intl": "^6.6.8", "react-redux": "^9.1.2", - "react-router-dom": "^6.26.0", + "react-router-dom": "^6.26.1", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", @@ -87,9 +87,9 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.2.2", + "@redhat-cloud-services/frontend-components-config": "^6.2.6", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.10", + "@swc/core": "^1.7.14", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", @@ -100,7 +100,7 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^8.1.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", @@ -133,7 +133,7 @@ "webpack-bundle-analyzer": "^4.10.2" }, "overrides": { - "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", "eslint": "^9.9.0", "redux": "^5.0.1" }, From 79e54f5ae864b1b8d21d81e1ae6fd647482b4e01 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Wed, 21 Aug 2024 18:13:12 -0400 Subject: [PATCH 38/56] OCP breakdown chart to include unattributed costs https://issues.redhat.com/browse/COST-5426 --- locales/data.json | 30 ++++++++- locales/translations.json | 6 +- src/api/reports/report.ts | 2 + src/locales/messages.ts | 24 ++++++- .../components/charts/common/chartDatum.ts | 2 + .../components/costChart/costChart.tsx | 2 +- .../costOverview/costOverviewBase.tsx | 6 ++ .../overheadCostChart/overheadCostChart.tsx | 62 ++++++++++++++++++- .../details/ocpDetails/detailsTable.tsx | 28 ++++++++- src/routes/explorer/explorerTable.tsx | 31 +++++++++- .../computedReport/getComputedReportItems.ts | 28 +++++++++ 11 files changed, 209 insertions(+), 12 deletions(-) diff --git a/locales/data.json b/locales/data.json index 046f771c8..8adf5d735 100644 --- a/locales/data.json +++ b/locales/data.json @@ -10848,6 +10848,18 @@ "value": "count" } ], + "networkUnattributedDistributed": [ + { + "type": 0, + "value": "Network unattributed" + } + ], + "networkUnattributedDistributedDesc": [ + { + "type": 0, + "value": "Costs associated with ingress and egress network traffic for individual nodes." + } + ], "next": [ { "type": 0, @@ -11331,7 +11343,11 @@ "overheadDesc": [ { "type": 0, - "value": "Includes distributed costs" + "value": "Includes distributed costs " + }, + { + "type": 1, + "value": "value" } ], "overviewInfoArialLabel": [ @@ -12714,6 +12730,18 @@ "value": "StorageClass" } ], + "storageUnattributedDistributed": [ + { + "type": 0, + "value": "Storage unattributed" + } + ], + "storageUnattributedDistributedDesc": [ + { + "type": 0, + "value": "A type of project that gets created when cost management is unable to correlate a portion of the cloud cost to an OpenShift namespace" + } + ], "suggestions": [ { "type": 0, diff --git a/locales/translations.json b/locales/translations.json index 5141319cb..8ce3c92db 100644 --- a/locales/translations.json +++ b/locales/translations.json @@ -399,6 +399,8 @@ "monthOverMonthChange": "Month over month change", "moreOptions": "More options", "names": "{count, plural, one {Name} other {Names}}", + "networkUnattributedDistributed": "Network unattributed", + "networkUnattributedDistributedDesc": "Costs associated with ingress and egress network traffic for individual nodes.", "next": "next", "no": "No", "noDataForDate": "No data available for {dateRange}", @@ -467,7 +469,7 @@ "openShiftDesc": "Total cost for OpenShift Container Platform, comprising the infrastructure cost and cost calculated from metrics.", "optimizations": "Optimizations", "overhead": "Overhead", - "overheadDesc": "Includes distributed costs", + "overheadDesc": "Includes distributed costs {value}", "overviewInfoArialLabel": "A description of perspectives", "overviewInfoButtonArialLabel": "A dialog with a description of perspectives", "overviewTitle": "Cost Management Overview", @@ -571,6 +573,8 @@ "statusStates": "{value, select, pending {Pending} running {Running} failed {Failed} other {}}", "storage": "Storage", "storageClass": "StorageClass", + "storageUnattributedDistributed": "Storage unattributed", + "storageUnattributedDistributedDesc": "A type of project that gets created when cost management is unable to correlate a portion of the cloud cost to an OpenShift namespace", "suggestions": "Suggestions", "sumPlatformCosts": "Sum platform costs", "summary": "Summary", diff --git a/src/api/reports/report.ts b/src/api/reports/report.ts index ab4561c7a..7e6b58540 100644 --- a/src/api/reports/report.ts +++ b/src/api/reports/report.ts @@ -15,8 +15,10 @@ export interface ReportUsageValue extends ReportValue { export interface ReportItemValue { distributed?: ReportValue; markup?: ReportValue; + network_unattributed_distributed?: ReportValue; platform_distributed?: ReportValue; raw?: ReportValue; + storage_unattributed_distributed?: ReportValue; total?: ReportValue; usage?: ReportValue; worker_unallocated_distributed?: ReportValue; diff --git a/src/locales/messages.ts b/src/locales/messages.ts index c9b82c04f..5bac6afdf 100644 --- a/src/locales/messages.ts +++ b/src/locales/messages.ts @@ -2565,6 +2565,16 @@ export default defineMessages({ description: 'Name plural or singular', id: 'names', }, + networkUnattributedDistributed: { + defaultMessage: 'Network unattributed', + description: 'Network unattributed', + id: 'networkUnattributedDistributed', + }, + networkUnattributedDistributedDesc: { + defaultMessage: 'Costs associated with ingress and egress network traffic for individual nodes.', + description: 'Costs associated with ingress and egress network traffic for individual nodes.', + id: 'networkUnattributedDistributedDesc', + }, next: { defaultMessage: 'next', description: 'next', @@ -2926,7 +2936,7 @@ export default defineMessages({ id: 'overhead', }, overheadDesc: { - defaultMessage: 'Includes distributed costs', + defaultMessage: 'Includes distributed costs {value}', description: 'Includes distributed costs', id: 'overheadDesc', }, @@ -3506,6 +3516,18 @@ export default defineMessages({ description: 'StorageClass', id: 'storageClass', }, + storageUnattributedDistributed: { + defaultMessage: 'Storage unattributed', + description: 'Storage unattributed', + id: 'storageUnattributedDistributed', + }, + storageUnattributedDistributedDesc: { + defaultMessage: + 'A type of project that gets created when cost management is unable to correlate a portion of the cloud cost to an OpenShift namespace', + description: + 'A type of project that gets created when cost management is unable to correlate a portion of the cloud cost to an OpenShift namespace', + id: 'storageUnattributedDistributedDesc', + }, suggestions: { defaultMessage: 'Suggestions', description: 'Suggestions', diff --git a/src/routes/components/charts/common/chartDatum.ts b/src/routes/components/charts/common/chartDatum.ts index 237b455f1..af5018232 100644 --- a/src/routes/components/charts/common/chartDatum.ts +++ b/src/routes/components/charts/common/chartDatum.ts @@ -35,8 +35,10 @@ export const enum ComputedReportItemValueType { distributed = 'distributed', // cost.distributed.value none = 'none', // A value type is not used in this scenario (e.g., usage.value) markup = 'markup', // infrastructure.markup.value + networkUnattributedDistributed = 'network_unattributed_distributed', // cost.network_unattributed_distributed.value platformDistributed = 'platform_distributed', // cost.platform_distributed.value raw = 'raw', // infrastructure.raw.value + storageUnattributedDistributed = 'storage_unattributed_distributed', // cost.storage_unattributed_distributed.value total = 'total', // // infrastructure.total.value usage = 'usage', // infrastructure.usage.value workerUnallocatedDistributed = 'worker_unallocated_distributed', // cost.worker_unallocated_distributed.value diff --git a/src/routes/details/components/costChart/costChart.tsx b/src/routes/details/components/costChart/costChart.tsx index 572f221de..a84e1d542 100644 --- a/src/routes/details/components/costChart/costChart.tsx +++ b/src/routes/details/components/costChart/costChart.tsx @@ -121,7 +121,7 @@ class CostChartBase extends React.Component { padding={{ bottom: 20, left: 0, - right: 275, // Adjusted to accommodate legend + right: 325, // Adjusted to accommodate legend top: 20, }} themeColor={ChartThemeColor.green} diff --git a/src/routes/details/components/costOverview/costOverviewBase.tsx b/src/routes/details/components/costOverview/costOverviewBase.tsx index 792e7490b..4875c98c9 100644 --- a/src/routes/details/components/costOverview/costOverviewBase.tsx +++ b/src/routes/details/components/costOverview/costOverviewBase.tsx @@ -144,9 +144,15 @@ class CostOverviewsBase extends React.Component { enableFlip bodyContent={ <> +

{intl.formatMessage(messages.networkUnattributedDistributed)}

+

{intl.formatMessage(messages.networkUnattributedDistributedDesc)}

+

{intl.formatMessage(messages.platformDistributed)}

{intl.formatMessage(messages.platformDesc)}


+

{intl.formatMessage(messages.storageUnattributedDistributed)}

+

{intl.formatMessage(messages.storageUnattributedDistributedDesc)}

+

{intl.formatMessage(messages.workerUnallocated)}

{intl.formatMessage(messages.workerUnallocatedDesc)}


diff --git a/src/routes/details/components/overheadCostChart/overheadCostChart.tsx b/src/routes/details/components/overheadCostChart/overheadCostChart.tsx index 12f548664..df5d40a12 100644 --- a/src/routes/details/components/overheadCostChart/overheadCostChart.tsx +++ b/src/routes/details/components/overheadCostChart/overheadCostChart.tsx @@ -56,34 +56,64 @@ class OverheadCostChartBase extends React.Component public render() { const { costDistribution, name, report, reportFetchStatus, intl } = this.props; + const hasNetworkUnattributedDistributed = + report?.meta?.total?.cost?.network_unattributed_distributed && + costDistribution === ComputedReportItemValueType.distributed; const hasPlatformDistributed = report?.meta?.total?.cost?.platform_distributed && costDistribution === ComputedReportItemValueType.distributed; + const hasStorageUnattributedDistributed = + report?.meta?.total?.cost?.storage_unattributed_distributed && + costDistribution === ComputedReportItemValueType.distributed; const hasWorkerUnallocated = report?.meta?.total?.cost?.worker_unallocated_distributed && costDistribution === ComputedReportItemValueType.distributed; const hasCostTotal = report?.meta?.total?.cost?.total; + const networkUnattributedDistributedUnits = hasNetworkUnattributedDistributed + ? report.meta.total.cost.network_unattributed_distributed.units + : 'USD'; const platformDistributedUnits = hasPlatformDistributed ? report.meta.total.cost.platform_distributed.units : 'USD'; + const storageUnattributedDistributedUnits = hasStorageUnattributedDistributed + ? report.meta.total.cost.storage_unattributed_distributed.units + : 'USD'; const workerUnallocatedUnits = hasWorkerUnallocated ? report.meta.total.cost.worker_unallocated_distributed.units : 'USD'; const totalCostUnits = hasCostTotal ? report.meta.total.cost.total.units : 'USD'; + const networkUnattributedDistributedValue = + hasPlatformDistributed && report.meta.total.cost.network_unattributed_distributed.value > 0 + ? report.meta.total.cost.network_unattributed_distributed.value + : 0; const platformDistributedValue = hasPlatformDistributed && report.meta.total.cost.platform_distributed.value > 0 ? report.meta.total.cost.platform_distributed.value : 0; + const storageUnattributedDistributedValue = + hasPlatformDistributed && report.meta.total.cost.storage_unattributed_distributed.value > 0 + ? report.meta.total.cost.storage_unattributed_distributed.value + : 0; const workerUnallocatedValue = hasWorkerUnallocated && report.meta.total.cost.worker_unallocated_distributed.value > 0 ? report.meta.total.cost.worker_unallocated_distributed.value : 0; const totalCostValue = hasCostTotal ? report.meta.total.cost.total.value : 0; + const networkUnattributedDistributed = formatCurrency( + networkUnattributedDistributedValue, + networkUnattributedDistributedUnits + ); const platformDistributed = formatCurrency(platformDistributedValue, platformDistributedUnits); + const storageUnattributedDistributed = formatCurrency( + storageUnattributedDistributedValue, + storageUnattributedDistributedUnits + ); const workerUnallocated = formatCurrency(workerUnallocatedValue, workerUnallocatedUnits); const totalCost = formatCurrency(totalCostValue, totalCostUnits); + const networkUnattributedDistributedLabel = intl.formatMessage(messages.networkUnattributedDistributed); const platformDistributedLabel = intl.formatMessage(messages.platformDistributed); + const storageUnattributedDistributedLabel = intl.formatMessage(messages.storageUnattributedDistributed); const workerUnallocatedLabel = intl.formatMessage(messages.workerUnallocated); const totalCostLabel = intl.formatMessage(messages.allOtherProjectCosts); @@ -92,9 +122,19 @@ class OverheadCostChartBase extends React.Component const Legend = ( + } rowGutter={20} /> @@ -110,7 +150,17 @@ class OverheadCostChartBase extends React.Component ariaTitle={intl.formatMessage(messages.costDistributionTitle)} constrainToVisibleArea data={[ + { + x: networkUnattributedDistributedLabel, + y: networkUnattributedDistributedValue, + units: networkUnattributedDistributedUnits, + }, { x: platformDistributedLabel, y: platformDistributedValue, units: platformDistributedUnits }, + { + x: storageUnattributedDistributedLabel, + y: storageUnattributedDistributedValue, + units: storageUnattributedDistributedUnits, + }, { x: workerUnallocatedLabel, y: workerUnallocatedValue, units: workerUnallocatedUnits }, { x: totalCostLabel, y: totalCostValue, units: totalCostUnits }, ]} @@ -123,9 +173,15 @@ class OverheadCostChartBase extends React.Component } legendComponent={Legend} legendData={[ + { + name: networkUnattributedDistributedLabel, + }, { name: platformDistributedLabel, }, + { + name: storageUnattributedDistributedLabel, + }, { name: workerUnallocatedLabel, }, @@ -139,7 +195,7 @@ class OverheadCostChartBase extends React.Component padding={{ bottom: 20, left: 0, - right: 325, // Adjusted to accommodate legend + right: 375, // Adjusted to accommodate legend top: 20, }} themeColor={ChartThemeColor.green} diff --git a/src/routes/details/ocpDetails/detailsTable.tsx b/src/routes/details/ocpDetails/detailsTable.tsx index 87f0ec0f0..552dcb5e9 100644 --- a/src/routes/details/ocpDetails/detailsTable.tsx +++ b/src/routes/details/ocpDetails/detailsTable.tsx @@ -223,8 +223,10 @@ class DetailsTableBase extends React.Component 0) || - (item.cost.workerUnallocatedDistributed && item.cost.workerUnallocatedDistributed.value > 0)); + (item.cost?.networkUnattributedDistributed?.value > 0 || + item.cost?.platformDistributed?.value > 0 || + item.cost?.storageUnattributedDistributed?.value > 0 || + item.cost?.workerUnallocatedDistributed?.value > 0); const desc = item.id && item.id !== item.label ?
{item.id}
: null; const isDisabled = label === `${noPrefix}${groupBy}` || label === `${noPrefix}${groupByTagKey}`; const isLinkDisabled = isDisabled || isUnallocatedProject || isUnattributedCosts; @@ -272,7 +274,27 @@ class DetailsTableBase extends React.Component ) : isOverheadCosts ? ( - + + {item.cost?.networkUnattributedDistributed?.value > 0 && ( +
  • {intl.formatMessage(messages.networkUnattributedDistributed)}
  • + )} + {item.cost?.platformDistributed?.value > 0 && ( +
  • {intl.formatMessage(messages.platformDistributed)}
  • + )} + {item.cost?.storageUnattributedDistributed?.value > 0 && ( +
  • {intl.formatMessage(messages.storageUnattributedDistributed)}
  • + )} + {item.cost?.workerUnallocated?.value > 0 && ( +
  • {intl.formatMessage(messages.workerUnallocated)}
  • + )} + + ), + })} + enableFlip + > diff --git a/src/routes/explorer/explorerTable.tsx b/src/routes/explorer/explorerTable.tsx index ab08d63a5..daad735bf 100644 --- a/src/routes/explorer/explorerTable.tsx +++ b/src/routes/explorer/explorerTable.tsx @@ -233,6 +233,7 @@ class ExplorerTableBase extends React.Component{item.id}
    : null; } + if (!tooltipContent) { + tooltipContent = ( +
      + {item.cost?.networkUnattributedDistributed?.value > 0 && ( +
    • {intl.formatMessage(messages.networkUnattributedDistributed)}
    • + )} + {item.cost?.platformDistributed?.value > 0 && ( +
    • {intl.formatMessage(messages.platformDistributed)}
    • + )} + {item.cost?.storageUnattributedDistributed?.value > 0 && ( +
    • {intl.formatMessage(messages.storageUnattributedDistributed)}
    • + )} + {item.cost?.workerUnallocated?.value > 0 && ( +
    • {intl.formatMessage(messages.workerUnallocated)}
    • + )} +
    + ); + } if (item.id && !selectItem) { selectItem = item; } if ( showCostDistribution && item.classification !== classificationUnallocated && - (item?.cost?.platformDistributed?.value > 0 || item?.cost?.workerUnallocatedDistributed?.value > 0) + (item.cost?.networkUnattributedDistributed?.value > 0 || + item.cost?.platformDistributed?.value > 0 || + item.cost?.storageUnattributedDistributed?.value > 0 || + item.cost?.workerUnallocatedDistributed?.value > 0) ) { isOverheadCosts = true; showLabels = true; @@ -298,7 +320,12 @@ class ExplorerTableBase extends React.Component ) : isOverheadCosts ? ( - + diff --git a/src/routes/utils/computedReport/getComputedReportItems.ts b/src/routes/utils/computedReport/getComputedReportItems.ts index 96a8b2244..6321ee83b 100644 --- a/src/routes/utils/computedReport/getComputedReportItems.ts +++ b/src/routes/utils/computedReport/getComputedReportItems.ts @@ -13,8 +13,10 @@ export interface ComputedReportValue { export interface ComputedReportItemValue { distributed?: ReportValue; markup?: ReportValue; + networkUnattributedDistributed?: ReportValue; platformDistributed?: ReportValue; raw?: ReportValue; + storageUnattributedDistributed?: ReportValue; total?: ReportValue; usage?: ReportValue; workerUnallocatedDistributed?: ReportValue; @@ -118,6 +120,19 @@ function getCostData(val, key, item?: any) { units: val[key].markup.units ? val[key].markup.units : defaultUnits, }, }), + ...(val[key] && + val[key].network_unattributed_distributed && { + networkUnattributedDistributed: { + value: + val[key].network_unattributed_distributed.value + + (item && item[key]?.network_unattributed_distributed + ? item[key].network_unattributed_distributed.value + : 0), + units: val[key].network_unattributed_distributed.units + ? val[key].network_unattributed_distributed.units + : defaultUnits, + }, + }), ...(val[key] && val[key].platform_distributed && { platformDistributed: { @@ -134,6 +149,19 @@ function getCostData(val, key, item?: any) { units: val[key].raw.units ? val[key].raw.units : defaultUnits, }, }), + ...(val[key] && + val[key].storage_unattributed_distributed && { + storageUnattributedDistributed: { + value: + val[key].storage_unattributed_distributed.value + + (item && item[key]?.storage_unattributed_distributed + ? item[key].storage_unattributed_distributed.value + : 0), + units: val[key].storage_unattributed_distributed.units + ? val[key].storage_unattributed_distributed.units + : defaultUnits, + }, + }), ...(val[key] && val[key].total && { total: { From 76a7928f6b9ab1afbfdbded4cfb2b1e4af4cef89 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Thu, 22 Aug 2024 12:24:27 -0400 Subject: [PATCH 39/56] Modified overhead label to read "Includes overhead" https://issues.redhat.com/browse/COST-5426 --- locales/data.json | 2 +- locales/translations.json | 2 +- src/locales/messages.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/locales/data.json b/locales/data.json index 8adf5d735..f56421dd8 100644 --- a/locales/data.json +++ b/locales/data.json @@ -11337,7 +11337,7 @@ "overhead": [ { "type": 0, - "value": "Overhead" + "value": "Includes overhead" } ], "overheadDesc": [ diff --git a/locales/translations.json b/locales/translations.json index 8ce3c92db..c88905491 100644 --- a/locales/translations.json +++ b/locales/translations.json @@ -468,7 +468,7 @@ "openShiftCloudInfrastructureDesc": "Infrastructure cost attributed to OpenShift Container Platform, based on a subset of cloud cost data.", "openShiftDesc": "Total cost for OpenShift Container Platform, comprising the infrastructure cost and cost calculated from metrics.", "optimizations": "Optimizations", - "overhead": "Overhead", + "overhead": "Includes overhead", "overheadDesc": "Includes distributed costs {value}", "overviewInfoArialLabel": "A description of perspectives", "overviewInfoButtonArialLabel": "A dialog with a description of perspectives", diff --git a/src/locales/messages.ts b/src/locales/messages.ts index 5bac6afdf..a4b9001eb 100644 --- a/src/locales/messages.ts +++ b/src/locales/messages.ts @@ -2931,8 +2931,8 @@ export default defineMessages({ id: 'optimizations', }, overhead: { - defaultMessage: 'Overhead', - description: 'Overhead', + defaultMessage: 'Includes overhead', + description: 'Includes overhead', id: 'overhead', }, overheadDesc: { From 5e793979fba937c14ff1b3f166f5ca7ed3ebdf8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:25:37 +0000 Subject: [PATCH 40/56] (chore): Bump the lint-dependencies group with 2 updates Bumps the lint-dependencies group with 2 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@eslint/js` from 9.9.0 to 9.9.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.9.1/packages/js) Updates `@typescript-eslint/parser` from 8.1.0 to 8.2.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.2.0/packages/parser) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint-dependencies - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 147 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 4 +- 2 files changed, 137 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 060e8ae1c..43750b54f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "devDependencies": { "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "^9.9.0", + "@eslint/js": "^9.9.1", "@formatjs/cli": "^6.2.12", "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", @@ -61,7 +61,7 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.1.0", + "@typescript-eslint/parser": "^8.2.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.0", @@ -813,9 +813,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4137,15 +4137,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz", - "integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.2.0.tgz", + "integrity": "sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.1.0", - "@typescript-eslint/types": "8.1.0", - "@typescript-eslint/typescript-estree": "8.1.0", - "@typescript-eslint/visitor-keys": "8.1.0", + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/typescript-estree": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", "debug": "^4.3.4" }, "engines": { @@ -4164,6 +4164,120 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz", + "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", + "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz", + "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", + "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", @@ -9253,6 +9367,15 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", diff --git a/package.json b/package.json index ce6f72da5..e9d27779f 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "devDependencies": { "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "^9.9.0", + "@eslint/js": "^9.9.1", "@formatjs/cli": "^6.2.12", "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", @@ -101,7 +101,7 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.1.0", + "@typescript-eslint/parser": "^8.2.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.0", From 05284ba4fe4b82b25bb4fe01456625b7b27c8abf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:26:20 +0000 Subject: [PATCH 41/56] (chore): Bump the test-dependencies group with 2 updates Bumps the test-dependencies group with 2 updates: [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) and [ts-jest](https://github.com/kulshekhar/ts-jest). Updates `@testing-library/jest-dom` from 6.4.8 to 6.5.0 - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v6.4.8...v6.5.0) Updates `ts-jest` from 29.2.4 to 29.2.5 - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.2.4...v29.2.5) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: test-dependencies - dependency-name: ts-jest dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 56 ++++++++++++++--------------------------------- package.json | 4 ++-- 2 files changed, 19 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index 060e8ae1c..a2b993811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", "@swc/core": "^1.7.14", "@swc/jest": "^0.2.36", - "@testing-library/jest-dom": "^6.4.8", + "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", @@ -87,7 +87,7 @@ "prettier": "^3.3.3", "rimraf": "^6.0.1", "swc_mut_cjs_exports": "^0.99.0", - "ts-jest": "^29.2.4", + "ts-jest": "^29.2.5", "ts-patch": "^3.2.1", "typescript": "^5.5.4", "webpack-bundle-analyzer": "^4.10.2" @@ -3329,13 +3329,12 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz", - "integrity": "sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", + "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", "dev": true, "dependencies": { "@adobe/css-tools": "^4.4.0", - "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", @@ -18709,20 +18708,20 @@ } }, "node_modules/ts-jest": { - "version": "29.2.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.4.tgz", - "integrity": "sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==", + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", "dev": true, "dependencies": { - "bs-logger": "0.x", + "bs-logger": "^0.2.6", "ejs": "^3.1.10", - "fast-json-stable-stringify": "2.x", + "fast-json-stable-stringify": "^2.1.0", "jest-util": "^29.0.0", "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" }, "bin": { "ts-jest": "cli.js" @@ -18756,26 +18755,11 @@ } } }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -18783,12 +18767,6 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", diff --git a/package.json b/package.json index ce6f72da5..eb75f007c 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", "@swc/core": "^1.7.14", "@swc/jest": "^0.2.36", - "@testing-library/jest-dom": "^6.4.8", + "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", @@ -127,7 +127,7 @@ "prettier": "^3.3.3", "rimraf": "^6.0.1", "swc_mut_cjs_exports": "^0.99.0", - "ts-jest": "^29.2.4", + "ts-jest": "^29.2.5", "ts-patch": "^3.2.1", "typescript": "^5.5.4", "webpack-bundle-analyzer": "^4.10.2" From b606f6906b0e23a365006d7d90b1d4ae6d453159 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:27:32 +0000 Subject: [PATCH 42/56] (chore): Bump axios from 1.7.4 to 1.7.5 in the ci-dependencies group Bumps the ci-dependencies group with 1 update: [axios](https://github.com/axios/axios). Updates `axios` from 1.7.4 to 1.7.5 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.4...v1.7.5) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 060e8ae1c..0a11ca90d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.4", + "axios": "^1.7.5", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", @@ -5085,10 +5085,9 @@ } }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "license": "MIT", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/package.json b/package.json index ce6f72da5..57af43764 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.4", + "axios": "^1.7.5", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", From 4677f360d33c1837f9674a3dad0a57919cc161cd Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Mon, 26 Aug 2024 09:27:01 -0400 Subject: [PATCH 43/56] Refactor type-ahead to test if search string matches alias https://issues.redhat.com/browse/COST-4855 --- src/routes/components/resourceTypeahead/resourceFetch.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/components/resourceTypeahead/resourceFetch.tsx b/src/routes/components/resourceTypeahead/resourceFetch.tsx index f914d2020..39a4c3814 100644 --- a/src/routes/components/resourceTypeahead/resourceFetch.tsx +++ b/src/routes/components/resourceTypeahead/resourceFetch.tsx @@ -63,7 +63,7 @@ const ResourceFetch: React.FC = ({ if (resource && resource.data && resource.data.length > 0 && resourceFetchStatus !== FetchStatus.inProgress) { options = resource.data.map(item => { // The resource API typically returns just a value, but account_alias, cluster_alias, and instance_name may be preferred keys. - const value = !isNaN(search as any) ? item.value : item[resourceKey] || item.value; + const value = item[resourceKey]?.includes(search) ? item[resourceKey] : item.value; return { key: value, name: value, From ed9f4345ee8b82e3874321c70065c39333d7b0a4 Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Wed, 28 Aug 2024 09:26:51 -0400 Subject: [PATCH 44/56] Red Hat Konflux update koku-frontend (#3985) * Red Hat Konflux update koku-frontend Signed-off-by: red-hat-konflux * Reformat YAML * Add Renovate config * Add tasks to build frontend containerfile * Run on main and prod-stable branches * Try newer task-build-image-index --------- Co-authored-by: red-hat-konflux Co-authored-by: Sam Doran --- .tekton/koku-frontend-pull-request.yaml | 564 ++++++++++++++++++++++++ .tekton/koku-frontend-push.yaml | 561 +++++++++++++++++++++++ renovate.json | 13 + 3 files changed, 1138 insertions(+) create mode 100644 .tekton/koku-frontend-pull-request.yaml create mode 100644 .tekton/koku-frontend-push.yaml create mode 100644 renovate.json diff --git a/.tekton/koku-frontend-pull-request.yaml b/.tekton/koku-frontend-pull-request.yaml new file mode 100644 index 000000000..84b80df0c --- /dev/null +++ b/.tekton/koku-frontend-pull-request.yaml @@ -0,0 +1,564 @@ +apiVersion: tekton.dev/v1 +kind: PipelineRun +metadata: + annotations: + build.appstudio.openshift.io/repo: https://github.com/project-koku/koku-ui?rev={{revision}} + build.appstudio.redhat.com/commit_sha: '{{revision}}' + build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}' + build.appstudio.redhat.com/target_branch: '{{target_branch}}' + pipelinesascode.tekton.dev/max-keep-runs: "3" + pipelinesascode.tekton.dev/on-cel-expression: >- + event == "pull_request" + && ( + target_branch == "main" + || target_branch == "prod-stable" + ) + creationTimestamp: null + labels: + appstudio.openshift.io/application: koku-frontend + appstudio.openshift.io/component: koku-frontend + pipelines.appstudio.openshift.io/type: build + name: koku-frontend-on-pull-request + namespace: cost-mgmt-dev-tenant +spec: + params: + - name: git-url + value: '{{source_url}}' + - name: revision + value: '{{revision}}' + - name: output-image + value: quay.io/redhat-user-workloads/cost-mgmt-dev-tenant/koku-frontend:on-pr-{{revision}} + - name: image-expires-after + value: 5d + - name: dockerfile + value: Dockerfile + - name: path-context + value: . + pipelineSpec: + finally: + - name: show-sbom + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + taskRef: + params: + - name: name + value: show-sbom + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:9bfc6b99ef038800fe131d7b45ff3cd4da3a415dd536f7c657b3527b01c4a13b + - name: kind + value: task + resolver: bundles + - name: show-summary + params: + - name: pipelinerun-name + value: $(context.pipelineRun.name) + - name: git-url + value: $(tasks.clone-repository.results.url)?rev=$(tasks.clone-repository.results.commit) + - name: image-url + value: $(params.output-image) + - name: build-task-status + value: $(tasks.build-image-index.status) + taskRef: + params: + - name: name + value: summary + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:d97c04ab42f277b1103eb6f3a053b247849f4f5b3237ea302a8ecada3b24e15b + - name: kind + value: task + resolver: bundles + workspaces: + - name: workspace + workspace: workspace + params: + - description: Source Repository URL + name: git-url + type: string + - default: "" + description: Revision of the Source Repository + name: revision + type: string + - description: Fully Qualified Output Image + name: output-image + type: string + - default: . + description: Path to the source code of an application's component from where to build image. + name: path-context + type: string + - default: Dockerfile + description: Path to the Dockerfile inside the context specified by parameter path-context + name: dockerfile + type: string + - default: "false" + description: Force rebuild image + name: rebuild + type: string + - default: "false" + description: Skip checks against built image + name: skip-checks + type: string + - default: "false" + description: Execute the build with network isolation + name: hermetic + type: string + - default: "" + description: Build dependencies to be prefetched by Cachi2 + name: prefetch-input + type: string + - default: "" + description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. + name: image-expires-after + - default: "false" + description: Build a source image. + name: build-source-image + type: string + - default: "false" + description: Add built image into an OCI image index + name: build-image-index + type: string + - default: [] + description: Array of --build-arg values ("arg=value" strings) for buildah + name: build-args + type: array + - default: "" + description: Path to a file with build arguments for buildah, see https://www.mankier.com/1/buildah-build#--build-arg-file + name: build-args-file + type: string + results: + - description: "" + name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - description: "" + name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - description: "" + name: CHAINS-GIT_URL + value: $(tasks.clone-repository.results.url) + - description: "" + name: CHAINS-GIT_COMMIT + value: $(tasks.clone-repository.results.commit) + tasks: + - name: init + params: + - name: image-url + value: $(params.output-image) + - name: rebuild + value: $(params.rebuild) + - name: skip-checks + value: $(params.skip-checks) + taskRef: + params: + - name: name + value: init + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:092c113b614f6551113f17605ae9cb7e822aa704d07f0e37ed209da23ce392cc + - name: kind + value: task + resolver: bundles + - name: clone-repository + params: + - name: url + value: $(params.git-url) + - name: revision + value: $(params.revision) + runAfter: + - init + taskRef: + params: + - name: name + value: git-clone + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:0bb1be8363557e8e07ec34a3c5daaaaa23c9d533f0bb12f00dc604d00de50814 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + workspaces: + - name: output + workspace: workspace + - name: basic-auth + workspace: git-auth + - name: prefetch-dependencies + params: + - name: input + value: $(params.prefetch-input) + runAfter: + - clone-repository + taskRef: + params: + - name: name + value: prefetch-dependencies + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.1@sha256:058a59f72997c9cf1be20978eb6a145d8d4d436c6098f2460bd96766bb363b20 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.prefetch-input) + operator: notin + values: + - "" + workspaces: + - name: source + workspace: workspace + - name: git-basic-auth + workspace: git-auth + - name: netrc + workspace: netrc + - name: parse-build-deploy-script + params: + - name: path-context + value: $(params.path-context) + taskRef: + resolver: git + params: + - name: url + value: https://github.com/RedHatInsights/konflux-consoledot-frontend-build + - name: revision + value: c0ff4861d5aa77584f51576b65f2eb9e12e1ded8 + - name: pathInRepo + value: tasks/parse-build-deploy-script/parse-build-deploy-script.yaml + workspaces: + - name: source + workspace: workspace + runAfter: + - clone-repository + - name: create-frontend-dockerfile + taskRef: + resolver: git + params: + - name: url + value: https://github.com/RedHatInsights/konflux-consoledot-frontend-build + - name: revision + value: a6838b71b88dc1e84f11764c9734e4880096585d # replace with the latest commit from https://github.com/RedHatInsights/konflux-consoledot-frontend-build/commits + - name: pathInRepo + value: tasks/create-frontend-dockerfile/create-frontend-dockerfile.yaml + workspaces: + - name: source + workspace: workspace + params: + - name: path-context + value: $(params.path-context) + - name: component + value: $(tasks.parse-build-deploy-script.results.component) + - name: image + value: $(tasks.parse-build-deploy-script.results.image) + - name: node-build-version + value: $(tasks.parse-build-deploy-script.results.node-build-version) + - name: quay-expire-time + value: $(tasks.parse-build-deploy-script.results.quay-expire-time) + - name: npm-build-script + value: $(tasks.parse-build-deploy-script.results.npm-build-script) + - name: yarn-build-script + value: $(tasks.parse-build-deploy-script.results.yarn-build-script) + - name: route-path + value: $(tasks.parse-build-deploy-script.results.route-path) + - name: beta-route-path + value: $(tasks.parse-build-deploy-script.results.beta-route-path) + - name: preview-route-path + value: $(tasks.parse-build-deploy-script.results.preview-route-path) + - name: ci-root + value: $(tasks.parse-build-deploy-script.results.ci-root) + - name: server-name + value: $(tasks.parse-build-deploy-script.results.server-name) + - name: dist-folder + value: $(tasks.parse-build-deploy-script.results.dist-folder) + runAfter: + - parse-build-deploy-script + - name: build-container + params: + - name: IMAGE + value: $(params.output-image) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + - name: HERMETIC + value: $(params.hermetic) + - name: PREFETCH_INPUT + value: $(params.prefetch-input) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: BUILD_ARGS + value: + - $(params.build-args[*]) + - name: BUILD_ARGS_FILE + value: $(params.build-args-file) + runAfter: + - prefetch-dependencies + - create-frontend-dockerfile + taskRef: + params: + - name: name + value: buildah + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:83db74702b5f0d714b3aae066faa5037d3f096f9fa108d18c0e78317fa35f1fd + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + workspaces: + - name: source + workspace: workspace + - name: build-image-index + params: + - name: IMAGE + value: $(params.output-image) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: ALWAYS_BUILD_INDEX + value: $(params.build-image-index) + - name: IMAGES + value: + - $(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST) + runAfter: + - build-container + taskRef: + params: + - name: name + value: build-image-index + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:dd87c1a2c598ebf2286d4cf7f1ff2c07d0ee3665c16041576012dd3f1a36b080 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - name: build-source-image + params: + - name: BINARY_IMAGE + value: $(params.output-image) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: source-build + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.1@sha256:21cb5ebaff7a9216903cf78933dc4ec4dd6283a52636b16590a5f52ceb278269 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - input: $(params.build-source-image) + operator: in + values: + - "true" + workspaces: + - name: workspace + workspace: workspace + - name: deprecated-base-image-check + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: deprecated-image-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.4@sha256:d98fa9daf5ee12dfbf00880b83d092d01ce9994d79836548d2f82748bb0c64a2 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: clair-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clair-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.1@sha256:baea4be429cf8d91f7c758378cea42819fe324f25a7f957bf9805409cab6d123 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: ecosystem-cert-preflight-checks + params: + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: ecosystem-cert-preflight-checks + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.1@sha256:5131cce0f93d0b728c7bcc0d6cee4c61d4c9f67c6d619c627e41e3c9775b497d + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-snyk-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sast-snyk-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.2@sha256:82c42d27c9c59db6cf6c235e89f7b37f5cdfc75d0d361ca0ee91ae703ba72301 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + workspaces: + - name: workspace + workspace: workspace + - name: clamav-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clamav-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.1@sha256:7bb17b937c9342f305468e8a6d0a22493e3ecde58977bd2ffc8b50e2fa234d58 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sbom-json-check + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sbom-json-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sbom-json-check:0.1@sha256:2c5de51ec858fc8d47e41c65b20c83fdac249425d67ed6d1058f9f3e0b574500 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: apply-tags + params: + - name: IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: apply-tags + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.1@sha256:e6beb161ed59d7be26317da03e172137b31b26648d3e139558e9a457bc56caff + - name: kind + value: task + resolver: bundles + - name: push-dockerfile + params: + - name: IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: push-dockerfile + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:92d63edd09636f97961ca18fac14b67935179d2c14b4a4d5f8087c614e8c2bd9 + - name: kind + value: task + resolver: bundles + workspaces: + - name: workspace + workspace: workspace + workspaces: + - name: workspace + - name: git-auth + optional: true + - name: netrc + optional: true + taskRunTemplate: {} + workspaces: + - name: workspace + volumeClaimTemplate: + metadata: + creationTimestamp: null + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + status: {} + - name: git-auth + secret: + secretName: '{{ git_auth_secret }}' +status: {} diff --git a/.tekton/koku-frontend-push.yaml b/.tekton/koku-frontend-push.yaml new file mode 100644 index 000000000..6637fb11f --- /dev/null +++ b/.tekton/koku-frontend-push.yaml @@ -0,0 +1,561 @@ +apiVersion: tekton.dev/v1 +kind: PipelineRun +metadata: + annotations: + build.appstudio.openshift.io/repo: https://github.com/project-koku/koku-ui?rev={{revision}} + build.appstudio.redhat.com/commit_sha: '{{revision}}' + build.appstudio.redhat.com/target_branch: '{{target_branch}}' + pipelinesascode.tekton.dev/max-keep-runs: "3" + pipelinesascode.tekton.dev/on-cel-expression: >- + event == "pull_request" + && ( + target_branch == "main" + || target_branch == "prod-stable" + ) + creationTimestamp: null + labels: + appstudio.openshift.io/application: koku-frontend + appstudio.openshift.io/component: koku-frontend + pipelines.appstudio.openshift.io/type: build + name: koku-frontend-on-push + namespace: cost-mgmt-dev-tenant +spec: + params: + - name: git-url + value: '{{source_url}}' + - name: revision + value: '{{revision}}' + - name: output-image + value: quay.io/redhat-user-workloads/cost-mgmt-dev-tenant/koku-frontend:{{revision}} + - name: dockerfile + value: Dockerfile + - name: path-context + value: . + pipelineSpec: + finally: + - name: show-sbom + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + taskRef: + params: + - name: name + value: show-sbom + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:9bfc6b99ef038800fe131d7b45ff3cd4da3a415dd536f7c657b3527b01c4a13b + - name: kind + value: task + resolver: bundles + - name: show-summary + params: + - name: pipelinerun-name + value: $(context.pipelineRun.name) + - name: git-url + value: $(tasks.clone-repository.results.url)?rev=$(tasks.clone-repository.results.commit) + - name: image-url + value: $(params.output-image) + - name: build-task-status + value: $(tasks.build-image-index.status) + taskRef: + params: + - name: name + value: summary + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:d97c04ab42f277b1103eb6f3a053b247849f4f5b3237ea302a8ecada3b24e15b + - name: kind + value: task + resolver: bundles + workspaces: + - name: workspace + workspace: workspace + params: + - description: Source Repository URL + name: git-url + type: string + - default: "" + description: Revision of the Source Repository + name: revision + type: string + - description: Fully Qualified Output Image + name: output-image + type: string + - default: . + description: Path to the source code of an application's component from where to build image. + name: path-context + type: string + - default: Dockerfile + description: Path to the Dockerfile inside the context specified by parameter path-context + name: dockerfile + type: string + - default: "false" + description: Force rebuild image + name: rebuild + type: string + - default: "false" + description: Skip checks against built image + name: skip-checks + type: string + - default: "false" + description: Execute the build with network isolation + name: hermetic + type: string + - default: "" + description: Build dependencies to be prefetched by Cachi2 + name: prefetch-input + type: string + - default: "" + description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. + name: image-expires-after + - default: "false" + description: Build a source image. + name: build-source-image + type: string + - default: "false" + description: Add built image into an OCI image index + name: build-image-index + type: string + - default: [] + description: Array of --build-arg values ("arg=value" strings) for buildah + name: build-args + type: array + - default: "" + description: Path to a file with build arguments for buildah, see https://www.mankier.com/1/buildah-build#--build-arg-file + name: build-args-file + type: string + results: + - description: "" + name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - description: "" + name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - description: "" + name: CHAINS-GIT_URL + value: $(tasks.clone-repository.results.url) + - description: "" + name: CHAINS-GIT_COMMIT + value: $(tasks.clone-repository.results.commit) + tasks: + - name: init + params: + - name: image-url + value: $(params.output-image) + - name: rebuild + value: $(params.rebuild) + - name: skip-checks + value: $(params.skip-checks) + taskRef: + params: + - name: name + value: init + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:092c113b614f6551113f17605ae9cb7e822aa704d07f0e37ed209da23ce392cc + - name: kind + value: task + resolver: bundles + - name: clone-repository + params: + - name: url + value: $(params.git-url) + - name: revision + value: $(params.revision) + runAfter: + - init + taskRef: + params: + - name: name + value: git-clone + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:0bb1be8363557e8e07ec34a3c5daaaaa23c9d533f0bb12f00dc604d00de50814 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + workspaces: + - name: output + workspace: workspace + - name: basic-auth + workspace: git-auth + - name: prefetch-dependencies + params: + - name: input + value: $(params.prefetch-input) + runAfter: + - clone-repository + taskRef: + params: + - name: name + value: prefetch-dependencies + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.1@sha256:058a59f72997c9cf1be20978eb6a145d8d4d436c6098f2460bd96766bb363b20 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.prefetch-input) + operator: notin + values: + - "" + workspaces: + - name: source + workspace: workspace + - name: git-basic-auth + workspace: git-auth + - name: netrc + workspace: netrc + - name: parse-build-deploy-script + params: + - name: path-context + value: $(params.path-context) + taskRef: + resolver: git + params: + - name: url + value: https://github.com/RedHatInsights/konflux-consoledot-frontend-build + - name: revision + value: c0ff4861d5aa77584f51576b65f2eb9e12e1ded8 + - name: pathInRepo + value: tasks/parse-build-deploy-script/parse-build-deploy-script.yaml + workspaces: + - name: source + workspace: workspace + runAfter: + - clone-repository + - name: create-frontend-dockerfile + taskRef: + resolver: git + params: + - name: url + value: https://github.com/RedHatInsights/konflux-consoledot-frontend-build + - name: revision + value: a6838b71b88dc1e84f11764c9734e4880096585d # replace with the latest commit from https://github.com/RedHatInsights/konflux-consoledot-frontend-build/commits + - name: pathInRepo + value: tasks/create-frontend-dockerfile/create-frontend-dockerfile.yaml + workspaces: + - name: source + workspace: workspace + params: + - name: path-context + value: $(params.path-context) + - name: component + value: $(tasks.parse-build-deploy-script.results.component) + - name: image + value: $(tasks.parse-build-deploy-script.results.image) + - name: node-build-version + value: $(tasks.parse-build-deploy-script.results.node-build-version) + - name: quay-expire-time + value: $(tasks.parse-build-deploy-script.results.quay-expire-time) + - name: npm-build-script + value: $(tasks.parse-build-deploy-script.results.npm-build-script) + - name: yarn-build-script + value: $(tasks.parse-build-deploy-script.results.yarn-build-script) + - name: route-path + value: $(tasks.parse-build-deploy-script.results.route-path) + - name: beta-route-path + value: $(tasks.parse-build-deploy-script.results.beta-route-path) + - name: preview-route-path + value: $(tasks.parse-build-deploy-script.results.preview-route-path) + - name: ci-root + value: $(tasks.parse-build-deploy-script.results.ci-root) + - name: server-name + value: $(tasks.parse-build-deploy-script.results.server-name) + - name: dist-folder + value: $(tasks.parse-build-deploy-script.results.dist-folder) + runAfter: + - parse-build-deploy-script + - name: build-container + params: + - name: IMAGE + value: $(params.output-image) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + - name: HERMETIC + value: $(params.hermetic) + - name: PREFETCH_INPUT + value: $(params.prefetch-input) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: BUILD_ARGS + value: + - $(params.build-args[*]) + - name: BUILD_ARGS_FILE + value: $(params.build-args-file) + runAfter: + - prefetch-dependencies + - create-frontend-dockerfile + taskRef: + params: + - name: name + value: buildah + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:83db74702b5f0d714b3aae066faa5037d3f096f9fa108d18c0e78317fa35f1fd + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + workspaces: + - name: source + workspace: workspace + - name: build-image-index + params: + - name: IMAGE + value: $(params.output-image) + - name: COMMIT_SHA + value: $(tasks.clone-repository.results.commit) + - name: IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: ALWAYS_BUILD_INDEX + value: $(params.build-image-index) + - name: IMAGES + value: + - $(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST) + runAfter: + - build-container + taskRef: + params: + - name: name + value: build-image-index + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:dd87c1a2c598ebf2286d4cf7f1ff2c07d0ee3665c16041576012dd3f1a36b080 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - name: build-source-image + params: + - name: BINARY_IMAGE + value: $(params.output-image) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: source-build + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.1@sha256:21cb5ebaff7a9216903cf78933dc4ec4dd6283a52636b16590a5f52ceb278269 + - name: kind + value: task + resolver: bundles + when: + - input: $(tasks.init.results.build) + operator: in + values: + - "true" + - input: $(params.build-source-image) + operator: in + values: + - "true" + workspaces: + - name: workspace + workspace: workspace + - name: deprecated-base-image-check + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: deprecated-image-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.4@sha256:d98fa9daf5ee12dfbf00880b83d092d01ce9994d79836548d2f82748bb0c64a2 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: clair-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clair-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.1@sha256:baea4be429cf8d91f7c758378cea42819fe324f25a7f957bf9805409cab6d123 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: ecosystem-cert-preflight-checks + params: + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: ecosystem-cert-preflight-checks + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.1@sha256:5131cce0f93d0b728c7bcc0d6cee4c61d4c9f67c6d619c627e41e3c9775b497d + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sast-snyk-check + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sast-snyk-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.2@sha256:82c42d27c9c59db6cf6c235e89f7b37f5cdfc75d0d361ca0ee91ae703ba72301 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + workspaces: + - name: workspace + workspace: workspace + - name: clamav-scan + params: + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: clamav-scan + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.1@sha256:7bb17b937c9342f305468e8a6d0a22493e3ecde58977bd2ffc8b50e2fa234d58 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: sbom-json-check + params: + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: sbom-json-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sbom-json-check:0.1@sha256:2c5de51ec858fc8d47e41c65b20c83fdac249425d67ed6d1058f9f3e0b574500 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: + - "false" + - name: apply-tags + params: + - name: IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: apply-tags + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.1@sha256:e6beb161ed59d7be26317da03e172137b31b26648d3e139558e9a457bc56caff + - name: kind + value: task + resolver: bundles + - name: push-dockerfile + params: + - name: IMAGE + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: DOCKERFILE + value: $(params.dockerfile) + - name: CONTEXT + value: $(params.path-context) + runAfter: + - build-image-index + taskRef: + params: + - name: name + value: push-dockerfile + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:92d63edd09636f97961ca18fac14b67935179d2c14b4a4d5f8087c614e8c2bd9 + - name: kind + value: task + resolver: bundles + workspaces: + - name: workspace + workspace: workspace + workspaces: + - name: workspace + - name: git-auth + optional: true + - name: netrc + optional: true + taskRunTemplate: {} + workspaces: + - name: workspace + volumeClaimTemplate: + metadata: + creationTimestamp: null + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + status: {} + - name: git-auth + secret: + secretName: '{{ git_auth_secret }}' +status: {} diff --git a/renovate.json b/renovate.json new file mode 100644 index 000000000..3e7b57768 --- /dev/null +++ b/renovate.json @@ -0,0 +1,13 @@ +{ + "extends": [ + "github>konflux-ci/mintmaker//config/renovate/renovate.json" + ], + "schedule": [ + "on Tuesday after 3am and before 10am" + ], + "timezone": "America/New_York", + "ignorePaths": [ + "**/.archive/**", + "**/node_modules/**" + ] +} From 1af3af2eb774610e8d73f2f95a2c3c1d9e56c7ae Mon Sep 17 00:00:00 2001 From: Sam Doran Date: Wed, 28 Aug 2024 09:38:52 -0400 Subject: [PATCH 45/56] Correct pipeline expression for push pipeline --- .tekton/koku-frontend-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tekton/koku-frontend-push.yaml b/.tekton/koku-frontend-push.yaml index 6637fb11f..300ea7632 100644 --- a/.tekton/koku-frontend-push.yaml +++ b/.tekton/koku-frontend-push.yaml @@ -7,7 +7,7 @@ metadata: build.appstudio.redhat.com/target_branch: '{{target_branch}}' pipelinesascode.tekton.dev/max-keep-runs: "3" pipelinesascode.tekton.dev/on-cel-expression: >- - event == "pull_request" + event == "push" && ( target_branch == "main" || target_branch == "prod-stable" From 112494f3113b081a94812201e5259d3765d47dda Mon Sep 17 00:00:00 2001 From: Sam Doran Date: Wed, 28 Aug 2024 14:21:12 -0400 Subject: [PATCH 46/56] Remove deprecated sbom-json-check --- .tekton/koku-frontend-pull-request.yaml | 22 ---------------------- .tekton/koku-frontend-push.yaml | 22 ---------------------- 2 files changed, 44 deletions(-) diff --git a/.tekton/koku-frontend-pull-request.yaml b/.tekton/koku-frontend-pull-request.yaml index 84b80df0c..5ce7f94d2 100644 --- a/.tekton/koku-frontend-pull-request.yaml +++ b/.tekton/koku-frontend-pull-request.yaml @@ -478,28 +478,6 @@ spec: operator: in values: - "false" - - name: sbom-json-check - params: - - name: IMAGE_URL - value: $(tasks.build-image-index.results.IMAGE_URL) - - name: IMAGE_DIGEST - value: $(tasks.build-image-index.results.IMAGE_DIGEST) - runAfter: - - build-image-index - taskRef: - params: - - name: name - value: sbom-json-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sbom-json-check:0.1@sha256:2c5de51ec858fc8d47e41c65b20c83fdac249425d67ed6d1058f9f3e0b574500 - - name: kind - value: task - resolver: bundles - when: - - input: $(params.skip-checks) - operator: in - values: - - "false" - name: apply-tags params: - name: IMAGE diff --git a/.tekton/koku-frontend-push.yaml b/.tekton/koku-frontend-push.yaml index 300ea7632..9f6d52cee 100644 --- a/.tekton/koku-frontend-push.yaml +++ b/.tekton/koku-frontend-push.yaml @@ -475,28 +475,6 @@ spec: operator: in values: - "false" - - name: sbom-json-check - params: - - name: IMAGE_URL - value: $(tasks.build-image-index.results.IMAGE_URL) - - name: IMAGE_DIGEST - value: $(tasks.build-image-index.results.IMAGE_DIGEST) - runAfter: - - build-image-index - taskRef: - params: - - name: name - value: sbom-json-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sbom-json-check:0.1@sha256:2c5de51ec858fc8d47e41c65b20c83fdac249425d67ed6d1058f9f3e0b574500 - - name: kind - value: task - resolver: bundles - when: - - input: $(params.skip-checks) - operator: in - values: - - "false" - name: apply-tags params: - name: IMAGE From 391e2b87f85188f1560e3e71103fe209a8b791ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 18:24:54 +0000 Subject: [PATCH 47/56] Bump webpack from 5.90.3 to 5.94.0 Bumps [webpack](https://github.com/webpack/webpack) from 5.90.3 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.90.3...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6064741c5..23d34ab21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3625,16 +3625,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -4702,10 +4692,10 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -7598,9 +7588,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -20268,26 +20258,25 @@ } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -20295,7 +20284,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { From 20bfbbf7eeaa91d1810284801027dd7d1980e652 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 30 Aug 2024 14:59:49 -0400 Subject: [PATCH 48/56] Dependency updates --- package-lock.json | 1278 +++++++++++++++++++++------------------------ package.json | 37 +- 2 files changed, 609 insertions(+), 706 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6064741c5..60b54f3b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,13 @@ "hasInstallScript": true, "license": "GNU AGPLv3", "dependencies": { - "@patternfly/patternfly": "5.3.1", - "@patternfly/react-charts": "7.3.0", + "@patternfly/patternfly": "5.4.0", + "@patternfly/react-charts": "7.4.0", "@patternfly/react-component-groups": "^5.2.0", - "@patternfly/react-core": "5.3.4", - "@patternfly/react-icons": "5.3.2", - "@patternfly/react-table": "5.3.4", - "@patternfly/react-tokens": "5.3.1", + "@patternfly/react-core": "5.4.0", + "@patternfly/react-icons": "5.4.0", + "@patternfly/react-table": "5.4.0", + "@patternfly/react-tokens": "5.4.0", "@redhat-cloud-services/frontend-components": "^4.2.14", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", @@ -37,7 +37,10 @@ "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", - "victory-core": "^37.0.2" + "victory-core": "37.0.2", + "victory-create-container": "37.0.2", + "victory-cursor-container": "37.0.2", + "victory-voronoi-container": "37.0.2" }, "devDependencies": { "@eslint/compat": "^1.1.1", @@ -47,29 +50,29 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.2.6", + "@redhat-cloud-services/frontend-components-config": "^6.2.8", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.14", + "@swc/core": "^1.7.22", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.5.0", - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", "@types/qs": "^6.9.15", - "@types/react": "^18.3.3", + "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.2.0", + "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/parser": "^8.3.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", - "eslint": "^9.9.0", + "eslint": "^9.9.1", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-markdown": "^5.1.0", - "eslint-plugin-patternfly-react": "^5.3.0", + "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -169,10 +172,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.23.10", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", - "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz", + "integrity": "sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -183,7 +187,7 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { @@ -717,9 +721,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", - "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2148,55 +2152,50 @@ } }, "node_modules/@patternfly/patternfly": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.3.1.tgz", - "integrity": "sha512-KYIr9pKRTzHZNGuDuaa5j5CaZyLltvotPFGG1BiJalBDBGSOyk0BZCgHLowm4txKZXrLhorEuuv9XLrMQL8eoA==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.4.0.tgz", + "integrity": "sha512-9B33M4N0/KDyss6NpCwAhz18za7R+sXYiFrUObhGoJ1Cmg06SeScVrEAjT4yJwAClWUlKh604Af9wE4D7IF8Lg==", + "license": "MIT" }, "node_modules/@patternfly/react-charts": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.3.0.tgz", - "integrity": "sha512-J6d/bFolI3zUOvJoK4lEveNeXZeJNfBq+iXgQ/mImESyW0H7MSebMcVB4d+NC6JX0QykuaOEn/7YMJMU9K73tw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.0.tgz", + "integrity": "sha512-2nvjoGw+ndAwiSFds041wMb4c1BnflyWLAutyC1kYTawhlKrSDGsd4heKWmquzg7GTLBzr1w6YbxKv2i2l7Z7g==", + "license": "MIT", "dependencies": { - "@patternfly/react-styles": "^5.3.0", - "@patternfly/react-tokens": "^5.3.0", - "hoist-non-react-statics": "^3.3.0", + "@patternfly/react-styles": "^5.4.0", + "@patternfly/react-tokens": "^5.4.0", + "hoist-non-react-statics": "^3.3.2", "lodash": "^4.17.21", - "tslib": "^2.5.0", - "victory-area": "^36.9.1", - "victory-axis": "^36.9.1", - "victory-bar": "^36.9.1", - "victory-box-plot": "^36.9.1", - "victory-chart": "^36.9.1", - "victory-core": "^36.9.1", - "victory-create-container": "^36.9.1", - "victory-cursor-container": "^36.9.1", - "victory-group": "^36.9.1", - "victory-legend": "^36.9.1", - "victory-line": "^36.9.1", - "victory-pie": "^36.9.1", - "victory-scatter": "^36.9.1", - "victory-stack": "^36.9.1", - "victory-tooltip": "^36.9.1", - "victory-voronoi-container": "^36.9.1", - "victory-zoom-container": "^36.9.1" + "tslib": "^2.6.3", + "victory-area": "^37.0.2", + "victory-axis": "^37.0.2", + "victory-bar": "^37.0.2", + "victory-box-plot": "^37.0.2", + "victory-chart": "^37.0.2", + "victory-core": "^37.0.2", + "victory-create-container": "^37.0.2", + "victory-cursor-container": "^37.0.2", + "victory-group": "^37.0.2", + "victory-legend": "^37.0.2", + "victory-line": "^37.0.2", + "victory-pie": "^37.0.2", + "victory-scatter": "^37.0.2", + "victory-stack": "^37.0.2", + "victory-tooltip": "^37.0.2", + "victory-voronoi-container": "^37.0.2", + "victory-zoom-container": "^37.0.2" }, "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, - "node_modules/@patternfly/react-charts/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", - "dependencies": { - "lodash": "^4.17.21", - "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" - }, - "peerDependencies": { - "react": ">=16.6.0" - } + "node_modules/@patternfly/react-charts/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" }, "node_modules/@patternfly/react-component-groups": { "version": "5.2.0", @@ -2215,57 +2214,74 @@ } }, "node_modules/@patternfly/react-core": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.4.tgz", - "integrity": "sha512-zr2yeilIoFp8MFOo0vNgI8XuM+P2466zHvy4smyRNRH2/but2WObqx7Wu4ftd/eBMYdNqmTeuXe6JeqqRqnPMQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.0.tgz", + "integrity": "sha512-Tz2Y9V4G2pnwrylc/4/FyxIRFvxiA8BEBIG6UBwXxrstnJmJaHgAIy6QJdJmERzVx3GVDz6/rM0PnMqa5R6auQ==", + "license": "MIT", "dependencies": { - "@patternfly/react-icons": "^5.3.2", - "@patternfly/react-styles": "^5.3.1", - "@patternfly/react-tokens": "^5.3.1", - "focus-trap": "7.5.2", + "@patternfly/react-icons": "^5.4.0", + "@patternfly/react-styles": "^5.4.0", + "@patternfly/react-tokens": "^5.4.0", + "focus-trap": "7.5.4", "react-dropzone": "^14.2.3", - "tslib": "^2.5.0" + "tslib": "^2.6.3" }, "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, + "node_modules/@patternfly/react-core/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, "node_modules/@patternfly/react-icons": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.3.2.tgz", - "integrity": "sha512-GEygYbl0H4zD8nZuTQy2dayKIrV2bMMeWKSOEZ16Y3EYNgYVUOUnN+J0naAEuEGH39Xb1DE9n+XUbE1PC4CxPA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.0.tgz", + "integrity": "sha512-2M3qN/naultvRHeG2laJMmoIroFCGAyfwTVrnCjSkG6/KnRoXV0+dqd+Xrh7xzpzvIJB1klvifC0oX42cEkDrA==", + "license": "MIT", "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, "node_modules/@patternfly/react-styles": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.3.1.tgz", - "integrity": "sha512-H6uBoFH3bJjD6PP75qZ4k+2TtF59vxf9sIVerPpwrGJcRgBZbvbMZCniSC3+S2LQ8DgXLnDvieq78jJzHz0hiA==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.4.0.tgz", + "integrity": "sha512-4ZE0s6LkX/0KsN0FOeogrDoj18m+BPA73YKnabZGB4SDRzrBNeBh2a6bSt546ZseEjkoJ+S81kOG0G8YckPQYg==", + "license": "MIT" }, "node_modules/@patternfly/react-table": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.4.tgz", - "integrity": "sha512-jGaiuo02scaC1HdGNHuYVRjtQCOB+vtvfbgS7nl1Y8ZcJ08wyUGhGSrEpNHfGAQ1XDSSoELAxj0cjOQwAAQw1A==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.0.tgz", + "integrity": "sha512-HkXxVEPeI6nRVSUSHb5BungF41IfjB8W2VqaA3SX+6fGxQAW0e/Hb58ctUdPR2VJ/S2YZFcIcqCCWQtQEf+xKA==", + "license": "MIT", "dependencies": { - "@patternfly/react-core": "^5.3.4", - "@patternfly/react-icons": "^5.3.2", - "@patternfly/react-styles": "^5.3.1", - "@patternfly/react-tokens": "^5.3.1", - "lodash": "^4.17.19", - "tslib": "^2.5.0" + "@patternfly/react-core": "^5.4.0", + "@patternfly/react-icons": "^5.4.0", + "@patternfly/react-styles": "^5.4.0", + "@patternfly/react-tokens": "^5.4.0", + "lodash": "^4.17.21", + "tslib": "^2.6.3" }, "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, + "node_modules/@patternfly/react-table/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, "node_modules/@patternfly/react-tokens": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.3.1.tgz", - "integrity": "sha512-VYK0uVP2/2RJ7ZshJCCLeq0Boih5I1bv+9Z/Bg6h12dCkLs85XsxAX9Ve+BGIo5DF54/mzcRHE1RKYap4ISXuw==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.0.tgz", + "integrity": "sha512-KONkwCVOMyklhuuaYeYgcAsGtCBQXnsBGZeolhOdSzr2Mj0RVSW0oMrQPgZuPVzhhC/kbqgClHJJl6xuG9xheA==", + "license": "MIT" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", @@ -2426,9 +2442,9 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-config": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.2.6.tgz", - "integrity": "sha512-MbsGc1MHA4CPMryHvs2bGAeLoiKUuiW6Bsr076ANkGAlueCZguAZMotDlPC3vML5cyJ2wNrQ7fPnbCW9ElXqvQ==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-config/-/frontend-components-config-6.2.8.tgz", + "integrity": "sha512-1B8DFu8kSfcxuc7AULKzLulnaN3HfQwQcArDBLGz/uN8hRmBxe02ZER23HptNieXlzKQ3zt1d6vTMey0AbfSEw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2991,9 +3007,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.14.tgz", - "integrity": "sha512-9aeXeifnyuvc2pcuuhPQgVUwdpGEzZ+9nJu0W8/hNl/aESFsJGR5i9uQJRGu0atoNr01gK092fvmqMmQAPcKow==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.22.tgz", + "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -3009,16 +3025,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.14", - "@swc/core-darwin-x64": "1.7.14", - "@swc/core-linux-arm-gnueabihf": "1.7.14", - "@swc/core-linux-arm64-gnu": "1.7.14", - "@swc/core-linux-arm64-musl": "1.7.14", - "@swc/core-linux-x64-gnu": "1.7.14", - "@swc/core-linux-x64-musl": "1.7.14", - "@swc/core-win32-arm64-msvc": "1.7.14", - "@swc/core-win32-ia32-msvc": "1.7.14", - "@swc/core-win32-x64-msvc": "1.7.14" + "@swc/core-darwin-arm64": "1.7.22", + "@swc/core-darwin-x64": "1.7.22", + "@swc/core-linux-arm-gnueabihf": "1.7.22", + "@swc/core-linux-arm64-gnu": "1.7.22", + "@swc/core-linux-arm64-musl": "1.7.22", + "@swc/core-linux-x64-gnu": "1.7.22", + "@swc/core-linux-x64-musl": "1.7.22", + "@swc/core-win32-arm64-msvc": "1.7.22", + "@swc/core-win32-ia32-msvc": "1.7.22", + "@swc/core-win32-x64-msvc": "1.7.22" }, "peerDependencies": { "@swc/helpers": "*" @@ -3030,9 +3046,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.14.tgz", - "integrity": "sha512-V0OUXjOH+hdGxDYG8NkQzy25mKOpcNKFpqtZEzLe5V/CpLJPnpg1+pMz70m14s9ZFda9OxsjlvPbg1FLUwhgIQ==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.22.tgz", + "integrity": "sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug==", "cpu": [ "arm64" ], @@ -3047,9 +3063,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.14.tgz", - "integrity": "sha512-9iFvUnxG6FC3An5ogp5jbBfQuUmTTwy8KMB+ZddUoPB3NR1eV+Y9vOh/tfWcenSJbgOKDLgYC5D/b1mHAprsrQ==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.22.tgz", + "integrity": "sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA==", "cpu": [ "x64" ], @@ -3064,9 +3080,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.14.tgz", - "integrity": "sha512-zGJsef9qPivKSH8Vv4F/HiBXBTHZ5Hs3ZjVGo/UIdWPJF8fTL9OVADiRrl34Q7zOZEtGXRwEKLUW1SCQcbDvZA==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.22.tgz", + "integrity": "sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw==", "cpu": [ "arm" ], @@ -3081,9 +3097,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.14.tgz", - "integrity": "sha512-AxV3MPsoI7i4B8FXOew3dx3N8y00YoJYvIPfxelw07RegeCEH3aHp2U2DtgbP/NV1ugZMx0TL2Z2DEvocmA51g==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.22.tgz", + "integrity": "sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA==", "cpu": [ "arm64" ], @@ -3098,9 +3114,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.14.tgz", - "integrity": "sha512-JDLdNjUj3zPehd4+DrQD8Ltb3B5lD8D05IwePyDWw+uR/YPc7w/TX1FUVci5h3giJnlMCJRvi1IQYV7K1n7KtQ==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.22.tgz", + "integrity": "sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg==", "cpu": [ "arm64" ], @@ -3115,9 +3131,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.14.tgz", - "integrity": "sha512-Siy5OvPCLLWmMdx4msnEs8HvEVUEigSn0+3pbLjv78iwzXd0qSBNHUPZyC1xeurVaUbpNDxZTpPRIwpqNE2+Og==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.22.tgz", + "integrity": "sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ==", "cpu": [ "x64" ], @@ -3132,9 +3148,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.14.tgz", - "integrity": "sha512-FtEGm9mwtRYQNK43WMtUIadxHs/ja2rnDurB99os0ZoFTGG2IHuht2zD97W0wB8JbqEabT1XwSG9Y5wmN+ciEQ==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.22.tgz", + "integrity": "sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA==", "cpu": [ "x64" ], @@ -3149,9 +3165,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.14.tgz", - "integrity": "sha512-Jp8KDlfq7Ntt2/BXr0y344cYgB1zf0DaLzDZ1ZJR6rYlAzWYSccLYcxHa97VGnsYhhPspMpmCvHid97oe2hl4A==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.22.tgz", + "integrity": "sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A==", "cpu": [ "arm64" ], @@ -3166,9 +3182,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.14.tgz", - "integrity": "sha512-I+cFsXF0OU0J9J4zdWiQKKLURO5dvCujH9Jr8N0cErdy54l9d4gfIxdctfTF+7FyXtWKLTCkp+oby9BQhkFGWA==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.22.tgz", + "integrity": "sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg==", "cpu": [ "ia32" ], @@ -3183,9 +3199,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.14.tgz", - "integrity": "sha512-NNrprQCK6d28mG436jVo2TD+vACHseUECacEBGZ9Ef0qfOIWS1XIt2MisQKG0Oea2VvLFl6tF/V4Lnx/H0Sn3Q==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.22.tgz", + "integrity": "sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A==", "cpu": [ "x64" ], @@ -3422,10 +3438,11 @@ } }, "node_modules/@testing-library/react": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.0.tgz", - "integrity": "sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", + "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -3559,22 +3576,26 @@ "node_modules/@types/d3-array": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", "dependencies": { "@types/d3-color": "*" } @@ -3582,12 +3603,14 @@ "node_modules/@types/d3-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", "dependencies": { "@types/d3-time": "*" } @@ -3596,6 +3619,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "license": "MIT", "dependencies": { "@types/d3-path": "*" } @@ -3603,12 +3627,14 @@ "node_modules/@types/d3-time": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" }, "node_modules/@types/debounce-promise": { "version": "3.1.9", @@ -3889,9 +3915,10 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4102,17 +4129,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz", - "integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", + "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.1.0", - "@typescript-eslint/type-utils": "8.1.0", - "@typescript-eslint/utils": "8.1.0", - "@typescript-eslint/visitor-keys": "8.1.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4136,15 +4163,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.2.0.tgz", - "integrity": "sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", + "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.2.0", - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/typescript-estree": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4" }, "engines": { @@ -4163,129 +4191,15 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz", - "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", - "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz", - "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", - "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.2.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", - "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.1.0", - "@typescript-eslint/visitor-keys": "8.1.0" + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4296,14 +4210,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz", - "integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", + "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.1.0", - "@typescript-eslint/utils": "8.1.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4321,9 +4235,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", - "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", "dev": true, "license": "MIT", "engines": { @@ -4335,16 +4249,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", - "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.1.0", - "@typescript-eslint/visitor-keys": "8.1.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -4393,16 +4307,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz", - "integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.1.0", - "@typescript-eslint/types": "8.1.0", - "@typescript-eslint/typescript-estree": "8.1.0" + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4416,13 +4330,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", - "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/types": "8.3.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -5189,10 +5103,11 @@ } }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } @@ -5208,12 +5123,13 @@ } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/babel-jest": { @@ -6888,6 +6804,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -6899,6 +6816,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6907,6 +6825,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -6915,6 +6834,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6923,6 +6843,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -6934,6 +6855,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6942,6 +6864,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -6957,6 +6880,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -6968,6 +6892,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -6979,6 +6904,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -6990,6 +6916,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7122,6 +7049,39 @@ } } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7317,12 +7277,14 @@ "node_modules/delaunator": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" + "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", + "license": "ISC" }, "node_modules/delaunay-find": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz", "integrity": "sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==", + "license": "ISC", "dependencies": { "delaunator": "^4.0.0" } @@ -7736,6 +7698,27 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", @@ -7875,17 +7858,17 @@ } }, "node_modules/eslint": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", - "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.1", + "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -8123,25 +8106,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, "node_modules/eslint-plugin-es-x": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", @@ -8648,27 +8612,28 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" }, "engines": { "node": ">=4.0" @@ -8677,6 +8642,16 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8838,73 +8813,31 @@ "dev": true, "peer": true }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-node/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-patternfly-react": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-patternfly-react/-/eslint-plugin-patternfly-react-5.3.0.tgz", - "integrity": "sha512-6i/13l7NLUcjTvtgvZ5GUF6b/jwcjKK97MkvsLU5sw66Vh2Bk/R+eC5AjMF9fz9g2saRB/wBt1PiZMlYo+QX6Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-patternfly-react/-/eslint-plugin-patternfly-react-5.4.0.tgz", + "integrity": "sha512-9x7So55+lw5Jnv7CXE9yJf73tqKJiyeFh70iXAyXWYWhcRW9CtYkwdoU6eA9l/NBWt7lHcjXIPH7oqoinORBCA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/eslint-parser": "^7.19.1", + "@babel/eslint-parser": "^7.24.7", "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^9.0.0", - "eslint-config-standard": "^17.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-config-standard": "^17.1.0", "eslint-config-standard-jsx": "^11.0.0", "eslint-config-standard-react": "^13.0.0", - "eslint-plugin-import": "^2.13.0", - "eslint-plugin-jest": "^27.0.0", - "eslint-plugin-jsx-a11y": "^6.0.3", - "eslint-plugin-node": "^11.0.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-react": "^7.7.0", - "eslint-plugin-react-hooks": "^4.1.2", - "eslint-plugin-rulesdir": "^0.2.0", - "eslint-plugin-standard": "^4.0.0" + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-jsx-a11y": "^6.9.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-promise": "^6.4.0", + "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-rulesdir": "^0.2.2", + "eslint-plugin-standard": "^4.1.0" }, "peerDependencies": { - "eslint": ">=5" + "eslint": ">=5.16.0" } }, "node_modules/eslint-plugin-patternfly-react/node_modules/eslint-config-prettier": { @@ -8951,15 +8884,19 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-react": { @@ -8995,10 +8932,11 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9332,30 +9270,6 @@ "node": ">=4.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", @@ -9365,15 +9279,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9992,9 +9897,10 @@ "license": "ISC" }, "node_modules/focus-trap": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz", - "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "license": "MIT", "dependencies": { "tabbable": "^6.2.0" } @@ -11348,6 +11254,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -14378,7 +14285,8 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", @@ -17115,18 +17023,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -18182,6 +18078,19 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -18261,6 +18170,17 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -18518,7 +18438,8 @@ "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", @@ -19609,158 +19530,170 @@ } }, "node_modules/victory-area": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.9.2.tgz", - "integrity": "sha512-32aharvPf2RgdQB+/u1j3/ajYFNH/7ugLX9ZRpdd65gP6QEbtXL+58gS6CxvFw6gr/y8a0xMlkMKkpDVacXLpw==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.1.0.tgz", + "integrity": "sha512-SfXlOl2Tg700/2+yuq4sNUP2x0VvsZeQz07QohnN4n9ag17Vj650gp8Yx5vj+CWRSZKWd77OcWiQ5FvBAZbr6A==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2", - "victory-vendor": "^36.9.2" + "victory-core": "37.1.0", + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-area/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-axis": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.9.2.tgz", - "integrity": "sha512-4Odws+IAjprJtBg2b2ZCxEPgrQ6LgIOa22cFkGghzOSfTyNayN4M3AauNB44RZyn2O/hDiM1gdBkEg1g9YDevQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.1.0.tgz", + "integrity": "sha512-7c0zWLEX+L7GzQ6gNUnJHnCnRkgSU57KU41w95XYfmNOpT9bsPwAGmVRfMEvZVWlhpiWshNRzaW2RQ9wSrNZPA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-axis/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-bar": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.9.2.tgz", - "integrity": "sha512-R3LFoR91FzwWcnyGK2P8DHNVv9gsaWhl5pSr2KdeNtvLbZVEIvUkTeVN9RMBMzterSFPw0mbWhS1Asb3sV6PPw==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.1.0.tgz", + "integrity": "sha512-vww8UGioxXC8+zV0dzPOVBkk6Dzd+SQcGF+SzFVg3rPyVvTDf5ALL3Hp8Qt6rIkV2rWLjSVh2H3RcEHtkffPEw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2", - "victory-vendor": "^36.9.2" + "victory-core": "37.1.0", + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-bar/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-box-plot": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-36.9.2.tgz", - "integrity": "sha512-nUD45V/YHDkAKZyak7YDsz+Vk1F9N0ica3jWQe0AY0JqD9DleHa8RY/olSVws26kLyEj1I+fQqva6GodcLaIqQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.1.0.tgz", + "integrity": "sha512-26RRltwrvs3hU7I5x1VHF71eDdVdYpfOfWDbQlte73/sfJotkOI2s8GApkG7fxLbuoYfu4n+2eOPM6FIbFdbtA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2", - "victory-vendor": "^36.9.2" + "victory-core": "37.1.0", + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-box-plot/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-brush-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.9.2.tgz", - "integrity": "sha512-KcQjzFeo40tn52cJf1A02l5MqeR9GKkk3loDqM3T2hfi1PCyUrZXEUjGN5HNlLizDRvtcemaAHNAWlb70HbG/g==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.1.0.tgz", + "integrity": "sha512-TYw/7ujVvBNwbjzefnPWQj8K+IqyX62G4JNWw+M83ZTnetuN7yZBhch57JCHCh6tCBll9HZijzvuw4ftt8x+sA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-brush-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.9.2.tgz", - "integrity": "sha512-dMNcS0BpqL3YiGvI4BSEmPR76FCksCgf3K4CSZ7C/MGyrElqB6wWwzk7afnlB1Qr71YIHXDmdwsPNAl/iEwTtA==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.1.0.tgz", + "integrity": "sha512-3wCOLCyJ94o03Uvj2XvNyY3AiFvGfVgq/8PZDnPu649ntSOG3MRGgwiazq8BHkPy9Im9MXN0dZ+WcemhPRZfPA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-axis": "^36.9.2", - "victory-core": "^36.9.2", - "victory-polar-axis": "^36.9.2", - "victory-shared-events": "^36.9.2" + "victory-axis": "37.1.0", + "victory-core": "37.1.0", + "victory-polar-axis": "37.1.0", + "victory-shared-events": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -19770,6 +19703,7 @@ "version": "37.0.2", "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.0.2.tgz", "integrity": "sha512-B3A3yCanjskShZTFtA1Bp8BLXniaTtjzaKHOChjCkay8oRkWjGMy0aZdCL7ezfUWVHAaFUIw248PgqApMn1K/w==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", @@ -19779,344 +19713,320 @@ "react": ">=16.6.0" } }, - "node_modules/victory-core/node_modules/victory-vendor": { - "version": "37.0.2", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.0.2.tgz", - "integrity": "sha512-Mjs+00QR256itUM/jVqGJkAw5OADpwjQj7sOEqLqJQfnj9uuf7cPto1KCjrS5d+E6lb0mE5kYwUfzBq0BrMa8Q==", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" - } - }, "node_modules/victory-create-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.9.2.tgz", - "integrity": "sha512-uA0dh1R0YDzuXyE/7StZvq4qshet+WYceY7R1UR5mR/F9079xy+iQsa2Ca4h97/GtVZoLO6r1eKLWBt9TN+U7A==", + "version": "37.0.2", + "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.0.2.tgz", + "integrity": "sha512-cojSUT/TWunznM3rMlchlYZ+QdTLKHQE519ZQdomA04rKdU+rK/X+XaeMHDWZVRZHp4YrfUmR7OfOb4AHBTm7w==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-brush-container": "^36.9.2", - "victory-core": "^36.9.2", - "victory-cursor-container": "^36.9.2", - "victory-selection-container": "^36.9.2", - "victory-voronoi-container": "^36.9.2", - "victory-zoom-container": "^36.9.2" - }, - "peerDependencies": { - "react": ">=16.6.0" - } - }, - "node_modules/victory-create-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", - "dependencies": { - "lodash": "^4.17.21", - "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-brush-container": "^37.0.2", + "victory-core": "^37.0.2", + "victory-cursor-container": "^37.0.2", + "victory-selection-container": "^37.0.2", + "victory-voronoi-container": "^37.0.2", + "victory-zoom-container": "^37.0.2" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-cursor-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.9.2.tgz", - "integrity": "sha512-jidab4j3MaciF3fGX70jTj4H9rrLcY8o2LUrhJ67ZLvEFGGmnPtph+p8Fe97Umrag7E/DszjNxQZolpwlgUh3g==", + "version": "37.0.2", + "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.0.2.tgz", + "integrity": "sha512-07PB8XNYi9AqnwZjCxQ6gKcJip6p2fwUT1+aHYDUAy/ncL6xBZD4t3sXErPHT3ha/itx7I861OsehDLZCjnkHA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" - }, - "peerDependencies": { - "react": ">=16.6.0" - } - }, - "node_modules/victory-cursor-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", - "dependencies": { - "lodash": "^4.17.21", - "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-core": "^37.0.2" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-group": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.9.2.tgz", - "integrity": "sha512-wBmpsjBTKva8mxHvHNY3b8RE58KtnpLLItEyyAHaYkmExwt3Uj8Cld3sF3vmeuijn2iR64NPKeMbgMbfZJzycw==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.1.0.tgz", + "integrity": "sha512-PXR9BJEeMONej3N9kRk6xPD07o7Umes9HsSNvcm6TV4K86VuMXzLuYg5Q3PmknWnDF1eECDr1pfWZbLy1vTi/Q==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "^36.9.2", - "victory-shared-events": "^36.9.2" + "victory-core": "37.1.0", + "victory-shared-events": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-group/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-legend": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.9.2.tgz", - "integrity": "sha512-cucFJpv6fty+yXp5pElQFQnHBk1TqA4guGUMI+XF/wLlnuM4bhdAtASobRIIBkz0mHGBaCAAV4PzL9azPU/9dg==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.1.0.tgz", + "integrity": "sha512-fxxvSkq6AUgEZawfgo4gJtNleFATwwICkad+6JxRii0F73YY0hzbfbkC2YrLSK920JxbnzLWf0ixMtbFzT/yew==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-legend/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-line": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.9.2.tgz", - "integrity": "sha512-kmYFZUo0o2xC8cXRsmt/oUBRQSZJVT2IJnAkboUepypoj09e6CY5tRH4TSdfEDGkBk23xQkn7d4IFgl4kAGnSA==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.1.0.tgz", + "integrity": "sha512-5IejHIbYrDjsOFdbftG+NhBf1mcAb9YNwrV14SGNN9PMejeCS7PN4nT+tC8BFdGF17ORS0gDP464AvVIn7jlbg==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2", - "victory-vendor": "^36.9.2" + "victory-core": "37.1.0", + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-line/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-pie": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.9.2.tgz", - "integrity": "sha512-i3zWezvy5wQEkhXKt4rS9ILGH7Vr9Q5eF9fKO4GMwDPBdYOTE3Dh2tVaSrfDC8g9zFIc0DKzOtVoJRTb+0AkPg==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.1.0.tgz", + "integrity": "sha512-6wLs/XBrp+nq8U7L81TiEQGIqn+InTCiNMBMbABRWdsQQVviysovoZ0Q+GhEcGl5+BWhbRPe3LGMfEQTwQYX/Q==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2", - "victory-vendor": "^36.9.2" + "victory-core": "37.1.0", + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-pie/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-polar-axis": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.9.2.tgz", - "integrity": "sha512-HBR90FF4M56yf/atXjSmy3DMps1vSAaLXmdVXLM/A5g+0pUS7HO719r5x6dsR3I6Rm+8x6Kk8xJs0qgpnGQIEw==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.1.0.tgz", + "integrity": "sha512-NY5RPLRFqeGDWMTlZ8EZERtMS7gcviBtcO7h9lvDbUHFrrDdxBe4YwzgEgdzIdwVJpV9bSngVjBaOrDb8NPXyw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-polar-axis/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-scatter": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.9.2.tgz", - "integrity": "sha512-hK9AtbJQfaW05i8BH7Lf1HK7vWMAfQofj23039HEQJqTKbCL77YT+Q0LhZw1a1BRCpC/5aSg9EuqblhfIYw2wg==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.1.0.tgz", + "integrity": "sha512-movtEagWZjFnI4Wbrn1zb2rgV5UTnCwipVnj+Rj8IEu7NUIjuA1B8ZQsdo6yJs1JzMQeslfbuN1PP3dWiJ/MvA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-scatter/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-selection-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.9.2.tgz", - "integrity": "sha512-chboroEwqqVlMB60kveXM2WznJ33ZM00PWkFVCoJDzHHlYs7TCADxzhqet2S67SbZGSyvSprY2YztSxX8kZ+XQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.1.0.tgz", + "integrity": "sha512-AXBWydZAlVV+Vo6Hj9IskTHijnhA/rcrjxwk1kfbhClPDFwnREtkdzO8r6BLqlFlAQlXYK5vDONBzpLR0q22FA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-selection-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-shared-events": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.9.2.tgz", - "integrity": "sha512-W/atiw3Or6MnpBuhluFv6007YrixIRh5NtiRvtFLGxNuQJLYjaSh6koRAih5xJer5Pj7YUx0tL9x67jTRcJ6Dg==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.1.0.tgz", + "integrity": "sha512-j7ppVc14UeOXr3l2xZEtSxochlOcHq875MfuDjyzZUsAkpIgJ+fFwUUYVn9Inzi0iuJwghXWki/916IQjOTqvQ==", + "license": "MIT", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-shared-events/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-stack": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.9.2.tgz", - "integrity": "sha512-imR6FniVlDFlBa/B3Est8kTryNhWj2ZNpivmVOebVDxkKcVlLaDg3LotCUOI7NzOhBQaro0UzeE9KmZV93JcYA==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.1.0.tgz", + "integrity": "sha512-Mipm4Lzn7Ely1qHCTZRRC/ug4zIueNFzlgHHXObMgjt9iXz2sBAYe8eJXNkdJIDo67XTU8nTVLgzXsuiyz++eg==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "^36.9.2", - "victory-shared-events": "^36.9.2" + "victory-core": "37.1.0", + "victory-shared-events": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-stack/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-tooltip": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.9.2.tgz", - "integrity": "sha512-76seo4TWD1WfZHJQH87IP3tlawv38DuwrUxpnTn8+uW6/CUex82poQiVevYdmJzhataS9jjyCWv3w7pOmLBCLg==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.1.0.tgz", + "integrity": "sha512-OiXZ40dC/XTaW05oiwm8V4JJATfnedCrvuSCE/yiRp/RPysw5ZhbgAdVFDglJnT5aTxKcafRrr8NTy6nNNLgCw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-tooltip/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-vendor": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", - "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.1.0.tgz", + "integrity": "sha512-ecXgkii9uNdLQvEmRQgSawdGLVLT5jAbSuyIyDeS0T5O3diTEW/UcyK+JmXJxVaNb1ZHPZ+zEW/bNg2pyGraIw==", + "license": "MIT AND ISC", "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", @@ -20135,53 +20045,43 @@ } }, "node_modules/victory-voronoi-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.9.2.tgz", - "integrity": "sha512-NIVYqck9N4OQnEz9mgQ4wILsci3OBWWK7RLuITGHyoD7Ne/+WH1i0Pv2y9eIx+f55rc928FUTugPPhkHvXyH3A==", + "version": "37.0.2", + "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.0.2.tgz", + "integrity": "sha512-iqx/35Rx9vMDKkHw+2xibAF8OT4MTHZk9GG7sPxnlYWoZqDSuuaqR5SmrHosDmw2oqXbj7AqG2wqfxmbMp7ZhA==", + "license": "MIT", "dependencies": { "delaunay-find": "0.0.6", "lodash": "^4.17.19", "react-fast-compare": "^3.2.0", - "victory-core": "^36.9.2", - "victory-tooltip": "^36.9.2" - }, - "peerDependencies": { - "react": ">=16.6.0" - } - }, - "node_modules/victory-voronoi-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", - "dependencies": { - "lodash": "^4.17.21", - "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-core": "^37.0.2", + "victory-tooltip": "^37.0.2" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-zoom-container": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.9.2.tgz", - "integrity": "sha512-pXa2Ji6EX/pIarKT6Hcmmu2n7IG/x8Vs0D2eACQ/nbpvZa+DXWIxCRW4hcg2Va35fmXcDIEpGaX3/soXzZ+pbw==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.1.0.tgz", + "integrity": "sha512-GTW15lHBj+YVDAu2ONIPteVKzPbRWt/Lhzc/9p1e+VOvkfQtL+skZLt1Pq6diYZzcqyimzk6Z+FeipXiig8AMQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.19", - "victory-core": "^36.9.2" + "victory-core": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-zoom-container/node_modules/victory-core": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.2.tgz", - "integrity": "sha512-AzmMy+9MYMaaRmmZZovc/Po9urHne3R3oX7bbXeQdVuK/uMBrlPiv11gVJnuEH2SXLVyep43jlKgaBp8ef9stQ==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.1.0.tgz", + "integrity": "sha512-K1PVc0AIO+p5XmmgjK1L87MXZS+UKyguohTR1dNT1Ltveerj9TR5hys8DTdMPpWhR+W7R6U9RLQeACbQSOcbnQ==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.9.2" + "victory-vendor": "37.1.0" }, "peerDependencies": { "react": ">=16.6.0" diff --git a/package.json b/package.json index 1d8e768f3..2b1a03d83 100644 --- a/package.json +++ b/package.json @@ -50,13 +50,13 @@ "verify": "npm-run-all build lint test" }, "dependencies": { - "@patternfly/patternfly": "5.3.1", - "@patternfly/react-charts": "7.3.0", + "@patternfly/patternfly": "5.4.0", + "@patternfly/react-charts": "7.4.0", "@patternfly/react-component-groups": "^5.2.0", - "@patternfly/react-core": "5.3.4", - "@patternfly/react-icons": "5.3.2", - "@patternfly/react-table": "5.3.4", - "@patternfly/react-tokens": "5.3.1", + "@patternfly/react-core": "5.4.0", + "@patternfly/react-icons": "5.4.0", + "@patternfly/react-table": "5.4.0", + "@patternfly/react-tokens": "5.4.0", "@redhat-cloud-services/frontend-components": "^4.2.14", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", @@ -77,7 +77,10 @@ "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", - "victory-core": "^37.0.2" + "victory-core": "37.0.2", + "victory-create-container": "37.0.2", + "victory-cursor-container": "37.0.2", + "victory-voronoi-container": "37.0.2" }, "devDependencies": { "@eslint/compat": "^1.1.1", @@ -87,29 +90,29 @@ "@formatjs/ecma402-abstract": "^2.0.0", "@formatjs/icu-messageformat-parser": "^2.7.8", "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", - "@redhat-cloud-services/frontend-components-config": "^6.2.6", + "@redhat-cloud-services/frontend-components-config": "^6.2.8", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.14", + "@swc/core": "^1.7.22", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.5.0", - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", "@types/qs": "^6.9.15", - "@types/react": "^18.3.3", + "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.2.0", + "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/parser": "^8.3.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", - "eslint": "^9.9.0", + "eslint": "^9.9.1", "eslint-plugin-formatjs": "^4.13.3", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-markdown": "^5.1.0", - "eslint-plugin-patternfly-react": "^5.3.0", + "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -133,8 +136,8 @@ "webpack-bundle-analyzer": "^4.10.2" }, "overrides": { - "@typescript-eslint/eslint-plugin": "^8.1.0", - "eslint": "^9.9.0", + "@typescript-eslint/eslint-plugin": "^8.3.0", + "eslint": "^9.9.1", "redux": "^5.0.1" }, "insights": { From 408511a67fa19593934afdbe64db529fc3d2dd94 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 26 Jul 2024 11:53:40 -0400 Subject: [PATCH 49/56] PatternFly toolbar controls scroll page when clicked https://issues.redhat.com/browse/COST-5320 --- src/routes/components/dataToolbar/utils/bulkSelect.tsx | 1 + src/routes/explorer/explorer.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/src/routes/components/dataToolbar/utils/bulkSelect.tsx b/src/routes/components/dataToolbar/utils/bulkSelect.tsx index 04ed0f800..f1401daca 100644 --- a/src/routes/components/dataToolbar/utils/bulkSelect.tsx +++ b/src/routes/components/dataToolbar/utils/bulkSelect.tsx @@ -101,6 +101,7 @@ export const getBulkSelect = ({ onOpenChange={isOpen => onBulkSelectToggle(isOpen)} onSelect={onBulkSelect} popperProps={{ + appendTo: () => document.body, // Page scroll workaround https://issues.redhat.com/browse/COST-5320 position: 'left', }} toggle={toggle} diff --git a/src/routes/explorer/explorer.tsx b/src/routes/explorer/explorer.tsx index 8d7a01e9c..d99b98f43 100644 --- a/src/routes/explorer/explorer.tsx +++ b/src/routes/explorer/explorer.tsx @@ -234,6 +234,7 @@ class Explorer extends React.Component { isCompact={!isBottom} isDisabled={isDisabled} itemCount={count} + menuAppendTo={document.body} // Page scroll workaround https://issues.redhat.com/browse/COST-5320 onPerPageSelect={(event, perPage) => handleOnPerPageSelect(query, router, perPage)} onSetPage={(event, pageNumber) => handleOnSetPage(query, router, report, pageNumber)} page={page} From 9b211fd0b42742cddc927f4cf6853ab35866982b Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Fri, 30 Aug 2024 16:34:37 -0400 Subject: [PATCH 50/56] Dependency updates --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4d8eb8a60..22a1fede3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.5", + "axios": "^1.7.6", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", @@ -5103,9 +5103,10 @@ } }, "node_modules/axios": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", - "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.6.tgz", + "integrity": "sha512-Ekur6XDwhnJ5RgOCaxFnXyqlPALI3rVeukZMwOdfghW7/wGz784BYKiQq+QD8NPcr91KRo30KfHOchyijwWw7g==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/package.json b/package.json index 2b1a03d83..c4465f303 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@redhat-cloud-services/rbac-client": "^2.2.1", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.5", + "axios": "^1.7.6", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", From 47bfbc36f9391f34a8806911cd41f3ac8250dfc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:11:40 +0000 Subject: [PATCH 51/56] (chore): Bump the ci-dependencies group across 1 directory with 2 updates Bumps the ci-dependencies group with 2 updates in the / directory: [@redhat-cloud-services/rbac-client](https://github.com/RedHatInsights/javascript-clients) and [axios](https://github.com/axios/axios). Updates `@redhat-cloud-services/rbac-client` from 2.2.1 to 2.2.2 - [Release notes](https://github.com/RedHatInsights/javascript-clients/releases) - [Changelog](https://github.com/RedHatInsights/javascript-clients/blob/main/release.config.js) - [Commits](https://github.com/RedHatInsights/javascript-clients/compare/@redhat-cloud-services/rbac-client-2.2.1...@redhat-cloud-services/rbac-client-2.2.2) Updates `axios` from 1.7.6 to 1.7.7 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.6...v1.7.7) --- updated-dependencies: - dependency-name: "@redhat-cloud-services/rbac-client" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ci-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 17 ++++++++--------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22a1fede3..52dcd29f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,10 +21,10 @@ "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", "@redhat-cloud-services/frontend-components-utilities": "^4.0.17", - "@redhat-cloud-services/rbac-client": "^2.2.1", + "@redhat-cloud-services/rbac-client": "^2.2.2", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.6", + "axios": "^1.7.7", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", @@ -2751,9 +2751,9 @@ } }, "node_modules/@redhat-cloud-services/rbac-client": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.2.1.tgz", - "integrity": "sha512-3Z8yQK9XUGBrRwif+oeCXkGL0LQGdg/oOdeohvfhICnv97UKfd19XelL3VNettatSMshwZMsDkVxr5//uKrM7w==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-2.2.2.tgz", + "integrity": "sha512-GsHHRyYcfh8BJaW9jdBuKLnA+n2YpfGU4kfibCS04BWQz+g8F6jF6gHhJAymHicN+lgvFo8Z1WvF4TRfI17qNg==", "dependencies": { "@redhat-cloud-services/javascript-clients-shared": "^1.2.2", "axios": "^1.7.2", @@ -5103,10 +5103,9 @@ } }, "node_modules/axios": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.6.tgz", - "integrity": "sha512-Ekur6XDwhnJ5RgOCaxFnXyqlPALI3rVeukZMwOdfghW7/wGz784BYKiQq+QD8NPcr91KRo30KfHOchyijwWw7g==", - "license": "MIT", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/package.json b/package.json index c4465f303..83727137e 100644 --- a/package.json +++ b/package.json @@ -61,10 +61,10 @@ "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.8", "@redhat-cloud-services/frontend-components-utilities": "^4.0.17", - "@redhat-cloud-services/rbac-client": "^2.2.1", + "@redhat-cloud-services/rbac-client": "^2.2.2", "@reduxjs/toolkit": "^2.2.7", "@unleash/proxy-client-react": "^4.3.1", - "axios": "^1.7.6", + "axios": "^1.7.7", "date-fns": "^3.6.0", "js-file-download": "^0.4.12", "lodash": "^4.17.21", From 54cba04037f5d7a70d3afd7449459dec94c7a680 Mon Sep 17 00:00:00 2001 From: "red-hat-konflux[bot]" <126015336+red-hat-konflux[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:04:54 +0000 Subject: [PATCH 52/56] chore(deps): update konflux references Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com> --- .tekton/koku-frontend-pull-request.yaml | 4 ++-- .tekton/koku-frontend-push.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.tekton/koku-frontend-pull-request.yaml b/.tekton/koku-frontend-pull-request.yaml index 5ce7f94d2..d0afbcd08 100644 --- a/.tekton/koku-frontend-pull-request.yaml +++ b/.tekton/koku-frontend-pull-request.yaml @@ -299,7 +299,7 @@ spec: - name: name value: buildah - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:83db74702b5f0d714b3aae066faa5037d3f096f9fa108d18c0e78317fa35f1fd + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:a523f60203d90e149f96ec776b47ce85a7acfd6d634ddfc18f4a03f14e08ea0e - name: kind value: task resolver: bundles @@ -331,7 +331,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:dd87c1a2c598ebf2286d4cf7f1ff2c07d0ee3665c16041576012dd3f1a36b080 + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:18eecec92fcdb96dc346aecbbe88fb5fd95e34ee6ef4ad714dc1303723a8e4ea - name: kind value: task resolver: bundles diff --git a/.tekton/koku-frontend-push.yaml b/.tekton/koku-frontend-push.yaml index 9f6d52cee..f0471f1f8 100644 --- a/.tekton/koku-frontend-push.yaml +++ b/.tekton/koku-frontend-push.yaml @@ -296,7 +296,7 @@ spec: - name: name value: buildah - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:83db74702b5f0d714b3aae066faa5037d3f096f9fa108d18c0e78317fa35f1fd + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.2@sha256:a523f60203d90e149f96ec776b47ce85a7acfd6d634ddfc18f4a03f14e08ea0e - name: kind value: task resolver: bundles @@ -328,7 +328,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:dd87c1a2c598ebf2286d4cf7f1ff2c07d0ee3665c16041576012dd3f1a36b080 + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:18eecec92fcdb96dc346aecbbe88fb5fd95e34ee6ef4ad714dc1303723a8e4ea - name: kind value: task resolver: bundles From 7abf8ee5be7eaaaf4e5d29202dd7f9d2715a91d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 16:24:37 +0000 Subject: [PATCH 53/56] (chore): Bump the lint-dependencies group with 2 updates Bumps the lint-dependencies group with 2 updates: [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react). Updates `@typescript-eslint/parser` from 8.3.0 to 8.4.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.4.0/packages/parser) Updates `eslint-plugin-react` from 7.35.0 to 7.35.1 - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.35.0...v7.35.1) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: lint-dependencies - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch dependency-group: lint-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 139 +++++++++++++++++++++++++++++++++++++++++----- package.json | 4 +- 2 files changed, 128 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 52dcd29f2..0ea9a4cd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,7 +64,7 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.3.0", - "@typescript-eslint/parser": "^8.3.0", + "@typescript-eslint/parser": "^8.4.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.1", @@ -74,7 +74,7 @@ "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react": "^7.35.1", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.3.0", @@ -4153,16 +4153,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", - "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4" }, "engines": { @@ -4181,6 +4180,120 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.4.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", @@ -8890,9 +9003,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "version": "7.35.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.1.tgz", + "integrity": "sha512-B5ok2JgbaaWn/zXbKCGgKDNL2tsID3Pd/c/yvjcpsd9HQDwyYc/TQv3AZMmOvrJgCs3AnYNUHRCQEMMQAYJ7Yg==", "dev": true, "dependencies": { "array-includes": "^3.1.8", diff --git a/package.json b/package.json index 83727137e..7ffe59e28 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.3.0", - "@typescript-eslint/parser": "^8.3.0", + "@typescript-eslint/parser": "^8.4.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^9.9.1", @@ -114,7 +114,7 @@ "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react": "^7.35.1", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.3.0", From 9f119b1022bc50ad7f828606331d9c97fe8e9259 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Wed, 4 Sep 2024 09:24:05 -0400 Subject: [PATCH 54/56] Konflux pipeline test --- src/routes/settings/settings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/settings/settings.tsx b/src/routes/settings/settings.tsx index 563de7688..18d9b3af9 100644 --- a/src/routes/settings/settings.tsx +++ b/src/routes/settings/settings.tsx @@ -212,7 +212,7 @@ const Settings: React.FC = () => {
    {getTabs(availableTabs)}
    )} -
    {getTabContent(availableTabs)}
    +
    {getTabContent(availableTabs)}
    .
    ); }; From 541aafa710f57b4a4b1d574fb5b7340140564f19 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Wed, 4 Sep 2024 10:15:01 -0400 Subject: [PATCH 55/56] Dependency updates --- package-lock.json | 277 ++++++++++++++-------------------------------- package.json | 8 +- 2 files changed, 86 insertions(+), 199 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ea9a4cd6..f405c5292 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", "@redhat-cloud-services/frontend-components-config": "^6.2.8", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.22", + "@swc/core": "^1.7.23", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.1", @@ -63,7 +63,7 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/eslint-plugin": "^8.4.0", "@typescript-eslint/parser": "^8.4.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", @@ -74,7 +74,7 @@ "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.35.1", + "eslint-plugin-react": "^7.35.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.3.0", @@ -3007,9 +3007,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.22.tgz", - "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.23.tgz", + "integrity": "sha512-VDNkpDvDlreGh2E3tlDj8B3piiuLhhQA/7rIVZpiLUvG1YpucAa6N7iDXA7Gc/+Hah8spaCg/qvEaBkCmcIYCQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -3025,16 +3025,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.22", - "@swc/core-darwin-x64": "1.7.22", - "@swc/core-linux-arm-gnueabihf": "1.7.22", - "@swc/core-linux-arm64-gnu": "1.7.22", - "@swc/core-linux-arm64-musl": "1.7.22", - "@swc/core-linux-x64-gnu": "1.7.22", - "@swc/core-linux-x64-musl": "1.7.22", - "@swc/core-win32-arm64-msvc": "1.7.22", - "@swc/core-win32-ia32-msvc": "1.7.22", - "@swc/core-win32-x64-msvc": "1.7.22" + "@swc/core-darwin-arm64": "1.7.23", + "@swc/core-darwin-x64": "1.7.23", + "@swc/core-linux-arm-gnueabihf": "1.7.23", + "@swc/core-linux-arm64-gnu": "1.7.23", + "@swc/core-linux-arm64-musl": "1.7.23", + "@swc/core-linux-x64-gnu": "1.7.23", + "@swc/core-linux-x64-musl": "1.7.23", + "@swc/core-win32-arm64-msvc": "1.7.23", + "@swc/core-win32-ia32-msvc": "1.7.23", + "@swc/core-win32-x64-msvc": "1.7.23" }, "peerDependencies": { "@swc/helpers": "*" @@ -3046,9 +3046,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.22.tgz", - "integrity": "sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.23.tgz", + "integrity": "sha512-yyOHPfti6yKlQulfVWMt7BVKst+SyEZYCWuQSGMn1KgmNCH/bYufRWfQXIhkGSj44ZkEepJmsJ8tDyIb4k5WyA==", "cpu": [ "arm64" ], @@ -3063,9 +3063,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.22.tgz", - "integrity": "sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.23.tgz", + "integrity": "sha512-GzqHwQ0Y1VyjdI/bBKFX2GKm5HD3PIB6OhuAQtWZMTtEr2yIrlT0YK2T+XKh7oIg31JwxGBeQdBk3KTI7DARmQ==", "cpu": [ "x64" ], @@ -3080,9 +3080,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.22.tgz", - "integrity": "sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.23.tgz", + "integrity": "sha512-qwX4gB41OS6/OZkHcpTqLFGsdmvoZyffnJIlgB/kZKwH3lfeJWzv6vx57zXtNpM/t7GoQEe0VZUVdmNjxSxBZw==", "cpu": [ "arm" ], @@ -3097,9 +3097,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.22.tgz", - "integrity": "sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.23.tgz", + "integrity": "sha512-TsrbUZdMaUwzI7+g/8rHPLWbntMKYSu5Bn5IBSqVKPeyqaXxNnlIUnWXgXcUcRAc+T+Y8ADfr7EiFz9iz5DuSA==", "cpu": [ "arm64" ], @@ -3114,9 +3114,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.22.tgz", - "integrity": "sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.23.tgz", + "integrity": "sha512-JEdtwdthazKq4PBz53KSubwwK8MvqODAihGSAzc8u3Unq4ojcvaS8b0CwLBeD+kTQ78HpxOXTt3DsFIxpgaCAA==", "cpu": [ "arm64" ], @@ -3131,9 +3131,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.22.tgz", - "integrity": "sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.23.tgz", + "integrity": "sha512-V51gFPWaVAHbI1yg9ahsoya3aB4uawye3SZ5uQWgcP7wdCdiv60dw4F5nuPJf5Z1oXD3U/BslXuamv8Oh9vXqQ==", "cpu": [ "x64" ], @@ -3148,9 +3148,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.22.tgz", - "integrity": "sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.23.tgz", + "integrity": "sha512-BBqQi4+UdeRqag3yM4IJjaHG4yc1o3l9ksENHToE0o/u2DT0FY5+K/DiYGZLC1JHbSFzNqRCYsa7DIzRtZ0A1A==", "cpu": [ "x64" ], @@ -3165,9 +3165,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.22.tgz", - "integrity": "sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.23.tgz", + "integrity": "sha512-JPk6pvCKncL6bXG7p+NLZf8PWx4FakVvKNdwGeMrYunb+yk1IZf7qf9LJk8+GDGF5QviDXPs8opZrTrfsW80fA==", "cpu": [ "arm64" ], @@ -3182,9 +3182,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.22.tgz", - "integrity": "sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.23.tgz", + "integrity": "sha512-2Whxi8d+bLQBzJcQ5qYPHlk02YYVGsMVav0fWk+FnX2z1QRREIu1L1xvrpi7gBpjXp6BIU40ya8GiKeekNT2bg==", "cpu": [ "ia32" ], @@ -3199,9 +3199,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.22", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.22.tgz", - "integrity": "sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A==", + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.23.tgz", + "integrity": "sha512-82fARk4/yJ40kwWKY/gdKDisPdtgJE9jgpl/vkNG3alyJxrCzuNM7+CtiKoYbXLeqM8GQTS3wlvCaJu9oQ8dag==", "cpu": [ "x64" ], @@ -4119,17 +4119,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", - "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/type-utils": "8.3.0", - "@typescript-eslint/utils": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4180,11 +4180,12 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.4.0", "@typescript-eslint/visitor-keys": "8.4.0" @@ -4197,130 +4198,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.4.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", - "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", - "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.3.0", - "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4338,9 +4224,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", - "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", "dev": true, "license": "MIT", "engines": { @@ -4352,14 +4238,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", - "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4410,16 +4296,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0" + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4433,13 +4319,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", - "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/types": "8.4.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9003,10 +8889,11 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.1.tgz", - "integrity": "sha512-B5ok2JgbaaWn/zXbKCGgKDNL2tsID3Pd/c/yvjcpsd9HQDwyYc/TQv3AZMmOvrJgCs3AnYNUHRCQEMMQAYJ7Yg==", + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", diff --git a/package.json b/package.json index 7ffe59e28..e8cae8521 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@redhat-cloud-services/eslint-config-redhat-cloud-services": "^2.0.4", "@redhat-cloud-services/frontend-components-config": "^6.2.8", "@redhat-cloud-services/tsc-transform-imports": "^1.0.16", - "@swc/core": "^1.7.22", + "@swc/core": "^1.7.23", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.1", @@ -103,7 +103,7 @@ "@types/react-dom": "^18.3.0", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/eslint-plugin": "^8.4.0", "@typescript-eslint/parser": "^8.4.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", @@ -114,7 +114,7 @@ "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-patternfly-react": "^5.4.0", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.35.1", + "eslint-plugin-react": "^7.35.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-sort-keys-fix": "^1.1.2", "eslint-plugin-testing-library": "^6.3.0", @@ -136,7 +136,7 @@ "webpack-bundle-analyzer": "^4.10.2" }, "overrides": { - "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/eslint-plugin": "^8.4.0", "eslint": "^9.9.1", "redux": "^5.0.1" }, From 62f7ba5f69cde3d123e8f5e19bf8b37080411f33 Mon Sep 17 00:00:00 2001 From: Dan Labrecque Date: Wed, 4 Sep 2024 10:59:17 -0400 Subject: [PATCH 56/56] Omit AWS details page filters from available EC2 filters https://issues.redhat.com/browse/COST-5464 --- .../details/awsBreakdown/instances/instances.tsx | 9 +++++---- src/routes/utils/groupBy.ts | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/routes/details/awsBreakdown/instances/instances.tsx b/src/routes/details/awsBreakdown/instances/instances.tsx index 9ce52705c..355675279 100644 --- a/src/routes/details/awsBreakdown/instances/instances.tsx +++ b/src/routes/details/awsBreakdown/instances/instances.tsx @@ -20,7 +20,7 @@ import { ColumnManagementModal, initHiddenColumns } from 'routes/details/compone import { styles } from 'routes/optimizations/optimizationsBreakdown/optimizationsBreakdown.styles'; import type { ComputedReportItem } from 'routes/utils/computedReport/getComputedReportItems'; import { getUnsortedComputedReportItems } from 'routes/utils/computedReport/getComputedReportItems'; -import { getFilterByTagKey } from 'routes/utils/groupBy'; +import { getExcludeTagKey, getFilterByTagKey } from 'routes/utils/groupBy'; import * as queryUtils from 'routes/utils/query'; import type { RootState } from 'store'; import { FetchStatus } from 'store/common'; @@ -369,9 +369,10 @@ const useMapToProps = ({ currency, query }): InstancesStateProps => { }, [currency, query]); return { - hasAccountFilter: queryState?.filter_by?.[accountKey] !== undefined, - hasRegionFilter: queryState?.filter_by?.[regionKey] !== undefined, - hasTagFilter: getFilterByTagKey(queryState) !== undefined, + hasAccountFilter: + queryState?.filter_by?.[accountKey] !== undefined || queryState?.exclude?.[accountKey] !== undefined, + hasRegionFilter: queryState?.filter_by?.[regionKey] !== undefined || queryState?.exclude?.[regionKey] !== undefined, + hasTagFilter: getFilterByTagKey(queryState) !== undefined || getExcludeTagKey(queryState), report, reportError, reportFetchStatus, diff --git a/src/routes/utils/groupBy.ts b/src/routes/utils/groupBy.ts index 85d7d5672..056286b23 100644 --- a/src/routes/utils/groupBy.ts +++ b/src/routes/utils/groupBy.ts @@ -55,6 +55,21 @@ export const getGroupByTagKey = (query: Query) => { return groupByTagKey; }; +export const getExcludeTagKey = (query: Query) => { + let excludeTagKey; + + if (query?.exclude) { + for (const groupBy of Object.keys(query.exclude)) { + const tagIndex = groupBy.indexOf(tagPrefix); + if (tagIndex !== -1) { + excludeTagKey = groupBy.substring(tagIndex + tagPrefix.length) as any; + break; + } + } + } + return excludeTagKey; +}; + export const getFilterByTagKey = (query: Query) => { let filterByTagKey;