diff --git a/.gitignore b/.gitignore index 27d4428..a5662c4 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ yarn-error.log* # custom ts builds /src/**/*.js + +# rollup-plugin-visualizer generated files +stats.html diff --git a/package-lock.json b/package-lock.json index a27f4dd..c30d851 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,8 @@ "license": "MIT", "dependencies": { "@reduxjs/toolkit": "^1.7.2", - "@sentry/react": "^6.17.9", - "@sentry/tracing": "^6.17.9", + "@sentry/react": "^6.18.0", + "@sentry/tracing": "^6.18.0", "@speedy-tuner/ini": "^0.3.0", "@speedy-tuner/types": "^0.3.0", "antd": "^4.18.8", @@ -45,6 +45,7 @@ "eslint-plugin-prettier": "^4.0.0", "less": "^4.1.2", "prettier": "^2.5.1", + "rollup-plugin-visualizer": "^5.6.0", "typescript": "^4.5.5" } }, @@ -1438,13 +1439,13 @@ } }, "node_modules/@sentry/browser": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.17.9.tgz", - "integrity": "sha512-RsC8GBZmZ3YfBTaIOJ06RlFp5zG7BkUoquNJmf4YhRUZeihT9osrn8qUYGFWSV/UduwKUIlSGJA/rATWWhwPRQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.18.0.tgz", + "integrity": "sha512-fQZdFs0jnBijVmhDWNIsHD0rGsIXup/1UYgMZqdBYYSBBQ7Ffpw+6nX1/vyKsCpLdgYhbi88eK/XO+QHtUJE2w==", "dependencies": { - "@sentry/core": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/core": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -1452,14 +1453,14 @@ } }, "node_modules/@sentry/core": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.17.9.tgz", - "integrity": "sha512-14KalmTholGUtgdh9TklO+jUpyQ/D3OGkhlH1rnGQGoJgFy2eYm+s+MnUEMxFdGIUCz5kOteuNqYZxaDmFagpQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.0.tgz", + "integrity": "sha512-I3iQVfMWHXR/LtevJg83aD7UAiUBLz1xAW8y3gd5lJej96UNv/4TbCmKZumYnEJMXf8EcFlg8t48W0Bl1GxhEg==", "dependencies": { - "@sentry/hub": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -1467,12 +1468,12 @@ } }, "node_modules/@sentry/hub": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.17.9.tgz", - "integrity": "sha512-34EdrweWDbBV9EzEFIXcO+JeoyQmKzQVJxpTKZoJA6PUwf2NrndaUdjlkDEtBEzjuLUTxhLxtOzEsYs1O6RVcg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.0.tgz", + "integrity": "sha512-E2GrrNcidyT67ONU3btHO5vyS1bPQNdWqC09sUc1F3q/nQyvc7L2W09TKY2veaMZQtC9EU760fTG1hMmgGwPmw==", "dependencies": { - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -1480,12 +1481,12 @@ } }, "node_modules/@sentry/minimal": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.17.9.tgz", - "integrity": "sha512-T3PMCHcKk6lkZq6zKgANrYJJxXBXKOe+ousV1Fas1rVBMv7dtKfsa4itqQHszcW9shusPDiaQKIJ4zRLE5LKmg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.0.tgz", + "integrity": "sha512-QkkWOhX3NMycUNLj96thMQ0BclmfxE2VdDf9ZqRkvdFzxI1FVY5NEArqD4wtlrCIoYN1ioAYrvdb48/BTuGung==", "dependencies": { - "@sentry/hub": "6.17.9", - "@sentry/types": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/types": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -1493,14 +1494,14 @@ } }, "node_modules/@sentry/react": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.17.9.tgz", - "integrity": "sha512-TYu9Yl+gsNHdt763Yh35rSHJenxXqHSfWA55bYHr8hXDWu0crI/3LDuZb1RONmCM712CaQA+M5tgApA8QbHS4Q==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.18.0.tgz", + "integrity": "sha512-jJ3g41ucDyudT5Ye6ry3mGQaHkbp14yqjbgBWKhCljWwYie0rHLCfjZ6letz6K1ey2Asvl6MLH5eoNhGEV0idg==", "dependencies": { - "@sentry/browser": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/browser": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -1512,14 +1513,14 @@ } }, "node_modules/@sentry/tracing": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.17.9.tgz", - "integrity": "sha512-5Rb/OS4ryNJLvz2nv6wyjwhifjy6veqaF9ffLrwFYij/WDy7m62ASBblxgeiI3fbPLX0aBRFWIJAq1vko26+AQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.18.0.tgz", + "integrity": "sha512-thwVrYT+ba58h6F6Im4t+JH9o+7H+75ribkeTgM7NRhNuiGajlXNmb37Dh9gP5Iy76jNV8GATy4cOcuVc7P1jA==", "dependencies": { - "@sentry/hub": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -1527,19 +1528,19 @@ } }, "node_modules/@sentry/types": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.17.9.tgz", - "integrity": "sha512-xuulX6qUCL14ayEOh/h6FUIvZtsi1Bx34dSOaWDrjXUOJHJAM7214uiqW1GZxPJ13YuaUIubjTSfDmSQ9CBzTw==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.0.tgz", + "integrity": "sha512-SypDwXL1URE/XLkP4Ve+pFs41e+2OUYZ0lCimNreQQv46//pFXxP3LwU9Tc0Az4ZfxXnGiwofvt73XyBq9VpRQ==", "engines": { "node": ">=6" } }, "node_modules/@sentry/utils": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.17.9.tgz", - "integrity": "sha512-4eo9Z3JlJCGlGrQRbtZWL+L9NnlUXgTbfK3Lk7oO8D1ev8R5b5+iE6tZHTvU5rQRcq6zu+POT+tK5u9oxc/rnQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.0.tgz", + "integrity": "sha512-mKegOabkAjoUHfokjI5oi3CMez5GD3xXOrBFcLVc9GFDXCgNMdYnHyEn/mmy8PikFdGHxZ3oI/16ZGU22wi5aw==", "dependencies": { - "@sentry/types": "6.17.9", + "@sentry/types": "6.18.0", "tslib": "^1.9.3" }, "engines": { @@ -3188,6 +3189,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4869,6 +4879,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5018,6 +5043,18 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "devOptional": true }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6111,6 +6148,23 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -7316,6 +7370,63 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.6.0.tgz", + "integrity": "sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==", + "dev": true, + "dependencies": { + "nanoid": "^3.1.32", + "open": "^8.4.0", + "source-map": "^0.7.3", + "yargs": "^17.3.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9478,84 +9589,84 @@ } }, "@sentry/browser": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.17.9.tgz", - "integrity": "sha512-RsC8GBZmZ3YfBTaIOJ06RlFp5zG7BkUoquNJmf4YhRUZeihT9osrn8qUYGFWSV/UduwKUIlSGJA/rATWWhwPRQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.18.0.tgz", + "integrity": "sha512-fQZdFs0jnBijVmhDWNIsHD0rGsIXup/1UYgMZqdBYYSBBQ7Ffpw+6nX1/vyKsCpLdgYhbi88eK/XO+QHtUJE2w==", "requires": { - "@sentry/core": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/core": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" } }, "@sentry/core": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.17.9.tgz", - "integrity": "sha512-14KalmTholGUtgdh9TklO+jUpyQ/D3OGkhlH1rnGQGoJgFy2eYm+s+MnUEMxFdGIUCz5kOteuNqYZxaDmFagpQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.18.0.tgz", + "integrity": "sha512-I3iQVfMWHXR/LtevJg83aD7UAiUBLz1xAW8y3gd5lJej96UNv/4TbCmKZumYnEJMXf8EcFlg8t48W0Bl1GxhEg==", "requires": { - "@sentry/hub": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" } }, "@sentry/hub": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.17.9.tgz", - "integrity": "sha512-34EdrweWDbBV9EzEFIXcO+JeoyQmKzQVJxpTKZoJA6PUwf2NrndaUdjlkDEtBEzjuLUTxhLxtOzEsYs1O6RVcg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.18.0.tgz", + "integrity": "sha512-E2GrrNcidyT67ONU3btHO5vyS1bPQNdWqC09sUc1F3q/nQyvc7L2W09TKY2veaMZQtC9EU760fTG1hMmgGwPmw==", "requires": { - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" } }, "@sentry/minimal": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.17.9.tgz", - "integrity": "sha512-T3PMCHcKk6lkZq6zKgANrYJJxXBXKOe+ousV1Fas1rVBMv7dtKfsa4itqQHszcW9shusPDiaQKIJ4zRLE5LKmg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.18.0.tgz", + "integrity": "sha512-QkkWOhX3NMycUNLj96thMQ0BclmfxE2VdDf9ZqRkvdFzxI1FVY5NEArqD4wtlrCIoYN1ioAYrvdb48/BTuGung==", "requires": { - "@sentry/hub": "6.17.9", - "@sentry/types": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/types": "6.18.0", "tslib": "^1.9.3" } }, "@sentry/react": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.17.9.tgz", - "integrity": "sha512-TYu9Yl+gsNHdt763Yh35rSHJenxXqHSfWA55bYHr8hXDWu0crI/3LDuZb1RONmCM712CaQA+M5tgApA8QbHS4Q==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.18.0.tgz", + "integrity": "sha512-jJ3g41ucDyudT5Ye6ry3mGQaHkbp14yqjbgBWKhCljWwYie0rHLCfjZ6letz6K1ey2Asvl6MLH5eoNhGEV0idg==", "requires": { - "@sentry/browser": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/browser": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" } }, "@sentry/tracing": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.17.9.tgz", - "integrity": "sha512-5Rb/OS4ryNJLvz2nv6wyjwhifjy6veqaF9ffLrwFYij/WDy7m62ASBblxgeiI3fbPLX0aBRFWIJAq1vko26+AQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.18.0.tgz", + "integrity": "sha512-thwVrYT+ba58h6F6Im4t+JH9o+7H+75ribkeTgM7NRhNuiGajlXNmb37Dh9gP5Iy76jNV8GATy4cOcuVc7P1jA==", "requires": { - "@sentry/hub": "6.17.9", - "@sentry/minimal": "6.17.9", - "@sentry/types": "6.17.9", - "@sentry/utils": "6.17.9", + "@sentry/hub": "6.18.0", + "@sentry/minimal": "6.18.0", + "@sentry/types": "6.18.0", + "@sentry/utils": "6.18.0", "tslib": "^1.9.3" } }, "@sentry/types": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.17.9.tgz", - "integrity": "sha512-xuulX6qUCL14ayEOh/h6FUIvZtsi1Bx34dSOaWDrjXUOJHJAM7214uiqW1GZxPJ13YuaUIubjTSfDmSQ9CBzTw==" + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.18.0.tgz", + "integrity": "sha512-SypDwXL1URE/XLkP4Ve+pFs41e+2OUYZ0lCimNreQQv46//pFXxP3LwU9Tc0Az4ZfxXnGiwofvt73XyBq9VpRQ==" }, "@sentry/utils": { - "version": "6.17.9", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.17.9.tgz", - "integrity": "sha512-4eo9Z3JlJCGlGrQRbtZWL+L9NnlUXgTbfK3Lk7oO8D1ev8R5b5+iE6tZHTvU5rQRcq6zu+POT+tK5u9oxc/rnQ==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.18.0.tgz", + "integrity": "sha512-mKegOabkAjoUHfokjI5oi3CMez5GD3xXOrBFcLVc9GFDXCgNMdYnHyEn/mmy8PikFdGHxZ3oI/16ZGU22wi5aw==", "requires": { - "@sentry/types": "6.17.9", + "@sentry/types": "6.18.0", "tslib": "^1.9.3" } }, @@ -10734,6 +10845,12 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -11891,6 +12008,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -11986,6 +12109,15 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "devOptional": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12724,6 +12856,17 @@ "wrappy": "1" } }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -13573,6 +13716,47 @@ "fsevents": "~2.3.2" } }, + "rollup-plugin-visualizer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.6.0.tgz", + "integrity": "sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==", + "dev": true, + "requires": { + "nanoid": "^3.1.32", + "open": "^8.4.0", + "source-map": "^0.7.3", + "yargs": "^17.3.1" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", diff --git a/package.json b/package.json index 7dc1884..a198dda 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ }, "dependencies": { "@reduxjs/toolkit": "^1.7.2", - "@sentry/react": "^6.17.9", - "@sentry/tracing": "^6.17.9", + "@sentry/react": "^6.18.0", + "@sentry/tracing": "^6.18.0", "@speedy-tuner/ini": "^0.3.0", "@speedy-tuner/types": "^0.3.0", "antd": "^4.18.8", @@ -54,6 +54,7 @@ "eslint-plugin-prettier": "^4.0.0", "less": "^4.1.2", "prettier": "^2.5.1", + "rollup-plugin-visualizer": "^5.6.0", "typescript": "^4.5.5" } } diff --git a/src/data/edge-locations.json b/src/data/edge-locations.json new file mode 100644 index 0000000..47cc71a --- /dev/null +++ b/src/data/edge-locations.json @@ -0,0 +1,93 @@ +{ + "EZE": "Buenos Aires, Argentina", + "MEL": "Melbourne, Australia", + "PER": "Perth, Australia", + "SYD": "Sydney, Australia", + "VIE": "Vienna, Austria", + "BAH": "Manama, Bahrain", + "BRU": "Brussels, Belgium", + "GIG": "Rio de Janeiro, Brazil", + "GRU": "São Paulo, Brazil", + "SOF": "Sofia, Bulgaria", + "YUL6": "Montréal, QC Canada", + "YTO": "Greater Toronto, ON Canada", + "YVR": "Vancouver, BC Canada", + "SCL": "Santiago, Chile", + "BJS": "Beijing Beijing, China", + "HKG": "Hong Kong, China", + "SHA": "Shanghai, China", + "SZX": "Shenzhen, GD China", + "TPE": "Taipei, TW China", + "ZHY": "Zhongwei, Zhongwei, NX China", + "BOG": "Bogotá, Colombia", + "ZAG": "Zagreb, Croatia", + "PRG": "Prague, Czech Republic", + "CPH": "Copenhagen, Denmark", + "HEL": "Helsinki, Finland", + "MRS": "Marseille, France", + "CDG": "Paris, France", + "TXL": "Berlin, Germany", + "DUS": "Düsseldorf, Germany", + "FRA": "Frankfurt, Germany", + "HAM": "Hamburg, Germany", + "MUC": "Munich, Germany", + "ATH": "Eleftherios Venizelos Athens, Greece", + "BUD": "Budapest, Hungary", + "BLR": "Bangalore, India", + "MAA": "Chennai, India", + "HYD": "Hyderabad, India", + "CCU": "Kolkata, India", + "BOM": "Mumbai, India", + "DEL": "New Delhi, India", + "CGK": "Jakarta, Indonesia", + "DUB": "Dublin, Ireland", + "TLV": "Tel Aviv, Israel", + "MXP": "Milan, Italy", + "PMO": "Falcone Palermo, Italy", + "FCO": "Rome, Italy", + "KIX": "Osaka, Japan", + "NRT": "Tokyo, Japan", + "NBO": "Nairobi, Kenya", + "KUL": "Kuala Lumpur, Malaysia", + "QRO": "Querétaro, Mexico", + "AKL": "Auckland, New Zealand", + "OSL": "Gardermoen Oslo, Norway", + "MNL": "Manila, Philippines", + "WAW": "Warsaw, Poland", + "LIS": "Lisbon, Portugal", + "OTP": "Bucharest, Romania", + "SIN": "Singapore, Singapore", + "CPT": "Cape Town, South Africa", + "JNB": "Johannesburg, South Africa", + "ICN": "Seoul South, Korea", + "MAD": "Madrid, Spain", + "ARN": "Stockholm, Sweden", + "ZRH": "Zürich, Switzerland", + "BKK": "Bangkok, Thailand", + "AMS": "Schiphol Amsterdam, Netherlands", + "DXB": "Dubai, United Arab Emirates", + "FJR": "Fujairah, United Arab Emirates", + "LHR": "London, UK", + "MAN": "Manchester, UK", + "IAD6": "Ashburn, VA, US", + "IAD": "Ashburn, VA, US", + "ATL": "Atlanta, GA, US", + "BOS": "Boston, MA, US", + "ORD": "Chicago, IL, US", + "DFW": "Dallas/Fort Worth, TX, US", + "DEN": "Denver, CO, US", + "HIO": "Hillsboro, OR, US", + "IAH": "Houston, TX, US", + "JAX": "Jacksonville, FL, US", + "LAX": "Los Angeles, CA, US", + "MIA": "Miami, FL, US", + "MSP": "Minneapolis, MN, US", + "JFK": "New York, NY, US", + "EWR": "Newark, NJ, US", + "PHL": "Philadelphia, PA, US", + "PHX": "Phoenix, AZ, US", + "SLC": "Salt Lake City, UT, US", + "SFO": "San Francisco, CA, US", + "SEA": "Seattle, WA, US", + "IND": "Indianapolis, South Bend, IN, US" +} diff --git a/src/pages/Diagnose.tsx b/src/pages/Diagnose.tsx index 35100ad..261b558 100644 --- a/src/pages/Diagnose.tsx +++ b/src/pages/Diagnose.tsx @@ -19,7 +19,6 @@ import { GlobalOutlined, } from '@ant-design/icons'; import * as Sentry from '@sentry/browser'; -import pako from 'pako'; import useBreakpoint from 'antd/lib/grid/hooks/useBreakpoint'; import { connect } from 'react-redux'; import PerfectScrollbar from 'react-perfect-scrollbar'; @@ -99,6 +98,8 @@ const Diagnose = ({ ui, config, loadedLogs }: { ui: UIState, config: Config, loa const { signal } = controller; const loadData = async () => { + const pako = await import('pako'); + try { const compositeRaw = await loadCompositeLogs((percent, total, edge) => { setProgress(percent); diff --git a/src/pages/Logs.tsx b/src/pages/Logs.tsx index 3272e12..ea87577 100644 --- a/src/pages/Logs.tsx +++ b/src/pages/Logs.tsx @@ -19,7 +19,6 @@ import { EditOutlined, GlobalOutlined, } from '@ant-design/icons'; -import pako from 'pako'; import { CheckboxValueType } from 'antd/lib/checkbox/Group'; import useBreakpoint from 'antd/lib/grid/hooks/useBreakpoint'; import { connect } from 'react-redux'; @@ -164,6 +163,7 @@ const Logs = ({ setFileSize(formatBytes(raw.byteLength)); + const pako = await import('pako'); worker.postMessage(pako.inflate(new Uint8Array(raw)).buffer); worker.onmessage = ({ data }) => { diff --git a/src/pages/Upload.tsx b/src/pages/Upload.tsx index 5c25093..a75a034 100644 --- a/src/pages/Upload.tsx +++ b/src/pages/Upload.tsx @@ -38,7 +38,6 @@ import { useNavigate, } from 'react-router-dom'; import ReactMarkdown from 'react-markdown'; -import pako from 'pako'; import { customAlphabet, nanoid, @@ -177,6 +176,7 @@ const UploadPage = () => { } try { + const pako = await import('pako'); const buffer = await (file as File).arrayBuffer(); const compressed = pako.deflate(new Uint8Array(buffer)); const uploadTask = uploadFile(path, file as File, compressed); diff --git a/src/utils/api.ts b/src/utils/api.ts index 5a8a7d7..75d8bed 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -1,5 +1,4 @@ import { INI } from '@speedy-tuner/ini'; -import pako from 'pako'; import store from '../store'; import stdDialogs from '../data/standardDialogs'; import help from '../data/help'; @@ -13,6 +12,7 @@ import { TuneDbData } from '../types/dbData'; import useServerStorage, { CDN_URL } from '../hooks/useServerStorage'; export const loadTune = async (tuneData: TuneDbData) => { + const pako = await import('pako'); // eslint-disable-next-line react-hooks/rules-of-hooks const { getFile, getINIFile } = useServerStorage(); const started = new Date(); diff --git a/src/utils/http.ts b/src/utils/http.ts index 093eda6..9e625ca 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -1,19 +1,23 @@ -import locations from '../data/s3-edge-locations.json'; +import locations from '../data/edge-locations.json'; type LocationsType = { [index: string]: string }; export type onProgress = (percent: number, total: number, edgeLocation: string | null) => void; export const fetchWithProgress = async (url: string, onProgress?: onProgress, signal?: AbortSignal): Promise => { + let edgeLocation = null; const response = await fetch(url, { signal }); const contentLength = response.headers.get('Content-Length'); const isContentEncoded = response.headers.has('Content-Encoding'); - const edgeLocationCode = response.headers.get('x-amz-cf-pop'); - let edgeLocation = null; + // must be added to "Access-Control-Expose-Headers" in the response header + const edgeLocationCode = response.headers.get('cf-ray'); if (edgeLocationCode) { - // simplify location code (`MEL50-C1` => `MEL`) - edgeLocation = (locations as LocationsType)[edgeLocationCode.slice(0, 3)]; + // eg. 6e33fc504a7dcc77-WAW + const location = edgeLocationCode.split('-')[1]; + if (location) { + edgeLocation = (locations as LocationsType)[location]; + } } if (!contentLength || isContentEncoded) { diff --git a/vite.config.ts b/vite.config.ts index a2b4fd1..02d7541 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,10 +1,12 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +import { visualizer } from 'rollup-plugin-visualizer'; // https://vitejs.dev/config/ export default defineConfig({ // This changes the out put dir from dist to build build: { outDir: 'build' }, + server: { open: true }, css: { preprocessorOptions: { less: { javascriptEnabled: true }, @@ -12,5 +14,6 @@ export default defineConfig({ }, plugins: [ react(), + visualizer(), ], });