diff --git a/eslint.config.cjs b/eslint.config.cjs index e5166a7..0d97193 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -275,6 +275,11 @@ module.exports = defineConfig([ 'arrow-body-style': ['error', 'as-needed'], 'import/no-cycle': ['error'], 'react-hooks/exhaustive-deps': 'off', + 'react-hooks/set-state-in-effect': 'off', + 'react-hooks/purity': 'off', + 'react-hooks/refs': 'off', + 'react-hooks/immutability': 'off', + 'react-hooks/preserve-manual-memoization': 'off', 'no-case-declarations': 'off', 'comma-dangle': ['error', 'always-multiline'], }, diff --git a/package-lock.json b/package-lock.json index 90731bf..45f7819 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,26 +11,26 @@ "@ant-design/icons": "^5.3.7", "@ant-design/v5-patch-for-react-19": "^1.0.3", "@reduxjs/toolkit": "^2.2.6", - "@sentry/cli": "^2.33.1", - "@sentry/react": "^8.24.0", + "@sentry/cli": "^3.1.0", + "@sentry/react": "^10.38.0", "antd": "^5.19.1", "chart.js": "^4.4.9", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-plugin-datalabels": "^2.2.0", "chartjs-plugin-zoom": "^2.0.1", "csv-parse": "^6.1.0", - "date-fns": "^3.6.0", + "date-fns": "^4.1.0", "date-fns-tz": "^3.1.3", "formik": "^2.4.6", "howler": "2.2.4", "html-to-image": "^1.11.13", "html2canvas": "^1.4.1", "jspdf": "^4.0.0", - "lightweight-charts": "^4.1.7", + "lightweight-charts": "^5.1.0", "lodash-es": "^4.17.21", "nanoid": "^5.1.5", - "p-queue": "^8.0.1", - "p-retry": "^6.2.1", + "p-queue": "^9.1.0", + "p-retry": "^7.1.1", "pluralize": "8.0.0", "qs": "^6.13.1", "rc-picker": "^4.6.13", @@ -41,7 +41,7 @@ "react-infinite-viewer": "^0.28.1", "react-number-format": "^5.4.2", "react-redux": "^9.1.2", - "react-router-dom": "^6.30.3", + "react-router": "^7.13.0", "react-selecto": "^1.26.3", "redux-persist": "6.0.0", "styled-components": "^6.1.15", @@ -52,7 +52,7 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", "@eslint/js": "^9.35.0", - "@testing-library/jest-dom": "^5.17.0", + "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.1", "@types/howler": "^2.2.12", @@ -66,7 +66,7 @@ "@typescript-eslint/eslint-plugin": "^8.46.1", "@typescript-eslint/parser": "^8.46.1", "@vitejs/plugin-react": "^5.1.2", - "@vitest/coverage-v8": "^3.0.8", + "@vitest/coverage-v8": "^4.0.18", "babel-plugin-date-fns": "^2.0.0", "babel-plugin-import": "^1.13.8", "babel-plugin-react-compiler": "^1.0.0", @@ -74,19 +74,19 @@ "cross-env": "^10.1.0", "eslint": "^9.35.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-lodash": "7.4.0", + "eslint-plugin-lodash": "^8.0.0", "eslint-plugin-react": "^7.34.3", - "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-testing-library": "^7.8.1", "jsdom": "^28.0.0", "lightningcss": "^1.30.2", "madge": "^8.0.0", "prettier": "^3.5.3", "prop-types": "15.8.1", - "rollup-plugin-visualizer": "^5.14.0", + "rollup-plugin-visualizer": "^6.0.5", "typescript": "^5.9.3", "vite": "^7.3.1", - "vitest": "^3.0.8" + "vitest": "^4.0.18" }, "engines": { "node": ">=20", @@ -103,18 +103,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@ant-design/colors": { "version": "7.2.1", "license": "MIT", @@ -2166,96 +2154,6 @@ "node": ">=12" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "dev": true, @@ -2462,13 +2360,6 @@ } } }, - "node_modules/@remix-run/router": { - "version": "1.23.2", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.2", "dev": true, @@ -2514,127 +2405,269 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.38.0.tgz", + "integrity": "sha512-UOJtYmdcxHCcV0NPfXFff/a95iXl/E0EhuQ1y0uE0BuZDMupWSF5t2BgC4HaE5Aw3RTjDF3XkSHWoIF6ohy7eA==", "license": "MIT", "dependencies": { - "@sentry/core": "8.55.0" + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.38.0.tgz", + "integrity": "sha512-JXneg9zRftyfy1Fyfc39bBlF/Qd8g4UDublFFkVvdc1S6JQPlK+P6q22DKz3Pc8w3ySby+xlIq/eTu9Pzqi4KA==", "license": "MIT", "dependencies": { - "@sentry/core": "8.55.0" + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.38.0.tgz", + "integrity": "sha512-YWIkL6/dnaiQyFiZXJ/nN+NXGv/15z45ia86bE/TMq01CubX/DUOilgsFz0pk2v/pg3tp/U2MskLO9Hz0cnqeg==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry/core": "8.55.0" + "@sentry-internal/browser-utils": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.38.0.tgz", + "integrity": "sha512-OXWM9jEqNYh4VTvrMu7v+z1anz+QKQ/fZXIZdsO7JTT2lGNZe58UUMeoq386M+Saxen8F9SUH7yTORy/8KI5qw==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "8.55.0", - "@sentry/core": "8.55.0" + "@sentry-internal/replay": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry/browser": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.38.0.tgz", + "integrity": "sha512-3phzp1YX4wcQr9mocGWKbjv0jwtuoDBv7+Y6Yfrys/kwyaL84mDLjjQhRf4gL5SX7JdYkhBp4WaiNlR0UC4kTA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry-internal/feedback": "8.55.0", - "@sentry-internal/replay": "8.55.0", - "@sentry-internal/replay-canvas": "8.55.0", - "@sentry/core": "8.55.0" + "@sentry-internal/browser-utils": "10.38.0", + "@sentry-internal/feedback": "10.38.0", + "@sentry-internal/replay": "10.38.0", + "@sentry-internal/replay-canvas": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry/cli": { - "version": "2.58.4", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.1.0.tgz", + "integrity": "sha512-ngnx6E8XjXpg1uzma45INfKCS8yurb/fl3cZdXTCa2wmek8b4N6WIlmOlTKFTBrV54OauF6mloJxAlpuzoQR6g==", "hasInstallScript": true, "license": "FSL-1.1-MIT", "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", "progress": "^2.0.3", "proxy-from-env": "^1.1.0", + "undici": "^6.22.0", "which": "^2.0.2" }, "bin": { "sentry-cli": "bin/sentry-cli" }, "engines": { - "node": ">= 10" + "node": ">= 18" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.58.4", - "@sentry/cli-linux-arm": "2.58.4", - "@sentry/cli-linux-arm64": "2.58.4", - "@sentry/cli-linux-i686": "2.58.4", - "@sentry/cli-linux-x64": "2.58.4", - "@sentry/cli-win32-arm64": "2.58.4", - "@sentry/cli-win32-i686": "2.58.4", - "@sentry/cli-win32-x64": "2.58.4" + "@sentry/cli-darwin": "3.1.0", + "@sentry/cli-linux-arm": "3.1.0", + "@sentry/cli-linux-arm64": "3.1.0", + "@sentry/cli-linux-i686": "3.1.0", + "@sentry/cli-linux-x64": "3.1.0", + "@sentry/cli-win32-arm64": "3.1.0", + "@sentry/cli-win32-i686": "3.1.0", + "@sentry/cli-win32-x64": "3.1.0" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.58.4", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.1.0.tgz", + "integrity": "sha512-xT1WlCHenGGO29Lq/wKaIthdqZzNzZhlPs7dXrzlBx9DyA2Jnl0g7WEau0oWi8GyJGVRXCJMiCydR//Tb5qVwA==", "license": "FSL-1.1-MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/@sentry/cli-linux-arm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.1.0.tgz", + "integrity": "sha512-kbP3/8/Ct/Jbm569KDXbFIyMyPypIegObvIT7LdSsfdYSZdBd396GV7vUpSGKiLUVVN0xjn8OqQ48AVGfjmuMg==", + "cpu": [ + "arm" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.1.0.tgz", + "integrity": "sha512-Jm/iHLKiHxrZYlAq2tT07amiegEVCOAQT9Unilr6djjcZzS2tcI9ThSRQvjP9tFpFRKop+NyNGE3XHXf69r00g==", + "cpu": [ + "arm64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-linux-i686": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.1.0.tgz", + "integrity": "sha512-f/PK/EGK5vFOy7LC4Riwb+BEE20Nk7RbEFEMjvRq26DpETCrZYUGlbpIKvJFKOaUmr79aAkFCA/EjJiYfcQP2Q==", + "cpu": [ + "x86", + "ia32" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.1.0.tgz", + "integrity": "sha512-T+v8x1ujhixZrOrH0sVhsW6uLwK4n0WS+B+5xV46WqUKe32cbYotursp2y53ROjgat8SQDGeP/VnC0Qa3Y2fEA==", + "cpu": [ + "x64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-win32-arm64": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.1.0.tgz", + "integrity": "sha512-2DIPq6aW2DC34EDC9J0xwD+9BpFnKdFGdIcQUZMS+5pXlU6V7o8wpZxZAM8TdYNmsPkkQGKp7Dhl/arWpvNgrw==", + "cpu": [ + "arm64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.1.0.tgz", + "integrity": "sha512-2NuywEiiZn6xJ1yAV2xjv/nuHiy6kZU5XR3RSAIrPdEZD1nBoMsH/gB2FufQw58Ziz/7otFcX+vtGpJjbIT5mQ==", + "cpu": [ + "x86", + "ia32" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.1.0.tgz", + "integrity": "sha512-Ip405Yqdrr+l9TImsZOJz6c9Nb4zvXcmtOIBKLHc9cowpfXfmlqsHbDp7Xh4+k4L0uLr9i+8ilgQ6ypcuF4UCg==", + "cpu": [ + "x64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/cli/node_modules/undici": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "license": "MIT", + "engines": { + "node": ">=18.17" } }, "node_modules/@sentry/core": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.38.0.tgz", + "integrity": "sha512-1pubWDZE5y5HZEPMAZERP4fVl2NH3Ihp1A+vMoVkb3Qc66Diqj1WierAnStlZP7tCx0TBa0dK85GTW/ZFYyB9g==", "license": "MIT", "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry/react": { - "version": "8.55.0", + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.38.0.tgz", + "integrity": "sha512-3UiKo6QsqTyPGUt0XWRY9KLaxc/cs6Kz4vlldBSOXEL6qPDL/EfpwNJT61osRo81VFWu8pKu7ZY2bvLPryrnBQ==", "license": "MIT", "dependencies": { - "@sentry/browser": "8.55.0", - "@sentry/core": "8.55.0", - "hoist-non-react-statics": "^3.3.2" + "@sentry/browser": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" }, "peerDependencies": { "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, - "node_modules/@sinclair/typebox": { - "version": "0.34.48", - "dev": true, - "license": "MIT" - }, "node_modules/@standard-schema/spec": { "version": "1.1.0", "license": "MIT" @@ -2663,26 +2696,32 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "dev": true, "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", + "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { - "node": ">=8", + "node": ">=14", "npm": ">=6", "yarn": ">=1" } }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, "node_modules/@testing-library/react": { "version": "16.3.2", "dev": true, @@ -2848,6 +2887,8 @@ }, "node_modules/@types/chai": { "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { @@ -2857,6 +2898,8 @@ }, "node_modules/@types/deep-eql": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, @@ -2884,65 +2927,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "dev": true, @@ -3008,27 +2992,10 @@ "@types/react": "^19.2.0" } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, "node_modules/@types/stylis": { "version": "4.2.7", "license": "MIT" }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jest": "*" - } - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "license": "MIT", @@ -3038,19 +3005,6 @@ "version": "0.0.6", "license": "MIT" }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "dev": true, - "license": "MIT" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.54.0", "dev": true, @@ -3293,30 +3247,29 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", + "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "ast-v8-to-istanbul": "^0.3.3", - "debug": "^4.4.1", + "@vitest/utils": "4.0.18", + "ast-v8-to-istanbul": "^0.3.10", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "std-env": "^3.9.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.1", + "obug": "^2.1.1", + "std-env": "^3.10.0", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.2.4", - "vitest": "3.2.4" + "@vitest/browser": "4.0.18", + "vitest": "4.0.18" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -3325,35 +3278,40 @@ } }, "node_modules/@vitest/expect": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.4", + "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" + "magic-string": "^0.30.21" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -3365,36 +3323,41 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^2.0.0" + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", "pathe": "^2.0.3" }, "funding": { @@ -3402,24 +3365,24 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -3516,19 +3479,9 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -3795,6 +3748,8 @@ }, "node_modules/assertion-error": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { @@ -3983,17 +3938,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/browserslist": { "version": "4.28.1", "dev": true, @@ -4049,14 +3993,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/cac": { - "version": "6.7.14", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { "version": "1.0.8", "dev": true, @@ -4152,32 +4088,15 @@ } }, "node_modules/chai": { - "version": "5.3.3", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, "engines": { "node": ">=18" } }, - "node_modules/chalk": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/chart.js": { "version": "4.5.1", "license": "MIT", @@ -4214,28 +4133,6 @@ "chart.js": ">=3.2.0" } }, - "node_modules/check-error": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/classnames": { "version": "2.5.1", "license": "MIT" @@ -4370,6 +4267,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "license": "MIT", @@ -4913,7 +4823,9 @@ } }, "node_modules/date-fns": { - "version": "3.6.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", "funding": { "type": "github", @@ -4933,6 +4845,7 @@ }, "node_modules/debug": { "version": "4.4.3", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4951,14 +4864,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-eql": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "dev": true, @@ -5215,7 +5120,8 @@ "node_modules/dom-accessibility-api": { "version": "0.5.16", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dompurify": { "version": "3.3.1", @@ -5384,6 +5290,8 @@ }, "node_modules/es-module-lexer": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, @@ -5678,7 +5586,9 @@ } }, "node_modules/eslint-plugin-lodash": { - "version": "7.4.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lodash/-/eslint-plugin-lodash-8.0.0.tgz", + "integrity": "sha512-7DA8485FolmWRzh+8t4S8Pzin2TTuWfb0ZW3j/2fYElgk82ZanFz8vDcvc4BBPceYdX1p/za+tkbO68maDBGGw==", "dev": true, "license": "MIT", "dependencies": { @@ -5688,7 +5598,7 @@ "node": ">=10" }, "peerDependencies": { - "eslint": ">=2" + "eslint": ">=9.0.0" } }, "node_modules/eslint-plugin-react": { @@ -5723,11 +5633,20 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" @@ -5953,22 +5872,6 @@ "version": "5.0.4", "license": "MIT" }, - "node_modules/expect": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/expect-type": { "version": "1.3.0", "dev": true, @@ -6065,17 +5968,6 @@ "node": ">=6" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "5.0.0", "dev": true, @@ -6478,6 +6370,23 @@ "node": ">= 0.4" } }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "license": "BSD-3-Clause", @@ -6540,17 +6449,6 @@ "node": ">= 14" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "license": "MIT", @@ -6905,14 +6803,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-number-object": { "version": "1.1.1", "dev": true, @@ -7111,334 +7001,79 @@ "is-docker": "^2.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-diff": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "30.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", + "node_modules/isarray": { + "version": "2.0.5", "dev": true, "license": "MIT" }, - "node_modules/jest-mock": { - "version": "30.2.0", + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-regex-util": { - "version": "30.0.1", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-util": { - "version": "30.2.0", + "node_modules/istanbul-reports": { + "version": "3.2.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", + "node_modules/iterator.prototype": { + "version": "1.1.5", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.3", + "node_modules/jackspeak": { + "version": "3.4.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/js-tokens": { @@ -7670,7 +7305,9 @@ } }, "node_modules/lightweight-charts": { - "version": "4.2.3", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/lightweight-charts/-/lightweight-charts-5.1.0.tgz", + "integrity": "sha512-jEAYR4ODYeyNZcWUigsoLTl52rbPmgXnvd5FLIv/ZoA/2sSDw63YKnef8n4yhzum7W926yHeFwlm7ididKb7YQ==", "license": "Apache-2.0", "dependencies": { "fancy-canvas": "2.1.0" @@ -7749,11 +7386,6 @@ "loose-envify": "cli.js" } }, - "node_modules/loupe": { - "version": "3.2.1", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "5.1.1", "dev": true, @@ -7832,13 +7464,15 @@ } }, "node_modules/magicast": { - "version": "0.3.5", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" } }, "node_modules/make-dir": { @@ -7878,18 +7512,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/micromatch": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "dev": true, @@ -7978,6 +7600,7 @@ }, "node_modules/ms": { "version": "2.1.3", + "dev": true, "license": "MIT" }, "node_modules/nanoid": { @@ -8001,40 +7624,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-releases": { "version": "2.0.27", "dev": true, @@ -8157,6 +7746,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/onetime": { "version": "5.1.2", "dev": true, @@ -8303,39 +7903,43 @@ } }, "node_modules/p-queue": { - "version": "8.1.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.1.0.tgz", + "integrity": "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "p-timeout": "^7.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { - "version": "6.2.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", + "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" + "is-network-error": "^1.1.0" }, "engines": { - "node": ">=16.17" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { - "version": "6.1.4", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8423,17 +8027,11 @@ }, "node_modules/pathe": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/performance-now": { "version": "2.1.0", "license": "MIT", @@ -9349,31 +8947,25 @@ } }, "node_modules/react-router": { - "version": "6.30.3", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.2" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.30.3", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.2", - "react-router": "6.30.3" - }, - "engines": { - "node": ">=14.0.0" + "react": ">=18", + "react-dom": ">=18" }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/react-selecto": { @@ -9619,13 +9211,6 @@ "dev": true, "license": "ISC" }, - "node_modules/retry": { - "version": "0.13.1", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/rgbcolor": { "version": "1.0.1", "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", @@ -9682,11 +9267,13 @@ } }, "node_modules/rollup-plugin-visualizer": { - "version": "5.14.0", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-6.0.5.tgz", + "integrity": "sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==", "dev": true, "license": "MIT", "dependencies": { - "open": "^8.4.0", + "open": "^8.0.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" @@ -9698,7 +9285,7 @@ "node": ">=18" }, "peerDependencies": { - "rolldown": "1.x", + "rolldown": "1.x || ^1.0.0-beta", "rollup": "2.x || 3.x || 4.x" }, "peerDependenciesMeta": { @@ -9874,6 +9461,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "dev": true, @@ -10020,14 +9613,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -10044,25 +9629,6 @@ "node": ">=0.10.0" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/stackback": { "version": "0.0.2", "dev": true, @@ -10327,22 +9893,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/styled-components": { "version": "6.3.8", "license": "MIT", @@ -10493,19 +10043,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/test-exclude": { - "version": "7.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/text-segmentation": { "version": "1.0.3", "license": "MIT", @@ -10534,9 +10071,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -10580,24 +10122,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/tinypool": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, "node_modules/tinyrainbow": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", "dev": true, "license": "MIT", "engines": { @@ -10620,17 +10148,6 @@ "dev": true, "license": "MIT" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/toggle-selection": { "version": "1.0.6", "license": "MIT" @@ -11020,27 +10537,6 @@ } } }, - "node_modules/vite-node": { - "version": "3.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite/node_modules/fdir": { "version": "6.5.0", "dev": true, @@ -11069,49 +10565,50 @@ } }, "node_modules/vitest": { - "version": "3.2.4", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, @@ -11119,13 +10616,19 @@ "@edge-runtime/vm": { "optional": true }, - "@types/debug": { + "@opentelemetry/api": { "optional": true }, "@types/node": { "optional": true }, - "@vitest/browser": { + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { "optional": true }, "@vitest/ui": { @@ -11496,6 +10999,29 @@ "toposort": "^2.0.2", "type-fest": "^2.19.0" } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } } } } diff --git a/package.json b/package.json index 1afe121..1681265 100644 --- a/package.json +++ b/package.json @@ -12,26 +12,26 @@ "@ant-design/icons": "^5.3.7", "@ant-design/v5-patch-for-react-19": "^1.0.3", "@reduxjs/toolkit": "^2.2.6", - "@sentry/cli": "^2.33.1", - "@sentry/react": "^8.24.0", + "@sentry/cli": "^3.1.0", + "@sentry/react": "^10.38.0", "antd": "^5.19.1", "chart.js": "^4.4.9", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-plugin-datalabels": "^2.2.0", "chartjs-plugin-zoom": "^2.0.1", "csv-parse": "^6.1.0", - "date-fns": "^3.6.0", + "date-fns": "^4.1.0", "date-fns-tz": "^3.1.3", "formik": "^2.4.6", "howler": "2.2.4", "html-to-image": "^1.11.13", "html2canvas": "^1.4.1", "jspdf": "^4.0.0", - "lightweight-charts": "^4.1.7", + "lightweight-charts": "^5.1.0", "lodash-es": "^4.17.21", "nanoid": "^5.1.5", - "p-queue": "^8.0.1", - "p-retry": "^6.2.1", + "p-queue": "^9.1.0", + "p-retry": "^7.1.1", "pluralize": "8.0.0", "qs": "^6.13.1", "rc-picker": "^4.6.13", @@ -42,7 +42,7 @@ "react-infinite-viewer": "^0.28.1", "react-number-format": "^5.4.2", "react-redux": "^9.1.2", - "react-router-dom": "^6.30.3", + "react-router": "^7.13.0", "react-selecto": "^1.26.3", "redux-persist": "6.0.0", "styled-components": "^6.1.15", @@ -103,7 +103,7 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", "@eslint/js": "^9.35.0", - "@testing-library/jest-dom": "^5.17.0", + "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.1", "@types/howler": "^2.2.12", @@ -117,7 +117,7 @@ "@typescript-eslint/eslint-plugin": "^8.46.1", "@typescript-eslint/parser": "^8.46.1", "@vitejs/plugin-react": "^5.1.2", - "@vitest/coverage-v8": "^3.0.8", + "@vitest/coverage-v8": "^4.0.18", "babel-plugin-date-fns": "^2.0.0", "babel-plugin-import": "^1.13.8", "babel-plugin-react-compiler": "^1.0.0", @@ -125,18 +125,18 @@ "cross-env": "^10.1.0", "eslint": "^9.35.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-lodash": "7.4.0", + "eslint-plugin-lodash": "^8.0.0", "eslint-plugin-react": "^7.34.3", - "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-testing-library": "^7.8.1", "jsdom": "^28.0.0", "lightningcss": "^1.30.2", "madge": "^8.0.0", "prettier": "^3.5.3", "prop-types": "15.8.1", - "rollup-plugin-visualizer": "^5.14.0", + "rollup-plugin-visualizer": "^6.0.5", "typescript": "^5.9.3", "vite": "^7.3.1", - "vitest": "^3.0.8" + "vitest": "^4.0.18" } } diff --git a/src/App.tsx b/src/App.tsx index 8cfbea5..b213196 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,7 +3,7 @@ import AntdApp from 'antd/es/app' import ConfigProvider from 'antd/es/config-provider' import enUS from 'antd/es/locale/en_US' import { useSelector } from 'react-redux' -import { RouterProvider } from 'react-router-dom' +import { RouterProvider } from 'react-router/dom' import { ThemeProvider } from 'styled-components' import { getMultiSiteRouter } from './router/multiSiteRouter' diff --git a/src/Components/Breadcrumbs/Breadcrumbs.tsx b/src/Components/Breadcrumbs/Breadcrumbs.tsx index 22ab9cf..ae7ede8 100644 --- a/src/Components/Breadcrumbs/Breadcrumbs.tsx +++ b/src/Components/Breadcrumbs/Breadcrumbs.tsx @@ -1,5 +1,5 @@ import { FC } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { BackText, diff --git a/src/Components/Card/LabeledCard.tsx b/src/Components/Card/LabeledCard.tsx index 8959bba..3eacb7a 100644 --- a/src/Components/Card/LabeledCard.tsx +++ b/src/Components/Card/LabeledCard.tsx @@ -2,7 +2,7 @@ import Tooltip from 'antd/es/tooltip' import _includes from 'lodash/includes' import _isString from 'lodash/isString' import { ReactNode } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { CardContainer, CardTitle } from './Card.styles' import { LabeledCardBody, LabeledCardHeaderLabel } from './LabeledCard.styles' diff --git a/src/Components/Container/ContentBox/ContainerControlsBox.tsx b/src/Components/Container/ContentBox/ContainerControlsBox.tsx index 1684803..9aa2b1a 100644 --- a/src/Components/Container/ContentBox/ContainerControlsBox.tsx +++ b/src/Components/Container/ContentBox/ContainerControlsBox.tsx @@ -17,7 +17,7 @@ import _map from 'lodash/map' import _values from 'lodash/values' import { useEffect, useState, FC } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useLocation, useNavigate } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router' import { TIME } from '../../../constants' import useSubtractedTime from '../../../hooks/useSubtractedTime' diff --git a/src/Components/Dashboard/ActiveIncidentsCard/ActiveIncidentsCard.tsx b/src/Components/Dashboard/ActiveIncidentsCard/ActiveIncidentsCard.tsx index 392626b..e44678c 100644 --- a/src/Components/Dashboard/ActiveIncidentsCard/ActiveIncidentsCard.tsx +++ b/src/Components/Dashboard/ActiveIncidentsCard/ActiveIncidentsCard.tsx @@ -2,7 +2,7 @@ import _first from 'lodash/first' import _head from 'lodash/head' import _isArray from 'lodash/isArray' import { memo } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetListThingsQuery } from '@/app/services/api' import { getAlertsForDevices, getAlertsSortedByGeneralFields } from '@/app/utils/alertUtils' diff --git a/src/Components/Explorer/DetailsView/DetailsView.tsx b/src/Components/Explorer/DetailsView/DetailsView.tsx index e4bf655..25eb526 100644 --- a/src/Components/Explorer/DetailsView/DetailsView.tsx +++ b/src/Components/Explorer/DetailsView/DetailsView.tsx @@ -13,7 +13,7 @@ import _startsWith from 'lodash/startsWith' import _values from 'lodash/values' import { useEffect, useState, FC } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useLocation, useParams } from 'react-router-dom' +import { useLocation, useParams } from 'react-router' import { useGetListThingsQuery } from '../../../app/services/api' import { diff --git a/src/Components/Explorer/DetailsView/DetailsViewContent.tsx b/src/Components/Explorer/DetailsView/DetailsViewContent.tsx index a4b62de..8fb6fb2 100644 --- a/src/Components/Explorer/DetailsView/DetailsViewContent.tsx +++ b/src/Components/Explorer/DetailsView/DetailsViewContent.tsx @@ -8,7 +8,7 @@ import _map from 'lodash/map' import _size from 'lodash/size' import { FC } from 'react' import { useSelector } from 'react-redux' -import { Link, useNavigate, useParams } from 'react-router-dom' +import { Link, useNavigate, useParams } from 'react-router' import { selectPendingSubmissions } from '../../../app/slices/actionsSlice' import { selectSelectedContainers, selectSelectedSockets } from '../../../app/slices/devicesSlice' diff --git a/src/Components/Explorer/DetailsView/SelectedSocketsList/SelectedSocketsList.tsx b/src/Components/Explorer/DetailsView/SelectedSocketsList/SelectedSocketsList.tsx index 5cdc2f7..99b21b2 100644 --- a/src/Components/Explorer/DetailsView/SelectedSocketsList/SelectedSocketsList.tsx +++ b/src/Components/Explorer/DetailsView/SelectedSocketsList/SelectedSocketsList.tsx @@ -13,7 +13,7 @@ import pluralize from 'pluralize' import { useState } from 'react' import { FC } from 'react' import { useSelector } from 'react-redux' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { selectSelectedContainers, diff --git a/src/Components/Explorer/List/ContainerCard/ContainerCard.tsx b/src/Components/Explorer/List/ContainerCard/ContainerCard.tsx index 2cd6ef5..88a4dd4 100644 --- a/src/Components/Explorer/List/ContainerCard/ContainerCard.tsx +++ b/src/Components/Explorer/List/ContainerCard/ContainerCard.tsx @@ -5,7 +5,7 @@ import _isBoolean from 'lodash/isBoolean' import _isString from 'lodash/isString' import { memo, MouseEvent } from 'react' import { useSelector } from 'react-redux' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { selectSelectedContainers, diff --git a/src/Components/Explorer/List/ListView.tsx b/src/Components/Explorer/List/ListView.tsx index af88466..d7bc7fd 100644 --- a/src/Components/Explorer/List/ListView.tsx +++ b/src/Components/Explorer/List/ListView.tsx @@ -4,7 +4,7 @@ import _find from 'lodash/find' import _isEmpty from 'lodash/isEmpty' import { FC, useEffect, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useLocation, useSearchParams } from 'react-router-dom' +import { useLocation, useSearchParams } from 'react-router' import { DeviceTable } from './components/DeviceTable' import { ListViewHeader } from './components/ListViewHeader' diff --git a/src/Components/Explorer/List/ListViewFilter/ListViewFilter.tsx b/src/Components/Explorer/List/ListViewFilter/ListViewFilter.tsx index 9af687d..fccc321 100644 --- a/src/Components/Explorer/List/ListViewFilter/ListViewFilter.tsx +++ b/src/Components/Explorer/List/ListViewFilter/ListViewFilter.tsx @@ -11,7 +11,7 @@ import _map from 'lodash/map' import _toPairs from 'lodash/toPairs' import _toString from 'lodash/toString' import { useState } from 'react' -import { useSearchParams } from 'react-router-dom' +import { useSearchParams } from 'react-router' import { SEVERITY_KEY } from '../../../../constants/alerts' diff --git a/src/Components/Explorer/List/LvCabinetCard/LvCabinetCard.styles.ts b/src/Components/Explorer/List/LvCabinetCard/LvCabinetCard.styles.ts index 1165c5f..e7e668a 100644 --- a/src/Components/Explorer/List/LvCabinetCard/LvCabinetCard.styles.ts +++ b/src/Components/Explorer/List/LvCabinetCard/LvCabinetCard.styles.ts @@ -1,5 +1,5 @@ import Row from 'antd/es/row' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { DeviceCardContainer } from '../ListView.styles' diff --git a/src/Components/Explorer/List/TemperatureSensorCard/TemperatureSensorCard.tsx b/src/Components/Explorer/List/TemperatureSensorCard/TemperatureSensorCard.tsx index df85740..17817c6 100644 --- a/src/Components/Explorer/List/TemperatureSensorCard/TemperatureSensorCard.tsx +++ b/src/Components/Explorer/List/TemperatureSensorCard/TemperatureSensorCard.tsx @@ -4,7 +4,7 @@ import Tooltip from 'antd/es/tooltip' import _find from 'lodash/find' import type { MouseEvent } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { devicesSlice, selectSelectedDevices } from '../../../../app/slices/devicesSlice' import { diff --git a/src/Components/Explorer/LvCabinetDetailsView/LvCabinetDetailsView.tsx b/src/Components/Explorer/LvCabinetDetailsView/LvCabinetDetailsView.tsx index 67a56e9..7391000 100644 --- a/src/Components/Explorer/LvCabinetDetailsView/LvCabinetDetailsView.tsx +++ b/src/Components/Explorer/LvCabinetDetailsView/LvCabinetDetailsView.tsx @@ -5,7 +5,7 @@ import _isNil from 'lodash/isNil' import _keys from 'lodash/keys' import _map from 'lodash/map' import { useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetListThingsQuery } from '../../../app/services/api' import { selectSelectedLVCabinets } from '../../../app/slices/devicesSlice' diff --git a/src/Components/Farms/FarmCard/StatBox/AlertsBox.tsx b/src/Components/Farms/FarmCard/StatBox/AlertsBox.tsx index ace9a5d..eb4baca 100644 --- a/src/Components/Farms/FarmCard/StatBox/AlertsBox.tsx +++ b/src/Components/Farms/FarmCard/StatBox/AlertsBox.tsx @@ -2,7 +2,7 @@ import Tooltip from 'antd/es/tooltip' import _map from 'lodash/map' import _values from 'lodash/values' import { FC } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { SEVERITY } from '../../../../constants/alerts' diff --git a/src/Components/GateKeeper/GateKeeper.tsx b/src/Components/GateKeeper/GateKeeper.tsx index 1fd25ec..caa0756 100644 --- a/src/Components/GateKeeper/GateKeeper.tsx +++ b/src/Components/GateKeeper/GateKeeper.tsx @@ -1,7 +1,7 @@ import _isString from 'lodash/isString' import { FC, ReactElement, useEffect } from 'react' import { useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { selectToken } from '../../app/slices/authSlice' import { getSignInRedirectUrl } from '../../app/utils/authUtils' diff --git a/src/Components/Header/AlarmsHeader/AlarmsHeader.tsx b/src/Components/Header/AlarmsHeader/AlarmsHeader.tsx index 728b530..9726ab8 100644 --- a/src/Components/Header/AlarmsHeader/AlarmsHeader.tsx +++ b/src/Components/Header/AlarmsHeader/AlarmsHeader.tsx @@ -3,7 +3,7 @@ import _head from 'lodash/head' import _isEmpty from 'lodash/isEmpty' import { useEffect, useRef } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { getIsAlertEnabled } from '../../../app/slices/themeSlice' import { setIsAlertEnabled } from '../../../app/store' diff --git a/src/Components/Header/AlertsHeader/AlertsHeader.tsx b/src/Components/Header/AlertsHeader/AlertsHeader.tsx index f1755e9..0f5e3e0 100644 --- a/src/Components/Header/AlertsHeader/AlertsHeader.tsx +++ b/src/Components/Header/AlertsHeader/AlertsHeader.tsx @@ -1,4 +1,4 @@ -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { getTotalAlerts } from '../HeaderStats/HeaderStats.helper' import BellIcon from '../Icons/BellIcon' diff --git a/src/Components/Header/Header.tsx b/src/Components/Header/Header.tsx index 8ec8e4d..3b75d68 100644 --- a/src/Components/Header/Header.tsx +++ b/src/Components/Header/Header.tsx @@ -4,7 +4,7 @@ import type { MenuProps } from 'antd/es/menu' import type { ReactNode } from 'react' import { useEffect, useRef, useState } from 'react' import { useDispatch } from 'react-redux' -import { Link, useLocation, useNavigate } from 'react-router-dom' +import { Link, useLocation, useNavigate } from 'react-router' import useTimezone from '../../hooks/useTimezone' diff --git a/src/Components/LineChart/LineChart.tsx b/src/Components/LineChart/LineChart.tsx index 9563dc5..edb2dcd 100644 --- a/src/Components/LineChart/LineChart.tsx +++ b/src/Components/LineChart/LineChart.tsx @@ -2,6 +2,10 @@ import { format } from 'date-fns/format' import { getTimezoneOffset } from 'date-fns-tz' import { createChart, + DeepPartial, + LineSeries, + LineStyleOptions, + SeriesOptionsCommon, type IChartApi, type LineData, type MouseEventHandler, @@ -236,7 +240,7 @@ const LineChart = ({ const dataset = data.datasets[i] const { borderColor, borderWidth } = dataset - const lineSeriesOptions: Parameters[0] = { + const lineSeriesOptions: DeepPartial = { color: borderColor, ...(borderWidth && { lineWidth: borderWidth as 1 | 2 | 3 | 4 }), lastValueVisible: false, @@ -246,7 +250,7 @@ const LineChart = ({ lineSeriesOptions.autoscaleInfoProvider = autoscaleProvider(beginAtZero) - const lineSeries = chartRef.current.addLineSeries(lineSeriesOptions) + const lineSeries = chartRef.current.addSeries(LineSeries, lineSeriesOptions) lineSeriesRef.current.push(lineSeries) seriesToDatasetMap.current.set(lineSeries, dataset) diff --git a/src/Components/MultiSiteDashboardChart/MultiSiteDashboardChart.styles.ts b/src/Components/MultiSiteDashboardChart/MultiSiteDashboardChart.styles.ts index e9b3603..111fb9f 100644 --- a/src/Components/MultiSiteDashboardChart/MultiSiteDashboardChart.styles.ts +++ b/src/Components/MultiSiteDashboardChart/MultiSiteDashboardChart.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { flexColumn, flexRow } from '@/app/mixins' diff --git a/src/Components/PoolManager/Dashboard/Dashboard.tsx b/src/Components/PoolManager/Dashboard/Dashboard.tsx index 2f59c20..f5abc01 100644 --- a/src/Components/PoolManager/Dashboard/Dashboard.tsx +++ b/src/Components/PoolManager/Dashboard/Dashboard.tsx @@ -11,7 +11,7 @@ import _isArray from 'lodash/isArray' import _isEmpty from 'lodash/isEmpty' import _map from 'lodash/map' import _slice from 'lodash/slice' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { alertsNeeded, MAX_ALERTS_DISPLAYED, navigationBlocks } from './constants' import { diff --git a/src/Components/PoolManager/SitesOverview/SitesOverviewStatusCardList.tsx b/src/Components/PoolManager/SitesOverview/SitesOverviewStatusCardList.tsx index f3400fc..44956e3 100644 --- a/src/Components/PoolManager/SitesOverview/SitesOverviewStatusCardList.tsx +++ b/src/Components/PoolManager/SitesOverview/SitesOverviewStatusCardList.tsx @@ -5,7 +5,7 @@ import _map from 'lodash/map' import _size from 'lodash/size' import _without from 'lodash/without' import { useState } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { SetPoolConfiguration } from './SetPoolConfiguration/SetPoolConfiguration' import SetPoolConfigurationModal from './SetPoolConfiguration/SetPoolConfigurationModal' diff --git a/src/Components/Reporting/ReportNavSection/ReportNavSection.styles.ts b/src/Components/Reporting/ReportNavSection/ReportNavSection.styles.ts index fed3d2f..d4385db 100644 --- a/src/Components/Reporting/ReportNavSection/ReportNavSection.styles.ts +++ b/src/Components/Reporting/ReportNavSection/ReportNavSection.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { commonTextStyles, flexCenter, upperCaseText } from '../../../app/mixins' diff --git a/src/Components/Reporting/ReportingBreadcrumbs/ReportingBreadcrumbs.tsx b/src/Components/Reporting/ReportingBreadcrumbs/ReportingBreadcrumbs.tsx index 770f604..e329e05 100644 --- a/src/Components/Reporting/ReportingBreadcrumbs/ReportingBreadcrumbs.tsx +++ b/src/Components/Reporting/ReportingBreadcrumbs/ReportingBreadcrumbs.tsx @@ -2,7 +2,7 @@ import { ReloadOutlined } from '@ant-design/icons' import Button from 'antd/es/button' import Tooltip from 'antd/es/tooltip' import { useEffect, useState } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import useTimezone from '../../../hooks/useTimezone' import { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs' diff --git a/src/Components/Sidebar/Sidebar.styles.ts b/src/Components/Sidebar/Sidebar.styles.ts index 4403746..2e5f5bc 100644 --- a/src/Components/Sidebar/Sidebar.styles.ts +++ b/src/Components/Sidebar/Sidebar.styles.ts @@ -1,4 +1,4 @@ -import { NavLink } from 'react-router-dom' +import { NavLink } from 'react-router' import styled from 'styled-components' interface StyledProps { diff --git a/src/Components/Sidebar/Sidebar.tsx b/src/Components/Sidebar/Sidebar.tsx index f65001d..8e1ae76 100644 --- a/src/Components/Sidebar/Sidebar.tsx +++ b/src/Components/Sidebar/Sidebar.tsx @@ -3,7 +3,7 @@ import _map from 'lodash/map' import type { ComponentType } from 'react' import { useEffect } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useLocation, useNavigate } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router' import { MenuItem } from './MenuItem/MenuItem' import type { MultiSiteNavigationSite } from './Sidebar.config' diff --git a/src/Components/SiteOperationChart/SiteOperationChart.styles.ts b/src/Components/SiteOperationChart/SiteOperationChart.styles.ts index 2d01e43..224a20f 100644 --- a/src/Components/SiteOperationChart/SiteOperationChart.styles.ts +++ b/src/Components/SiteOperationChart/SiteOperationChart.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' interface StyledProps { diff --git a/src/MultiSiteViews/Dashboard/BtcProduction.tsx b/src/MultiSiteViews/Dashboard/BtcProduction.tsx index 23f365e..02cd5ed 100644 --- a/src/MultiSiteViews/Dashboard/BtcProduction.tsx +++ b/src/MultiSiteViews/Dashboard/BtcProduction.tsx @@ -9,7 +9,7 @@ import _sortBy from 'lodash/sortBy' import _split from 'lodash/split' import _toUpper from 'lodash/toUpper' import _uniq from 'lodash/uniq' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { MultisitePageWrapper } from '../MultiSite.styles' diff --git a/src/MultiSiteViews/Dashboard/Dashboard.tsx b/src/MultiSiteViews/Dashboard/Dashboard.tsx index 59c7f80..9d56745 100644 --- a/src/MultiSiteViews/Dashboard/Dashboard.tsx +++ b/src/MultiSiteViews/Dashboard/Dashboard.tsx @@ -21,7 +21,7 @@ import _toUpper from 'lodash/toUpper' import _uniq from 'lodash/uniq' import _values from 'lodash/values' import { useEffect, useState } from 'react' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { getEfficiencyString } from '../../app/utils/format' import { CHART_COLORS } from '../../constants/colors' diff --git a/src/MultiSiteViews/Dashboard/Hashrate.tsx b/src/MultiSiteViews/Dashboard/Hashrate.tsx index b1db4fe..d08f610 100644 --- a/src/MultiSiteViews/Dashboard/Hashrate.tsx +++ b/src/MultiSiteViews/Dashboard/Hashrate.tsx @@ -1,6 +1,6 @@ import _map from 'lodash/map' import _toUpper from 'lodash/toUpper' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { MultisitePageWrapper } from '../MultiSite.styles' diff --git a/src/MultiSiteViews/Dashboard/MonthlyAvgDowntime.tsx b/src/MultiSiteViews/Dashboard/MonthlyAvgDowntime.tsx index f1f3d69..b5c51c8 100644 --- a/src/MultiSiteViews/Dashboard/MonthlyAvgDowntime.tsx +++ b/src/MultiSiteViews/Dashboard/MonthlyAvgDowntime.tsx @@ -5,7 +5,7 @@ import _map from 'lodash/map' import _reduce from 'lodash/reduce' import _sortBy from 'lodash/sortBy' import _uniq from 'lodash/uniq' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { MultisitePageWrapper } from '../MultiSite.styles' diff --git a/src/MultiSiteViews/Dashboard/RevenuePerMonth.tsx b/src/MultiSiteViews/Dashboard/RevenuePerMonth.tsx index da8a217..707cb90 100644 --- a/src/MultiSiteViews/Dashboard/RevenuePerMonth.tsx +++ b/src/MultiSiteViews/Dashboard/RevenuePerMonth.tsx @@ -7,7 +7,7 @@ import _map from 'lodash/map' import _reduce from 'lodash/reduce' import _some from 'lodash/some' import _toUpper from 'lodash/toUpper' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { MultisitePageWrapper } from '../MultiSite.styles' diff --git a/src/MultiSiteViews/Report/Report.tsx b/src/MultiSiteViews/Report/Report.tsx index ba06bc8..43c99b6 100644 --- a/src/MultiSiteViews/Report/Report.tsx +++ b/src/MultiSiteViews/Report/Report.tsx @@ -4,7 +4,7 @@ import _map from 'lodash/map' import _toUpper from 'lodash/toUpper' import * as React from 'react' import { useMemo } from 'react' -import { useParams, useSearchParams } from 'react-router-dom' +import { useParams, useSearchParams } from 'react-router' import ReportCover from './components/ReportCover/ReportCover' import ReportPage from './components/ReportPage/ReportPage' diff --git a/src/MultiSiteViews/Report/components/AllSites/AllSites.tsx b/src/MultiSiteViews/Report/components/AllSites/AllSites.tsx index 7b83115..be40158 100644 --- a/src/MultiSiteViews/Report/components/AllSites/AllSites.tsx +++ b/src/MultiSiteViews/Report/components/AllSites/AllSites.tsx @@ -3,7 +3,7 @@ import _isString from 'lodash/isString' import _map from 'lodash/map' import _upper from 'lodash/upperCase' import _values from 'lodash/values' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { AllSitesMetricsGrid, diff --git a/src/MultiSiteViews/Report/hooks/useReportData.ts b/src/MultiSiteViews/Report/hooks/useReportData.ts index cfb9e63..15d19f6 100644 --- a/src/MultiSiteViews/Report/hooks/useReportData.ts +++ b/src/MultiSiteViews/Report/hooks/useReportData.ts @@ -3,7 +3,7 @@ import _map from 'lodash/map' import _toLower from 'lodash/toLower' import _toUpper from 'lodash/toUpper' import { useMemo } from 'react' -import { useParams, useSearchParams } from 'react-router-dom' +import { useParams, useSearchParams } from 'react-router' import { parseDateRange, PERIOD_MAP } from '../Report.util' diff --git a/src/MultiSiteViews/Report/periods/Monthly/index.tsx b/src/MultiSiteViews/Report/periods/Monthly/index.tsx index 7332dd3..c2a1e37 100644 --- a/src/MultiSiteViews/Report/periods/Monthly/index.tsx +++ b/src/MultiSiteViews/Report/periods/Monthly/index.tsx @@ -1,7 +1,7 @@ import _filter from 'lodash/filter' import _map from 'lodash/map' import _toLower from 'lodash/toLower' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import AllSites from '../../components/AllSites/AllSites' import ReportPage from '../../components/ReportPage/ReportPage' diff --git a/src/MultiSiteViews/Report/periods/Weekly/index.tsx b/src/MultiSiteViews/Report/periods/Weekly/index.tsx index 460d4a3..64c46c0 100644 --- a/src/MultiSiteViews/Report/periods/Weekly/index.tsx +++ b/src/MultiSiteViews/Report/periods/Weekly/index.tsx @@ -1,7 +1,7 @@ import _filter from 'lodash/filter' import _map from 'lodash/map' import _toLower from 'lodash/toLower' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import AllSites from '../../components/AllSites/AllSites' import ReportPage from '../../components/ReportPage/ReportPage' diff --git a/src/MultiSiteViews/Report/periods/Yearly/index.tsx b/src/MultiSiteViews/Report/periods/Yearly/index.tsx index 5ce56ae..1542698 100644 --- a/src/MultiSiteViews/Report/periods/Yearly/index.tsx +++ b/src/MultiSiteViews/Report/periods/Yearly/index.tsx @@ -1,7 +1,7 @@ import _filter from 'lodash/filter' import _map from 'lodash/map' import _toLower from 'lodash/toLower' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import AllSites from '../../components/AllSites/AllSites' import ReportPage from '../../components/ReportPage/ReportPage' diff --git a/src/MultiSiteViews/Reports/Reports.tsx b/src/MultiSiteViews/Reports/Reports.tsx index a40395d..933251c 100644 --- a/src/MultiSiteViews/Reports/Reports.tsx +++ b/src/MultiSiteViews/Reports/Reports.tsx @@ -1,7 +1,7 @@ import Radio from 'antd/es/radio' import { format } from 'date-fns/format' import _toLower from 'lodash/toLower' -import { useParams, useSearchParams, useNavigate } from 'react-router-dom' +import { useParams, useSearchParams, useNavigate } from 'react-router' import { Header } from '../SharedComponents/Header/Header' diff --git a/src/MultiSiteViews/SharedComponents/Header/Header.tsx b/src/MultiSiteViews/SharedComponents/Header/Header.tsx index 72f0d92..54dc03f 100644 --- a/src/MultiSiteViews/SharedComponents/Header/Header.tsx +++ b/src/MultiSiteViews/SharedComponents/Header/Header.tsx @@ -3,7 +3,7 @@ import _noop from 'lodash/noop' import _toUpper from 'lodash/toUpper' import { FC, useEffect } from 'react' import { useSelector } from 'react-redux' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { getSelectedSites } from '@/app/slices/multiSiteSlice' import { getBeginningOfMonth, getEndOfYesterday, getRangeTimestamps } from '@/app/utils/dateUtils' diff --git a/src/MultiSiteViews/SiteReportsLayout/SiteReportsLayout.tsx b/src/MultiSiteViews/SiteReportsLayout/SiteReportsLayout.tsx index 4746d09..6487805 100644 --- a/src/MultiSiteViews/SiteReportsLayout/SiteReportsLayout.tsx +++ b/src/MultiSiteViews/SiteReportsLayout/SiteReportsLayout.tsx @@ -1,5 +1,5 @@ import Empty from 'antd/es/empty' -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import { useGetFeatureConfigQuery } from '@/app/services/api' import { EmptyStateContainer } from '@/styles/shared-styles' diff --git a/src/Views/Alerts/Alerts.tsx b/src/Views/Alerts/Alerts.tsx index 1bf5d45..5857ad0 100644 --- a/src/Views/Alerts/Alerts.tsx +++ b/src/Views/Alerts/Alerts.tsx @@ -1,7 +1,7 @@ import _endsWith from 'lodash/endsWith' import { useEffect, useState } from 'react' import { useDispatch } from 'react-redux' -import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom' +import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router' import { AlertsOuterContainer, HistoricalAlertsWrapper } from './Alerts.styles' import { CurrentAlerts, LocalFilters } from './CurrentAlerts/CurrentAlerts' diff --git a/src/Views/Alerts/AlertsLayout.tsx b/src/Views/Alerts/AlertsLayout.tsx index 9dd5f06..4a8646e 100644 --- a/src/Views/Alerts/AlertsLayout.tsx +++ b/src/Views/Alerts/AlertsLayout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import GateKeeper from '../../Components/GateKeeper/GateKeeper' import { AUTH_LEVELS, AUTH_PERMISSIONS } from '../../constants/permissions.constants' diff --git a/src/Views/Alerts/CurrentAlerts/CurrentAlerts.tsx b/src/Views/Alerts/CurrentAlerts/CurrentAlerts.tsx index eab5339..518ef1d 100644 --- a/src/Views/Alerts/CurrentAlerts/CurrentAlerts.tsx +++ b/src/Views/Alerts/CurrentAlerts/CurrentAlerts.tsx @@ -3,7 +3,7 @@ import _head from 'lodash/head' import _isEmpty from 'lodash/isEmpty' import React, { useEffect, useRef, useState } from 'react' import { useSelector } from 'react-redux' -import { useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router' import { useGetListThingsQuery } from '../../../app/services/api' import { selectFilterTags } from '../../../app/slices/devicesSlice' diff --git a/src/Views/Cabinet/Cabinet.styles.ts b/src/Views/Cabinet/Cabinet.styles.ts index 4ddf616..798a0f2 100644 --- a/src/Views/Cabinet/Cabinet.styles.ts +++ b/src/Views/Cabinet/Cabinet.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { flexAlign } from '@/app/mixins' diff --git a/src/Views/Cabinet/Cabinet.tsx b/src/Views/Cabinet/Cabinet.tsx index f4781ee..dab3d67 100644 --- a/src/Views/Cabinet/Cabinet.tsx +++ b/src/Views/Cabinet/Cabinet.tsx @@ -7,7 +7,7 @@ import _head from 'lodash/head' import _isEmpty from 'lodash/isEmpty' import _map from 'lodash/map' import React from 'react' -import { useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router' import GateKeeper from '../../Components/GateKeeper/GateKeeper' import { getAlertTimelineItems } from '../Container/Tabs/HomeTab/HomeTab.util' diff --git a/src/Views/Comments/Comments.tsx b/src/Views/Comments/Comments.tsx index 830385a..caa9b49 100644 --- a/src/Views/Comments/Comments.tsx +++ b/src/Views/Comments/Comments.tsx @@ -4,7 +4,7 @@ import _size from 'lodash/size' import _slice from 'lodash/slice' import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { CommentsRoot } from './Comments.styles' import { getDevicesWithMaintenanceContainer, sortDevicesByLatestComment } from './Comments.util' diff --git a/src/Views/Comments/CommentsLayout.tsx b/src/Views/Comments/CommentsLayout.tsx index 2ec6241..3b654ca 100644 --- a/src/Views/Comments/CommentsLayout.tsx +++ b/src/Views/Comments/CommentsLayout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import GateKeeper from '../../Components/GateKeeper/GateKeeper' import { AUTH_LEVELS, AUTH_PERMISSIONS } from '../../constants/permissions.constants' diff --git a/src/Views/Comments/SingleDeviceCommentsHistoryView.tsx b/src/Views/Comments/SingleDeviceCommentsHistoryView.tsx index 687d0b5..c82d50b 100644 --- a/src/Views/Comments/SingleDeviceCommentsHistoryView.tsx +++ b/src/Views/Comments/SingleDeviceCommentsHistoryView.tsx @@ -4,7 +4,7 @@ import _includes from 'lodash/includes' import _replace from 'lodash/replace' import { useState } from 'react' import { useSelector } from 'react-redux' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { CABINET_IDENTIFIER, FeatureConfig } from './Comments' import { getCommentPayloadBase, mutateCommentAsync, sortCommentsByRecent } from './Comments.util' diff --git a/src/Views/Container/Container.tsx b/src/Views/Container/Container.tsx index eb083d9..31d33ca 100644 --- a/src/Views/Container/Container.tsx +++ b/src/Views/Container/Container.tsx @@ -3,7 +3,7 @@ import _find from 'lodash/find' import _noop from 'lodash/noop' import { useEffect, useState } from 'react' import { useDispatch } from 'react-redux' -import { useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router' import { getBackUrl as getBackUrlParam } from '../../app/utils/domainUtils' diff --git a/src/Views/Container/Tabs/HomeTab/AlarmRow.tsx b/src/Views/Container/Tabs/HomeTab/AlarmRow.tsx index 85c7da5..d13fba9 100644 --- a/src/Views/Container/Tabs/HomeTab/AlarmRow.tsx +++ b/src/Views/Container/Tabs/HomeTab/AlarmRow.tsx @@ -2,7 +2,7 @@ import { ExclamationOutlined, WarningFilled } from '@ant-design/icons' import _map from 'lodash/map' import _split from 'lodash/split' import type { CSSProperties, ReactNode } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { AlarmBody, diff --git a/src/Views/Container/Tabs/HomeTab/HomeTab.tsx b/src/Views/Container/Tabs/HomeTab/HomeTab.tsx index 364eb95..7ee1a4c 100644 --- a/src/Views/Container/Tabs/HomeTab/HomeTab.tsx +++ b/src/Views/Container/Tabs/HomeTab/HomeTab.tsx @@ -1,6 +1,6 @@ import Empty from 'antd/es/empty' import _head from 'lodash/head' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { AntspaceStats, BitdeerStats, CommonStats, MicroBTStats } from './components' import { diff --git a/src/Views/Container/Tabs/HomeTab/HomeTab.util.tsx b/src/Views/Container/Tabs/HomeTab/HomeTab.util.tsx index 43b0023..7aa2e10 100644 --- a/src/Views/Container/Tabs/HomeTab/HomeTab.util.tsx +++ b/src/Views/Container/Tabs/HomeTab/HomeTab.util.tsx @@ -6,7 +6,7 @@ import _join from 'lodash/join' import _map from 'lodash/map' import _partition from 'lodash/partition' import _round from 'lodash/round' -import type { NavigateFunction } from 'react-router-dom' +import type { NavigateFunction } from 'react-router' import type { Alert } from '@/app/utils/alertUtils' import { getLogFormattedAlertData } from '@/app/utils/alertUtils' diff --git a/src/Views/Container/Tabs/PduTab/PduTab.tsx b/src/Views/Container/Tabs/PduTab/PduTab.tsx index adbf767..d22f960 100644 --- a/src/Views/Container/Tabs/PduTab/PduTab.tsx +++ b/src/Views/Container/Tabs/PduTab/PduTab.tsx @@ -1,6 +1,6 @@ import _head from 'lodash/head' import { useEffect, useRef, useState } from 'react' -import { useLocation, useNavigate, useParams } from 'react-router-dom' +import { useLocation, useNavigate, useParams } from 'react-router' import AddReplaceMinerDialog from './AddReplaceMinerDialog/AddReplaceMinerDialog' import EditFlowHeader from './EditFlowHeader' diff --git a/src/Views/Container/Tabs/PduTab/PositionChangeDialog/ContainerSelectionDialogContent.tsx b/src/Views/Container/Tabs/PduTab/PositionChangeDialog/ContainerSelectionDialogContent.tsx index c5e8fa9..86e591c 100644 --- a/src/Views/Container/Tabs/PduTab/PositionChangeDialog/ContainerSelectionDialogContent.tsx +++ b/src/Views/Container/Tabs/PduTab/PositionChangeDialog/ContainerSelectionDialogContent.tsx @@ -3,7 +3,7 @@ import _head from 'lodash/head' import _isEmpty from 'lodash/isEmpty' import _map from 'lodash/map' import _toUpper from 'lodash/toUpper' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { ModalFooter } from './PositionChangeDialog.styles' diff --git a/src/Views/ContainerWidgets/ContainerWidgetCard.tsx b/src/Views/ContainerWidgets/ContainerWidgetCard.tsx index 6f6e532..b832001 100644 --- a/src/Views/ContainerWidgets/ContainerWidgetCard.tsx +++ b/src/Views/ContainerWidgets/ContainerWidgetCard.tsx @@ -1,6 +1,6 @@ import _get from 'lodash/get' import { MouseEvent, useEffect, useState } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { BitmainImmersionSummaryBox } from './BitmainImmersion/BitmainImmersionSummaryBox' import { diff --git a/src/Views/ContainerWidgets/ContainerWidgetsLayout.tsx b/src/Views/ContainerWidgets/ContainerWidgetsLayout.tsx index 1c4f480..f5be5aa 100644 --- a/src/Views/ContainerWidgets/ContainerWidgetsLayout.tsx +++ b/src/Views/ContainerWidgets/ContainerWidgetsLayout.tsx @@ -1,5 +1,5 @@ import { FC } from 'react' -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import GateKeeper from '../../Components/GateKeeper/GateKeeper' import { AUTH_LEVELS, AUTH_PERMISSIONS } from '../../constants/permissions.constants' diff --git a/src/Views/Dashboard/MinerPools.tsx b/src/Views/Dashboard/MinerPools.tsx index 255aa6b..225670c 100644 --- a/src/Views/Dashboard/MinerPools.tsx +++ b/src/Views/Dashboard/MinerPools.tsx @@ -1,7 +1,7 @@ import Empty from 'antd/es/empty' import Result from 'antd/es/result' import _size from 'lodash/size' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import LabeledCard from '../../Components/Card/LabeledCard' diff --git a/src/Views/Explorer/Explorer.tsx b/src/Views/Explorer/Explorer.tsx index 553c00e..99a6c49 100644 --- a/src/Views/Explorer/Explorer.tsx +++ b/src/Views/Explorer/Explorer.tsx @@ -9,7 +9,7 @@ import _upperCase from 'lodash/upperCase' import _values from 'lodash/values' import { lazy, Suspense } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useSearchParams } from 'react-router-dom' +import { useSearchParams } from 'react-router' const ListView = lazy(() => import('../../Components/Explorer/List/ListView')) const DetailsView = lazy(() => import('../../Components/Explorer/DetailsView/DetailsView')) diff --git a/src/Views/Explorer/ExplorerLayout.tsx b/src/Views/Explorer/ExplorerLayout.tsx index 13f4e3a..62610d7 100644 --- a/src/Views/Explorer/ExplorerLayout.tsx +++ b/src/Views/Explorer/ExplorerLayout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import GateKeeper from '../../Components/GateKeeper/GateKeeper' import { AUTH_LEVELS, AUTH_PERMISSIONS } from '../../constants/permissions.constants' diff --git a/src/Views/Explorer/Things/Thing.tsx b/src/Views/Explorer/Things/Thing.tsx index c56fb4e..fef90d3 100644 --- a/src/Views/Explorer/Things/Thing.tsx +++ b/src/Views/Explorer/Things/Thing.tsx @@ -5,7 +5,7 @@ import _head from 'lodash/head' import _includes from 'lodash/includes' import _map from 'lodash/map' import { useDispatch } from 'react-redux' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { SetPowerModeValues } from '../Explorer.constants' import { ErrorBannerWrapper } from '../Explorer.styles' diff --git a/src/Views/Explorer/Things/Things.columns.tsx b/src/Views/Explorer/Things/Things.columns.tsx index bdd9da1..ab8e00a 100644 --- a/src/Views/Explorer/Things/Things.columns.tsx +++ b/src/Views/Explorer/Things/Things.columns.tsx @@ -1,7 +1,7 @@ import type { ColumnType } from 'antd/es/table' import Tag from 'antd/es/tag' import _map from 'lodash/map' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' export interface ThingData extends Record { id: string diff --git a/src/Views/Explorer/Things/Things.tsx b/src/Views/Explorer/Things/Things.tsx index 7d29dab..aba5431 100644 --- a/src/Views/Explorer/Things/Things.tsx +++ b/src/Views/Explorer/Things/Things.tsx @@ -6,7 +6,7 @@ import _head from 'lodash/head' import _size from 'lodash/size' import _trimEnd from 'lodash/trimEnd' import { useEffect } from 'react' -import { Link, useParams } from 'react-router-dom' +import { Link, useParams } from 'react-router' import columns, { type ThingData } from './Things.columns' diff --git a/src/Views/Financial/Cost/CostSingleSite.tsx b/src/Views/Financial/Cost/CostSingleSite.tsx index 542b540..24eb627 100644 --- a/src/Views/Financial/Cost/CostSingleSite.tsx +++ b/src/Views/Financial/Cost/CostSingleSite.tsx @@ -1,7 +1,7 @@ import { subYears } from 'date-fns/subYears' import { useEffect } from 'react' import { useDispatch } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import type { DateRangeChangeHandler } from '../Financial.types' import { FinancialDateRangeSection } from '../FinancialDateRangeSection' diff --git a/src/Views/Financial/CostInput/CostInput.tsx b/src/Views/Financial/CostInput/CostInput.tsx index e550e99..efd4c8f 100644 --- a/src/Views/Financial/CostInput/CostInput.tsx +++ b/src/Views/Financial/CostInput/CostInput.tsx @@ -5,7 +5,7 @@ import _find from 'lodash/find' import _isNumber from 'lodash/isNumber' import _map from 'lodash/map' import { useEffect, useState } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { CostInputRoot, diff --git a/src/Views/Financial/EBITDA/EBITDA.styles.ts b/src/Views/Financial/EBITDA/EBITDA.styles.ts index d4fc573..a4c4ac4 100644 --- a/src/Views/Financial/EBITDA/EBITDA.styles.ts +++ b/src/Views/Financial/EBITDA/EBITDA.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { flexAlign, flexColumn, flexJustifyBetween, upperCaseText } from '@/app/mixins' diff --git a/src/Views/Financial/EnergyBalance/EnergyBalance.styles.ts b/src/Views/Financial/EnergyBalance/EnergyBalance.styles.ts index 0353ab4..ab6272b 100644 --- a/src/Views/Financial/EnergyBalance/EnergyBalance.styles.ts +++ b/src/Views/Financial/EnergyBalance/EnergyBalance.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { flexAlign, flexColumn, flexJustifyBetween, flexRow, upperCaseText } from '@/app/mixins' diff --git a/src/Views/Financial/HashBalance/HashBalance.tsx b/src/Views/Financial/HashBalance/HashBalance.tsx index a1686d9..6a69ae7 100644 --- a/src/Views/Financial/HashBalance/HashBalance.tsx +++ b/src/Views/Financial/HashBalance/HashBalance.tsx @@ -1,6 +1,6 @@ import Button from 'antd/es/button' import { Suspense, useState } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { DatePickerContainer, diff --git a/src/Views/Financial/RevenueSummary/RevenueSummary.tsx b/src/Views/Financial/RevenueSummary/RevenueSummary.tsx index 1dd104b..43368a5 100644 --- a/src/Views/Financial/RevenueSummary/RevenueSummary.tsx +++ b/src/Views/Financial/RevenueSummary/RevenueSummary.tsx @@ -1,6 +1,6 @@ import { useEffect } from 'react' import { useDispatch } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { FinancialDateRangeSection } from '../FinancialDateRangeSection' diff --git a/src/Views/Financial/SubsidyFee/SubsidyFee.styles.ts b/src/Views/Financial/SubsidyFee/SubsidyFee.styles.ts index b2b5f43..ece7f4f 100644 --- a/src/Views/Financial/SubsidyFee/SubsidyFee.styles.ts +++ b/src/Views/Financial/SubsidyFee/SubsidyFee.styles.ts @@ -1,4 +1,4 @@ -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import styled from 'styled-components' import { flexAlign, flexColumn, flexJustifyBetween, upperCaseText } from '@/app/mixins' diff --git a/src/Views/Inventory/Containers/Containers.tsx b/src/Views/Inventory/Containers/Containers.tsx index 9067b36..b2390b7 100644 --- a/src/Views/Inventory/Containers/Containers.tsx +++ b/src/Views/Inventory/Containers/Containers.tsx @@ -12,7 +12,7 @@ import _toLower from 'lodash/toLower' import _toUpperCase from 'lodash/toUpper' import { useEffect, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetListThingsQuery, useGetSiteQuery } from '../../../app/services/api' import { getContainerMinersPosition } from '../../../app/utils/containerUtils' diff --git a/src/Views/Inventory/HistoricalMovements/HistoricalMovements.tsx b/src/Views/Inventory/HistoricalMovements/HistoricalMovements.tsx index e82afc7..46d8b25 100644 --- a/src/Views/Inventory/HistoricalMovements/HistoricalMovements.tsx +++ b/src/Views/Inventory/HistoricalMovements/HistoricalMovements.tsx @@ -11,7 +11,7 @@ import _toLower from 'lodash/toLower' import _trim from 'lodash/trim' import * as React from 'react' import { useState } from 'react' -import { useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router' import { useGetHistoricalLogsQuery, useGetListThingsQuery } from '../../../app/services/api' import { getMinerShortCode } from '../../../app/utils/deviceUtils' diff --git a/src/Views/Inventory/InventoryLayout.tsx b/src/Views/Inventory/InventoryLayout.tsx index e8645db..ff8866f 100644 --- a/src/Views/Inventory/InventoryLayout.tsx +++ b/src/Views/Inventory/InventoryLayout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import { useGetFeaturesQuery } from '../../app/services/api' import GateKeeper from '../../Components/GateKeeper/GateKeeper' diff --git a/src/Views/Inventory/Miners/Miners.tsx b/src/Views/Inventory/Miners/Miners.tsx index 93b0cdf..3c2b997 100644 --- a/src/Views/Inventory/Miners/Miners.tsx +++ b/src/Views/Inventory/Miners/Miners.tsx @@ -11,7 +11,7 @@ import _split from 'lodash/split' import _startCase from 'lodash/startCase' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetListThingsQuery, useGetSiteQuery } from '../../../app/services/api' import { devicesSlice, selectFilterTags } from '../../../app/slices/devicesSlice' diff --git a/src/Views/Inventory/SpareParts/SpareParts.tsx b/src/Views/Inventory/SpareParts/SpareParts.tsx index ce8b83e..252b59b 100644 --- a/src/Views/Inventory/SpareParts/SpareParts.tsx +++ b/src/Views/Inventory/SpareParts/SpareParts.tsx @@ -16,7 +16,7 @@ import _trim from 'lodash/trim' import * as React from 'react' import { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetListThingsQuery, useGetSiteQuery } from '../../../app/services/api' import { getPartTypeAbbreviation } from '../../../app/utils/sparePartUtils' diff --git a/src/Views/LVCabinetWidgets/LVCabinetWidgetCard.tsx b/src/Views/LVCabinetWidgets/LVCabinetWidgetCard.tsx index 317781a..791f47b 100644 --- a/src/Views/LVCabinetWidgets/LVCabinetWidgetCard.tsx +++ b/src/Views/LVCabinetWidgets/LVCabinetWidgetCard.tsx @@ -2,7 +2,7 @@ import _get from 'lodash/get' import _map from 'lodash/map' import _sumBy from 'lodash/sumBy' import { RefObject } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { getCabinetTitle, diff --git a/src/Views/Layout/Layout.tsx b/src/Views/Layout/Layout.tsx index 2bdb497..33aeaa5 100644 --- a/src/Views/Layout/Layout.tsx +++ b/src/Views/Layout/Layout.tsx @@ -2,7 +2,7 @@ import notification from 'antd/es/notification' import _isString from 'lodash/isString' import { lazy, Suspense, useEffect } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { Navigate, Outlet, useLocation, useSearchParams } from 'react-router-dom' +import { Navigate, Outlet, useLocation, useSearchParams } from 'react-router' import { ActionsSidebarContainer, diff --git a/src/Views/NotFoundPage/NotFoundPage.tsx b/src/Views/NotFoundPage/NotFoundPage.tsx index 1c06d5e..9edae36 100644 --- a/src/Views/NotFoundPage/NotFoundPage.tsx +++ b/src/Views/NotFoundPage/NotFoundPage.tsx @@ -1,5 +1,5 @@ import { HomeOutlined } from '@ant-design/icons' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { ROUTE } from '../../constants/routes' diff --git a/src/Views/PoolManager/PoolManagerLayout.tsx b/src/Views/PoolManager/PoolManagerLayout.tsx index 22fe82a..f766e0e 100644 --- a/src/Views/PoolManager/PoolManagerLayout.tsx +++ b/src/Views/PoolManager/PoolManagerLayout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import { PoolManagerLayoutRoot } from './PoolManager.styles' diff --git a/src/Views/PoolManager/PoolManagerMinerExplorer/PoolManagerMinerExplorer.tsx b/src/Views/PoolManager/PoolManagerMinerExplorer/PoolManagerMinerExplorer.tsx index 679c940..36b44d3 100644 --- a/src/Views/PoolManager/PoolManagerMinerExplorer/PoolManagerMinerExplorer.tsx +++ b/src/Views/PoolManager/PoolManagerMinerExplorer/PoolManagerMinerExplorer.tsx @@ -5,7 +5,7 @@ import _isEmpty from 'lodash/isEmpty' import _map from 'lodash/map' import { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { Header, HeaderSubtitle, PoolManagerDashboardRoot } from '../PoolManagerDashboard.styles' diff --git a/src/Views/PoolManager/Pools/PoolManagerPools.tsx b/src/Views/PoolManager/Pools/PoolManagerPools.tsx index 0f6d167..2db9ec1 100644 --- a/src/Views/PoolManager/Pools/PoolManagerPools.tsx +++ b/src/Views/PoolManager/Pools/PoolManagerPools.tsx @@ -4,7 +4,7 @@ import type { CollapseProps } from 'antd/es/collapse' import _map from 'lodash/map' import _values from 'lodash/values' import React, { useState } from 'react' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { Header, HeaderSubtitle, PoolManagerDashboardRoot } from '../PoolManagerDashboard.styles' diff --git a/src/Views/PoolManager/SiteOverviewDetails/SiteOverviewDetails.tsx b/src/Views/PoolManager/SiteOverviewDetails/SiteOverviewDetails.tsx index 5d50370..31bc8aa 100644 --- a/src/Views/PoolManager/SiteOverviewDetails/SiteOverviewDetails.tsx +++ b/src/Views/PoolManager/SiteOverviewDetails/SiteOverviewDetails.tsx @@ -2,7 +2,7 @@ import { ArrowLeftOutlined } from '@ant-design/icons' import _get from 'lodash/get' import _head from 'lodash/head' import _isNil from 'lodash/isNil' -import { Link, useParams } from 'react-router-dom' +import { Link, useParams } from 'react-router' import { Header, HeaderSubtitle, PoolManagerDashboardRoot } from '../PoolManagerDashboard.styles' diff --git a/src/Views/PoolManager/SitesOverview/SitesOverview.tsx b/src/Views/PoolManager/SitesOverview/SitesOverview.tsx index cf0aee5..195fc2d 100644 --- a/src/Views/PoolManager/SitesOverview/SitesOverview.tsx +++ b/src/Views/PoolManager/SitesOverview/SitesOverview.tsx @@ -1,5 +1,5 @@ import { ArrowLeftOutlined } from '@ant-design/icons' -import { Link } from 'react-router-dom' +import { Link } from 'react-router' import { Header, HeaderSubtitle, PoolManagerDashboardRoot } from '../PoolManagerDashboard.styles' diff --git a/src/Views/ReportingTool/ReportingToolLayout.tsx b/src/Views/ReportingTool/ReportingToolLayout.tsx index 4f8c819..012964a 100644 --- a/src/Views/ReportingTool/ReportingToolLayout.tsx +++ b/src/Views/ReportingTool/ReportingToolLayout.tsx @@ -1,5 +1,5 @@ import Empty from 'antd/es/empty' -import { Outlet } from 'react-router-dom' +import { Outlet } from 'react-router' import { useGetFeatureConfigQuery } from '../../app/services/api' import GateKeeper from '../../Components/GateKeeper/GateKeeper' diff --git a/src/Views/SignIn/SignIn.tsx b/src/Views/SignIn/SignIn.tsx index 2e354b5..d26ff1a 100644 --- a/src/Views/SignIn/SignIn.tsx +++ b/src/Views/SignIn/SignIn.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react' import { useSelector } from 'react-redux' -import { Navigate, useSearchParams } from 'react-router-dom' +import { Navigate, useSearchParams } from 'react-router' import { selectToken } from '../../app/slices/authSlice' import { getSignInRedirectUrl } from '../../app/utils/authUtils' diff --git a/src/Views/SignOut/SignOut.tsx b/src/Views/SignOut/SignOut.tsx index 1e44ac7..2cb866b 100644 --- a/src/Views/SignOut/SignOut.tsx +++ b/src/Views/SignOut/SignOut.tsx @@ -1,4 +1,4 @@ -import { Navigate } from 'react-router-dom' +import { Navigate } from 'react-router' import useSignOut from '../../hooks/useSignOut' diff --git a/src/hooks/useAuthToken.ts b/src/hooks/useAuthToken.ts index a988ac0..5c97fad 100644 --- a/src/hooks/useAuthToken.ts +++ b/src/hooks/useAuthToken.ts @@ -1,6 +1,6 @@ import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux' -import { useSearchParams, useLocation } from 'react-router-dom' +import { useSearchParams, useLocation } from 'react-router' import { authSlice, selectToken } from '../app/slices/authSlice' import { saveLastVisitedUrl } from '../app/utils/localStorageUtils' diff --git a/src/hooks/useDocumentTitle.ts b/src/hooks/useDocumentTitle.ts index ffc0c6a..3c15e27 100644 --- a/src/hooks/useDocumentTitle.ts +++ b/src/hooks/useDocumentTitle.ts @@ -1,5 +1,5 @@ import { useEffect } from 'react' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { formatPageTitle } from '@/app/utils/format' import { WEBAPP_NAME } from '@/constants' diff --git a/src/hooks/useHashCostData.ts b/src/hooks/useHashCostData.ts index 399ab46..a9a037f 100644 --- a/src/hooks/useHashCostData.ts +++ b/src/hooks/useHashCostData.ts @@ -4,7 +4,7 @@ import _get from 'lodash/get' import _map from 'lodash/map' import _meanBy from 'lodash/meanBy' import _toPairs from 'lodash/toPairs' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import useMultiSiteRTRequestParams from './useMultiSiteRTRequestParams' diff --git a/src/hooks/useHashRevenueData.ts b/src/hooks/useHashRevenueData.ts index a9aaf88..a51f697 100644 --- a/src/hooks/useHashRevenueData.ts +++ b/src/hooks/useHashRevenueData.ts @@ -1,5 +1,5 @@ import _get from 'lodash/get' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import type { UnknownRecord } from '../app/utils/deviceUtils/types' diff --git a/src/hooks/useHomeTabMinerData.ts b/src/hooks/useHomeTabMinerData.ts index 968cb93..5309d96 100644 --- a/src/hooks/useHomeTabMinerData.ts +++ b/src/hooks/useHomeTabMinerData.ts @@ -1,7 +1,7 @@ import { List } from 'lodash' import _head from 'lodash/head' import type React from 'react' -import type { NavigateFunction } from 'react-router-dom' +import type { NavigateFunction } from 'react-router' import { useGetTailLogQuery } from '@/app/services/api' import type { Alert } from '@/app/utils/alertUtils' diff --git a/src/hooks/useMultiSiteMode.ts b/src/hooks/useMultiSiteMode.ts index f56fb30..3253094 100644 --- a/src/hooks/useMultiSiteMode.ts +++ b/src/hooks/useMultiSiteMode.ts @@ -5,7 +5,7 @@ import _map from 'lodash/map' import _toLower from 'lodash/toLower' import { useEffect, useMemo, useCallback } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import { useGetFeatureConfigQuery } from '@/app/services/api' import { selectToken } from '@/app/slices/authSlice' diff --git a/src/hooks/useRates.ts b/src/hooks/useRates.ts index d4e5257..fc68ce4 100644 --- a/src/hooks/useRates.ts +++ b/src/hooks/useRates.ts @@ -1,4 +1,4 @@ -import { useParams } from 'react-router-dom' +import { useParams } from 'react-router' import useMultiSiteRTRequestParams from './useMultiSiteRTRequestParams' diff --git a/src/hooks/useRedirect.ts b/src/hooks/useRedirect.ts index fe63a21..9a413aa 100644 --- a/src/hooks/useRedirect.ts +++ b/src/hooks/useRedirect.ts @@ -1,6 +1,6 @@ import _get from 'lodash/get' import { useEffect } from 'react' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { useGetFeaturesQuery, useGetFeatureConfigQuery } from '../app/services/api' diff --git a/src/hooks/useSignOut.ts b/src/hooks/useSignOut.ts index 1736b75..e5243b0 100644 --- a/src/hooks/useSignOut.ts +++ b/src/hooks/useSignOut.ts @@ -1,6 +1,6 @@ import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { authSlice, selectToken } from '../app/slices/authSlice' import { saveLastVisitedUrl } from '../app/utils/localStorageUtils' diff --git a/src/hooks/useTokenPolling.ts b/src/hooks/useTokenPolling.ts index f2efcdb..cfd7fac 100644 --- a/src/hooks/useTokenPolling.ts +++ b/src/hooks/useTokenPolling.ts @@ -1,7 +1,7 @@ import _includes from 'lodash/includes' import { useEffect } from 'react' import { useDispatch } from 'react-redux' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { usePostTokenQuery } from '../app/services/api' import { authSlice } from '../app/slices/authSlice' diff --git a/src/router/multiSiteRouter.tsx b/src/router/multiSiteRouter.tsx index c38837b..82afb0e 100644 --- a/src/router/multiSiteRouter.tsx +++ b/src/router/multiSiteRouter.tsx @@ -1,5 +1,5 @@ import { lazy } from 'react' -import { createBrowserRouter } from 'react-router-dom' +import { createBrowserRouter } from 'react-router' import { lazyWithNoFeatures } from '@/Components/NoFeaturesRestriction/NoFeaturesRestriction' import { SuspenseWrapper } from '@/Components/SuspenseWrapper/SuspenseWrapper' diff --git a/src/router/singleSiteRouter.tsx b/src/router/singleSiteRouter.tsx index aa47a24..9d33d9b 100644 --- a/src/router/singleSiteRouter.tsx +++ b/src/router/singleSiteRouter.tsx @@ -1,6 +1,6 @@ import type { ComponentType } from 'react' import { lazy } from 'react' -import { createBrowserRouter, Navigate } from 'react-router-dom' +import { createBrowserRouter, Navigate } from 'react-router' import { isDemoMode } from '@/app/services/api.utils' import { SuspenseWrapper } from '@/Components/SuspenseWrapper/SuspenseWrapper' diff --git a/src/setupTests/mocks/antd.ts b/src/setupTests/mocks/antd.ts index edeb55f..529f5e2 100644 --- a/src/setupTests/mocks/antd.ts +++ b/src/setupTests/mocks/antd.ts @@ -29,5 +29,5 @@ vi.mock('@ant-design/cssinjs', () => ({ createCache: vi.fn(() => ({})), createTheme: vi.fn(() => ({})), StyleProvider: vi.fn(({ children }: { children: ReactNode }) => children), - Keyframes: vi.fn(() => ({})), + Keyframes: vi.fn(class {}), })) diff --git a/vite.config.js b/vite.config.js index f5eeb1d..2de35dc 100644 --- a/vite.config.js +++ b/vite.config.js @@ -50,7 +50,7 @@ export default defineConfig(({ mode }) => { 'react-redux', '@reduxjs/toolkit', 'styled-components', - 'react-router-dom', + 'react-router', ], exclude: isDev || isStaging ? ['@sentry/react', '@sentry/cli'] : [], esbuildOptions: { @@ -131,4 +131,4 @@ export default defineConfig(({ mode }) => { }, }, } -}) \ No newline at end of file +}) diff --git a/vitest.config.js b/vitest.config.js index dc5c6d5..ec03569 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -65,11 +65,7 @@ export default defineConfig({ }, // Add performance optimizations pool: 'threads', // Use thread pool for better parallelism - poolOptions: { - threads: { - singleThread: false, // Allow multiple threads - }, - }, + singleThread: false, // Allow multiple threads // Optimize test timeout testTimeout: 10000, // 10 seconds should be enough for most tests // Enable test result caching (using Vite's cacheDir instead)