diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4b4a37bc8..262506a14 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,10 +7,10 @@ updates: target-branch: "main" schedule: interval: "weekly" - open-pull-requests-limit: 15 labels: - "dependency-bot" commit-message: prefix: "(chore)" pull-request-branch-name: separator: "_" + open-pull-requests-limit: 15 diff --git a/.gitignore b/.gitignore index 441c4666b..4863c1e34 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ report.*.json locales/*[en|de|fr].json .vscode/ .swc/ +.dccache diff --git a/.snyk b/.snyk new file mode 100644 index 000000000..06f3dd723 --- /dev/null +++ b/.snyk @@ -0,0 +1,8 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.25.0 +ignore: {} +patch: {} +exclude: + global: + - .archive + - scripts diff --git a/locales/data.json b/locales/data.json index a3d75fe25..55b9f2079 100644 --- a/locales/data.json +++ b/locales/data.json @@ -12,6 +12,12 @@ "value": "Project (All other costs)" } ], + "assignCostModel": [ + { + "type": 0, + "value": "Assign cost model" + } + ], "aws": [ { "type": 0, @@ -997,6 +1003,18 @@ "value": "Cluster" } ], + "clusterId": [ + { + "type": 0, + "value": "Cluster id" + } + ], + "clusterInfo": [ + { + "type": 0, + "value": "Cluster information" + } + ], "clusters": [ { "type": 0, @@ -3533,7 +3551,7 @@ "docsPlatformProjects": [ { "type": 0, - "value": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest" + "value": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-using-cost-models#understanding-cost-distribution_using-cost-models" } ], "docsTags": [ @@ -10471,6 +10489,12 @@ "value": ")" } ], + "ocpClusterDetails": [ + { + "type": 0, + "value": "OpenShift cluster details" + } + ], "ocpCpuUsageAndRequests": [ { "type": 0, @@ -10561,6 +10585,12 @@ "value": "Memory usage and requests" } ], + "ocpSource": [ + { + "type": 0, + "value": "OpenShift source:" + } + ], "ocpVolumeUsageAndRequests": [ { "type": 0, @@ -11396,6 +11426,12 @@ "value": "Recommended configuration" } ], + "redHatIntegration": [ + { + "type": 0, + "value": "Red Hat integration" + } + ], "redHatStatusUrl": [ { "type": 0, diff --git a/locales/translations.json b/locales/translations.json index 70c695e3c..6e685d10e 100644 --- a/locales/translations.json +++ b/locales/translations.json @@ -1,6 +1,7 @@ { "addProjects": "Add projects", "allOtherProjectCosts": "Project (All other costs)", + "assignCostModel": "Assign cost model", "aws": "Amazon Web Services", "awsComputeTitle": "Compute (EC2) instances usage", "awsCostTrendTitle": "Amazon Web Services cumulative cost comparison ({units})", @@ -60,6 +61,8 @@ "chooseValuePlaceholder": "Choose value", "close": "Close", "cluster": "Cluster", + "clusterId": "Cluster id", + "clusterInfo": "Cluster information", "clusters": "Clusters", "copyToClipboard": "Copy to clipboard", "copyToClipboardSuccessfull": "Successfully copied to clipboard!", @@ -240,7 +243,7 @@ "docsCostModelsDistribution": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-setting-up-cost-models#creating-an-AWS-Azure-cost-model_setting-up-cost-models", "docsCostModelsMarkup": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-setting-up-cost-models#creating-an-AWS-Azure-cost-model_setting-up-cost-models", "docsCostModelsOcp": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-setting-up-cost-models#creating-an-ocp-cost-model_setting-up-cost-models", - "docsPlatformProjects": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest", + "docsPlatformProjects": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-using-cost-models#understanding-cost-distribution_using-cost-models", "docsTags": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/managing_cost_data_using_tagging/assembly-configuring-tags-and-labels-in-cost-management", "docsUsingCostModels": "https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html-single/using_cost_models/index", "download": "Download", @@ -413,6 +416,7 @@ "ocpCloudDashboardCostTitle": "All cloud filtered by OpenShift cost", "ocpCloudDashboardCostTrendTitle": "All cloud filtered by OpenShift cumulative cost comparison ({units})", "ocpCloudDashboardDailyCostTrendTitle": "All cloud filtered by OpenShift daily cost comparison ({units})", + "ocpClusterDetails": "OpenShift cluster details", "ocpCpuUsageAndRequests": "CPU usage and requests", "ocpDailyUsageAndRequestComparison": "Daily usage and requests comparison ({units})", "ocpDashboardCostTitle": "All OpenShift cost", @@ -424,6 +428,7 @@ "ocpDetailsSupplementaryCostDesc": "All costs not directly attributed to the infrastructure. These costs are determined by applying a price list within a cost model to OpenShift cluster metrics.", "ocpDetailsTitle": "OpenShift Details", "ocpMemoryUsageAndRequests": "Memory usage and requests", + "ocpSource": "OpenShift source:", "ocpVolumeUsageAndRequests": "Volume usage and requests", "openShift": "OpenShift", "openShiftCloudInfrastructure": "OpenShift cloud infrastructure", @@ -497,6 +502,7 @@ "readOnlyPermissions": "You have read only permissions", "recommended": "Recommended", "recommendedConfiguration": "Recommended configuration", + "redHatIntegration": "Red Hat integration", "redHatStatusUrl": "https://status.redhat.com", "remove": "Remove", "removeProjects": "Remove projects", diff --git a/package-lock.json b/package-lock.json index b774592d7..5a6a6ebd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,13 @@ "hasInstallScript": true, "license": "GNU AGPLv3", "dependencies": { - "@patternfly/patternfly": "^5.1.0", - "@patternfly/react-charts": "^7.2.0-prerelease.2", + "@patternfly/patternfly": "^5.2.0", + "@patternfly/react-charts": "^7.2.0", "@patternfly/react-component-groups": "^5.0.0", - "@patternfly/react-core": "^5.1.2", - "@patternfly/react-icons": "^5.1.2", - "@patternfly/react-table": "^5.1.2", - "@patternfly/react-tokens": "^5.1.2", + "@patternfly/react-core": "^5.2.0", + "@patternfly/react-icons": "^5.2.0", + "@patternfly/react-table": "^5.2.0", + "@patternfly/react-tokens": "^5.2.0", "@redhat-cloud-services/frontend-components": "^4.2.3", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.7", @@ -33,12 +33,12 @@ "react-dom": "^18.2.0", "react-intl": "^6.6.2", "react-redux": "^9.1.0", - "react-router-dom": "^6.21.3", + "react-router-dom": "^6.22.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", "unleash-proxy-client": "^3.3.1", - "victory-core": "^36.8.4", + "victory-core": "36.8.6", "yaml": "^2.3.4" }, "devDependencies": { @@ -49,18 +49,18 @@ "@redhat-cloud-services/frontend-components-config": "^6.0.9", "@redhat-cloud-services/tsc-transform-imports": "^1.0.7", "@swc/core": "1.3.105", - "@swc/jest": "^0.2.31", - "@testing-library/jest-dom": "^6.4.0", - "@testing-library/react": "^14.1.2", + "@swc/jest": "^0.2.36", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", "@testing-library/user-event": "^14.5.2", - "@types/jest": "^29.5.11", + "@types/jest": "^29.5.12", "@types/qs": "^6.9.11", - "@types/react": "^18.2.48", + "@types/react": "^18.2.53", "@types/react-dom": "^18.2.18", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^6.20.0", - "@typescript-eslint/parser": "^6.20.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^8.56.0", @@ -68,7 +68,7 @@ "eslint-plugin-jest-dom": "^5.1.0", "eslint-plugin-jsdoc": "^48.0.4", "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-patternfly-react": "^5.2.0", + "eslint-plugin-patternfly-react": "^5.2.1", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.33.2", "eslint-plugin-simple-import-sort": "^10.0.0", @@ -83,7 +83,7 @@ "jest-transform-stub": "^2.0.0", "jws": "^4.0.0", "npm-run-all": "^4.1.5", - "prettier": "^3.2.4", + "prettier": "^3.2.5", "rimraf": "^5.0.5", "ts-jest": "^29.1.2", "ts-patch": "^3.1.2", @@ -176,9 +176,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.9.tgz", - "integrity": "sha512-xPndlO7qxiJbn0ATvfXQBjCS7qApc9xmKHArgI/FTEFxXas5dnjC/VqM37lfZun9dclRYcn+YQAr6uDFy0bB2g==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -2160,9 +2160,9 @@ } }, "node_modules/@openshift/dynamic-plugin-sdk-webpack/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2192,9 +2192,9 @@ } }, "node_modules/@openshift/dynamic-plugin-sdk/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2211,17 +2211,17 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@patternfly/patternfly": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.1.0.tgz", - "integrity": "sha512-wzVgL/0xPsmuRKWc6lMNEo5gDcTUtyU231eJSBTapOKXiwBOv2flvLEHPYLO6oDYXO+hwUrVgbcZFWMd1UlLwA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.2.0.tgz", + "integrity": "sha512-phdsXcCRO+JICFXIKtORxSbOWoBr9zRCgtFTKTJ8hAIzm6wEUCdcHZrvsd+SXNR3q/4b/+KlmHUC4Q4KGUiuYw==" }, "node_modules/@patternfly/react-charts": { - "version": "7.2.0-prerelease.10", - "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.2.0-prerelease.10.tgz", - "integrity": "sha512-wQCl6EshZJr0mhnPKdx5mVYHxXUDO4aDIpGBRMK0/y5q27YmBmLvzruQyTKiZ1vXahAZk8CIUnnyIbbfr+fg5A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.2.0.tgz", + "integrity": "sha512-IDg5KfF4VK/4C8qXfnFz9Tsq041RFJlHOGAH5Blb2ZTzTXp7ssZtuPxZvqqKxnIfAoMO+sy9DM8+vgvYPeH0aw==", "dependencies": { - "@patternfly/react-styles": "^5.2.0-prerelease.6", - "@patternfly/react-tokens": "^5.2.0-prerelease.7", + "@patternfly/react-styles": "^5.2.0", + "@patternfly/react-tokens": "^5.2.0", "hoist-non-react-statics": "^3.3.0", "lodash": "^4.17.21", "tslib": "^2.5.0", @@ -2248,11 +2248,6 @@ "react-dom": "^17 || ^18" } }, - "node_modules/@patternfly/react-charts/node_modules/@patternfly/react-tokens": { - "version": "5.2.0-prerelease.7", - "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.2.0-prerelease.7.tgz", - "integrity": "sha512-pMTth24Z1Wltcy64QAQjSL3pJMkze6R1XqwdaJD9frM+F//zvcdAHCBFBcFGLPNQnqgoYRvocptP0utmkB90KQ==" - }, "node_modules/@patternfly/react-component-groups": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@patternfly/react-component-groups/-/react-component-groups-5.0.0.tgz", @@ -2270,13 +2265,13 @@ } }, "node_modules/@patternfly/react-core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.1.2.tgz", - "integrity": "sha512-MeSasp7PgkqlirlbbGuEj6j3KqXVoNkE3c3N6rfxTZOF025ullDJjtzf/L/Fiyht4tH1uNCtkdlpnea6jqTMPg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.2.0.tgz", + "integrity": "sha512-AUd7jccCgE2ZRwVtpEbJNF2Sq1A//ZhRaEQ/QHZiiq8mQRQM0Bkpnx0HdefToZT+TgUIjmPW4AXO3ooRJmt26w==", "dependencies": { - "@patternfly/react-icons": "^5.1.2", - "@patternfly/react-styles": "^5.1.2", - "@patternfly/react-tokens": "^5.1.2", + "@patternfly/react-icons": "^5.2.0", + "@patternfly/react-styles": "^5.2.0", + "@patternfly/react-tokens": "^5.2.0", "focus-trap": "7.5.2", "react-dropzone": "^14.2.3", "tslib": "^2.5.0" @@ -2286,34 +2281,29 @@ "react-dom": "^17 || ^18" } }, - "node_modules/@patternfly/react-core/node_modules/@patternfly/react-styles": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.1.2.tgz", - "integrity": "sha512-rGNo8MstZG2r3yDS1tWwYDctK1qWW5RT1UwKF1DrQfhZ8ruEEL6m2ZXXM0u62hmM3qq4Q8h5lgn/bVHBnOHSLA==" - }, "node_modules/@patternfly/react-icons": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.1.2.tgz", - "integrity": "sha512-hgf3OchvNyCcxqDrRJCkxauFdxENtVX2d6uTkMfOQWP3hs8hqYGHR5S0pe2teJ1SwAs2Rgtf7ezzmzKAouAjkw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.2.0.tgz", + "integrity": "sha512-vklAF2unvtK0trwx9Kk8nf4Xa2+nie4zxaIaQdnjIL7kX6a5SdsewDjlavOC3cRxnibZLQ5HQtpDZ4EmuXm8DQ==", "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, "node_modules/@patternfly/react-styles": { - "version": "5.2.0-prerelease.6", - "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.2.0-prerelease.6.tgz", - "integrity": "sha512-Q8ei2WFoXxVoGGAJUP+nkQ+V0EKvUopcM4kvRgz1akZKrmfPOCwExtErgig75XDp9jEJU8pifLjK7o7t6YnaGA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.2.0.tgz", + "integrity": "sha512-u8in9RSU8YzcT0npgVeiIHi1Bdp7UdER9azWGi7vlJWooRI1hgQjIDpm22wopGFg0h8VOqhfIFWIyvqxuzhW6A==" }, "node_modules/@patternfly/react-table": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.1.2.tgz", - "integrity": "sha512-C+ctkW6oWmdVhGv1rawVlo54baSu5G3ja3ZDtBjVsgMmpsGD0GIBXpvwtFO+OJVeY7T6qXHInMyuW3QNz/0rog==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.2.0.tgz", + "integrity": "sha512-Pd+llSuAU9i1dvteQL1keEXmsQv6d8x4+F2arqGQS1umeOR3lvvycyFac1OboJ4oV2rAX97GVmtZdoJjaqxdhg==", "dependencies": { - "@patternfly/react-core": "^5.1.2", - "@patternfly/react-icons": "^5.1.2", - "@patternfly/react-styles": "^5.1.2", - "@patternfly/react-tokens": "^5.1.2", + "@patternfly/react-core": "^5.2.0", + "@patternfly/react-icons": "^5.2.0", + "@patternfly/react-styles": "^5.2.0", + "@patternfly/react-tokens": "^5.2.0", "lodash": "^4.17.19", "tslib": "^2.5.0" }, @@ -2322,15 +2312,10 @@ "react-dom": "^17 || ^18" } }, - "node_modules/@patternfly/react-table/node_modules/@patternfly/react-styles": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.1.2.tgz", - "integrity": "sha512-rGNo8MstZG2r3yDS1tWwYDctK1qWW5RT1UwKF1DrQfhZ8ruEEL6m2ZXXM0u62hmM3qq4Q8h5lgn/bVHBnOHSLA==" - }, "node_modules/@patternfly/react-tokens": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.1.2.tgz", - "integrity": "sha512-hu/6kEEMnyDc4GiMiaEau3kYq0BZoB3X1tZLcNfg9zQZnOydUgaLcUgR8+IlMF/nVVIqNjZF2RA/5lmKAVz2cQ==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.2.0.tgz", + "integrity": "sha512-ZsrLpStHJQfvUJLIXT+cObJbA3jM4r9iWwULLva0s7DzznXJ6iIACQQfgwDtcSVyM95z5S1a/LHPj/wYgaqUIg==" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", @@ -3021,9 +3006,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", - "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", + "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", "engines": { "node": ">=14.0.0" } @@ -3386,18 +3371,19 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "node_modules/@swc/jest": { - "version": "0.2.31", - "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.31.tgz", - "integrity": "sha512-Gh0Ste380O8KUY1IqsKr+aOvqqs2Loa+WcWWVNwl+lhXqOWK1iTFAP1K0IDfLqAuFP68+D/PxcpBJn21e6Quvw==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.36.tgz", + "integrity": "sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==", "dev": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", + "@swc/counter": "^0.1.3", "jsonc-parser": "^3.2.0" }, "engines": { @@ -3503,9 +3489,9 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.0.tgz", - "integrity": "sha512-GgGT3OR8qhIjk2SBMy51AYDWoMnAyR/cwjZO4SttuBmIQ9wWy9QmVOeaSbgT5Bm0J6qLBaf4+dsJWfisvafoaA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz", + "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==", "dev": true, "dependencies": { "@adobe/css-tools": "^4.3.2", @@ -3621,9 +3607,9 @@ } }, "node_modules/@testing-library/react": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", - "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.2.1.tgz", + "integrity": "sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -3843,9 +3829,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.42", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz", - "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==", + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "dev": true, "dependencies": { "@types/node": "*", @@ -3934,9 +3920,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -4031,9 +4017,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.7.tgz", - "integrity": "sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==", + "version": "20.11.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", + "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", "devOptional": true, "dependencies": { "undici-types": "~5.26.4" @@ -4078,9 +4064,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz", - "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==", + "version": "18.2.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.53.tgz", + "integrity": "sha512-52IHsMDT8qATp9B9zoOyobW8W3/0QhaJQTw1HwRj0UY2yBpCAQ7+S/CqHYQ8niAm3p4ji+rWUQ9UCib0GxQ60w==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4319,16 +4305,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz", - "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/type-utils": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -4366,9 +4352,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4387,15 +4373,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz", - "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { @@ -4415,13 +4401,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", - "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4432,13 +4418,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz", - "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/utils": "6.20.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -4459,9 +4445,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz", - "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4472,13 +4458,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz", - "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4512,9 +4498,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4533,17 +4519,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", - "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", "semver": "^7.5.4" }, "engines": { @@ -4570,9 +4556,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4591,12 +4577,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", - "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -5120,13 +5106,16 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5175,6 +5164,25 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -5231,30 +5239,31 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -5354,9 +5363,9 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "dev": true, "engines": { "node": ">= 0.4" @@ -5835,9 +5844,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -5854,8 +5863,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -5968,9 +5977,9 @@ } }, "node_modules/builtins/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "peer": true, "dependencies": { @@ -6050,9 +6059,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001580", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz", - "integrity": "sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==", + "version": "1.0.30001584", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz", + "integrity": "sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==", "dev": true, "funding": [ { @@ -7104,9 +7113,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7267,9 +7276,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "16.18.76", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.76.tgz", - "integrity": "sha512-/GsO2uv1Z6R42lBr59dtem56gVF/yHKQaScggwU+gLU6DXE25sDmOar4c4IfWb3h+X/7OYZznPOFk7oGF3jQSA==", + "version": "16.18.79", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz", + "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ==", "peer": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -7394,9 +7403,9 @@ "peer": true }, "node_modules/cypress/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "peer": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8101,9 +8110,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.647", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.647.tgz", - "integrity": "sha512-Z/fTNGwc45WrYQhPaEcz5tAJuZZ8G7S/DBnhS6Kgp4BxnS40Z/HqlJ0hHg3Z79IGVzuVartIlTcjw/cQbPLgOw==", + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", "dev": true }, "node_modules/emittery": { @@ -8189,9 +8198,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -8271,6 +8280,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "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", @@ -8360,9 +8383,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -8967,9 +8990,9 @@ } }, "node_modules/eslint-plugin-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9035,9 +9058,9 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9220,9 +9243,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "peer": true, "dependencies": { @@ -9298,9 +9321,9 @@ } }, "node_modules/eslint-plugin-patternfly-react": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-patternfly-react/-/eslint-plugin-patternfly-react-5.2.0.tgz", - "integrity": "sha512-XtIcfi5eTmICwI+hY1hko2tWOfOeom8J/2WQVe1SJR9WTu1VM62yWn0MycROEbE1eFXjwSC64cAccFmWsfMNtw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-patternfly-react/-/eslint-plugin-patternfly-react-5.2.1.tgz", + "integrity": "sha512-eddeSWQcW9BKALW8Ft+7QA8xs3Hbf5YbW09CeOaD5Zdoc3K0PGwfinQkLAeShYQ4Q00266ZUV6jMGhG0pjzmvA==", "dev": true, "dependencies": { "@babel/eslint-parser": "^7.19.1", @@ -9703,9 +9726,9 @@ } }, "node_modules/eslint-plugin-testing-library/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -10315,9 +10338,9 @@ } }, "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -10709,9 +10732,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -10866,15 +10889,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.3.tgz", + "integrity": "sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==", "dependencies": { + "es-errors": "^1.0.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11211,12 +11238,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -11710,9 +11737,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -12005,14 +12032,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12482,12 +12511,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -12623,9 +12652,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14324,9 +14353,9 @@ "dev": true }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -15593,9 +15622,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -15632,9 +15661,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -15835,12 +15864,13 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.7", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz", - "integrity": "sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz", + "integrity": "sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" @@ -16380,15 +16410,16 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" } }, "node_modules/object.hasown": { @@ -17180,9 +17211,9 @@ } }, "node_modules/prettier": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", - "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -17593,11 +17624,11 @@ } }, "node_modules/react-router": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz", - "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", + "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", "dependencies": { - "@remix-run/router": "1.14.2" + "@remix-run/router": "1.15.0" }, "engines": { "node": ">=14.0.0" @@ -17607,12 +17638,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz", - "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", + "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", "dependencies": { - "@remix-run/router": "1.14.2", - "react-router": "6.21.3" + "@remix-run/router": "1.15.0", + "react-router": "6.22.0" }, "engines": { "node": ">=14.0.0" @@ -17730,15 +17761,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -19105,10 +19137,13 @@ } }, "node_modules/swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + }, "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" @@ -19493,12 +19528,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.0.tgz", + "integrity": "sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=18" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -19560,9 +19595,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -19671,9 +19706,9 @@ } }, "node_modules/ts-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -19792,9 +19827,9 @@ } }, "node_modules/ts-patch/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -20324,277 +20359,494 @@ } }, "node_modules/victory-area": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.8.2.tgz", - "integrity": "sha512-LBx4x+j1TgDT0cCb9WM1K4CsmPbYCbsCxMXrlf0QY0MlaQxj7t6xkbB0HknnKm7EHsaiy1rYn3BCizj4pqm0YA==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.9.0.tgz", + "integrity": "sha512-4oiQJe+1hVqYyTS08iUwy6NxOqgKS2vj0laM169r/AMqART002z9YHTd2PB958xD3qXTpUbdi0CmvglpEyOqpQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2", - "victory-vendor": "^36.8.2" + "victory-core": "^36.9.0", + "victory-vendor": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-area/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-axis": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.8.2.tgz", - "integrity": "sha512-uG14Jpx0o6BGjpCR9uxgDFkc0bV1b2vgCfPakCP2ZF0wGUtMScBQIkioG4M2KU8O2/k6LMluJIYzpC3WP5UXHQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.9.0.tgz", + "integrity": "sha512-tFNr5S9QInDFxgYRJuLmkInFjqWmnAHhYEP+sGp8yv0y9Amiq/Vkeign2ITSxEVn/TOqSOiNV82UCxR+3rn2xg==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-axis/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-bar": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.8.2.tgz", - "integrity": "sha512-rjdZXVjiaYYjXukMR5GwiioBZKqMfCEo0IgTEu2d2MT3wNUhPaXCmrqZ1NRBW8W+ULI33TwISXK42TifRF9IGA==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.9.0.tgz", + "integrity": "sha512-t2XbSi1CXgwVkCipkQLxggKxMHv5dI5FG6EwBxuK6gSeouwZCdkWczgjX3X/vpNnNql/N/KOCAOmhv4KbgA8KQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2", - "victory-vendor": "^36.8.2" + "victory-core": "^36.9.0", + "victory-vendor": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-bar/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-box-plot": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-36.8.2.tgz", - "integrity": "sha512-GN/2pJnuCsJHrLNT8XKVm82myZWtD8wg5ksG7k2xxhwosnAEWmaACsqUp7lB55pgSFFoWQ8xPfLTsm7ZuMv7Ag==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-36.9.0.tgz", + "integrity": "sha512-esOYzfo0Tyv43fRRQWCfOgIX3aJmKOcKWuspVuTZJX02uT/PXN6aAQRKIjHZYS/0t9grpWLb5ecksuvy6Qalng==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2", - "victory-vendor": "^36.8.2" + "victory-core": "^36.9.0", + "victory-vendor": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-box-plot/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-brush-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.8.2.tgz", - "integrity": "sha512-dIZGLF5lre3MmtBWo93Ao/qnkuFff1SyhRyAxN8pcfIJg+V5ndgok5lNhJMR3pr6tbS/enw7hMufAgJYIUxgpQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.9.0.tgz", + "integrity": "sha512-t25+S6b6IVzKfNIokEfKndIN0wtrlkBazDJcPOn7ogSbEQx6mJfPn8yP6R2C5qXhZcSv9LaD6vcc5+IYw21FMg==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-brush-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.8.2.tgz", - "integrity": "sha512-Oijd31G9hIwmJtazvAWDLLM7O8CFhlo8qtLLAJkvvPd+nr0Q2FHr5EE23nlcOYfZsJqqYAO++SEcwoK4veRw1g==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.9.0.tgz", + "integrity": "sha512-gnSAJYLXd5HDda6yxlfBYk0GZXqXLRnDDBjKpyEFrYDYoZDaaWom2zXx+eNsdxZW1JxGsBWDFT/JImeAwOogcw==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-axis": "^36.8.2", - "victory-core": "^36.8.2", - "victory-polar-axis": "^36.8.2", - "victory-shared-events": "^36.8.2" + "victory-axis": "^36.9.0", + "victory-core": "^36.9.0", + "victory-polar-axis": "^36.9.0", + "victory-shared-events": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-chart/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-core": { - "version": "36.8.4", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.8.4.tgz", - "integrity": "sha512-/bE44CKw7e0vwGDAlVLPbMMQgdV6EUh7O6ARwHzGe7FRRDpgstpZME3TOmodOSCI42wvkErlFpyO1ek1ZRWXDw==", + "version": "36.8.6", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.8.6.tgz", + "integrity": "sha512-fT8SYy4wmtNTloV3npRC9pwEG8UkFF48ZmNGKywykpRuJXHVgV1GXeFEDH8/Ra0qHACVciR9Tcjk6X89GTRw4A==", "dependencies": { "lodash": "^4.17.21", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.8.4" + "victory-vendor": "^36.8.6" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-create-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.8.2.tgz", - "integrity": "sha512-GA65xVwpktB5xABweNyKGplg48cRiLmO6w6UMHEPcdOXb65zfdiyN0Gq6OxurV+dUiHr89UUeWy1yBOYcYJRCA==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.9.0.tgz", + "integrity": "sha512-2lO81PW35HlcjsuwZOTwRT2nHHHGNzIZBsMWg88KsgAajN6ojQYzeH11azABTk5mAfmO0txFuuSFvpqneTuHHA==", "dependencies": { "lodash": "^4.17.19", - "victory-brush-container": "^36.8.2", - "victory-core": "^36.8.2", - "victory-cursor-container": "^36.8.2", - "victory-selection-container": "^36.8.2", - "victory-voronoi-container": "^36.8.2", - "victory-zoom-container": "^36.8.2" + "victory-brush-container": "^36.9.0", + "victory-core": "^36.9.0", + "victory-cursor-container": "^36.9.0", + "victory-selection-container": "^36.9.0", + "victory-voronoi-container": "^36.9.0", + "victory-zoom-container": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-create-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-cursor-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.8.2.tgz", - "integrity": "sha512-1g+pmjnYyFamAkwjK4KWmz+/80GBAueQLHgyGjwGkrkDRWWjx2XNh9bRoi+erXIOdKtimOhlDMYSjgvrha6eNw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.9.0.tgz", + "integrity": "sha512-yG33xBgaM/eprQSzAbypTD/fdjJvUCEZhijvcOrDNSKpHJ/hM6xKZXgVnSAxuHk33K8Dpx4xmjIc9R/sYVN23A==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-cursor-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-group": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.8.2.tgz", - "integrity": "sha512-sYF8qIxsPEbKl3EbiFbpJCWfB8wztR8bbbjRL2w4PHixNmXIe8vjYUXBUNQn0WLmr7yENY02Arr0ts8hOMCPIw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.9.0.tgz", + "integrity": "sha512-DOvOb8ei6diW1XIjh5tv/eHB2tldaryiHGAA87DKnTJApMCUpjFrVSqUNycAIh3UH9/K/sqFzbQlNdHO5vG61g==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.2", - "victory-shared-events": "^36.8.2" + "victory-core": "^36.9.0", + "victory-shared-events": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-group/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-legend": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.8.2.tgz", - "integrity": "sha512-boTPtlF6CTPd9tRBF8zdiFm3tO7rfmF/WiPgOqZVHq+wU/R6d8grWFntJSpoYl/AZbMJLvp1526dW5S8aCsSTQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.9.0.tgz", + "integrity": "sha512-tc6YSskNasm/oW3GTxsbfIyHsKzn4DDWRAT4VPVw0z5RzsZy+7WW+H2ku34Ev6k6Zk0wa0ahSYIiFgFV1feoOw==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-legend/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-line": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.8.2.tgz", - "integrity": "sha512-ZK60REFU/8R6wEksI4rrrgAUJeBS8DfbLTc9oAAVC91uLWgkykDjrkT7Oe2bXww2BuiWde7uYZm49oGngydNrw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.9.0.tgz", + "integrity": "sha512-TJR5EwXs1Cp8Zg8FUPILyNgBuIkffya0pbHQ72/EYUA+BOqovjZe3/Qcl409SyRy6SOkyawxsSqhkjrEsODuBg==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2", - "victory-vendor": "^36.8.2" + "victory-core": "^36.9.0", + "victory-vendor": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-line/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-pie": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.8.2.tgz", - "integrity": "sha512-+Y0h1+CFYFH/3Bwl0JFQKJb0sqmExIknDF6wQG3+t50Ye81L8qPrXupilt1L/6Zmc9UhVW1XWBCcAKU3iC2Osw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.9.0.tgz", + "integrity": "sha512-GPMvod6L8VcEUcEaOgjIRshbUYUN58FGcbMAvnz0yyiuqIR8eIp+VXnnOe1P2mZg35pUrcoHzKqRTsQGQAQYSw==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2", - "victory-vendor": "^36.8.2" + "victory-core": "^36.9.0", + "victory-vendor": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-pie/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-polar-axis": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.8.2.tgz", - "integrity": "sha512-3vL0iS4RN8EKwCTORl3aKWnWC3SJd8V0xn4epb7O8Zqnx9jbxMTUpq1AlfZvzm3GlcR50vm8DtnnkH6z3lLcyw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.9.0.tgz", + "integrity": "sha512-nhxL4+fGjyLNnSoj6FD3fZSnAco9k5xsRbE0WXSRrr0RQCsBGUjN/ErOL19LRbSwh39fs3m+SGIC0GPkAPC1nQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-polar-axis/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-scatter": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.8.2.tgz", - "integrity": "sha512-Za6UBANmIv9ffAZ/eeZO7WDKB7CGXkGpnlVWPv2tIV+80C2TtuORUWe6aUmMImdk3gJHWjp2fELYnJs4WLwzMQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.9.0.tgz", + "integrity": "sha512-q03QFbApuaureOT9+1m3GSS9SSupnoJWy3UwQhRNB1i4WtIQF5G89E6R/LJmTDvzJmf0bj+p5DMhyujBk36mig==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-scatter/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-selection-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.8.2.tgz", - "integrity": "sha512-sf5vShOQKCbIydx8F2uvWQitddTZbjuHVmf8n7fH7DefxQRCc1xB8M1gk+4qEaBCmYM75de5AAD5vtaVG0ZwJQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.9.0.tgz", + "integrity": "sha512-jXl84CSxE29a6MEOv0LzK4bh51VdvZuWLif7VBILRIFSTB11Rg16mcfgDX0xanmkZCcjC2e18tlDW3eN2x7LxQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-selection-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-shared-events": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.8.2.tgz", - "integrity": "sha512-WKpcAC5g6s297lYtOq723UARVhVYc+bDrhm1Nup9qv+YPnM7sltQWQ+cEMO93Nine9SSMb03Dq1cXJILH+h06Q==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.9.0.tgz", + "integrity": "sha512-Ucwg31n3XldQ5nOS79ZJoBu96j3wE/v9bVrbQBTrMO/GSw/pchGl5NNgWYfywRFNNBDsMJKYRHzsXaM9Ki0fSQ==", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-shared-events/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-stack": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.8.2.tgz", - "integrity": "sha512-9bLtUd6DlIHaRdKNJE51rxKIOQLMonhSSd0+KkXMJ8pn5cPBjoWc2UpQ0oXzi7TO5ODClYng8nOlMMAJwfgKRw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.9.0.tgz", + "integrity": "sha512-BLhCVFGzcG3Dn/eaJ9vlQCTMbBjeuKhJqZnAMNbcJNQBYJB4VtpR6sbZdWxvouZ9k30SSD5AzgpEwwTv8ooVyw==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.2", - "victory-shared-events": "^36.8.2" + "victory-core": "^36.9.0", + "victory-shared-events": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-stack/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-tooltip": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.8.2.tgz", - "integrity": "sha512-rLKw9wQJ+2OaYIID6TRpqGPFHBn4lMth+mP1RweHHsUIoovxhEFFa6thapkVdWsIWIvU0W4AQP3eTCmMV5dPxw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.9.0.tgz", + "integrity": "sha512-774IH8aT4PmP9VBGsyMFdJag7XsbYEzRZUmpUPZ47KTuESwUAMTfjGghPJjTQ1eXdajpehD9/oo+Jo9rnca7sQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-tooltip/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-vendor": { - "version": "36.8.4", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.8.4.tgz", - "integrity": "sha512-30dOGZVjrOraxzflyZozjwYBYnIjhX2c18kuVNiiZlRHx++8zXGptlXSAm57M87Y2WLN10XGbn8kTXntqteKUw==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.0.tgz", + "integrity": "sha512-n1A0J1xgwHb5nh56M0d8XlQabMCeTktvEqqr5WNAHspWEsVVGGaaaRg0TcQUtyC1akX0Cox1lMZdIv0Jl7o0ew==", "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", @@ -20613,29 +20865,53 @@ } }, "node_modules/victory-voronoi-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.8.2.tgz", - "integrity": "sha512-lB6u47z7ndGuSURhDXaYlGhL+jRaQIIsWqyIQK9HueWhxlErcI45kdXijjhRORy9kSsvxLZteOJOflF5Ri3rHg==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.9.0.tgz", + "integrity": "sha512-cEackV1/+Nmq/A3SC9A8gh09AzwQJyWsmGo3osWs2hnDGlxB0gGuj3bRQ/ZNGh0Vzm14Dlhs1u21v7Rbh3IGfQ==", "dependencies": { "delaunay-find": "0.0.6", "lodash": "^4.17.19", - "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.2", - "victory-tooltip": "^36.8.2" + "victory-core": "^36.9.0", + "victory-tooltip": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-voronoi-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-zoom-container": { - "version": "36.8.2", - "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.8.2.tgz", - "integrity": "sha512-4kgr/gFi//htBzSzHPJMDQqUYLTGN9z7xs5Ct351y6WXIhMK/6lHEONe349/FxlT+feBb0Whq56B0eeJZP4HcQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.9.0.tgz", + "integrity": "sha512-kODhPyJooO8WRiz9Fpch/RVV4uXoMyYNHjzbeX6t88n25A86w5I5DhUIM+GUGlU7AGvuwLMCa/Te8P9B9JXDaQ==", "dependencies": { "lodash": "^4.17.19", - "prop-types": "^15.8.1", - "victory-core": "^36.8.2" + "victory-core": "^36.9.0" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-zoom-container/node_modules/victory-core": { + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.9.0.tgz", + "integrity": "sha512-RawQkhPQaV4Oi+8KLHm8mzEwxL6mirdQOcn5+BaGrUnP9MK7jjEdjzNvDESuJdk/bDuemXvWEEriG+ofDmvzfQ==", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "^36.9.0" }, "peerDependencies": { "react": ">=16.6.0" @@ -20713,9 +20989,9 @@ } }, "node_modules/webpack": { - "version": "5.90.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz", - "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==", + "version": "5.90.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", + "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -21258,16 +21534,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.1" }, "engines": { "node": ">= 0.4" diff --git a/package.json b/package.json index d6960607b..f1c067436 100644 --- a/package.json +++ b/package.json @@ -50,13 +50,13 @@ "verify": "npm-run-all build lint test" }, "dependencies": { - "@patternfly/patternfly": "^5.1.0", - "@patternfly/react-charts": "^7.2.0-prerelease.2", + "@patternfly/patternfly": "^5.2.0", + "@patternfly/react-charts": "^7.2.0", "@patternfly/react-component-groups": "^5.0.0", - "@patternfly/react-core": "^5.1.2", - "@patternfly/react-icons": "^5.1.2", - "@patternfly/react-table": "^5.1.2", - "@patternfly/react-tokens": "^5.1.2", + "@patternfly/react-core": "^5.2.0", + "@patternfly/react-icons": "^5.2.0", + "@patternfly/react-table": "^5.2.0", + "@patternfly/react-tokens": "^5.2.0", "@redhat-cloud-services/frontend-components": "^4.2.3", "@redhat-cloud-services/frontend-components-notifications": "^4.1.0", "@redhat-cloud-services/frontend-components-translations": "^3.2.7", @@ -73,12 +73,12 @@ "react-dom": "^18.2.0", "react-intl": "^6.6.2", "react-redux": "^9.1.0", - "react-router-dom": "^6.21.3", + "react-router-dom": "^6.22.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "typesafe-actions": "^5.1.0", "unleash-proxy-client": "^3.3.1", - "victory-core": "^36.8.4", + "victory-core": "36.8.6", "yaml": "^2.3.4" }, "devDependencies": { @@ -89,18 +89,18 @@ "@redhat-cloud-services/frontend-components-config": "^6.0.9", "@redhat-cloud-services/tsc-transform-imports": "^1.0.7", "@swc/core": "1.3.105", - "@swc/jest": "^0.2.31", - "@testing-library/jest-dom": "^6.4.0", - "@testing-library/react": "^14.1.2", + "@swc/jest": "^0.2.36", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", "@testing-library/user-event": "^14.5.2", - "@types/jest": "^29.5.11", + "@types/jest": "^29.5.12", "@types/qs": "^6.9.11", - "@types/react": "^18.2.48", + "@types/react": "^18.2.53", "@types/react-dom": "^18.2.18", "@types/react-redux": "^7.1.33", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "^6.20.0", - "@typescript-eslint/parser": "^6.20.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "aphrodite": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "eslint": "^8.56.0", @@ -108,7 +108,7 @@ "eslint-plugin-jest-dom": "^5.1.0", "eslint-plugin-jsdoc": "^48.0.4", "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-patternfly-react": "^5.2.0", + "eslint-plugin-patternfly-react": "^5.2.1", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.33.2", "eslint-plugin-simple-import-sort": "^10.0.0", @@ -123,7 +123,7 @@ "jest-transform-stub": "^2.0.0", "jws": "^4.0.0", "npm-run-all": "^4.1.5", - "prettier": "^3.2.4", + "prettier": "^3.2.5", "rimraf": "^5.0.5", "ts-jest": "^29.1.2", "ts-patch": "^3.1.2", diff --git a/src/api/providers.ts b/src/api/providers.ts index fed633825..0967e62cf 100644 --- a/src/api/providers.ts +++ b/src/api/providers.ts @@ -3,6 +3,9 @@ import axios from 'axios'; import type { PagedMetaData, PagedResponse } from './api'; export interface ProviderAuthentication { + credentials?: { + cluster_id?: string; + }; uuid?: string; provider_resource_name: string; } @@ -45,6 +48,7 @@ export interface Provider { current_month_data?: boolean; customer?: ProviderCustomer; has_data?: boolean; + id?: string; infrastructure?: ProviderInfrastructure; name?: string; paused?: boolean; diff --git a/src/components/featureFlags/featureFlags.tsx b/src/components/featureFlags/featureFlags.tsx index edd9a0a08..6eefac1de 100644 --- a/src/components/featureFlags/featureFlags.tsx +++ b/src/components/featureFlags/featureFlags.tsx @@ -6,6 +6,7 @@ import { featureFlagsActions } from 'store/featureFlags'; // eslint-disable-next-line no-shadow export const enum FeatureToggle { + clusterInfo = 'cost-management.ui.cluster-info', // https://issues.redhat.com/browse/COST-4559 exports = 'cost-management.ui.exports', // Async exports https://issues.redhat.com/browse/COST-2223 finsights = 'cost-management.ui.finsights', // RHEL support for FINsights https://issues.redhat.com/browse/COST-3306 ibm = 'cost-management.ui.ibm', // IBM https://issues.redhat.com/browse/COST-935 @@ -52,6 +53,7 @@ const useFeatureFlags = () => { await updateContext({ userId }).then(() => { dispatch( featureFlagsActions.setFeatureFlags({ + isClusterInfoFeatureEnabled: client.isEnabled(FeatureToggle.clusterInfo), isExportsFeatureEnabled: client.isEnabled(FeatureToggle.exports), isFinsightsFeatureEnabled: client.isEnabled(FeatureToggle.finsights), isIbmFeatureEnabled: client.isEnabled(FeatureToggle.ibm), diff --git a/src/locales/messages.ts b/src/locales/messages.ts index d9938f865..239eb5372 100644 --- a/src/locales/messages.ts +++ b/src/locales/messages.ts @@ -12,6 +12,11 @@ export default defineMessages({ description: 'Project (All other costs)', id: 'allOtherProjectCosts', }, + assignCostModel: { + defaultMessage: 'Assign cost model', + description: 'Assign cost model', + id: 'assignCostModel', + }, aws: { defaultMessage: 'Amazon Web Services', description: 'Amazon Web Services', @@ -350,6 +355,16 @@ export default defineMessages({ description: 'Cluster', id: 'cluster', }, + clusterId: { + defaultMessage: 'Cluster id', + description: 'Cluster id', + id: 'clusterId', + }, + clusterInfo: { + defaultMessage: 'Cluster information', + description: 'Cluster information', + id: 'clusterInfo', + }, clusters: { defaultMessage: 'Clusters', description: 'Clusters', @@ -1429,8 +1444,10 @@ export default defineMessages({ id: 'docsCostModelsOcp', }, docsPlatformProjects: { - defaultMessage: 'https://access.redhat.com/documentation/en-us/cost_management_service/1-latest', - description: 'https://access.redhat.com/documentation/en-us/cost_management_service/1-latest', + defaultMessage: + 'https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-using-cost-models#understanding-cost-distribution_using-cost-models', + description: + 'https://access.redhat.com/documentation/en-us/cost_management_service/1-latest/html/using_cost_models/assembly-using-cost-models#understanding-cost-distribution_using-cost-models', id: 'docsPlatformProjects', }, docsTags: { @@ -2623,6 +2640,11 @@ export default defineMessages({ description: 'All cloud filtered by OpenShift daily cost comparison ({units})', id: 'ocpCloudDashboardDailyCostTrendTitle', }, + ocpClusterDetails: { + defaultMessage: 'OpenShift cluster details', + description: 'OpenShift cluster details', + id: 'ocpClusterDetails', + }, ocpCpuUsageAndRequests: { defaultMessage: 'CPU usage and requests', description: 'CPU usage and requests', @@ -2680,6 +2702,11 @@ export default defineMessages({ description: 'Memory usage and requests', id: 'ocpMemoryUsageAndRequests', }, + ocpSource: { + defaultMessage: 'OpenShift source:', + description: 'OpenShift source', + id: 'ocpSource', + }, ocpVolumeUsageAndRequests: { defaultMessage: 'Volume usage and requests', description: 'Volume usage and requests', @@ -3088,6 +3115,11 @@ export default defineMessages({ description: 'Recommended configuration', id: 'recommendedConfiguration', }, + redHatIntegration: { + defaultMessage: 'Red Hat integration', + description: 'Red Hat integration', + id: 'redHatIntegration', + }, redHatStatusUrl: { defaultMessage: 'https://status.redhat.com', description: 'Red Hat status url for cloud services', diff --git a/src/routes/components/charts/historicalCostChart/__snapshots__/historicalCostChart.test.tsx.snap b/src/routes/components/charts/historicalCostChart/__snapshots__/historicalCostChart.test.tsx.snap index 8e5594d5f..72375b858 100644 --- a/src/routes/components/charts/historicalCostChart/__snapshots__/historicalCostChart.test.tsx.snap +++ b/src/routes/components/charts/historicalCostChart/__snapshots__/historicalCostChart.test.tsx.snap @@ -51,13 +51,13 @@ exports[`null previous and current reports are handled 1`] = ` { public render() { const { + clusterInfoComponent, costDistribution, costType, currency, @@ -313,6 +315,7 @@ class BreakdownBase extends React.Component { ? router.location.state.details.breadcrumbPath : undefined } + clusterInfoComponent={clusterInfoComponent} costDistribution={costDistribution} costType={costType} currency={currency} diff --git a/src/routes/details/components/breakdown/breakdownHeader.styles.ts b/src/routes/details/components/breakdown/breakdownHeader.styles.ts index d60ab3995..08225ef34 100644 --- a/src/routes/details/components/breakdown/breakdownHeader.styles.ts +++ b/src/routes/details/components/breakdown/breakdownHeader.styles.ts @@ -28,6 +28,10 @@ export const styles = { costType: { marginTop: global_spacer_md.var, }, + description: { + color: global_disabled_color_100.value, + fontSize: global_FontSize_xs.value, + }, header: { backgroundColor: global_BackgroundColor_100.var, paddingLeft: global_spacer_lg.var, @@ -42,10 +46,6 @@ export const styles = { headerContentRight: { display: 'flex', }, - infoDescription: { - color: global_disabled_color_100.value, - fontSize: global_FontSize_xs.value, - }, tabs: { display: 'flex', }, diff --git a/src/routes/details/components/breakdown/breakdownHeader.tsx b/src/routes/details/components/breakdown/breakdownHeader.tsx index d93551d6d..99981c7a2 100644 --- a/src/routes/details/components/breakdown/breakdownHeader.tsx +++ b/src/routes/details/components/breakdown/breakdownHeader.tsx @@ -18,6 +18,7 @@ import { Currency } from 'routes/components/currency'; import { TagLink } from 'routes/details/components/tag'; import { getGroupByCostCategory, getGroupByOrgValue, getGroupByTagKey } from 'routes/utils/groupBy'; import { createMapStateToProps } from 'store/common'; +import { featureFlagsSelectors } from 'store/featureFlags'; import { getTotalCostDateRangeString } from 'utils/dates'; import { formatCurrency } from 'utils/format'; import { awsCategoryKey, orgUnitIdKey, tagKey } from 'utils/props'; @@ -28,6 +29,7 @@ import { styles } from './breakdownHeader.styles'; interface BreakdownHeaderOwnProps extends RouterComponentProps { breadcrumb?: string; + clusterInfoComponent?: React.ReactNode; costDistribution?: string; costType?: string; currency?: string; @@ -48,7 +50,7 @@ interface BreakdownHeaderOwnProps extends RouterComponentProps { } interface BreakdownHeaderStateProps { - // TBD... + isClusterInfoFeatureEnabled?: boolean; } interface BreakdownHeaderDispatchProps { @@ -89,12 +91,14 @@ class BreakdownHeader extends React.Component { public render() { const { + clusterInfoComponent, costDistribution, costType, currency, description, groupBy, intl, + isClusterInfoFeatureEnabled, onCostDistributionSelect, onCostTypeSelect, onCurrencySelect, @@ -153,7 +157,12 @@ class BreakdownHeader extends React.Component {
{intl.formatMessage(messages.breakdownTitle, { value: title })} - {description && <div style={styles.infoDescription}>{description}</div>} + {description && ( + <div> + <span style={styles.description}>{description}</span> + {clusterInfoComponent && isClusterInfoFeatureEnabled ? clusterInfoComponent : null} + </div> + )} {showCostDistribution && (
@@ -190,8 +199,10 @@ class BreakdownHeader extends React.Component { } } -const mapStateToProps = createMapStateToProps(() => { - return {}; +const mapStateToProps = createMapStateToProps(state => { + return { + isClusterInfoFeatureEnabled: featureFlagsSelectors.selectIsClusterInfoFeatureEnabled(state), + }; }); const mapDispatchToProps: BreakdownHeaderDispatchProps = { diff --git a/src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx new file mode 100644 index 000000000..5fd6547dc --- /dev/null +++ b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfo.tsx @@ -0,0 +1,47 @@ +import './modal.scss'; + +import { Button, ButtonVariant, Modal } from '@patternfly/react-core'; +import messages from 'locales/messages'; +import React, { useState } from 'react'; +import { useIntl } from 'react-intl'; + +import { ClusterInfoContent } from './clusterInfoContent'; +import { styles } from './modal.styles'; + +interface ClusterInfoOwnProps { + clusterId?: string; +} + +type ClusterInfoProps = ClusterInfoOwnProps; + +const ClusterInfo: React.FC = ({ clusterId }: ClusterInfoProps) => { + const intl = useIntl(); + const [isOpen, setIsOpen] = useState(false); + + const handleClose = () => { + setIsOpen(false); + }; + + const handleOnClick = () => { + setIsOpen(!isOpen); + }; + + return ( + <> + + + + + + ); +}; + +export { ClusterInfo }; diff --git a/src/routes/details/ocpBreakdown/clusterInfo/clusterInfoContent.tsx b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfoContent.tsx new file mode 100644 index 000000000..3597b2ec5 --- /dev/null +++ b/src/routes/details/ocpBreakdown/clusterInfo/clusterInfoContent.tsx @@ -0,0 +1,126 @@ +import { Text, TextContent, TextList, TextListItem, TextVariants } from '@patternfly/react-core'; +import type { Providers } from 'api/providers'; +import { ProviderType } from 'api/providers'; +import { getProvidersQuery } from 'api/queries/providersQuery'; +import type { AxiosError } from 'axios'; +import messages from 'locales/messages'; +import React, { useEffect } from 'react'; +import { useIntl } from 'react-intl'; +import { useDispatch, useSelector } from 'react-redux'; +import type { AnyAction } from 'redux'; +import type { ThunkDispatch } from 'redux-thunk'; +import { routes } from 'routes'; +import { NotAvailable } from 'routes/components/page/notAvailable'; +import { LoadingState } from 'routes/components/state/loadingState'; +import { filterProviders } from 'routes/utils/providers'; +import type { RootState } from 'store'; +import { FetchStatus } from 'store/common'; +import { providersActions, providersQuery, providersSelectors } from 'store/providers'; +import { formatPath, getReleasePath } from 'utils/paths'; + +import { styles } from './modal.styles'; + +interface ClusterInfoContentOwnProps { + clusterId?: string; +} + +export interface ClusterInfoContentStateProps { + providers: Providers; + providersError: AxiosError; + providersFetchStatus: FetchStatus; + providersQueryString: string; +} + +export interface ClusterInfoContentMapProps { + // TBD... +} + +type ClusterInfoContentProps = ClusterInfoContentOwnProps; + +const ClusterInfoContent: React.FC = ({ clusterId }: ClusterInfoContentProps) => { + const intl = useIntl(); + + const { providers, providersError, providersFetchStatus } = useMapToProps(); + + const title = intl.formatMessage(messages.optimizations); + + if (providersError) { + return ; + } + + // Filter OCP providers to skip an extra API request + const ocpProviders = filterProviders(providers, ProviderType.ocp); + const clusterInfo = ocpProviders?.data?.find( + cluster => cluster.authentication?.credentials?.cluster_id === clusterId + ); + + const release = getReleasePath(); + + return ( +
+ {providersFetchStatus === FetchStatus.inProgress ? ( +
+ +
+ ) : ( + + {intl.formatMessage(messages.clusterId)} + + + {clusterId} + {intl.formatMessage(messages.ocpClusterDetails)} + + {clusterInfo?.cost_models?.length === 0 && ( + + {intl.formatMessage(messages.assignCostModel)} + + )} + + {clusterInfo && ( + <> + {intl.formatMessage(messages.redHatIntegration)} + + + {intl.formatMessage(messages.ocpSource)} + {clusterInfo.name} + + + + )} + + )} +
+ ); +}; + +// eslint-disable-next-line no-empty-pattern +const useMapToProps = (): ClusterInfoContentStateProps => { + const dispatch: ThunkDispatch = useDispatch(); + + // PermissionsWraper has already made an API request using ProviderType.all + 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) + ); + + useEffect(() => { + if (!providersError && providersFetchStatus !== FetchStatus.inProgress) { + dispatch(providersActions.fetchProviders(ProviderType.all, providersQueryString)); + } + }, []); + + return { + providers, + providersError, + providersFetchStatus, + providersQueryString, + }; +}; + +export { ClusterInfoContent }; diff --git a/src/routes/details/ocpBreakdown/clusterInfo/modal.scss b/src/routes/details/ocpBreakdown/clusterInfo/modal.scss new file mode 100644 index 000000000..cfc10503f --- /dev/null +++ b/src/routes/details/ocpBreakdown/clusterInfo/modal.scss @@ -0,0 +1,16 @@ +@import url("~@patternfly/patternfly/base/patternfly-variables.css"); + +.modalOverride { + & .pf-v5-c-modal-box__body { + margin-top: var(--pf-v5-global--spacer--lg); + } + & .pf-v5-c-modal-box__footer { + display: none; + } +} + +.textContentOverride { + &.pf-v5-c-content dl { + // grid-column-gap: 1rem; + } +} diff --git a/src/routes/details/ocpBreakdown/clusterInfo/modal.styles.ts b/src/routes/details/ocpBreakdown/clusterInfo/modal.styles.ts new file mode 100644 index 000000000..44efd2022 --- /dev/null +++ b/src/routes/details/ocpBreakdown/clusterInfo/modal.styles.ts @@ -0,0 +1,20 @@ +import global_BackgroundColor_light_100 from '@patternfly/react-tokens/dist/js/global_BackgroundColor_light_100'; +import global_FontSize_md from '@patternfly/react-tokens/dist/js/global_FontSize_md'; +import global_FontSize_xs from '@patternfly/react-tokens/dist/js/global_FontSize_xs'; +import type React from 'react'; + +export const styles = { + clusterInfo: { + fontSize: global_FontSize_xs.value, + }, + container: { + overflow: 'auto', + }, + loading: { + backgroundColor: global_BackgroundColor_light_100.value, + minHeight: '520px', + }, + spacing: { + marginRight: global_FontSize_md.value, + }, +} as { [className: string]: React.CSSProperties }; diff --git a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx index a9071240c..f18cc0ab2 100644 --- a/src/routes/details/ocpBreakdown/ocpBreakdown.tsx +++ b/src/routes/details/ocpBreakdown/ocpBreakdown.tsx @@ -26,6 +26,7 @@ import type { RouterComponentProps } from 'utils/router'; import { withRouter } from 'utils/router'; import { getCostDistribution, getCurrency } from 'utils/sessionStorage'; +import { ClusterInfo } from './clusterInfo/clusterInfo'; import { CostOverview } from './costOverview'; import { HistoricalData } from './historicalData'; import { OcpBreakdownOptimizations } from './ocpBreakdownOptimizations'; @@ -96,6 +97,7 @@ const mapStateToProps = createMapStateToProps : undefined, costDistribution, costOverviewComponent: ( state[stateKey]; export const selectHasFeatureFlags = (state: RootState) => selectFeatureFlagsState(state).hasFeatureFlags; +export const selectIsClusterInfoFeatureEnabled = (state: RootState) => + selectFeatureFlagsState(state).isClusterInfoFeatureEnabled; export const selectIsExportsFeatureEnabled = (state: RootState) => selectFeatureFlagsState(state).isExportsFeatureEnabled; export const selectIsFinsightsFeatureEnabled = (state: RootState) => diff --git a/src/store/providers/providersActions.ts b/src/store/providers/providersActions.ts index d88ca495f..980014c6c 100644 --- a/src/store/providers/providersActions.ts +++ b/src/store/providers/providersActions.ts @@ -6,8 +6,11 @@ import type { ThunkAction } from 'store/common'; import { FetchStatus } from 'store/common'; import { createAction } from 'typesafe-actions'; +import type { RootState } from '../rootReducer'; import { getFetchId } from './providersCommon'; -import { selectProvidersError, selectProvidersFetchStatus } from './providersSelectors'; +import { selectProviders, selectProvidersError, selectProvidersFetchStatus } from './providersSelectors'; + +const expirationMS = 30 * 60 * 1000; // 30 minutes interface ProvidersActionMeta { fetchId: string; @@ -19,11 +22,7 @@ export const fetchProvidersFailure = createAction('providers/fetch/failure') { - const state = getState(); - const fetchError = selectProvidersError(state, reportType, reportQueryString); - const fetchStatus = selectProvidersFetchStatus(state, reportType, reportQueryString); - - if (fetchError || fetchStatus === FetchStatus.inProgress) { + if (!isReportExpired(getState(), reportType, reportQueryString)) { return; } @@ -43,4 +42,20 @@ export function fetchProviders(reportType: ProviderType, reportQueryString: stri }; } +function isReportExpired(state: RootState, reportType: ProviderType, reportQueryString: string) { + const providers = selectProviders(state, reportType, reportQueryString); + const fetchError = selectProvidersError(state, reportType, reportQueryString); + const fetchStatus = selectProvidersFetchStatus(state, reportType, reportQueryString); + if (fetchError || fetchStatus === FetchStatus.inProgress) { + return false; + } + + if (!providers) { + return true; + } + + const now = Date.now(); + return now > providers.timeRequested + expirationMS; +} + export const clearProviderFailure = createAction('providers/clear/failure'); diff --git a/src/store/providers/providersReducer.ts b/src/store/providers/providersReducer.ts index 35ce5cc71..8c08243e1 100644 --- a/src/store/providers/providersReducer.ts +++ b/src/store/providers/providersReducer.ts @@ -7,8 +7,12 @@ import { getType } from 'typesafe-actions'; import { fetchProvidersFailure, fetchProvidersRequest, fetchProvidersSuccess } from './providersActions'; +export interface CachedProviders extends Providers { + timeRequested: number; +} + export type ProvidersState = Readonly<{ - byId: Map; + byId: Map; errors: Map; fetchStatus: Map; }>; @@ -40,6 +44,7 @@ export function providersReducer(state = defaultState, action: ProvidersAction): fetchStatus: new Map(state.fetchStatus).set(action.meta.fetchId, FetchStatus.complete), byId: new Map(state.byId).set(action.meta.fetchId, { ...action.payload, + timeRequested: Date.now(), }), errors: new Map(state.errors).set(action.meta.fetchId, null), };