From 0839c9f3e380d68fd4af7cc0e59e5bea41c8128a Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Tue, 9 Sep 2025 00:27:39 +0100 Subject: [PATCH 01/10] fix: biome version and edifor config --- .editorconfig | 35 + .vscode/README.md | 59 + .vscode/extensions.json | 7 +- .vscode/launch.json | 21 +- .vscode/settings.json | 71 + apps/platform/package.json | 7 +- apps/platform/public/profiles/platform.js | 2 +- apps/platform/public/profiles/ppp.js | 2 +- apps/platform/vite.config.js | 4 +- biome.json | 61 +- package.json | 21 +- yarn.lock | 1935 +++++++++++---------- 12 files changed, 1221 insertions(+), 1004 deletions(-) create mode 100644 .editorconfig create mode 100644 .vscode/README.md create mode 100644 .vscode/settings.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..4848d957f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,35 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# All files +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +# JavaScript, TypeScript, JSON files +[*.{js,jsx,ts,tsx,json,jsonc}] +indent_style = space +indent_size = 2 + +# GraphQL files +[*.{gql,graphql}] +indent_style = space +indent_size = 2 + +# Markdown files +[*.md] +trim_trailing_whitespace = false + +# YAML files +[*.{yml,yaml}] +indent_style = space +indent_size = 2 + +# Package.json files +[package.json] +indent_style = space +indent_size = 2 diff --git a/.vscode/README.md b/.vscode/README.md new file mode 100644 index 000000000..d5b89da7e --- /dev/null +++ b/.vscode/README.md @@ -0,0 +1,59 @@ +# VSCode Configuration for Open Targets UI Apps + +This directory contains VSCode workspace configuration files to ensure consistent development experience across the team. + +## Files + +- **`settings.json`**: Workspace settings that configure BiomeJS as the default formatter and linter +- **`extensions.json`**: Recommended extensions for the project +- **`launch.json`**: Debug configurations for the platform app + +## Key Features + +### BiomeJS Integration +- Uses local BiomeJS installation from `node_modules` (not global) +- Automatic formatting on save for all supported file types +- Automatic import organization on save +- Automatic code fixes on save + +### Supported File Types +- JavaScript (`.js`, `.jsx`) +- TypeScript (`.ts`, `.tsx`) +- JSON (`.json`, `.jsonc`) +- GraphQL (`.gql`, `.graphql`) + +### Disabled Extensions +- Prettier (conflicts with BiomeJS) +- ESLint (replaced by BiomeJS) + +## Setup + +1. Install the recommended VSCode extensions when prompted +2. The workspace settings will automatically configure BiomeJS +3. Format on save and other features will work immediately + +## Manual Commands + +If you need to run BiomeJS manually: + +```bash +# Check for issues +npm run check + +# Fix issues automatically +npm run check:fix + +# Format files +npm run format:fix + +# Lint only +npm run lint:fix +``` + +## Troubleshooting + +If formatting doesn't work: +1. Ensure the BiomeJS extension is installed +2. Check that the local BiomeJS installation exists: `ls node_modules/@biomejs/biome` +3. Restart VSCode +4. Check the VSCode output panel for BiomeJS extension logs diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 699ed7331..1b8a29418 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,8 @@ { - "recommendations": ["biomejs.biome"] + "recommendations": [ + "biomejs.biome", + "graphql.vscode-graphql", + "ms-vscode.vscode-typescript-next" + ], + "unwantedRecommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 5ef287e20..e155368f6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,18 +1,17 @@ { - "version": "0.1.0", + "version": "0.2.0", "configurations": [ { - "command": "yarn dev:platform", - "name": "Run platform dev", + "name": "Debug Platform App", + "type": "node", "request": "launch", - "type": "node-terminal" - }, - { - "type": "chrome", - "request": "launch", - "name": "Launch Platform Chrome against localhost", - "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}/apps/platform/src/" + "program": "${workspaceFolder}/apps/platform/node_modules/.bin/vite", + "args": ["--mode", "development"], + "cwd": "${workspaceFolder}/apps/platform", + "console": "integratedTerminal", + "env": { + "NODE_ENV": "development" + } } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..1d6a8c37c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,71 @@ +{ + // BiomeJS Configuration + "biome.lspBin": "./node_modules/@biomejs/biome/bin/biome", + + // Set BiomeJS as default formatter for supported file types + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.biome": "explicit", + "source.organizeImports.biome": "explicit" + } + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.biome": "explicit", + "source.organizeImports.biome": "explicit" + } + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.biome": "explicit", + "source.organizeImports.biome": "explicit" + } + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.biome": "explicit", + "source.organizeImports.biome": "explicit" + } + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + }, + + // Disable other formatters to avoid conflicts + "prettier.enable": false, + "eslint.enable": false, + + // BiomeJS specific settings + "biome.enabled": true, + "biome.rename": true, + + // General editor settings + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.formatOnType": false, + + // File associations for GraphQL files + "files.associations": { + "*.gql": "graphql", + "*.graphql": "graphql" + }, + + // GraphQL formatting (BiomeJS handles .gql files) + "[graphql]": { + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true + } +} diff --git a/apps/platform/package.json b/apps/platform/package.json index 67f430acc..ada14917e 100644 --- a/apps/platform/package.json +++ b/apps/platform/package.json @@ -62,7 +62,12 @@ "check:fix": "biome check --formatter-enabled=true --write .", "analyze": "source-map-explorer 'build/static/js/*.js'" }, - "browserslist": [">0.2%", "not dead", "not ie > 0", "not op_mini all"], + "browserslist": [ + ">0.2%", + "not dead", + "not ie > 0", + "not op_mini all" + ], "devDependencies": { "@types/d3": "^7.4.0", "@types/react": "^18.0.28", diff --git a/apps/platform/public/profiles/platform.js b/apps/platform/public/profiles/platform.js index 57076c82e..3982ec567 100644 --- a/apps/platform/public/profiles/platform.js +++ b/apps/platform/public/profiles/platform.js @@ -1,5 +1,5 @@ // Configuration Object -// biome-ignore lint/style/noVar: keep this as var for now +// biome-ignore lint: keep this as var for now var configProfile = { /* general items */ diff --git a/apps/platform/public/profiles/ppp.js b/apps/platform/public/profiles/ppp.js index f2c39d18a..77fdbb39f 100644 --- a/apps/platform/public/profiles/ppp.js +++ b/apps/platform/public/profiles/ppp.js @@ -1,5 +1,5 @@ // Configuration Object -// biome-ignore lint/style/noVar: keep this as var for now +// biome-ignore lint: keep this as var for now var configProfile = { /* general items */ diff --git a/apps/platform/vite.config.js b/apps/platform/vite.config.js index 70d34fb13..aa8a087fd 100644 --- a/apps/platform/vite.config.js +++ b/apps/platform/vite.config.js @@ -8,8 +8,8 @@ import svgrPlugin from "vite-plugin-svgr"; const getGitVersion = () => { try { return execSync("git describe --tags --always").toString().trim(); - } catch (error) { - return "unknown"; + } catch { + return "unknown version"; } }; diff --git a/biome.json b/biome.json index aabec2712..11cca7544 100644 --- a/biome.json +++ b/biome.json @@ -1,7 +1,11 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "organizeImports": { - "enabled": true + "$schema": "https://biomejs.dev/schemas/2.2.3/schema.json", + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } }, "vcs": { "enabled": true, @@ -9,29 +13,27 @@ "useIgnoreFile": true }, "files": { - "include": [ + "includes": [ "**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx", "**/*.json", "**/*.gql", - "**/*.graphql" - ], - "ignore": [ - "**/node_modules/**", - "**/dist/**", - "**/build/**", - "**/.next/**", - "**/coverage/**", - "**/*.d.ts", - "**/generated/**", - "**/apps/platform/src/**", - "**/packages/ui/**", - "**/packages/sections/**", - "**/packages/ot-config/**", - "**/packages/ot-constants/**", - "**/packages/ot-utils/**" + "**/*.graphql", + "!**/node_modules", + "!**/dist", + "!**/build", + "!**/.next", + "!**/coverage", + "!**/*.d.ts", + "!**/generated", + "!**/apps/platform/src", + "!**/packages/ui", + "!**/packages/sections", + "!**/packages/ot-config", + "!**/packages/ot-constants", + "!**/packages/ot-utils" ] }, "formatter": { @@ -44,15 +46,16 @@ "lineWidth": 100, "attributePosition": "auto", "bracketSpacing": true, - "ignore": [ - "**/bundle-genetics", - "**/bundle-platform", - "**/node_modules", - "**/.github", - "**/.husky", - "**/public", - "**/__generated__", - "packages/tsconfig" + "includes": [ + "**", + "!**/bundle-genetics", + "!**/bundle-platform", + "!**/node_modules", + "!**/.github", + "!**/.husky", + "!**/public", + "!**/__generated__", + "!**/packages/tsconfig" ] }, "linter": { diff --git a/package.json b/package.json index 967b7f67c..d7e610029 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,10 @@ "version": "0.0.1", "private": true, "license": "Apache-2.0", - "workspaces": ["apps/*", "packages/*"], + "workspaces": [ + "apps/*", + "packages/*" + ], "bugs": { "url": "https://github.com/opentargets/ot-ui-apps/issues", "email": "support@targetvalidation.org" @@ -16,17 +19,17 @@ "build:platform": "turbo run build --filter=platform", "dev:platform:ppp": "turbo run dev-ppp --filter=platform", "build:platform:ppp": "turbo run build-ppp --filter=platform", - "lint": "biome check .", - "lint:fix": "biome check --write .", - "format": "biome format .", - "format:fix": "biome format --write .", - "format:check": "biome ci", - "check": "biome check --formatter-enabled=true .", - "check:fix": "biome check --formatter-enabled=true --write .", + "lint": "npx biome check .", + "lint:fix": "npx biome check --write .", + "format": "npx biome format .", + "format:fix": "npx biome format --write .", + "format:check": "npx biome ci", + "check": "npx biome check --formatter-enabled=true .", + "check:fix": "npx biome check --formatter-enabled=true --write .", "prepare": "husky install" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "^2.2.3", "husky": "^8.0.3", "lint-staged": "^14.0.1", "turbo": "^2.4.2" diff --git a/yarn.lock b/yarn.lock index aa37a4775..9f48a609e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,23 +3,15 @@ "3dmol@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/3dmol/-/3dmol-2.4.2.tgz#0d8d676cf8b548a709ac9c12219b59fcb356e960" - integrity sha512-7R6uFaF5++s9EpO+R0a3bs6igi5idI+sgrVhtozaZlOGHg6oourYkAlAwYxWRaeBGlNcAd+oEIhbhJYhNxGyZA== + version "2.5.2" + resolved "https://registry.yarnpkg.com/3dmol/-/3dmol-2.5.2.tgz#719ba4662782b88be8a49c94826b16300e0099dc" + integrity sha512-xILRLpHru+Hoa4kGISfh0QQlI39UoSxRR4q/BKrLNRhsu+LLiE6lfZ6MROHQXKo8iE2alQRWUxSM0mxXmVAvOg== dependencies: - iobuffer "^5.3.1" + iobuffer "^5.0.0" netcdfjs "^3.0.0" pako "^2.1.0" upng-js "^2.1.0" -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - "@apollo/client@3.10.8": version "3.10.8" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.10.8.tgz#96b1548818e45fac752ec2bd318e5466d9ca26b5" @@ -40,241 +32,243 @@ tslib "^2.3.0" zen-observable-ts "^1.2.5" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/compat-data@^7.26.5": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== - -"@babel/core@^7.19.6", "@babel/core@^7.26.0": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.9.tgz#71838542a4b1e49dfed353d7acbc6eb89f4a76f2" - integrity sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.9" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.9" - "@babel/parser" "^7.26.9" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.9" - "@babel/types" "^7.26.9" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" + integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + +"@babel/core@^7.19.6", "@babel/core@^7.28.0": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" + integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.4" + "@babel/types" "^7.28.4" + "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.9.tgz#75a9482ad3d0cc7188a537aa4910bc59db67cbca" - integrity sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg== +"@babel/generator@^7.28.3": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" + integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== dependencies: - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" + "@babel/parser" "^7.28.3" + "@babel/types" "^7.28.2" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" "@babel/helper-annotate-as-pure@^7.22.5": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" - integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/compat-data" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== +"@babel/helper-module-transforms@^7.28.3": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" + integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.28.3" -"@babel/helper-plugin-utils@^7.25.9": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.9.tgz#28f3fb45252fc88ef2dc547c8a911c255fc9fef6" - integrity sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA== +"@babel/helpers@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" + integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.9" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5" - integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" + integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== dependencies: - "@babel/types" "^7.26.9" + "@babel/types" "^7.28.4" "@babel/plugin-syntax-jsx@^7.22.5": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-jsx-self@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" - integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== +"@babel/plugin-transform-react-jsx-self@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz#af678d8506acf52c577cac73ff7fe6615c85fc92" + integrity sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-jsx-source@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" - integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== +"@babel/plugin-transform-react-jsx-source@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz#dcfe2c24094bb757bf73960374e7c55e434f19f0" + integrity sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/runtime-corejs2@^7.0.0": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.26.9.tgz#1936c9847aa09faaa941e06f48d3e391e5ca5e1b" - integrity sha512-DHEUkm9RD4RfIThlLTemmHNFVTj9Z/augVFMuyheFjwoFv1jFjauncHrcSW6Kv1TpzTupB01zFk2iRFAh2iE9A== + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.28.4.tgz#c7fbf1cc769b3e7b9817bf0daa8823cdfeab9aca" + integrity sha512-chjPHn3p+okNMesTjKU/pnpVT06oiJG1sVDJHTkAwYTCnVdM/2V5LI5xz3Y2y7MNngn8fQ19fpXjV3f9Jqun9w== dependencies: core-js "^2.6.12" - regenerator-runtime "^0.14.0" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.9.tgz#aa4c6facc65b9cb3f87d75125ffd47781b475433" - integrity sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.9.tgz#4398f2394ba66d05d988b2ad13c219a2c857461a" - integrity sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.9" - "@babel/parser" "^7.26.9" - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.9" + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" + integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" + integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.9.tgz#08b43dec79ee8e682c2ac631c010bdcac54a21ce" - integrity sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw== +"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" + integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@biomejs/biome@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.4.tgz#89766281cbc3a0aae865a7ff13d6aaffea2842bf" - integrity sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog== +"@biomejs/biome@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.2.3.tgz#9d17991c80e006c5ca3e21bebe84b7afd71559e3" + integrity sha512-9w0uMTvPrIdvUrxazZ42Ib7t8Y2yoGLKLdNne93RLICmaHw7mcLv4PPb5LvZLJF3141gQHiCColOh/v6VWlWmg== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.9.4" - "@biomejs/cli-darwin-x64" "1.9.4" - "@biomejs/cli-linux-arm64" "1.9.4" - "@biomejs/cli-linux-arm64-musl" "1.9.4" - "@biomejs/cli-linux-x64" "1.9.4" - "@biomejs/cli-linux-x64-musl" "1.9.4" - "@biomejs/cli-win32-arm64" "1.9.4" - "@biomejs/cli-win32-x64" "1.9.4" - -"@biomejs/cli-darwin-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz#dfa376d23a54a2d8f17133c92f23c1bf2e62509f" - integrity sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw== - -"@biomejs/cli-darwin-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz#eafc2ce3849d385fc02238aad1ca4a73395a64d9" - integrity sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg== - -"@biomejs/cli-linux-arm64-musl@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz#d780c3e01758fc90f3268357e3f19163d1f84fca" - integrity sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA== - -"@biomejs/cli-linux-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz#8ed1dd0e89419a4b66a47f95aefb8c46ae6041c9" - integrity sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g== - -"@biomejs/cli-linux-x64-musl@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz#f36982b966bd671a36671e1de4417963d7db15fb" - integrity sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg== - -"@biomejs/cli-linux-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz#a0a7f56680c76b8034ddc149dbf398bdd3a462e8" - integrity sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg== - -"@biomejs/cli-win32-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz#e2ef4e0084e76b7e26f0fc887c5ef1265ea56200" - integrity sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg== - -"@biomejs/cli-win32-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz#4c7afa90e3970213599b4095e62f87e5972b2340" - integrity sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA== + "@biomejs/cli-darwin-arm64" "2.2.3" + "@biomejs/cli-darwin-x64" "2.2.3" + "@biomejs/cli-linux-arm64" "2.2.3" + "@biomejs/cli-linux-arm64-musl" "2.2.3" + "@biomejs/cli-linux-x64" "2.2.3" + "@biomejs/cli-linux-x64-musl" "2.2.3" + "@biomejs/cli-win32-arm64" "2.2.3" + "@biomejs/cli-win32-x64" "2.2.3" + +"@biomejs/cli-darwin-arm64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.3.tgz#e18240343fa705dafb08ba72a7b0e88f04a8be3e" + integrity sha512-OrqQVBpadB5eqzinXN4+Q6honBz+tTlKVCsbEuEpljK8ASSItzIRZUA02mTikl3H/1nO2BMPFiJ0nkEZNy3B1w== + +"@biomejs/cli-darwin-x64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.3.tgz#964b51c9f649e3a725f6f43e75c4173b9ab8a3ae" + integrity sha512-OCdBpb1TmyfsTgBAM1kPMXyYKTohQ48WpiN9tkt9xvU6gKVKHY4oVwteBebiOqyfyzCNaSiuKIPjmHjUZ2ZNMg== + +"@biomejs/cli-linux-arm64-musl@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.3.tgz#1756c37960d5585ca865e184539b113e48719b41" + integrity sha512-q3w9jJ6JFPZPeqyvwwPeaiS/6NEszZ+pXKF+IczNo8Xj6fsii45a4gEEicKyKIytalV+s829ACZujQlXAiVLBQ== + +"@biomejs/cli-linux-arm64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.3.tgz#036c6334d5b09b51233ce5120b18f4c89a15a74c" + integrity sha512-g/Uta2DqYpECxG+vUmTAmUKlVhnGEcY7DXWgKP8ruLRa8Si1QHsWknPY3B/wCo0KgYiFIOAZ9hjsHfNb9L85+g== + +"@biomejs/cli-linux-x64-musl@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.3.tgz#e6cce01910b9f56c1645c5518595d0b1eb38c245" + integrity sha512-y76Dn4vkP1sMRGPFlNc+OTETBhGPJ90jY3il6jAfur8XWrYBQV3swZ1Jo0R2g+JpOeeoA0cOwM7mJG6svDz79w== + +"@biomejs/cli-linux-x64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.3.tgz#f328e7cfde92fad6c7ad215df1f51b146b4ed007" + integrity sha512-LEtyYL1fJsvw35CxrbQ0gZoxOG3oZsAjzfRdvRBRHxOpQ91Q5doRVjvWW/wepgSdgk5hlaNzfeqpyGmfSD0Eyw== + +"@biomejs/cli-win32-arm64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.3.tgz#b8d64ca6dc1c50b8f3d42475afd31b7b44460935" + integrity sha512-Ms9zFYzjcJK7LV+AOMYnjN3pV3xL8Prxf9aWdDVL74onLn5kcvZ1ZMQswE5XHtnd/r/0bnUd928Rpbs14BzVmA== + +"@biomejs/cli-win32-x64@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.3.tgz#ecafffddf0c0675c825735c7cc917cbc8c538433" + integrity sha512-gvCpewE7mBwBIpqk1YrUqNR4mCiyJm6UI3YWQQXkedSSEwzRdodRpaKhbdbHw1/hmTWOVXQ+Eih5Qctf4TCVOQ== "@ebi-gene-expression-group/anatomogram@^2.4.0": version "2.4.0" @@ -298,9 +292,9 @@ react "^16.12.0" "@ebi-gene-expression-group/expression-atlas-heatmap-highcharts@^5.4.1-beta1": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ebi-gene-expression-group/expression-atlas-heatmap-highcharts/-/expression-atlas-heatmap-highcharts-5.7.1.tgz#6245ec48a7caaf5a03cd68e7ebce873290f96513" - integrity sha512-zmB9L26FTukcnpjlbzc5z7L7Xky8bfesozxigjUYN15ZvFJIuH9fgM93BL62j6sAefyCXqfR2uSJXJj2OHCPWQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ebi-gene-expression-group/expression-atlas-heatmap-highcharts/-/expression-atlas-heatmap-highcharts-5.7.2.tgz#54cbab3d556325803cd6e6713e5094393a03bdea" + integrity sha512-oNznDhGQDWJDatBihvJPdcsXAoZC7roXez1guN0cZWAps7UAOxiqM4bP3mfr2xKl+OAbDF0BugnroZiqixbf7g== dependencies: "@ebi-gene-expression-group/anatomogram" "^2.4.0" "@ebi-gene-expression-group/expression-atlas-disclaimers" "^1.4.0" @@ -377,9 +371,9 @@ "@emotion/memoize" "0.7.4" "@emotion/is-prop-valid@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240" - integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz#e9ad47adff0b5c94c72db3669ce46de33edf28c0" + integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw== dependencies: "@emotion/memoize" "^0.9.0" @@ -424,9 +418,9 @@ integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== "@emotion/styled@^11.11.0": - version "11.14.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.0.tgz#f47ca7219b1a295186d7661583376fcea95f0ff3" - integrity sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA== + version "11.14.1" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" + integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.13.5" @@ -460,157 +454,162 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@esbuild/aix-ppc64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz#499600c5e1757a524990d5d92601f0ac3ce87f64" - integrity sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ== - -"@esbuild/android-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz#b9b8231561a1dfb94eb31f4ee056b92a985c324f" - integrity sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g== - -"@esbuild/android-arm@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.0.tgz#ca6e7888942505f13e88ac9f5f7d2a72f9facd2b" - integrity sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g== - -"@esbuild/android-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.0.tgz#e765ea753bac442dfc9cb53652ce8bd39d33e163" - integrity sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg== - -"@esbuild/darwin-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz#fa394164b0d89d4fdc3a8a21989af70ef579fa2c" - integrity sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw== - -"@esbuild/darwin-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz#91979d98d30ba6e7d69b22c617cc82bdad60e47a" - integrity sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg== - -"@esbuild/freebsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz#b97e97073310736b430a07b099d837084b85e9ce" - integrity sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w== - -"@esbuild/freebsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz#f3b694d0da61d9910ec7deff794d444cfbf3b6e7" - integrity sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A== - -"@esbuild/linux-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz#f921f699f162f332036d5657cad9036f7a993f73" - integrity sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg== - -"@esbuild/linux-arm@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz#cc49305b3c6da317c900688995a4050e6cc91ca3" - integrity sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg== - -"@esbuild/linux-ia32@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz#3e0736fcfab16cff042dec806247e2c76e109e19" - integrity sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg== - -"@esbuild/linux-loong64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz#ea2bf730883cddb9dfb85124232b5a875b8020c7" - integrity sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw== - -"@esbuild/linux-mips64el@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz#4cababb14eede09248980a2d2d8b966464294ff1" - integrity sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ== - -"@esbuild/linux-ppc64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz#8860a4609914c065373a77242e985179658e1951" - integrity sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw== - -"@esbuild/linux-riscv64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz#baf26e20bb2d38cfb86ee282dff840c04f4ed987" - integrity sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA== - -"@esbuild/linux-s390x@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz#8323afc0d6cb1b6dc6e9fd21efd9e1542c3640a4" - integrity sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA== - -"@esbuild/linux-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz#08fcf60cb400ed2382e9f8e0f5590bac8810469a" - integrity sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw== - -"@esbuild/netbsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz#935c6c74e20f7224918fbe2e6c6fe865b6c6ea5b" - integrity sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw== - -"@esbuild/netbsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz#414677cef66d16c5a4d210751eb2881bb9c1b62b" - integrity sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA== - -"@esbuild/openbsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz#8fd55a4d08d25cdc572844f13c88d678c84d13f7" - integrity sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw== - -"@esbuild/openbsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz#0c48ddb1494bbc2d6bcbaa1429a7f465fa1dedde" - integrity sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg== - -"@esbuild/sunos-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz#86ff9075d77962b60dd26203d7352f92684c8c92" - integrity sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg== - -"@esbuild/win32-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz#849c62327c3229467f5b5cd681bf50588442e96c" - integrity sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw== - -"@esbuild/win32-ia32@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz#f62eb480cd7cca088cb65bb46a6db25b725dc079" - integrity sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA== - -"@esbuild/win32-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz#c8e119a30a7c8d60b9d2e22d2073722dde3b710b" - integrity sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ== - -"@floating-ui/core@^1.6.0": - version "1.6.9" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.9.tgz#64d1da251433019dafa091de9b2886ff35ec14e6" - integrity sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw== - dependencies: - "@floating-ui/utils" "^0.2.9" - -"@floating-ui/dom@^1.0.0": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.13.tgz#a8a938532aea27a95121ec16e667a7cbe8c59e34" - integrity sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w== - dependencies: - "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.9" +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== + +"@floating-ui/core@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7" + integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w== + dependencies: + "@floating-ui/utils" "^0.2.10" + +"@floating-ui/dom@^1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77" + integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA== + dependencies: + "@floating-ui/core" "^1.7.3" + "@floating-ui/utils" "^0.2.10" "@floating-ui/react-dom@^2.0.8": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" - integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + version "2.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.6.tgz#189f681043c1400561f62972f461b93f01bf2231" + integrity sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw== dependencies: - "@floating-ui/dom" "^1.0.0" + "@floating-ui/dom" "^1.7.4" -"@floating-ui/utils@^0.2.9": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429" - integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg== +"@floating-ui/utils@^0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" + integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== "@fortawesome/fontawesome-common-types@6.7.2": version "6.7.2" @@ -646,9 +645,9 @@ "@fortawesome/fontawesome-common-types" "6.7.2" "@fortawesome/react-fontawesome@^0.2.0": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz#68b058f9132b46c8599875f6a636dad231af78d4" - integrity sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g== + version "0.2.6" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.6.tgz#b75d0c7710c646c9bb6b9bb61cb5b8548a9ef2f5" + integrity sha512-mtBFIi1UsYQo7rYonYFkjgYKGoL8T+fEH6NGUpvuqtY3ytMsAoDaPo5rk25KuMtKDipY4bGYM/CkmCHA1N3FUg== dependencies: prop-types "^15.8.1" @@ -684,13 +683,20 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": @@ -698,35 +704,30 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.30" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz#4a76c4daeee5df09f5d3940e087442fb36ce2b99" + integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@lit-labs/ssr-dom-shim@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz#a28799c463177d1a0b0e5cefdc173da5ac859eb4" - integrity sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ== +"@lit-labs/ssr-dom-shim@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz#55eb80ab5ef6e188f7e541c1e2bea1ef582413b8" + integrity sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw== -"@lit/reactive-element@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-2.0.4.tgz#8f2ed950a848016383894a26180ff06c56ae001b" - integrity sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ== +"@lit/reactive-element@^2.0.4", "@lit/reactive-element@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-2.1.1.tgz#0662ac4a43d4898974aef9a6c5cd47b9e331919a" + integrity sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg== dependencies: - "@lit-labs/ssr-dom-shim" "^1.2.0" + "@lit-labs/ssr-dom-shim" "^1.4.0" "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" @@ -743,47 +744,47 @@ semver "^7.3.5" tar "^6.1.11" -"@mui/base@5.0.0-beta.40-0": - version "5.0.0-beta.40-0" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40-0.tgz#4e211724d3feefa3dd1546952502b87491137e89" - integrity sha512-hG3atoDUxlvEy+0mqdMpWd04wca8HKr2IHjW/fAjlkCHQolSLazhZM46vnHjOf15M4ESu25mV/3PgjczyjVM4w== +"@mui/base@5.0.0-beta.40-1": + version "5.0.0-beta.40-1" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40-1.tgz#6da6229e5e675e811f319149f6e29d7a77522851" + integrity sha512-agKXuNNy0bHUmeU7pNmoZwNFr7Hiyhojkb9+2PVyDG5+6RafYuyMgbrav8CndsB7KUc/U51JAw9vKNDLYBzaUA== dependencies: "@babel/runtime" "^7.23.9" "@floating-ui/react-dom" "^2.0.8" - "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.12" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" "@popperjs/core" "^2.11.8" clsx "^2.1.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.16.14": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.14.tgz#e6536f1b6caa873f7915fbf9703fdc840a5a98d9" - integrity sha512-sbjXW+BBSvmzn61XyTMun899E7nGPTXwqD9drm1jBUAvWEhJpPFIRxwQQiATWZnd9rvdxtnhhdsDxEGWI0jxqA== +"@mui/core-downloads-tracker@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.18.0.tgz#85019a8704b0f63305fc5600635ee663810f2b66" + integrity sha512-jbhwoQ1AY200PSSOrNXmrFCaSDSJWP7qk6urkTmIirvRXDROkqe+QwcLlUiw/PrREwsIF/vm3/dAXvjlMHF0RA== "@mui/lab@^5.0.0-alpha.137": - version "5.0.0-alpha.175" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.175.tgz#eb3bc607b96d164455c4beafe8d7f718bb1971fe" - integrity sha512-AvM0Nvnnj7vHc9+pkkQkoE1i+dEbr6gsMdnSfy7X4w3Ljgcj1yrjZhIt3jGTCLzyKVLa6uve5eLluOcGkvMqUA== + version "5.0.0-alpha.177" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.177.tgz#a02f43b36d7e204166706f2c27640f378e3d7c88" + integrity sha512-bdCxxtNjlWAgN9rtrwlmFydJ1qxA3IIbb6OlomGFsIXw0zGoHomLyjvh72q/R3yUAC0kvSef18cHY1UalLylyQ== dependencies: "@babel/runtime" "^7.23.9" - "@mui/base" "5.0.0-beta.40-0" - "@mui/system" "^5.16.12" - "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.12" + "@mui/base" "5.0.0-beta.40-1" + "@mui/system" "^5.18.0" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" clsx "^2.1.0" prop-types "^15.8.1" "@mui/material@^5.14.1": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.16.14.tgz#da8a75822f039d8c1b0ab7fb4146d767c2f9248a" - integrity sha512-eSXQVCMKU2xc7EcTxe/X/rC9QsV2jUe8eLM3MUCPYbo6V52eCE436akRIvELq/AqZpxx2bwkq7HC0cRhLB+yaw== + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.18.0.tgz#71e72d52338252edc6f8d9461e04fdf0d61905cd" + integrity sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA== dependencies: "@babel/runtime" "^7.23.9" - "@mui/core-downloads-tracker" "^5.16.14" - "@mui/system" "^5.16.14" - "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.14" + "@mui/core-downloads-tracker" "^5.18.0" + "@mui/system" "^5.18.0" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.10" clsx "^2.1.0" @@ -792,35 +793,36 @@ react-is "^19.0.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.16.14": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.16.14.tgz#7ad2b8a8fe0417f9fdfd05011806b9cb33c1a20a" - integrity sha512-12t7NKzvYi819IO5IapW2BcR33wP/KAVrU8d7gLhGHoAmhDxyXlRoKiRij3TOD8+uzk0B6R9wHUNKi4baJcRNg== +"@mui/private-theming@^5.17.1": + version "5.17.1" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.17.1.tgz#b4b6fbece27830754ef78186e3f1307dca42f295" + integrity sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ== dependencies: "@babel/runtime" "^7.23.9" - "@mui/utils" "^5.16.14" + "@mui/utils" "^5.17.1" prop-types "^15.8.1" -"@mui/styled-engine@^5.16.14": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.16.14.tgz#f90fef5b4f8ebf11d48e1b1df8854a45bb31a9f5" - integrity sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw== +"@mui/styled-engine@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.18.0.tgz#914cca1385bb33ce0cde31721f529c8bd7fa301c" + integrity sha512-BN/vKV/O6uaQh2z5rXV+MBlVrEkwoS/TK75rFQ2mjxA7+NBo8qtTAOA4UaM0XeJfn7kh2wZ+xQw2HAx0u+TiBg== dependencies: "@babel/runtime" "^7.23.9" "@emotion/cache" "^11.13.5" + "@emotion/serialize" "^1.3.3" csstype "^3.1.3" prop-types "^15.8.1" "@mui/styles@^5.14.1": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.16.14.tgz#a9482d0287ae83636c146817ba99f7dde6fcdaca" - integrity sha512-J3iE718GbU06mnD9qu57/Fx+TosuBlhzs8nk1Q87QRQ76xo6qzLc3ek9n3dUPourGXWVenTxv1YX8lTOAnbHBA== + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.18.0.tgz#e70330282e2c64880cc5f36f3fd9fa94257177d5" + integrity sha512-GDgFUfl2MMN8iGrYTuhJ0hHRoja2kVOlXnHb5d3BBQCHFxOBaAPDKQxaNkoAwRf/vBhhwXWDsJA2XlkNHUPBgA== dependencies: "@babel/runtime" "^7.23.9" "@emotion/hash" "^0.9.1" - "@mui/private-theming" "^5.16.14" - "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.14" + "@mui/private-theming" "^5.17.1" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" clsx "^2.1.0" csstype "^3.1.3" hoist-non-react-statics "^3.3.2" @@ -834,32 +836,32 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.16.12", "@mui/system@^5.16.14": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.16.14.tgz#92765ba01a3d1f8ee4967248cb00077d7aed225b" - integrity sha512-KBxMwCb8mSIABnKvoGbvM33XHyT+sN0BzEBG+rsSc0lLQGzs7127KWkCA6/H8h6LZ00XpBEME5MAj8mZLiQ1tw== +"@mui/system@^5.18.0": + version "5.18.0" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.18.0.tgz#e55331203a40584b26c5a855a07949ac8973bfb6" + integrity sha512-ojZGVcRWqWhu557cdO3pWHloIGJdzVtxs3rk0F9L+x55LsUjcMUVkEhiF7E4TMxZoF9MmIHGGs0ZX3FDLAf0Xw== dependencies: "@babel/runtime" "^7.23.9" - "@mui/private-theming" "^5.16.14" - "@mui/styled-engine" "^5.16.14" - "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.14" + "@mui/private-theming" "^5.17.1" + "@mui/styled-engine" "^5.18.0" + "@mui/types" "~7.2.15" + "@mui/utils" "^5.17.1" clsx "^2.1.0" csstype "^3.1.3" prop-types "^15.8.1" -"@mui/types@^7.2.15": - version "7.2.21" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.21.tgz#63f50874eda8e4a021a69aaa8ba9597369befda2" - integrity sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww== +"@mui/types@~7.2.15": + version "7.2.24" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.24.tgz#5eff63129d9c29d80bbf2d2e561bd0690314dec2" + integrity sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw== -"@mui/utils@^5.16.12", "@mui/utils@^5.16.14": - version "5.16.14" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.16.14.tgz#7217e876a5092cd04c184b34bca348e0befaef8c" - integrity sha512-wn1QZkRzSmeXD1IguBVvJJHV3s6rxJrfb6YuC9Kk6Noh9f8Fb54nUs5JRkKm+BOerRhj5fLg05Dhx/H3Ofb8Mg== +"@mui/utils@^5.17.1": + version "5.17.1" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.17.1.tgz#72ba4ffa79f7bdf69d67458139390f18484b6e6b" + integrity sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg== dependencies: "@babel/runtime" "^7.23.9" - "@mui/types" "^7.2.15" + "@mui/types" "~7.2.15" "@types/prop-types" "^15.7.12" clsx "^2.1.1" prop-types "^15.8.1" @@ -870,20 +872,20 @@ resolved "https://registry.yarnpkg.com/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== -"@nightingale-elements/nightingale-new-core@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-new-core/-/nightingale-new-core-5.4.1.tgz#5bf2498bcc2537cc2ab0a279d9a65c28db104665" - integrity sha512-Wc4p+1b6RG711Gq44kUuIdL+VmsKxjgUQGbYFoWwhM+MjzJd/EDqoJUMJPZZr2ZpGa8or3bTNG82++HYBXQuHg== +"@nightingale-elements/nightingale-new-core@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-new-core/-/nightingale-new-core-5.6.0.tgz#60a78b522a33440ff033820a124dd4264e13b0b6" + integrity sha512-x4GSN6F6nr9PR44GCZr8NSMSsNKX2y9r2RDVBW4vI43DJdAyy17exk4r7M+3ZzO/7iSOUbudz74hLN7R0rwZyg== dependencies: d3 "7.9.0" lit "3.1.3" "@nightingale-elements/nightingale-structure@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-structure/-/nightingale-structure-5.4.1.tgz#289a2991de74b462aebeed88015cb55f7b317f8d" - integrity sha512-V1h+wFPdpUCSoRqrmSPxgRnr7eSPnRi1ZkYZ/IXjiRaDjZrVdoUdd0ibupa570ldadZvfloazmSBwP7NGjcIkw== + version "5.6.2" + resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-structure/-/nightingale-structure-5.6.2.tgz#c388ae2a62b2db2412b054e282c6b0d70070a85c" + integrity sha512-XNuCu6xfO0sxf/d2r3kkd/SD8QgAvX8Z7g/FVqYqbH1uT9iROcg9j/yD3nEkVuJc+tke00swLycxzgkABlm7jw== dependencies: - "@nightingale-elements/nightingale-new-core" "^5.4.1" + "@nightingale-elements/nightingale-new-core" "^5.6.0" d3 "7.9.0" molstar "3.44.0" @@ -1011,109 +1013,124 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.21.0.tgz#c65ae4262bdcfe415dbd4f64ec87676e4a56e2b5" integrity sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA== +"@rolldown/pluginutils@1.0.0-beta.27": + version "1.0.0-beta.27" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz#47d2bf4cef6d470b22f5831b420f8964e0bf755f" + integrity sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA== + "@rollup/pluginutils@^5.0.2": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a" - integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz#57ba1b0cbda8e7a3c597a4853c807b156e21a7b4" + integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz#e1d7700735f7e8de561ef7d1fa0362082a180c43" - integrity sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ== - -"@rollup/rollup-android-arm64@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz#fa6cdfb1fc9e2c8e227a7f35d524d8f7f90cf4db" - integrity sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA== - -"@rollup/rollup-darwin-arm64@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz#6da5a1ddc4f11d4a7ae85ab443824cb6bf614e30" - integrity sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q== - -"@rollup/rollup-darwin-x64@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz#25b74ce2d8d3f9ea8e119b01384d44a1c0a0d3ae" - integrity sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q== - -"@rollup/rollup-freebsd-arm64@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz#be3d39e3441df5d6e187c83d158c60656c82e203" - integrity sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ== - -"@rollup/rollup-freebsd-x64@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz#cd932d3ec679711efd65ca25821fb318e25b7ce4" - integrity sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw== - -"@rollup/rollup-linux-arm-gnueabihf@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz#d300b74c6f805474225632f185daaeae760ac2bb" - integrity sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg== - -"@rollup/rollup-linux-arm-musleabihf@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz#2caac622380f314c41934ed1e68ceaf6cc380cc3" - integrity sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A== - -"@rollup/rollup-linux-arm64-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz#1ec841650b038cc15c194c26326483fd7ebff3e3" - integrity sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A== - -"@rollup/rollup-linux-arm64-musl@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz#2fc70a446d986e27f6101ea74e81746987f69150" - integrity sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg== - -"@rollup/rollup-linux-loongarch64-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz#561bd045cd9ce9e08c95f42e7a8688af8c93d764" - integrity sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g== - -"@rollup/rollup-linux-powerpc64le-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz#45d849a0b33813f33fe5eba9f99e0ff15ab5caad" - integrity sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA== - -"@rollup/rollup-linux-riscv64-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz#78dde3e6fcf5b5733a97d0a67482d768aa1e83a5" - integrity sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g== - -"@rollup/rollup-linux-s390x-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz#2e34835020f9e03dfb411473a5c2a0e8a9c5037b" - integrity sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw== - -"@rollup/rollup-linux-x64-gnu@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz#4f9774beddc6f4274df57ac99862eb23040de461" - integrity sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA== - -"@rollup/rollup-linux-x64-musl@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz#dfcff2c1aed518b3d23ccffb49afb349d74fb608" - integrity sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg== - -"@rollup/rollup-win32-arm64-msvc@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz#b0b37e2d77041e3aa772f519291309abf4c03a84" - integrity sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg== - -"@rollup/rollup-win32-ia32-msvc@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz#5b5a40e44a743ddc0e06b8e1b3982f856dc9ce0a" - integrity sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw== - -"@rollup/rollup-win32-x64-msvc@4.35.0": - version "4.35.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz#05f25dbc9981bee1ae6e713daab10397044a46ca" - integrity sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw== +"@rollup/rollup-android-arm-eabi@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz#7d41dc45adcfcb272504ebcea9c8a5b2c659e963" + integrity sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag== + +"@rollup/rollup-android-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz#6c708fae2c9755e994c42d56c34a94cb77020650" + integrity sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw== + +"@rollup/rollup-darwin-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz#85ccf92ab114e434c83037a175923a525635cbb4" + integrity sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw== + +"@rollup/rollup-darwin-x64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz#0af089f3d658d05573208dabb3a392b44d7f4630" + integrity sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw== + +"@rollup/rollup-freebsd-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz#46c22a16d18180e99686647543335567221caa9c" + integrity sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA== + +"@rollup/rollup-freebsd-x64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz#819ffef2f81891c266456952962a13110c8e28b5" + integrity sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz#7fe283c14793e607e653a3214b09f8973f08262a" + integrity sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg== + +"@rollup/rollup-linux-arm-musleabihf@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz#066e92eb22ea30560414ec800a6d119ba0b435ac" + integrity sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw== + +"@rollup/rollup-linux-arm64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz#480d518ea99a8d97b2a174c46cd55164f138cc37" + integrity sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw== + +"@rollup/rollup-linux-arm64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz#ed7db3b8999b60dd20009ddf71c95f3af49423c8" + integrity sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w== + +"@rollup/rollup-linux-loongarch64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz#16a6927a35f5dbc505ff874a4e1459610c0c6f46" + integrity sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q== + +"@rollup/rollup-linux-ppc64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz#a006700469be0041846c45b494c35754e6a04eea" + integrity sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q== + +"@rollup/rollup-linux-riscv64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz#0fcc45b2ec8a0e54218ca48849ea6d596f53649c" + integrity sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ== + +"@rollup/rollup-linux-riscv64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz#d6e617eec9fe6f5859ee13fad435a16c42b469f2" + integrity sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg== + +"@rollup/rollup-linux-s390x-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz#b147760d63c6f35b4b18e6a25a2a760dd3ea0c05" + integrity sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg== + +"@rollup/rollup-linux-x64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz#fc0be1da374f85e7e85dccaf1ff12d7cfc9fbe3d" + integrity sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA== + +"@rollup/rollup-linux-x64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz#54c79932e0f9a3c992b034c82325be3bcde0d067" + integrity sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg== + +"@rollup/rollup-openharmony-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz#fc48e74d413623ac02c1d521bec3e5e784488fdc" + integrity sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA== + +"@rollup/rollup-win32-arm64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz#8ce3d1181644406362cf1e62c90e88ab083e02bb" + integrity sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ== + +"@rollup/rollup-win32-ia32-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz#dd2dfc896eac4b2689d55f01c6d51c249263f805" + integrity sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A== + +"@rollup/rollup-win32-x64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz#13f758c97b9fbbac56b6928547a3ff384e7cfb3e" + integrity sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA== "@scarf/scarf@=1.4.0": version "1.4.0" @@ -1221,16 +1238,16 @@ remove-accents "0.5.0" "@tanstack/react-table@^8.16.0", "@tanstack/react-table@^8.5.11": - version "8.21.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.2.tgz#6a7fce828b64547e33f4606ada8114db496007cc" - integrity sha512-11tNlEDTdIhMJba2RBH+ecJ9l1zgS2kjmexDPAraulc8jeNA4xocSNeyzextT0XJyASil4XsCYlJmf5jEWAtYg== + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.3.tgz#2c38c747a5731c1a07174fda764b9c2b1fb5e91b" + integrity sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww== dependencies: - "@tanstack/table-core" "8.21.2" + "@tanstack/table-core" "8.21.3" -"@tanstack/table-core@8.21.2", "@tanstack/table-core@^8.16.0": - version "8.21.2" - resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.2.tgz#dd57595a1773652bb6fb437e90a5f5386a49fd7e" - integrity sha512-uvXk/U4cBiFMxt+p9/G7yUWI/UbHYbyghLCjlpWZ3mLeIZiUBSKcUnw9UnKkdRz7Z/N4UBuFLWQdJCjUe7HjvA== +"@tanstack/table-core@8.21.3", "@tanstack/table-core@^8.16.0": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.3.tgz#2977727d8fc8dfa079112d9f4d4c019110f1732c" + integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== "@tootallnate/once@2": version "2.0.0" @@ -1254,9 +1271,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + version "7.27.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== dependencies: "@babel/types" "^7.0.0" @@ -1269,11 +1286,11 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.28.0.tgz#07d713d6cce0d265c9849db0cbe62d3f61f36f74" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.28.2" "@types/benchmark@^2.1.5": version "2.1.5" @@ -1281,9 +1298,9 @@ integrity sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w== "@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== dependencies: "@types/connect" "*" "@types/node" "*" @@ -1345,9 +1362,9 @@ integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== "@types/d3-dispatch@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz#096efdf55eb97480e3f5621ff9a8da552f0961e7" - integrity sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ== + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== "@types/d3-drag@*": version "3.0.7" @@ -1526,10 +1543,10 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@1.0.6", "@types/estree@^1.0.0": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== "@types/express-serve-static-core@^4.17.33": version "4.19.6" @@ -1542,9 +1559,9 @@ "@types/send" "*" "@types/express-serve-static-core@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" - integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== + version "5.0.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" + integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1552,19 +1569,18 @@ "@types/send" "*" "@types/express@*": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" - integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" + integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^5.0.0" - "@types/qs" "*" "@types/serve-static" "*" "@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + version "4.17.23" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" + integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -1589,9 +1605,9 @@ integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== "@types/mdast@^4.0.0": version "4.0.4" @@ -1611,19 +1627,19 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node-fetch@^2.6.10": - version "2.6.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" - integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== + version "2.6.13" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.13.tgz#e0c9b7b5edbdb1b50ce32c127e85e880872d56ee" + integrity sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw== dependencies: "@types/node" "*" - form-data "^4.0.0" + form-data "^4.0.4" "@types/node@*": - version "22.13.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" - integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== + version "24.3.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.3.1.tgz#b0a3fb2afed0ef98e8d7f06d46ef6349047709f3" + integrity sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g== dependencies: - undici-types "~6.20.0" + undici-types "~7.10.0" "@types/node@^16.18.69": version "16.18.126" @@ -1631,9 +1647,9 @@ integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== "@types/node@^18.0.0": - version "18.19.80" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.80.tgz#6d6008e8920dddcd23f9dd33da24684ef57d487c" - integrity sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ== + version "18.19.124" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.124.tgz#6f49e4fab8274910691a900e8a14316cbf3c7a31" + integrity sha512-hY4YWZFLs3ku6D2Gqo3RchTd9VRCcrjqp/I0mmohYeUVA5Y8eCXKJEasHxLAJVZRJuQogfd1GiJ9lgogBgKeuQ== dependencies: undici-types "~5.26.4" @@ -1643,14 +1659,14 @@ integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/prop-types@*", "@types/prop-types@^15.7.12": - version "15.7.14" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.14.tgz#1433419d73b2a7ebfc6918dcefd2ec0d5cd698f2" - integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== + version "15.7.15" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" + integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== "@types/qs@*": - version "6.9.18" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" - integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== "@types/range-parser@*": version "1.2.7" @@ -1658,9 +1674,9 @@ integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/react-dom@^18.0.11": - version "18.3.5" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.5.tgz#45f9f87398c5dcea085b715c58ddcf1faf65f716" - integrity sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q== + version "18.3.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f" + integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== "@types/react-helmet@^6.1.6": version "6.1.11" @@ -1692,32 +1708,32 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*", "@types/react@>=16.9.11": - version "19.0.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.10.tgz#d0c66dafd862474190fe95ce11a68de69ed2b0eb" - integrity sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g== + version "19.1.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.12.tgz#7bfaa76aabbb0b4fe0493c21a3a7a93d33e8937b" + integrity sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w== dependencies: csstype "^3.0.2" "@types/react@^18.0.28": - version "18.3.18" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.18.tgz#9b382c4cd32e13e463f97df07c2ee3bbcd26904b" - integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ== + version "18.3.24" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.24.tgz#f6a5a4c613242dfe3af0dcee2b4ec47b92d9b6bd" + integrity sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A== dependencies: "@types/prop-types" "*" csstype "^3.0.2" "@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + version "0.17.5" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" + integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + version "1.15.8" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" + integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== dependencies: "@types/http-errors" "*" "@types/node" "*" @@ -1759,15 +1775,16 @@ integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== "@vitejs/plugin-react@^4.0.4": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz#c64be10b54c4640135a5b28a2432330e88ad7c20" - integrity sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug== - dependencies: - "@babel/core" "^7.26.0" - "@babel/plugin-transform-react-jsx-self" "^7.25.9" - "@babel/plugin-transform-react-jsx-source" "^7.25.9" + version "4.7.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz#647af4e7bb75ad3add578e762ad984b90f4a24b9" + integrity sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA== + dependencies: + "@babel/core" "^7.28.0" + "@babel/plugin-transform-react-jsx-self" "^7.27.1" + "@babel/plugin-transform-react-jsx-source" "^7.27.1" + "@rolldown/pluginutils" "1.0.0-beta.27" "@types/babel__core" "^7.20.5" - react-refresh "^0.14.2" + react-refresh "^0.17.0" "@wry/caches@^1.0.0": version "1.0.1" @@ -1864,9 +1881,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -1876,9 +1893,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: color-convert "^2.0.1" ansi-styles@^6.0.0, ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + version "6.2.3" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== apollo-utilities@^1.3.4: version "1.3.4" @@ -1891,9 +1908,9 @@ apollo-utilities@^1.3.4: tslib "^1.10.0" "aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.1.0.tgz#75500a190313d95c64e871e7e4284c6ac219f0b1" + integrity sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew== are-we-there-yet@^2.0.0: version "2.0.0" @@ -1930,17 +1947,18 @@ array-flatten@1.1.1: integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array.prototype.reduce@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz#6aadc2f995af29cb887eb866d981dc85ab6f7dc7" - integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q== + version "1.0.8" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz#42f97f5078daedca687d4463fd3c05cbfd83da57" + integrity sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.9" es-array-method-boxes-properly "^1.0.0" es-errors "^1.3.0" - es-object-atoms "^1.0.0" - is-string "^1.0.7" + es-object-atoms "^1.1.1" + is-string "^1.1.1" arraybuffer.prototype.slice@^1.0.4: version "1.0.4" @@ -1965,7 +1983,7 @@ async-function@^1.0.0: resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== -async@^3.2.3: +async@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== @@ -2075,17 +2093,17 @@ body-parser@1.20.3, body-parser@^1.20.2: unpipe "1.0.0" brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -2097,14 +2115,14 @@ braces@^3.0.2, braces@^3.0.3: fill-range "^7.1.1" browserslist@^4.24.0: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + version "4.25.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.4.tgz#ebdd0e1d1cf3911834bab3a6cd7b917d9babf5af" + integrity sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" + caniuse-lite "^1.0.30001737" + electron-to-chromium "^1.5.211" node-releases "^2.0.19" - update-browserslist-db "^1.1.1" + update-browserslist-db "^1.1.3" btoa@^1.2.1: version "1.2.1" @@ -2189,10 +2207,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001688: - version "1.0.30001703" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz#977cb4920598c158f491ecf4f4f2cfed9e354718" - integrity sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ== +caniuse-lite@^1.0.30001737: + version "1.0.30001741" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz#67fb92953edc536442f3c9da74320774aa523143" + integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw== canvas@^2.11.2: version "2.11.2" @@ -2221,7 +2239,7 @@ chalk@5.3.0: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2327,9 +2345,9 @@ codemirror-graphql@^1.3.2: graphql-language-service "^5.0.6" codemirror@^5.65.3: - version "5.65.18" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.18.tgz#d7146e4271135a9b4adcd023a270185457c9c428" - integrity sha512-Gaz4gHnkbHMGgahNt3CA5HBk5lLQBqmD/pBgeB4kQU6OedZmqMBjlRF0LSrp2tJ4wlLNPm2FfaUd1pDy0mdlpA== + version "5.65.20" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.20.tgz#8aa77c2dbfeb2df9b0828bf8e7d64fdd566eeff0" + integrity sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA== codepage@~1.15.0: version "1.15.0" @@ -2433,15 +2451,15 @@ compressible@~2.0.18: mime-db ">= 1.43.0 < 2" compression@^1.7.4: - version "1.8.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" - integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== dependencies: bytes "3.1.2" compressible "~2.0.18" debug "2.6.9" negotiator "~0.6.4" - on-headers "~1.0.2" + on-headers "~1.1.0" safe-buffer "5.2.1" vary "~1.1.2" @@ -3133,9 +3151,9 @@ debug@2.6.9: ms "2.0.0" debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" @@ -3147,9 +3165,9 @@ debug@4.3.4: ms "2.1.2" decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" + integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== dependencies: character-entities "^2.0.0" @@ -3238,9 +3256,9 @@ detect-libc@^1.0.3: integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" + integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -3342,10 +3360,10 @@ ejs@^3.1.5: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.73: - version "1.5.113" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz#1175b8ba4170541e44e9afa8b992e5bbfff0d150" - integrity sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg== +electron-to-chromium@^1.5.211: + version "1.5.215" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz#200c8d69b1270af6126837b6b1f95077c3a347b1" + integrity sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ== emoji-regex@^8.0.0: version "8.0.0" @@ -3375,9 +3393,9 @@ encoding@^0.1.11, encoding@^0.1.13: iconv-lite "^0.6.2" end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" @@ -3414,26 +3432,26 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: - version "1.23.9" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" - integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== dependencies: array-buffer-byte-length "^1.0.2" arraybuffer.prototype.slice "^1.0.4" available-typed-arrays "^1.0.7" call-bind "^1.0.8" - call-bound "^1.0.3" + call-bound "^1.0.4" data-view-buffer "^1.0.2" data-view-byte-length "^1.0.2" data-view-byte-offset "^1.0.1" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" es-set-tostringtag "^2.1.0" es-to-primitive "^1.3.0" function.prototype.name "^1.1.8" - get-intrinsic "^1.2.7" - get-proto "^1.0.0" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" get-symbol-description "^1.1.0" globalthis "^1.0.4" gopd "^1.2.0" @@ -3445,21 +3463,24 @@ es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: is-array-buffer "^3.0.5" is-callable "^1.2.7" is-data-view "^1.0.2" + is-negative-zero "^2.0.3" is-regex "^1.2.1" + is-set "^2.0.3" is-shared-array-buffer "^1.0.4" is-string "^1.1.1" is-typed-array "^1.1.15" - is-weakref "^1.1.0" + is-weakref "^1.1.1" math-intrinsics "^1.1.0" - object-inspect "^1.13.3" + object-inspect "^1.13.4" object-keys "^1.1.1" object.assign "^4.1.7" own-keys "^1.0.1" - regexp.prototype.flags "^1.5.3" + regexp.prototype.flags "^1.5.4" safe-array-concat "^1.1.3" safe-push-apply "^1.0.0" safe-regex-test "^1.1.0" set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" string.prototype.trim "^1.2.10" string.prototype.trimend "^1.0.9" string.prototype.trimstart "^1.0.8" @@ -3468,7 +3489,7 @@ es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: typed-array-byte-offset "^1.0.4" typed-array-length "^1.0.7" unbox-primitive "^1.1.0" - which-typed-array "^1.1.18" + which-typed-array "^1.1.19" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -3512,35 +3533,36 @@ es-to-primitive@^1.3.0: is-symbol "^1.0.4" esbuild@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.0.tgz#0de1787a77206c5a79eeb634a623d39b5006ce92" - integrity sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw== + version "0.25.9" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.0" - "@esbuild/android-arm" "0.25.0" - "@esbuild/android-arm64" "0.25.0" - "@esbuild/android-x64" "0.25.0" - "@esbuild/darwin-arm64" "0.25.0" - "@esbuild/darwin-x64" "0.25.0" - "@esbuild/freebsd-arm64" "0.25.0" - "@esbuild/freebsd-x64" "0.25.0" - "@esbuild/linux-arm" "0.25.0" - "@esbuild/linux-arm64" "0.25.0" - "@esbuild/linux-ia32" "0.25.0" - "@esbuild/linux-loong64" "0.25.0" - "@esbuild/linux-mips64el" "0.25.0" - "@esbuild/linux-ppc64" "0.25.0" - "@esbuild/linux-riscv64" "0.25.0" - "@esbuild/linux-s390x" "0.25.0" - "@esbuild/linux-x64" "0.25.0" - "@esbuild/netbsd-arm64" "0.25.0" - "@esbuild/netbsd-x64" "0.25.0" - "@esbuild/openbsd-arm64" "0.25.0" - "@esbuild/openbsd-x64" "0.25.0" - "@esbuild/sunos-x64" "0.25.0" - "@esbuild/win32-arm64" "0.25.0" - "@esbuild/win32-ia32" "0.25.0" - "@esbuild/win32-x64" "0.25.0" + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -3669,6 +3691,11 @@ fbjs@^0.8.1: setimmediate "^1.0.5" ua-parser-js "^0.7.30" +fdir@^6.4.4, fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + file-saver@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" @@ -3735,14 +3762,15 @@ for-each@^0.3.3, for-each@^0.3.5: dependencies: is-callable "^1.2.7" -form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" forwarded@0.2.0: @@ -3936,11 +3964,6 @@ glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -3987,9 +4010,9 @@ graphql-anywhere@^4.2.8: tslib "^2.4.0" graphql-language-service@^5.0.6: - version "5.3.0" - resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.3.0.tgz#e99da78b129e30bc6e2a3fd897f7df4ab23b2fee" - integrity sha512-gCQIIy7lM9CB1KPLEb+DNZLczA9zuTLEOJE2hEQZTFYInogdmMDRa6RAkvM4LL0LcgcS+3uPs6KtHlcjCqRbUg== + version "5.5.0" + resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.5.0.tgz#2e68b23bd5384f2fbf1e9391e907106e8246d025" + integrity sha512-9EvWrLLkF6Y5e29/2cmFoAO6hBPPAZlCyjznmpR11iFtRydfkss+9m6x+htA8h7YznGam+TtJwS6JuwoWWgb2Q== dependencies: debounce-promise "^3.1.2" nullthrows "^1.0.0" @@ -4073,9 +4096,9 @@ hasown@^2.0.2: function-bind "^1.1.2" hast-util-to-jsx-runtime@^2.0.0: - version "2.3.5" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz#dd22fedd1aa87b44ed1ce68f3d15e30d6c7cb781" - integrity sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ== + version "2.3.6" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz#ff31897aae59f62232e21594eac7ef6b63333e98" + integrity sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg== dependencies: "@types/estree" "^1.0.0" "@types/hast" "^3.0.0" @@ -4089,7 +4112,7 @@ hast-util-to-jsx-runtime@^2.0.0: mdast-util-mdxjs-esm "^2.0.0" property-information "^7.0.0" space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" + style-to-js "^1.0.0" unist-util-position "^5.0.0" vfile-message "^4.0.0" @@ -4113,9 +4136,9 @@ highcharts-custom-events@^3.0.2: highcharts ">=5.0.9" highcharts@>=5.0.9: - version "12.1.2" - resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-12.1.2.tgz#826114935b3ffb6b99dc906da00f137667a67fbb" - integrity sha512-paZ72q1um0zZT1sS+O/3JfXVSOLPmZ0zlo8SgRc0rEplPFPQUPc4VpkgQS8IUTueeOBgIWwVpAWyC9tBYbQ0kg== + version "12.4.0" + resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-12.4.0.tgz#6bc0d551960e4e275d5a605e77b75625deeea225" + integrity sha512-o6UxxfChSUrvrZUbWrAuqL1HO/+exhAUPcZY6nnqLsadZQlnP16d082sg7DnXKZCk1gtfkyfkp6g3qkIZ9miZg== highcharts@^6.0.4, highcharts@^6.2.0: version "6.2.0" @@ -4150,9 +4173,9 @@ htmlparser2@^4.1.0: entities "^2.0.0" http-cache-semantics@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-errors@2.0.0: version "2.0.0" @@ -4234,9 +4257,9 @@ immutable@^4.3.4: integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== immutable@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1" - integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw== + version "5.1.3" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4" + integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg== import-fresh@^3.2.1: version "3.3.1" @@ -4322,18 +4345,15 @@ io-ts@^2.2.21: resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.22.tgz#5ab0d3636fe8494a275f0266461ab019da4b8d0b" integrity sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA== -iobuffer@^5.3.1, iobuffer@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/iobuffer/-/iobuffer-5.3.2.tgz#76d3fb907c655ad6fb7a73964bfca8b4e04f52fa" - integrity sha512-kO3CjNfLZ9t+tHxAMd+Xk4v3D/31E91rMs1dHrm7ikEQrlZ8mLDbQ4z3tZfDM48zOkReas2jx8MWSAmN9+c8Fw== +iobuffer@^5.0.0, iobuffer@^5.3.2: + version "5.4.0" + resolved "https://registry.yarnpkg.com/iobuffer/-/iobuffer-5.4.0.tgz#f85dff957fd0579257472f0a4cfe5ed3430e63e1" + integrity sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA== -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" +ip-address@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.0.1.tgz#a8180b783ce7788777d796286d61bce4276818ed" + integrity sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA== ipaddr.js@1.9.1: version "1.9.1" @@ -4496,6 +4516,11 @@ is-map@^2.0.3: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-number-object@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" @@ -4558,7 +4583,7 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-string@^1.0.7, is-string@^1.1.1: +is-string@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== @@ -4587,7 +4612,7 @@ is-weakmap@^2.0.2: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2, is-weakref@^1.1.0: +is-weakref@^1.0.2, is-weakref@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== @@ -4648,14 +4673,13 @@ isomorphic-fetch@^2.1.1: whatwg-fetch ">=0.10.0" jake@^10.8.5: - version "10.9.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + version "10.9.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.4.tgz#d626da108c63d5cfb00ab5c25fadc7e0084af8e6" + integrity sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA== dependencies: - async "^3.2.3" - chalk "^4.0.2" + async "^3.2.6" filelist "^1.0.4" - minimatch "^3.1.2" + picocolors "^1.1.1" javascript-lp-solver@0.4.24: version "0.4.24" @@ -4672,11 +4696,6 @@ jpeg-js@^0.4.4: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - jsesc@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" @@ -4693,9 +4712,9 @@ json5@^2.2.3: integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + version "6.2.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== dependencies: universalify "^2.0.0" optionalDependencies: @@ -4822,18 +4841,18 @@ listr2@6.6.1: wrap-ansi "^8.1.0" lit-element@^4.0.4: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.1.1.tgz#07905992815076e388cf6f1faffc7d6866c82007" - integrity sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew== + version "4.2.1" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.2.1.tgz#0a3782f36eaa545862fe07f84abcb14b2903a042" + integrity sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw== dependencies: - "@lit-labs/ssr-dom-shim" "^1.2.0" - "@lit/reactive-element" "^2.0.4" - lit-html "^3.2.0" + "@lit-labs/ssr-dom-shim" "^1.4.0" + "@lit/reactive-element" "^2.1.0" + lit-html "^3.3.0" -lit-html@^3.1.2, lit-html@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.2.1.tgz#8fc49e3531ee5947e4d93e8a5aa642ab1649833b" - integrity sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA== +lit-html@^3.1.2, lit-html@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.3.1.tgz#f0a7e4b9ea0a1d034eb28a4bf2d1b0a0096253e3" + integrity sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA== dependencies: "@types/trusted-types" "^2.0.2" @@ -5084,9 +5103,9 @@ merge-stream@^2.0.0: integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== meros@^1.1.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" - integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.1.tgz#21a090d59c02afb1e418e40631b78aa37a21ac69" + integrity sha512-eV7dRObfTrckdmAz4/n7pT1njIsIJXRIZkgCiX43xEsPNy4gjXQzOYYxmGcolAMtF7HyfqRuDBh3Lgs4hmhVEw== methods@~1.1.2: version "1.1.2" @@ -5309,9 +5328,9 @@ mime-db@1.52.0: integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== "mime-db@>= 1.43.0 < 2": - version "1.53.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" - integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" @@ -5345,7 +5364,7 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -5490,14 +5509,14 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.3: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nan@^2.17.0: - version "2.22.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.2.tgz#6b504fd029fb8f38c0990e52ad5c26772fdacfbb" - integrity sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ== + version "2.23.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.23.0.tgz#24aa4ddffcc37613a2d2935b97683c1ec96093c6" + integrity sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ== -nanoid@^3.3.8: - version "3.3.9" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" - integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== napi-build-utils@^2.0.0: version "2.0.0" @@ -5522,9 +5541,9 @@ netcdfjs@^3.0.0: iobuffer "^5.3.2" node-abi@^3.26.0, node-abi@^3.3.0: - version "3.74.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.74.0.tgz#5bfb4424264eaeb91432d2adb9da23c63a301ed0" - integrity sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w== + version "3.77.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.77.0.tgz#3ad90d5c9d45663420e5aa4ff58dbf4e3625419a" + integrity sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ== dependencies: semver "^7.3.5" @@ -5566,9 +5585,9 @@ node-gyp@^9.2.0: which "^2.0.2" node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + version "2.0.20" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.20.tgz#e26bb79dbdd1e64a146df389c699014c611cbc27" + integrity sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA== nopt@^5.0.0: version "5.0.0" @@ -5626,7 +5645,7 @@ object-hash@^2.0.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== -object-inspect@^1.13.3: +object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== @@ -5668,10 +5687,10 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -5827,7 +5846,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0, picocolors@^1.1.1: +picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -5837,10 +5856,10 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== pidtree@0.6.0: version "0.6.0" @@ -5885,11 +5904,11 @@ postcss@^7.0.27: source-map "^0.6.1" postcss@^8.5.3: - version "8.5.3" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== dependencies: - nanoid "^3.3.8" + nanoid "^3.3.11" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -5949,9 +5968,9 @@ prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, pr react-is "^16.13.1" property-information@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.0.0.tgz#3508a6d6b0b8eb3ca6eb2c6623b164d2ed2ab112" - integrity sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg== + version "7.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" + integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== proxy-addr@~2.0.7: version "2.0.7" @@ -5962,9 +5981,9 @@ proxy-addr@~2.0.7: ipaddr.js "1.9.1" pump@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" - integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6183,9 +6202,9 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.3.2, react-is@^16.6.0, react- integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.0.0.tgz#d6669fd389ff022a9684f708cf6fa4962d1fea7a" - integrity sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g== + version "19.1.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.1.1.tgz#038ebe313cf18e1fd1235d51c87360eb87f7c36a" + integrity sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA== react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" @@ -6247,10 +6266,10 @@ react-refetch@^3.0.1: invariant "^2.2.4" warning "^4.0.3" -react-refresh@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" - integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== +react-refresh@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53" + integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ== react-router-dom@6.28.0: version "6.28.0" @@ -6387,12 +6406,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regexp.prototype.flags@^1.5.3: +regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -6420,9 +6434,9 @@ remark-parse@^11.0.0: unified "^11.0.0" remark-rehype@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.1.tgz#f864dd2947889a11997c0a2667cd6b38f685bca7" - integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== + version "11.1.2" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" + integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -6460,9 +6474,9 @@ resolve@^1.19.0: supports-preserve-symlinks-flag "^1.0.0" response-iterator@^0.2.6: - version "0.2.20" - resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.20.tgz#9a8259d7f6fe35fb81ab2d8f2b938e5e6c892821" - integrity sha512-RfNi9saiJ9VKznrRZEGZtlfeiQI7NWMUlXvmkvO60xaHfW1y+36EOibZkV59LuKNak8VIqL6IyxYxhMOGTurIQ== + version "0.2.25" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.25.tgz#5e8dae715ed9ca68b37919f4eae0a90d3ab1ae64" + integrity sha512-15K4tT8X35W0zJ5bv3fAf4eEKqOwS7yzd+Bg6YEE9NLltVbPbuTcYo3J2AP6AMQGMJmJkFCG421+kP2/iCBfDA== restore-cursor@^4.0.0: version "4.0.0" @@ -6511,32 +6525,34 @@ rollup-plugin-visualizer@^5.14.0: source-map "^0.7.4" yargs "^17.5.1" -rollup@^4.30.1: - version "4.35.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.35.0.tgz#76c95dba17a579df4c00c3955aed32aa5d4dc66d" - integrity sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg== +rollup@^4.34.9: + version "4.50.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.50.1.tgz#6f0717c34aacc65cc727eeaaaccc2afc4e4485fd" + integrity sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA== dependencies: - "@types/estree" "1.0.6" + "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.35.0" - "@rollup/rollup-android-arm64" "4.35.0" - "@rollup/rollup-darwin-arm64" "4.35.0" - "@rollup/rollup-darwin-x64" "4.35.0" - "@rollup/rollup-freebsd-arm64" "4.35.0" - "@rollup/rollup-freebsd-x64" "4.35.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.35.0" - "@rollup/rollup-linux-arm-musleabihf" "4.35.0" - "@rollup/rollup-linux-arm64-gnu" "4.35.0" - "@rollup/rollup-linux-arm64-musl" "4.35.0" - "@rollup/rollup-linux-loongarch64-gnu" "4.35.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.35.0" - "@rollup/rollup-linux-riscv64-gnu" "4.35.0" - "@rollup/rollup-linux-s390x-gnu" "4.35.0" - "@rollup/rollup-linux-x64-gnu" "4.35.0" - "@rollup/rollup-linux-x64-musl" "4.35.0" - "@rollup/rollup-win32-arm64-msvc" "4.35.0" - "@rollup/rollup-win32-ia32-msvc" "4.35.0" - "@rollup/rollup-win32-x64-msvc" "4.35.0" + "@rollup/rollup-android-arm-eabi" "4.50.1" + "@rollup/rollup-android-arm64" "4.50.1" + "@rollup/rollup-darwin-arm64" "4.50.1" + "@rollup/rollup-darwin-x64" "4.50.1" + "@rollup/rollup-freebsd-arm64" "4.50.1" + "@rollup/rollup-freebsd-x64" "4.50.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.1" + "@rollup/rollup-linux-arm-musleabihf" "4.50.1" + "@rollup/rollup-linux-arm64-gnu" "4.50.1" + "@rollup/rollup-linux-arm64-musl" "4.50.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.50.1" + "@rollup/rollup-linux-ppc64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-musl" "4.50.1" + "@rollup/rollup-linux-s390x-gnu" "4.50.1" + "@rollup/rollup-linux-x64-gnu" "4.50.1" + "@rollup/rollup-linux-x64-musl" "4.50.1" + "@rollup/rollup-openharmony-arm64" "4.50.1" + "@rollup/rollup-win32-arm64-msvc" "4.50.1" + "@rollup/rollup-win32-ia32-msvc" "4.50.1" + "@rollup/rollup-win32-x64-msvc" "4.50.1" fsevents "~2.3.2" rw@1: @@ -6600,9 +6616,9 @@ sanitize-html@^1.20.1: postcss "^7.0.27" sass@^1.49.10: - version "1.85.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.85.1.tgz#18ab0bb48110ae99163778f06445b406148ca0d5" - integrity sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag== + version "1.92.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.92.1.tgz#07fb1fec5647d7b712685d1090628bf52456fe86" + integrity sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ== dependencies: chokidar "^4.0.0" immutable "^5.0.2" @@ -6631,9 +6647,9 @@ semver@^6.0.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== send@0.19.0: version "0.19.0" @@ -6838,11 +6854,11 @@ socks-proxy-agent@^7.0.0: socks "^2.6.2" socks@^2.6.2: - version "2.8.4" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" - integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== + version "2.8.7" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea" + integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== dependencies: - ip-address "^9.0.5" + ip-address "^10.0.1" smart-buffer "^4.2.0" source-map-explorer@^2.0.0: @@ -6879,9 +6895,9 @@ source-map@^0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + version "0.7.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== space-separated-tokens@^2.0.0: version "2.0.2" @@ -6893,11 +6909,6 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - ssf@~0.11.2: version "0.11.2" resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c" @@ -6917,6 +6928,14 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -7005,9 +7024,9 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: ansi-regex "^5.0.1" strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + version "7.1.2" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== dependencies: ansi-regex "^6.0.1" @@ -7021,10 +7040,17 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -style-to-object@^1.0.0: - version "1.0.8" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.8.tgz#67a29bca47eaa587db18118d68f9d95955e81292" - integrity sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g== +style-to-js@^1.0.0: + version "1.1.17" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.17.tgz#488b1558a8c1fd05352943f088cc3ce376813d83" + integrity sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA== + dependencies: + style-to-object "1.0.9" + +style-to-object@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.9.tgz#35c65b713f4a6dba22d3d0c61435f965423653f0" + integrity sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw== dependencies: inline-style-parser "0.2.4" @@ -7087,9 +7113,9 @@ svg-parser@^2.0.4: integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== swagger-ui-dist@^5.10.5: - version "5.20.0" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.20.0.tgz#b14d5e2bd0ffab2179de221288ee366a5ec5fcf1" - integrity sha512-V5pozVTZxivdoQq/SQWxj3A4cOu5opk9MEbcZANX3Pj8X8xCrD1QCtBT7744Pz9msOvt0nnmy9JvM/9PGonCdg== + version "5.28.1" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.28.1.tgz#2423eb17e987436a4479ef3bb6ea2679353dabcc" + integrity sha512-IvPrtNi8MvjiuDgoSmPYgg27Lvu38fnLD1OSd8Y103xXsPAqezVNnNeHnVCZ/d+CMXJblflGaIyHxAYIF3O71w== dependencies: "@scarf/scarf" "=1.4.0" @@ -7104,9 +7130,9 @@ symbol-observable@^4.0.0: integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== tar-fs@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5" - integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== + version "2.1.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92" + integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" @@ -7157,6 +7183,14 @@ tiny-warning@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinyglobby@^0.2.13: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -7573,47 +7607,47 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -turbo-darwin-64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.4.4.tgz#2508d9b3b358bb91e8745be3e62284621a2b8721" - integrity sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g== +turbo-darwin-64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.5.6.tgz#d694492bdd16359b31918f9d33234bccc44f853e" + integrity sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A== -turbo-darwin-arm64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.4.4.tgz#6fccca032d68bc6383d118da2fb7bc0c31ba3a7d" - integrity sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw== +turbo-darwin-arm64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.6.tgz#b8800a1613bc06ded2445b0337ed146c1dbac234" + integrity sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA== -turbo-linux-64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.4.4.tgz#6957b278c6fc52991bafa037dff6569d3f3b4f82" - integrity sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q== +turbo-linux-64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.5.6.tgz#23938cee385e358a1363316b6d7464899354349d" + integrity sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA== -turbo-linux-arm64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.4.4.tgz#bb596c4a3572f40bf65c0f23db16dc585f71ec80" - integrity sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg== +turbo-linux-arm64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.5.6.tgz#1e36c543497ffbefed7e479bd9dbe594de457321" + integrity sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ== -turbo-windows-64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.4.4.tgz#f73dccceb970bdc75b3a13da81e1671c2bc64325" - integrity sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg== +turbo-windows-64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.5.6.tgz#abbb9a8226d0b2b293fc7dbea0e0869a95323545" + integrity sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg== -turbo-windows-arm64@2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.4.4.tgz#e00c26e3d7fd9a82af90018ad3137f14e5221630" - integrity sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg== +turbo-windows-arm64@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.6.tgz#81af8538b338ef3b3814db0ed1d9ea31d30ff72d" + integrity sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q== turbo@^2.4.2: - version "2.4.4" - resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.4.4.tgz#cec5dbac5850adebdba71fbdf90e6e9a7723c3d6" - integrity sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ== + version "2.5.6" + resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.6.tgz#610810b87037520cc2c0f94decba552d3a6e770b" + integrity sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w== optionalDependencies: - turbo-darwin-64 "2.4.4" - turbo-darwin-arm64 "2.4.4" - turbo-linux-64 "2.4.4" - turbo-linux-arm64 "2.4.4" - turbo-windows-64 "2.4.4" - turbo-windows-arm64 "2.4.4" + turbo-darwin-64 "2.5.6" + turbo-darwin-arm64 "2.5.6" + turbo-linux-64 "2.5.6" + turbo-linux-arm64 "2.5.6" + turbo-windows-64 "2.5.6" + turbo-windows-arm64 "2.5.6" type-fest@^1.0.2: version "1.4.0" @@ -7684,14 +7718,14 @@ typeface-roboto-mono@^1.1.13: integrity sha512-pnzDc70b7ywJHin/BUFL7HZX8DyOTBLT2qxlJ92eH1UJOFcENIBXa9IZrxsJX/gEKjbEDKhW5vz/TKRBNk/ufQ== typescript@^5.0.0, typescript@^5.2.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== ua-parser-js@^0.7.30: - version "0.7.40" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.40.tgz#c87d83b7bb25822ecfa6397a0da5903934ea1562" - integrity sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ== + version "0.7.41" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.41.tgz#9f6dee58c389e8afababa62a4a2dc22edb69a452" + integrity sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -7723,10 +7757,10 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== unified@^11.0.0: version "11.0.5" @@ -7803,7 +7837,7 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.1: +update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== @@ -7862,9 +7896,9 @@ vary@^1, vary@~1.1.2: integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" + integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== dependencies: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" @@ -7900,13 +7934,16 @@ vite-plugin-svgr@^2.4.0: "@svgr/core" "^6.5.1" vite@^6.1.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.1.tgz#ae865d4bb93a11844be1bc647c8b2dd1856ea180" - integrity sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q== + version "6.3.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.3.6.tgz#69a976b64930750d40219fbc68c5200874d315c1" + integrity sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA== dependencies: esbuild "^0.25.0" + fdir "^6.4.4" + picomatch "^4.0.2" postcss "^8.5.3" - rollup "^4.30.1" + rollup "^4.34.9" + tinyglobby "^0.2.13" optionalDependencies: fsevents "~2.3.3" @@ -7987,7 +8024,7 @@ which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.16, which-typed-array@^1.1.18: +which-typed-array@^1.1.16, which-typed-array@^1.1.19: version "1.1.19" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== From 19a32501eddc9a1f047941df16886e58e28fc63c Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Wed, 17 Sep 2025 11:38:41 +0100 Subject: [PATCH 02/10] fix: set static version --- biome.json | 2 +- package.json | 2 +- yarn.lock | 478 ++++++++++++++++++++++++++------------------------- 3 files changed, 244 insertions(+), 238 deletions(-) diff --git a/biome.json b/biome.json index 11cca7544..b1509b0e5 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.3/schema.json", + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", "assist": { "actions": { "source": { diff --git a/package.json b/package.json index d7e610029..972975875 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prepare": "husky install" }, "devDependencies": { - "@biomejs/biome": "^2.2.3", + "@biomejs/biome": "2.2.4", "husky": "^8.0.3", "lint-staged": "^14.0.1", "turbo": "^2.4.2" diff --git a/yarn.lock b/yarn.lock index 9f48a609e..7711eb1b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -216,59 +216,59 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@biomejs/biome@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.2.3.tgz#9d17991c80e006c5ca3e21bebe84b7afd71559e3" - integrity sha512-9w0uMTvPrIdvUrxazZ42Ib7t8Y2yoGLKLdNne93RLICmaHw7mcLv4PPb5LvZLJF3141gQHiCColOh/v6VWlWmg== +"@biomejs/biome@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.2.4.tgz#184e4b83f89bd0d4151682a5aa3840df37748e17" + integrity sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg== optionalDependencies: - "@biomejs/cli-darwin-arm64" "2.2.3" - "@biomejs/cli-darwin-x64" "2.2.3" - "@biomejs/cli-linux-arm64" "2.2.3" - "@biomejs/cli-linux-arm64-musl" "2.2.3" - "@biomejs/cli-linux-x64" "2.2.3" - "@biomejs/cli-linux-x64-musl" "2.2.3" - "@biomejs/cli-win32-arm64" "2.2.3" - "@biomejs/cli-win32-x64" "2.2.3" - -"@biomejs/cli-darwin-arm64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.3.tgz#e18240343fa705dafb08ba72a7b0e88f04a8be3e" - integrity sha512-OrqQVBpadB5eqzinXN4+Q6honBz+tTlKVCsbEuEpljK8ASSItzIRZUA02mTikl3H/1nO2BMPFiJ0nkEZNy3B1w== + "@biomejs/cli-darwin-arm64" "2.2.4" + "@biomejs/cli-darwin-x64" "2.2.4" + "@biomejs/cli-linux-arm64" "2.2.4" + "@biomejs/cli-linux-arm64-musl" "2.2.4" + "@biomejs/cli-linux-x64" "2.2.4" + "@biomejs/cli-linux-x64-musl" "2.2.4" + "@biomejs/cli-win32-arm64" "2.2.4" + "@biomejs/cli-win32-x64" "2.2.4" + +"@biomejs/cli-darwin-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.4.tgz#9b50620c93501e370b7e6d5a8445f117f9946a0c" + integrity sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA== -"@biomejs/cli-darwin-x64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.3.tgz#964b51c9f649e3a725f6f43e75c4173b9ab8a3ae" - integrity sha512-OCdBpb1TmyfsTgBAM1kPMXyYKTohQ48WpiN9tkt9xvU6gKVKHY4oVwteBebiOqyfyzCNaSiuKIPjmHjUZ2ZNMg== +"@biomejs/cli-darwin-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.4.tgz#343620c884fc8141155d114430e80e4eacfddc9e" + integrity sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg== -"@biomejs/cli-linux-arm64-musl@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.3.tgz#1756c37960d5585ca865e184539b113e48719b41" - integrity sha512-q3w9jJ6JFPZPeqyvwwPeaiS/6NEszZ+pXKF+IczNo8Xj6fsii45a4gEEicKyKIytalV+s829ACZujQlXAiVLBQ== +"@biomejs/cli-linux-arm64-musl@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.4.tgz#cabcdadce2bc88b697f4063374224266c6f8b6e5" + integrity sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ== -"@biomejs/cli-linux-arm64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.3.tgz#036c6334d5b09b51233ce5120b18f4c89a15a74c" - integrity sha512-g/Uta2DqYpECxG+vUmTAmUKlVhnGEcY7DXWgKP8ruLRa8Si1QHsWknPY3B/wCo0KgYiFIOAZ9hjsHfNb9L85+g== +"@biomejs/cli-linux-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.4.tgz#55620f8f088145e62e1158eb85c568554d0c8673" + integrity sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw== -"@biomejs/cli-linux-x64-musl@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.3.tgz#e6cce01910b9f56c1645c5518595d0b1eb38c245" - integrity sha512-y76Dn4vkP1sMRGPFlNc+OTETBhGPJ90jY3il6jAfur8XWrYBQV3swZ1Jo0R2g+JpOeeoA0cOwM7mJG6svDz79w== +"@biomejs/cli-linux-x64-musl@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.4.tgz#6bfaea72505afdbda66a66c998d2d169a8b55f90" + integrity sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg== -"@biomejs/cli-linux-x64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.3.tgz#f328e7cfde92fad6c7ad215df1f51b146b4ed007" - integrity sha512-LEtyYL1fJsvw35CxrbQ0gZoxOG3oZsAjzfRdvRBRHxOpQ91Q5doRVjvWW/wepgSdgk5hlaNzfeqpyGmfSD0Eyw== +"@biomejs/cli-linux-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.4.tgz#8c1ed61dcafb8a5939346c714ec122651f57e1db" + integrity sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ== -"@biomejs/cli-win32-arm64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.3.tgz#b8d64ca6dc1c50b8f3d42475afd31b7b44460935" - integrity sha512-Ms9zFYzjcJK7LV+AOMYnjN3pV3xL8Prxf9aWdDVL74onLn5kcvZ1ZMQswE5XHtnd/r/0bnUd928Rpbs14BzVmA== +"@biomejs/cli-win32-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.4.tgz#b2528f6c436e753d6083d7779f0662e08786cedb" + integrity sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ== -"@biomejs/cli-win32-x64@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.3.tgz#ecafffddf0c0675c825735c7cc917cbc8c538433" - integrity sha512-gvCpewE7mBwBIpqk1YrUqNR4mCiyJm6UI3YWQQXkedSSEwzRdodRpaKhbdbHw1/hmTWOVXQ+Eih5Qctf4TCVOQ== +"@biomejs/cli-win32-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.4.tgz#c8e21413120fe073fa49b78fdd987022941ff66f" + integrity sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg== "@ebi-gene-expression-group/anatomogram@^2.4.0": version "2.4.0" @@ -710,9 +710,9 @@ integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": - version "0.3.30" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz#4a76c4daeee5df09f5d3940e087442fb36ce2b99" - integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q== + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1027,110 +1027,110 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz#7d41dc45adcfcb272504ebcea9c8a5b2c659e963" - integrity sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag== - -"@rollup/rollup-android-arm64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz#6c708fae2c9755e994c42d56c34a94cb77020650" - integrity sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw== - -"@rollup/rollup-darwin-arm64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz#85ccf92ab114e434c83037a175923a525635cbb4" - integrity sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw== - -"@rollup/rollup-darwin-x64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz#0af089f3d658d05573208dabb3a392b44d7f4630" - integrity sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw== - -"@rollup/rollup-freebsd-arm64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz#46c22a16d18180e99686647543335567221caa9c" - integrity sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA== - -"@rollup/rollup-freebsd-x64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz#819ffef2f81891c266456952962a13110c8e28b5" - integrity sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz#7fe283c14793e607e653a3214b09f8973f08262a" - integrity sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg== - -"@rollup/rollup-linux-arm-musleabihf@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz#066e92eb22ea30560414ec800a6d119ba0b435ac" - integrity sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw== - -"@rollup/rollup-linux-arm64-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz#480d518ea99a8d97b2a174c46cd55164f138cc37" - integrity sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw== - -"@rollup/rollup-linux-arm64-musl@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz#ed7db3b8999b60dd20009ddf71c95f3af49423c8" - integrity sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w== - -"@rollup/rollup-linux-loongarch64-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz#16a6927a35f5dbc505ff874a4e1459610c0c6f46" - integrity sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q== - -"@rollup/rollup-linux-ppc64-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz#a006700469be0041846c45b494c35754e6a04eea" - integrity sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q== - -"@rollup/rollup-linux-riscv64-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz#0fcc45b2ec8a0e54218ca48849ea6d596f53649c" - integrity sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ== - -"@rollup/rollup-linux-riscv64-musl@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz#d6e617eec9fe6f5859ee13fad435a16c42b469f2" - integrity sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg== - -"@rollup/rollup-linux-s390x-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz#b147760d63c6f35b4b18e6a25a2a760dd3ea0c05" - integrity sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg== - -"@rollup/rollup-linux-x64-gnu@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz#fc0be1da374f85e7e85dccaf1ff12d7cfc9fbe3d" - integrity sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA== - -"@rollup/rollup-linux-x64-musl@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz#54c79932e0f9a3c992b034c82325be3bcde0d067" - integrity sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg== - -"@rollup/rollup-openharmony-arm64@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz#fc48e74d413623ac02c1d521bec3e5e784488fdc" - integrity sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA== - -"@rollup/rollup-win32-arm64-msvc@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz#8ce3d1181644406362cf1e62c90e88ab083e02bb" - integrity sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ== - -"@rollup/rollup-win32-ia32-msvc@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz#dd2dfc896eac4b2689d55f01c6d51c249263f805" - integrity sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A== - -"@rollup/rollup-win32-x64-msvc@4.50.1": - version "4.50.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz#13f758c97b9fbbac56b6928547a3ff384e7cfb3e" - integrity sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA== +"@rollup/rollup-android-arm-eabi@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz#52d66eba5198155f265f54aed94d2489c49269f6" + integrity sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A== + +"@rollup/rollup-android-arm64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz#137e8153fc9ce6757531ce300b8d2262299f758e" + integrity sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g== + +"@rollup/rollup-darwin-arm64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz#d4afd904386d37192cf5ef7345fdb0dd1bac0bc3" + integrity sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q== + +"@rollup/rollup-darwin-x64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz#6dbe83431fc7cbc09a2b6ed2b9fb7a62dd66ebc2" + integrity sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A== + +"@rollup/rollup-freebsd-arm64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz#d35afb9f66154b557b3387d12450920f8a954b96" + integrity sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow== + +"@rollup/rollup-freebsd-x64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz#849303ecdc171a420317ad9166a70af308348f34" + integrity sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog== + +"@rollup/rollup-linux-arm-gnueabihf@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz#ab36199ca613376232794b2f3ba10e2b547a447c" + integrity sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w== + +"@rollup/rollup-linux-arm-musleabihf@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz#f3704bc2eaecd176f558dc47af64197fcac36e8a" + integrity sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw== + +"@rollup/rollup-linux-arm64-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz#dda0b06fd1daedd00b34395a2fb4aaaa2ed6c32b" + integrity sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg== + +"@rollup/rollup-linux-arm64-musl@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz#a018de66209051dad0c58e689e080326c3dd15b0" + integrity sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ== + +"@rollup/rollup-linux-loong64-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz#6e514f09988615e0c98fa5a34a88a30fec64d969" + integrity sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw== + +"@rollup/rollup-linux-ppc64-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz#9b2efebc7b4a1951e684a895fdee0fef26319e0d" + integrity sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag== + +"@rollup/rollup-linux-riscv64-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz#a7104270e93d75789d1ba857b2c68ddf61f24f68" + integrity sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ== + +"@rollup/rollup-linux-riscv64-musl@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz#42d153f734a7b9fcacd764cc9bee6c207dca4db6" + integrity sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw== + +"@rollup/rollup-linux-s390x-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz#826ad73099f6fd57c083dc5329151b25404bc67d" + integrity sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w== + +"@rollup/rollup-linux-x64-gnu@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz#b9ec17bf0ca3f737d0895fca2115756674342142" + integrity sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA== + +"@rollup/rollup-linux-x64-musl@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz#29fe0adb45a1d99042f373685efbac9cdd5354d9" + integrity sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw== + +"@rollup/rollup-openharmony-arm64@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz#29648f11e202736b74413f823b71e339e3068d60" + integrity sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA== + +"@rollup/rollup-win32-arm64-msvc@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz#91e7edec80542fd81ab1c2581a91403ac63458ae" + integrity sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA== + +"@rollup/rollup-win32-ia32-msvc@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz#9b7cd9779f1147a3e8d3ddad432ae64dd222c4e9" + integrity sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA== + +"@rollup/rollup-win32-x64-msvc@4.50.2": + version "4.50.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz#40ecd1357526fe328c7af704a283ee8533ca7ad6" + integrity sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA== "@scarf/scarf@=1.4.0": version "1.4.0" @@ -1320,9 +1320,9 @@ "@types/node" "*" "@types/d3-array@*": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" - integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== "@types/d3-axis@*": version "3.0.6" @@ -1635,11 +1635,11 @@ form-data "^4.0.4" "@types/node@*": - version "24.3.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.3.1.tgz#b0a3fb2afed0ef98e8d7f06d46ef6349047709f3" - integrity sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g== + version "24.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.1.tgz#dab6917c47113eb4502d27d06e89a407ec0eff95" + integrity sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q== dependencies: - undici-types "~7.10.0" + undici-types "~7.12.0" "@types/node@^16.18.69": version "16.18.126" @@ -1647,9 +1647,9 @@ integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== "@types/node@^18.0.0": - version "18.19.124" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.124.tgz#6f49e4fab8274910691a900e8a14316cbf3c7a31" - integrity sha512-hY4YWZFLs3ku6D2Gqo3RchTd9VRCcrjqp/I0mmohYeUVA5Y8eCXKJEasHxLAJVZRJuQogfd1GiJ9lgogBgKeuQ== + version "18.19.126" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.126.tgz#b1a9e0bac6338098f465ab242cbd6a8884d79b80" + integrity sha512-8AXQlBfrGmtYJEJUPs63F/uZQqVeFiN9o6NUjbDJYfxNxFnArlZufANPw4h6dGhYGKxcyw+TapXFvEsguzIQow== dependencies: undici-types "~5.26.4" @@ -1708,9 +1708,9 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*", "@types/react@>=16.9.11": - version "19.1.12" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.12.tgz#7bfaa76aabbb0b4fe0493c21a3a7a93d33e8937b" - integrity sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w== + version "19.1.13" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.13.tgz#fc650ffa680d739a25a530f5d7ebe00cdd771883" + integrity sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ== dependencies: csstype "^3.0.2" @@ -2048,6 +2048,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +baseline-browser-mapping@^2.8.3: + version "2.8.4" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz#e553e12272c4965682743705efd8b4b4cf0d709b" + integrity sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw== + binary-search-bounds@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz#125e5bd399882f71e6660d4bf1186384e989fba7" @@ -2115,13 +2120,14 @@ braces@^3.0.2, braces@^3.0.3: fill-range "^7.1.1" browserslist@^4.24.0: - version "4.25.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.4.tgz#ebdd0e1d1cf3911834bab3a6cd7b917d9babf5af" - integrity sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg== - dependencies: - caniuse-lite "^1.0.30001737" - electron-to-chromium "^1.5.211" - node-releases "^2.0.19" + version "4.26.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.2.tgz#7db3b3577ec97f1140a52db4936654911078cef3" + integrity sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A== + dependencies: + baseline-browser-mapping "^2.8.3" + caniuse-lite "^1.0.30001741" + electron-to-chromium "^1.5.218" + node-releases "^2.0.21" update-browserslist-db "^1.1.3" btoa@^1.2.1: @@ -2207,10 +2213,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001737: - version "1.0.30001741" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz#67fb92953edc536442f3c9da74320774aa523143" - integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw== +caniuse-lite@^1.0.30001741: + version "1.0.30001743" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz#50ff91a991220a1ee2df5af00650dd5c308ea7cd" + integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw== canvas@^2.11.2: version "2.11.2" @@ -3151,9 +3157,9 @@ debug@2.6.9: ms "2.0.0" debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" @@ -3256,9 +3262,9 @@ detect-libc@^1.0.3: integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-libc@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" - integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.0.tgz#3ca811f60a7b504b0480e5008adacc660b0b8c4f" + integrity sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg== devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -3360,10 +3366,10 @@ ejs@^3.1.5: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.211: - version "1.5.215" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz#200c8d69b1270af6126837b6b1f95077c3a347b1" - integrity sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ== +electron-to-chromium@^1.5.218: + version "1.5.220" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.220.tgz#a9853fa5edcf51f4c7db369144377cf31d783b8f" + integrity sha512-TWXijEwR1ggr4BdAKrb1nMNqYLTx1/4aD1fkeZU+FVJGTKu53/T7UyHKXlqEX3Ub02csyHePbHmkvnrjcaYzMA== emoji-regex@^8.0.0: version "8.0.0" @@ -3425,9 +3431,9 @@ err-code@^2.0.2: integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + version "1.3.4" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== dependencies: is-arrayish "^0.2.1" @@ -4388,9 +4394,9 @@ is-arrayish@^0.2.1: integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + version "0.3.4" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.4.tgz#1ee5553818511915685d33bb13d31bf854e5059d" + integrity sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA== is-async-function@^2.0.0: version "2.1.1" @@ -5103,9 +5109,9 @@ merge-stream@^2.0.0: integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== meros@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.1.tgz#21a090d59c02afb1e418e40631b78aa37a21ac69" - integrity sha512-eV7dRObfTrckdmAz4/n7pT1njIsIJXRIZkgCiX43xEsPNy4gjXQzOYYxmGcolAMtF7HyfqRuDBh3Lgs4hmhVEw== + version "1.3.2" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.2.tgz#4cb0d7f3d22074c6e7ae1d66f72c080bca2e414b" + integrity sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A== methods@~1.1.2: version "1.1.2" @@ -5584,10 +5590,10 @@ node-gyp@^9.2.0: tar "^6.1.2" which "^2.0.2" -node-releases@^2.0.19: - version "2.0.20" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.20.tgz#e26bb79dbdd1e64a146df389c699014c611cbc27" - integrity sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA== +node-releases@^2.0.21: + version "2.0.21" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" + integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== nopt@^5.0.0: version "5.0.0" @@ -6526,33 +6532,33 @@ rollup-plugin-visualizer@^5.14.0: yargs "^17.5.1" rollup@^4.34.9: - version "4.50.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.50.1.tgz#6f0717c34aacc65cc727eeaaaccc2afc4e4485fd" - integrity sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA== + version "4.50.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.50.2.tgz#938d898394939f3386d1e367ee6410a796b8f268" + integrity sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.50.1" - "@rollup/rollup-android-arm64" "4.50.1" - "@rollup/rollup-darwin-arm64" "4.50.1" - "@rollup/rollup-darwin-x64" "4.50.1" - "@rollup/rollup-freebsd-arm64" "4.50.1" - "@rollup/rollup-freebsd-x64" "4.50.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.50.1" - "@rollup/rollup-linux-arm-musleabihf" "4.50.1" - "@rollup/rollup-linux-arm64-gnu" "4.50.1" - "@rollup/rollup-linux-arm64-musl" "4.50.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.50.1" - "@rollup/rollup-linux-ppc64-gnu" "4.50.1" - "@rollup/rollup-linux-riscv64-gnu" "4.50.1" - "@rollup/rollup-linux-riscv64-musl" "4.50.1" - "@rollup/rollup-linux-s390x-gnu" "4.50.1" - "@rollup/rollup-linux-x64-gnu" "4.50.1" - "@rollup/rollup-linux-x64-musl" "4.50.1" - "@rollup/rollup-openharmony-arm64" "4.50.1" - "@rollup/rollup-win32-arm64-msvc" "4.50.1" - "@rollup/rollup-win32-ia32-msvc" "4.50.1" - "@rollup/rollup-win32-x64-msvc" "4.50.1" + "@rollup/rollup-android-arm-eabi" "4.50.2" + "@rollup/rollup-android-arm64" "4.50.2" + "@rollup/rollup-darwin-arm64" "4.50.2" + "@rollup/rollup-darwin-x64" "4.50.2" + "@rollup/rollup-freebsd-arm64" "4.50.2" + "@rollup/rollup-freebsd-x64" "4.50.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.2" + "@rollup/rollup-linux-arm-musleabihf" "4.50.2" + "@rollup/rollup-linux-arm64-gnu" "4.50.2" + "@rollup/rollup-linux-arm64-musl" "4.50.2" + "@rollup/rollup-linux-loong64-gnu" "4.50.2" + "@rollup/rollup-linux-ppc64-gnu" "4.50.2" + "@rollup/rollup-linux-riscv64-gnu" "4.50.2" + "@rollup/rollup-linux-riscv64-musl" "4.50.2" + "@rollup/rollup-linux-s390x-gnu" "4.50.2" + "@rollup/rollup-linux-x64-gnu" "4.50.2" + "@rollup/rollup-linux-x64-musl" "4.50.2" + "@rollup/rollup-openharmony-arm64" "4.50.2" + "@rollup/rollup-win32-arm64-msvc" "4.50.2" + "@rollup/rollup-win32-ia32-msvc" "4.50.2" + "@rollup/rollup-win32-x64-msvc" "4.50.2" fsevents "~2.3.2" rw@1: @@ -6820,9 +6826,9 @@ simple-get@^4.0.0: simple-concat "^1.0.0" simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + version "0.2.4" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.4.tgz#a8d11a45a11600d6a1ecdff6363329e3648c3667" + integrity sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw== dependencies: is-arrayish "^0.3.1" @@ -7113,9 +7119,9 @@ svg-parser@^2.0.4: integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== swagger-ui-dist@^5.10.5: - version "5.28.1" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.28.1.tgz#2423eb17e987436a4479ef3bb6ea2679353dabcc" - integrity sha512-IvPrtNi8MvjiuDgoSmPYgg27Lvu38fnLD1OSd8Y103xXsPAqezVNnNeHnVCZ/d+CMXJblflGaIyHxAYIF3O71w== + version "5.29.0" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.29.0.tgz#ae4949fbc547f09c4eb6223354bd7ab47e6d3b21" + integrity sha512-gqs7Md3AxP4mbpXAq31o5QW+wGUZsUzVatg70yXpUR245dfIis5jAzufBd+UQM/w2xSfrhvA1eqsrgnl2PbezQ== dependencies: "@scarf/scarf" "=1.4.0" @@ -7130,9 +7136,9 @@ symbol-observable@^4.0.0: integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== tar-fs@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92" - integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg== + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.4.tgz#800824dbf4ef06ded9afea4acafe71c67c76b930" + integrity sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" @@ -7757,10 +7763,10 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" - integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== +undici-types@~7.12.0: + version "7.12.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" + integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== unified@^11.0.0: version "11.0.5" From 91566c85d490aaaf9e9f0cb6c23be49c9e57b8f6 Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Tue, 23 Sep 2025 15:19:31 +0100 Subject: [PATCH 03/10] fix: intial lint run --- biome.json | 4 ++- packages/ui/src/index.tsx | 2 +- .../ui/src/providers/APIMetadataProvider.tsx | 8 ++--- .../src/providers/ConfigurationProvider.tsx | 6 ++-- .../OTApolloProvider/OTApolloProvider.tsx | 4 +-- .../src/providers/OTApolloProvider/apollo.tsx | 8 ++--- .../ui/src/providers/PlatformApiProvider.tsx | 29 ++++++---------- .../providers/ThemeProvider/ThemeProvider.tsx | 2 +- .../providers/ThemeProvider/defaultTheme.ts | 2 +- .../providers/ViewerInteractionProvider.tsx | 23 ++++++------- packages/ui/src/providers/ViewerProvider.tsx | 34 ++++++++----------- 11 files changed, 56 insertions(+), 66 deletions(-) diff --git a/biome.json b/biome.json index b1509b0e5..5c449f2c9 100644 --- a/biome.json +++ b/biome.json @@ -29,7 +29,9 @@ "!**/*.d.ts", "!**/generated", "!**/apps/platform/src", - "!**/packages/ui", + "!**/packages/ui/src/components", + "!**/packages/ui/src/hooks", + "!**/packages/ui/src/pages", "!**/packages/sections", "!**/packages/ot-config", "!**/packages/ot-constants", diff --git a/packages/ui/src/index.tsx b/packages/ui/src/index.tsx index 697b2ddd2..8d553001b 100644 --- a/packages/ui/src/index.tsx +++ b/packages/ui/src/index.tsx @@ -97,5 +97,5 @@ export * from "./providers/ConfigurationProvider"; export * from "./providers/OTApolloProvider/OTApolloProvider"; export { default as PlatformApiProvider } from "./providers/PlatformApiProvider"; export { default as ThemeProvider } from "./providers/ThemeProvider/ThemeProvider"; -export * from "./providers/ViewerProvider"; export * from "./providers/ViewerInteractionProvider"; +export * from "./providers/ViewerProvider"; diff --git a/packages/ui/src/providers/APIMetadataProvider.tsx b/packages/ui/src/providers/APIMetadataProvider.tsx index ffaa92600..b70e66d96 100644 --- a/packages/ui/src/providers/APIMetadataProvider.tsx +++ b/packages/ui/src/providers/APIMetadataProvider.tsx @@ -1,5 +1,5 @@ -import { PropsWithChildren, createContext, useContext, useEffect, useState } from "react"; -import { gql, useQuery, ApolloError } from "@apollo/client"; +import { type ApolloError, gql, useQuery } from "@apollo/client"; +import { createContext, type PropsWithChildren, useContext, useEffect, useState } from "react"; // QUERY const DATA_VERSION_QUERY = gql` @@ -41,12 +41,12 @@ export const APIMetadataProvider = ({ children }: PropsWithChildren): JSX.Elemen useEffect(() => { if (loading) { - setVersion(v => ({ ...v, loading })); + setVersion((v) => ({ ...v, loading })); return; } if (error) { - setVersion(v => ({ ...v, error })); + setVersion((v) => ({ ...v, error })); return; } const { diff --git a/packages/ui/src/providers/ConfigurationProvider.tsx b/packages/ui/src/providers/ConfigurationProvider.tsx index 20805ccdc..21933b37a 100644 --- a/packages/ui/src/providers/ConfigurationProvider.tsx +++ b/packages/ui/src/providers/ConfigurationProvider.tsx @@ -1,8 +1,8 @@ -import { PropsWithChildren, createContext, useContext } from "react"; -import { Config, theme } from "@ot/config"; +import { type Config, theme } from "@ot/config"; +import { createContext, type PropsWithChildren, useContext } from "react"; +import { APIMetadataProvider } from "./APIMetadataProvider"; import { OTApolloProvider } from "./OTApolloProvider/OTApolloProvider"; import ThemeProvider from "./ThemeProvider/ThemeProvider"; -import { APIMetadataProvider } from "./APIMetadataProvider"; type ContextType = { config: Config | null; diff --git a/packages/ui/src/providers/OTApolloProvider/OTApolloProvider.tsx b/packages/ui/src/providers/OTApolloProvider/OTApolloProvider.tsx index 867059dbd..54fbd3808 100644 --- a/packages/ui/src/providers/OTApolloProvider/OTApolloProvider.tsx +++ b/packages/ui/src/providers/OTApolloProvider/OTApolloProvider.tsx @@ -1,6 +1,6 @@ -import { ApolloProvider, ApolloClient, NormalizedCacheObject } from "@apollo/client"; +import { type ApolloClient, ApolloProvider, type NormalizedCacheObject } from "@apollo/client"; +import type { Config } from "@ot/config"; import { createContext, useContext } from "react"; -import { Config } from "@ot/config"; import { createApolloClient } from "./apollo"; const ApolloClientContext = createContext | undefined>( diff --git a/packages/ui/src/providers/OTApolloProvider/apollo.tsx b/packages/ui/src/providers/OTApolloProvider/apollo.tsx index 7210d0ee8..1e8b695a0 100644 --- a/packages/ui/src/providers/OTApolloProvider/apollo.tsx +++ b/packages/ui/src/providers/OTApolloProvider/apollo.tsx @@ -1,5 +1,5 @@ -import { ApolloClient, InMemoryCache, HttpLink, ApolloLink, from } from "@apollo/client"; -import { Config } from "@ot/config"; +import { ApolloClient, ApolloLink, from, HttpLink, InMemoryCache } from "@apollo/client"; +import type { Config } from "@ot/config"; export const createApolloClient = (config: Config) => { const httpLink = new HttpLink({ @@ -7,9 +7,9 @@ export const createApolloClient = (config: Config) => { }); const errorLink = new ApolloLink((operation, forward) => { - return forward(operation).map(response => { + return forward(operation).map((response) => { if (response.errors) { - response.errors.forEach(error => { + response.errors.forEach((error) => { console.error(`GraphQL Error: ${error.message}`); }); } diff --git a/packages/ui/src/providers/PlatformApiProvider.tsx b/packages/ui/src/providers/PlatformApiProvider.tsx index 8fab9b365..a7a0a553d 100644 --- a/packages/ui/src/providers/PlatformApiProvider.tsx +++ b/packages/ui/src/providers/PlatformApiProvider.tsx @@ -1,5 +1,5 @@ -import { useMemo, createContext, ReactNode } from "react"; -import { useQuery, DocumentNode, QueryResult } from "@apollo/client"; +import { type DocumentNode, type QueryResult, useQuery } from "@apollo/client"; +import { createContext, type ReactNode, useMemo } from "react"; interface PlatformApiContextValue { entity: string; @@ -19,32 +19,25 @@ interface PlatformApiProviderProps { children: ReactNode; } -function PlatformApiProvider({ - entity, - query, - variables, - children, -}: PlatformApiProviderProps) { +function PlatformApiProvider({ entity, query, variables, children }: PlatformApiProviderProps) { const request: QueryResult = useQuery(query, { variables }); const { loading, error, data, refetch, fetchMore } = request; const platformApiValue = useMemo( - () => ({ - loading, - error, - data, - refetch, - fetchMore, - entity + () => ({ + loading, + error, + data, + refetch, + fetchMore, + entity, }), [loading, error, data, refetch, fetchMore, entity] ); return ( - - {children} - + {children} ); } diff --git a/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx b/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx index f26abc9ce..2e7545565 100644 --- a/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx +++ b/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx @@ -1,5 +1,5 @@ -import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; import CssBaseline from "@mui/material/CssBaseline"; +import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; import defaultTheme from "./defaultTheme"; diff --git a/packages/ui/src/providers/ThemeProvider/defaultTheme.ts b/packages/ui/src/providers/ThemeProvider/defaultTheme.ts index e0de9a432..251de112d 100644 --- a/packages/ui/src/providers/ThemeProvider/defaultTheme.ts +++ b/packages/ui/src/providers/ThemeProvider/defaultTheme.ts @@ -1,5 +1,5 @@ import { colors } from "@mui/material"; -import { lighten, darken } from "polished"; +import { darken, lighten } from "polished"; const { grey } = colors; diff --git a/packages/ui/src/providers/ViewerInteractionProvider.tsx b/packages/ui/src/providers/ViewerInteractionProvider.tsx index 4d8a5de59..f6d8d91df 100644 --- a/packages/ui/src/providers/ViewerInteractionProvider.tsx +++ b/packages/ui/src/providers/ViewerInteractionProvider.tsx @@ -1,17 +1,16 @@ import { createScopedContext } from "@ot/utils"; -export const { ScopedProvider, useScopedState, useScopedDispatch } = - createScopedContext({ - name: "viewerInteraction", - extraStateProperties: { - hoveredResi: null, - clickedResi: null, - }, - extraActions: { - setHoveredResi: (state, action) => ({ ...state, hoveredResi: action.value }), - setClickedResi: (state, action) => ({ ...state, clickedResi: action.value }), - } - }); +export const { ScopedProvider, useScopedState, useScopedDispatch } = createScopedContext({ + name: "viewerInteraction", + extraStateProperties: { + hoveredResi: null, + clickedResi: null, + }, + extraActions: { + setHoveredResi: (state, action) => ({ ...state, hoveredResi: action.value }), + setClickedResi: (state, action) => ({ ...state, clickedResi: action.value }), + }, +}); export const ViewerInteractionProvider = ScopedProvider; export const useViewerInteractionState = useScopedState; diff --git a/packages/ui/src/providers/ViewerProvider.tsx b/packages/ui/src/providers/ViewerProvider.tsx index 8e105adcb..404dfc42e 100644 --- a/packages/ui/src/providers/ViewerProvider.tsx +++ b/packages/ui/src/providers/ViewerProvider.tsx @@ -1,25 +1,21 @@ import { createScopedContext } from "@ot/utils"; -export const { ScopedProvider, useScopedState, useScopedDispatch } = - createScopedContext({ - name: "viewer", - extraStateProperties: { - viewer: null, - atomsByResi: null, - +export const { ScopedProvider, useScopedState, useScopedDispatch } = createScopedContext({ + name: "viewer", + extraStateProperties: { + viewer: null, + atomsByResi: null, + }, + extraActions: { + _setViewer: (state, action) => { + const newState = { ...state }; + newState.viewer = action.value; + const atoms = newState.viewer.getModel().selectedAtoms(); + newState.atomsByResi = atoms?.length > 0 ? Map.groupBy(atoms, (atom) => atom.resi) : null; + return newState; }, - extraActions: { - _setViewer: (state, action) => { - const newState = { ... state }; - newState.viewer = action.value; - const atoms = newState.viewer.getModel().selectedAtoms(); - newState.atomsByResi = atoms?.length > 0 - ? Map.groupBy(atoms, atom => atom.resi) - : null - return newState; - } - } - }); + }, +}); export const ViewerProvider = ScopedProvider; export const useViewerState = useScopedState; From 55c6013e6bb3273c3bda77caa3936c0d05670300 Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Tue, 23 Sep 2025 15:22:10 +0100 Subject: [PATCH 04/10] fix: lint providers --- .../ui/src/providers/OTApolloProvider/apollo.tsx | 4 ++-- packages/ui/src/providers/PlatformApiProvider.tsx | 12 ++++++------ .../ui/src/providers/ThemeProvider/ThemeProvider.tsx | 9 ++++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/ui/src/providers/OTApolloProvider/apollo.tsx b/packages/ui/src/providers/OTApolloProvider/apollo.tsx index 1e8b695a0..709cc7eeb 100644 --- a/packages/ui/src/providers/OTApolloProvider/apollo.tsx +++ b/packages/ui/src/providers/OTApolloProvider/apollo.tsx @@ -9,9 +9,9 @@ export const createApolloClient = (config: Config) => { const errorLink = new ApolloLink((operation, forward) => { return forward(operation).map((response) => { if (response.errors) { - response.errors.forEach((error) => { + for (const error of response.errors) { console.error(`GraphQL Error: ${error.message}`); - }); + } } return response; }); diff --git a/packages/ui/src/providers/PlatformApiProvider.tsx b/packages/ui/src/providers/PlatformApiProvider.tsx index a7a0a553d..015741c54 100644 --- a/packages/ui/src/providers/PlatformApiProvider.tsx +++ b/packages/ui/src/providers/PlatformApiProvider.tsx @@ -1,13 +1,13 @@ -import { type DocumentNode, type QueryResult, useQuery } from "@apollo/client"; +import { type ApolloError, type DocumentNode, type QueryResult, useQuery } from "@apollo/client"; import { createContext, type ReactNode, useMemo } from "react"; interface PlatformApiContextValue { entity: string; loading: boolean; - error?: any; - data?: any; - refetch: () => Promise; - fetchMore: (options: any) => Promise; + error?: ApolloError; + data?: unknown; + refetch: () => Promise; + fetchMore: (options: { variables?: Record }) => Promise; } const PlatformApiContext = createContext(undefined); @@ -15,7 +15,7 @@ const PlatformApiContext = createContext(un interface PlatformApiProviderProps { entity: string; query: DocumentNode; - variables?: Record; + variables?: Record; children: ReactNode; } diff --git a/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx b/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx index 2e7545565..70b064702 100644 --- a/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx +++ b/packages/ui/src/providers/ThemeProvider/ThemeProvider.tsx @@ -1,9 +1,16 @@ import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider as MuiThemeProvider } from "@mui/material/styles"; +import type { ReactNode } from "react"; import defaultTheme from "./defaultTheme"; -function ThemeProvider({ children, theme = defaultTheme }: { children: any; theme: any }) { +function ThemeProvider({ + children, + theme = defaultTheme, +}: { + children: ReactNode; + theme: typeof defaultTheme; +}) { return ( From 694cce65d4f376ff697cea739398556957b4620b Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Tue, 23 Sep 2025 16:16:00 +0100 Subject: [PATCH 05/10] fix: hooks --- biome.json | 3 +-- packages/ui/src/hooks/useBatchDownloader.js | 7 +++---- packages/ui/src/hooks/useBatchQuery.ts | 20 +++++++++---------- .../ui/src/hooks/useCursorBatchDownloader.js | 2 +- packages/ui/src/hooks/useDynamicColspans.js | 12 +++++------ packages/ui/src/hooks/usePermissions.ts | 2 +- packages/ui/src/hooks/usePlatformApi.js | 2 +- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/biome.json b/biome.json index 5c449f2c9..b45f6396f 100644 --- a/biome.json +++ b/biome.json @@ -30,7 +30,6 @@ "!**/generated", "!**/apps/platform/src", "!**/packages/ui/src/components", - "!**/packages/ui/src/hooks", "!**/packages/ui/src/pages", "!**/packages/sections", "!**/packages/ot-config", @@ -72,7 +71,7 @@ "useButtonType": "error" }, "correctness": { - "useExhaustiveDependencies": "warn", + "useExhaustiveDependencies": "off", "noUnusedVariables": "warn" }, "suspicious": { diff --git a/packages/ui/src/hooks/useBatchDownloader.js b/packages/ui/src/hooks/useBatchDownloader.js index 072aa8ed6..61a28abad 100644 --- a/packages/ui/src/hooks/useBatchDownloader.js +++ b/packages/ui/src/hooks/useBatchDownloader.js @@ -1,6 +1,5 @@ -import _ from "lodash"; - import { downloaderChunkSize } from "@ot/constants"; +import _ from "lodash"; import { useApolloClient } from "../providers/OTApolloProvider/OTApolloProvider"; const getRows = (data, dataPath) => _.get(data, dataPath, []); @@ -56,9 +55,9 @@ function useBatchDownloader( const remainingChunks = await Promise.all(chunkPromises); - remainingChunks.forEach(chunk => { + for (const chunk of remainingChunks) { data = [...data, ...getRows(chunk, rowPath)]; - }); + } return data; }; diff --git a/packages/ui/src/hooks/useBatchQuery.ts b/packages/ui/src/hooks/useBatchQuery.ts index f173a64bb..3d83d5a46 100644 --- a/packages/ui/src/hooks/useBatchQuery.ts +++ b/packages/ui/src/hooks/useBatchQuery.ts @@ -1,8 +1,8 @@ -import _ from "lodash"; -import { DocumentNode } from "@apollo/client"; +import type { DocumentNode } from "@apollo/client"; import { tableChunkSize } from "@ot/constants"; +import _ from "lodash"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { useApolloClient } from "../providers/OTApolloProvider/OTApolloProvider"; -import { useCallback, useEffect, useState, useMemo } from "react"; type BatchQueryState = { loading: boolean; @@ -36,7 +36,7 @@ type UseBatchQueryProps = { * * @returns {BatchQueryState} Current state of the batch query */ -function useBatchQuery({ +function useBatchQuery({ query, variables, dataPath, @@ -72,7 +72,7 @@ function useBatchQuery({ // Function to retrieve the entire dataset const fetchWholeDataset = useCallback(async () => { - setState(prev => ({ ...prev, loading: true })); + setState((prev) => ({ ...prev, loading: true })); try { // Fetch first chunk to get total count @@ -99,11 +99,11 @@ function useBatchQuery({ const remainingChunks = await Promise.all(chunkPromises); // Combine all data - remainingChunks.forEach(chunk => { + for (const chunk of remainingChunks) { if (chunk.data) { allRows = [...allRows, ...getRows(chunk.data, rowPath)]; } - }); + } } // Create a deep clone of the first chunk's complete response @@ -133,11 +133,11 @@ function useBatchQuery({ // Fetch data when dependencies change useEffect(() => { if (!enabled || variables === null) { - setState(prev => ({ ...prev, loading: false })); + setState((prev) => ({ ...prev, loading: false })); return; } - fetchWholeDataset().catch(error => { + fetchWholeDataset().catch((error) => { console.error("Error fetching batch data:", error); }); }, [fetchWholeDataset, id, enabled, variables.variantId]); @@ -146,7 +146,7 @@ function useBatchQuery({ } // Helper function to get rows from data -function getRows(data: any, dataPath: string): T[] { +function getRows(data: unknown, dataPath: string): T[] { return _.get(data, dataPath, []); } diff --git a/packages/ui/src/hooks/useCursorBatchDownloader.js b/packages/ui/src/hooks/useCursorBatchDownloader.js index 452f654d6..e9015af0d 100644 --- a/packages/ui/src/hooks/useCursorBatchDownloader.js +++ b/packages/ui/src/hooks/useCursorBatchDownloader.js @@ -1,5 +1,5 @@ -import _ from "lodash"; import { downloaderChunkSize } from "@ot/constants"; +import _ from "lodash"; import { useApolloClient } from "../providers/OTApolloProvider/OTApolloProvider"; const getRows = (chunk, dataPath) => _.get(chunk, dataPath, []); diff --git a/packages/ui/src/hooks/useDynamicColspans.js b/packages/ui/src/hooks/useDynamicColspans.js index ac87aeafe..25545849e 100644 --- a/packages/ui/src/hooks/useDynamicColspans.js +++ b/packages/ui/src/hooks/useDynamicColspans.js @@ -2,17 +2,17 @@ import { breakpointMatch } from "@ot/utils"; function useDynamicColspan(groups, columns, width) { const colCopy = [...columns]; - const oldColspans = groups.map(group => parseInt(group.colspan, 10)); - const columnGroups = oldColspans.map(colspan => colCopy.splice(0, colspan)); + const oldColspans = groups.map((group) => parseInt(group.colspan, 10)); + const columnGroups = oldColspans.map((colspan) => colCopy.splice(0, colspan)); const newColspans = columnGroups.map( - columnGroup => - columnGroup.filter(column => { + (columnGroup) => + columnGroup.filter((column) => { if (!column.hidden) return true; const isShown = column.hidden - .map(breakpointHelper => breakpointMatch(width, breakpointHelper)) - .every(e => !e); + .map((breakpointHelper) => breakpointMatch(width, breakpointHelper)) + .every((e) => !e); return isShown; }).length diff --git a/packages/ui/src/hooks/usePermissions.ts b/packages/ui/src/hooks/usePermissions.ts index 7a35144d1..0608c9f80 100644 --- a/packages/ui/src/hooks/usePermissions.ts +++ b/packages/ui/src/hooks/usePermissions.ts @@ -17,4 +17,4 @@ function usePermissions(): Permissions { }; } -export default usePermissions; \ No newline at end of file +export default usePermissions; diff --git a/packages/ui/src/hooks/usePlatformApi.js b/packages/ui/src/hooks/usePlatformApi.js index 6d569ca4a..745b775cd 100644 --- a/packages/ui/src/hooks/usePlatformApi.js +++ b/packages/ui/src/hooks/usePlatformApi.js @@ -1,5 +1,5 @@ -import { useContext } from "react"; import { filter } from "graphql-anywhere"; +import { useContext } from "react"; import { PlatformApiContext } from "../providers/PlatformApiProvider"; From 3c8d43f40bacd86154f0b8a2ca580e0476fe680a Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Tue, 23 Sep 2025 16:21:02 +0100 Subject: [PATCH 06/10] fix: pages --- biome.json | 1 - packages/ui/src/pages/EmptyPage.tsx | 41 ++++++++++++++++------------- packages/ui/src/pages/Page.tsx | 6 ++--- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/biome.json b/biome.json index b45f6396f..cf69b1263 100644 --- a/biome.json +++ b/biome.json @@ -30,7 +30,6 @@ "!**/generated", "!**/apps/platform/src", "!**/packages/ui/src/components", - "!**/packages/ui/src/pages", "!**/packages/sections", "!**/packages/ot-config", "!**/packages/ot-constants", diff --git a/packages/ui/src/pages/EmptyPage.tsx b/packages/ui/src/pages/EmptyPage.tsx index e94670d3f..55b039482 100644 --- a/packages/ui/src/pages/EmptyPage.tsx +++ b/packages/ui/src/pages/EmptyPage.tsx @@ -1,11 +1,11 @@ -import { makeStyles } from "@mui/styles"; import { Button, Typography } from "@mui/material"; +import { makeStyles } from "@mui/styles"; -import { ReactNode } from "react"; -import Link from "../components/Link"; +import type { ReactNode } from "react"; import BrokenSearchIcon from "../components/icons/BrokenSearchIcon"; +import Link from "../components/Link"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ hiddenMobile: { "@media (max-width: 767px)": { display: "none", @@ -68,24 +68,27 @@ function EmptyPage({ 404: Page not found
+ {children} - We can't find the page you're looking for. - - You could try: + We can't find the page you're looking for. You could try:
    -
  • search for a target, disease, drug, variant, or study in the search bar
  • -
  • check our{" "} - - Documentation - {" "} - to see if we've moved the page you are looking for
  • -
  • get in touch on the{" "} - - Community - {" "} - to report the error
  • +
  • search for a target, disease, drug, variant, or study in the search bar
  • +
  • + check our{" "} + + Documentation + {" "} + to see if we've moved the page you are looking for +
  • +
  • + get in touch on the{" "} + + Community + {" "} + to report the error +
-
+
Thanks!
diff --git a/packages/ui/src/pages/Page.tsx b/packages/ui/src/pages/Page.tsx index 785bdc581..73064e8aa 100644 --- a/packages/ui/src/pages/Page.tsx +++ b/packages/ui/src/pages/Page.tsx @@ -1,8 +1,8 @@ -import { makeStyles } from "@mui/styles"; import { Grid } from "@mui/material"; -import { ReactNode } from "react"; +import { makeStyles } from "@mui/styles"; +import type { ReactNode } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ page: { background: theme.palette.grey["50"], minHeight: "100vh", From 210edd3ec32144cddc6668f1df8016eb03c494b6 Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Mon, 29 Sep 2025 11:48:47 +0100 Subject: [PATCH 07/10] update --- biome.json | 1 - .../AlphaFoldPathogenicityLegend.tsx | 26 ++- .../ui/src/components/ApiPlaygroundDrawer.tsx | 19 +-- packages/ui/src/components/BasePage.tsx | 18 +- packages/ui/src/components/Chip.tsx | 6 +- packages/ui/src/components/ChipList.tsx | 8 +- packages/ui/src/components/ClinvarStars.tsx | 8 +- packages/ui/src/components/ColorRamp.tsx | 6 +- .../CompactAlphaFoldDomainLegend.tsx | 36 ++-- .../CompactAlphaFoldHydrophobicityLegend.tsx | 2 +- .../src/components/CompactAlphaFoldLegend.tsx | 2 +- .../CompactAlphaFoldPathogenicityLegend.tsx | 18 +- packages/ui/src/components/CopyUrlButton.tsx | 2 +- packages/ui/src/components/DataDownloader.jsx | 53 +++--- packages/ui/src/components/DetailPopover.tsx | 6 +- .../src/components/DirectionOfEffectIcon.tsx | 10 +- .../components/DirectionOfEffectTooltip.tsx | 4 +- .../src/components/DirectionalityDrawer.tsx | 8 +- .../ui/src/components/DisplayVariantId.tsx | 27 +-- .../DownloadSvgPlot/DownloadSvgPlot.jsx | 3 +- .../src/components/DownloadSvgPlot/index.js | 2 +- packages/ui/src/components/EllsWrapper.tsx | 2 +- packages/ui/src/components/EmailLink.tsx | 2 +- packages/ui/src/components/ErrorBoundary.jsx | 2 +- .../ExternalLink/CrisprDepmapLink.tsx | 4 +- .../src/components/ExternalLink/TepLink.tsx | 6 +- .../src/components/ExternalLink/XRefLinks.tsx | 19 ++- .../FacetsSelect/FacetsHelpBlock.tsx | 10 +- .../components/FacetsSelect/FacetsSelect.tsx | 34 ++-- .../components/FacetsSelect/facetsActions.ts | 4 +- .../components/FacetsSelect/facetsLayout.tsx | 6 +- .../components/FacetsSelect/facetsReducer.ts | 9 +- .../FacetsSelect/service/facetsService.ts | 4 +- packages/ui/src/components/Footer.tsx | 36 ++-- .../ui/src/components/FromGeneticsModal.tsx | 2 +- .../components/GlobalSearch/GlobalSearch.jsx | 18 +- .../GlobalSearch/GlobalSearchDialog.jsx | 23 ++- .../GlobalSearch/GlobalSearchEntityFilter.tsx | 156 +++++++++--------- .../GlobalSearch/GlobalSearchFreeListItem.jsx | 9 +- .../GlobalSearch/GlobalSearchIcon.tsx | 2 +- .../GlobalSearch/GlobalSearchInput.tsx | 2 +- .../GlobalSearch/GlobalSearchList.jsx | 24 +-- .../GlobalSearch/GlobalSearchListHeader.jsx | 16 +- .../GlobalSearch/GlobalSearchListItem.jsx | 23 +-- .../GlobalSearch/GlobalSearchLoadingState.tsx | 4 +- .../components/GlobalSearch/SearchContext.tsx | 16 +- .../GlobalSearch/VariantMessage.tsx | 2 +- .../GlobalSearch/utils/searchUtils.js | 31 ++-- packages/ui/src/components/Header.tsx | 13 +- packages/ui/src/components/HeaderMenu.tsx | 19 +-- .../components/HeatmapTable/HeatmapLegend.tsx | 6 +- .../components/HeatmapTable/HeatmapTable.tsx | 40 ++--- .../HeatmapTable/L2GScoreIndicator.tsx | 10 +- .../src/components/HeatmapTable/constants.ts | 2 +- .../ui/src/components/HeatmapTable/helpers.ts | 14 +- .../HeatmapTable/renderWaterfallPlot.ts | 26 +-- packages/ui/src/components/Highlights.tsx | 41 ++++- .../src/components/KnownDrugsSourceDrawer.jsx | 33 ++-- packages/ui/src/components/LabelChip.tsx | 2 +- packages/ui/src/components/Legend.tsx | 4 +- packages/ui/src/components/Link.tsx | 10 +- .../ui/src/components/LoadingBackdrop.tsx | 4 +- packages/ui/src/components/LongList.tsx | 4 +- packages/ui/src/components/LongText.tsx | 31 +++- .../MouseModelAllelicComposition.tsx | 2 +- packages/ui/src/components/NavBar.jsx | 13 +- packages/ui/src/components/Navigate.tsx | 4 +- packages/ui/src/components/NewChip.tsx | 2 +- .../ui/src/components/ObsPlot/ObsChart.tsx | 4 +- .../ui/src/components/ObsPlot/ObsPlot.tsx | 4 +- .../ui/src/components/ObsPlot/ObsTooltip.tsx | 2 +- .../src/components/ObsPlot/ObsTooltipRow.tsx | 2 +- .../components/ObsPlot/ObsTooltipTable.tsx | 2 +- .../OtAsyncTooltip/OtAsyncTooltip.tsx | 21 ++- .../OtAsyncTooltip/utils/asyncTooltipUtil.ts | 12 +- packages/ui/src/components/OtBtnGroup.tsx | 14 +- packages/ui/src/components/OtCodeBlock.tsx | 4 +- .../ui/src/components/OtCopyToClipboard.tsx | 4 +- .../src/components/OtInvalidResultFilters.tsx | 2 +- packages/ui/src/components/OtLongText.tsx | 8 +- .../ui/src/components/OtScoreLinearBar.tsx | 2 +- .../ui/src/components/OtTable/OtTable.tsx | 76 +++++---- .../OtTable/OtTableColumnFilter.tsx | 12 +- .../OtTable/OtTableColumnVisibility.tsx | 11 +- .../ui/src/components/OtTable/OtTableSSP.tsx | 72 ++++---- .../src/components/OtTable/OtTableSearch.tsx | 10 +- .../OtTable/context/otTableActions.ts | 2 +- .../OtTable/context/otTableReducer.ts | 6 +- .../src/components/OtTable/otTableLayout.tsx | 12 +- .../OtTable/service/tableService.ts | 2 +- .../components/OtTable/types/tableTypes.ts | 6 +- .../components/OtTable/utils/tableUtils.ts | 8 +- packages/ui/src/components/Page.tsx | 4 +- .../ui/src/components/PartnerLockIcon.tsx | 4 +- packages/ui/src/components/PlotContainer.jsx | 4 +- .../src/components/PlotContainerSection.jsx | 2 +- .../components/ProfileHeader/Description.tsx | 3 +- .../ui/src/components/ProfileHeader/Field.tsx | 2 +- .../ProfileHeader/ProfileChipList.tsx | 5 +- .../ProfileHeader/ProfileHeader.jsx | 4 +- .../ui/src/components/ProfileHeader/index.js | 2 +- .../PublicationActionsTooltip.jsx | 2 +- .../PublicationsDrawer/PublicationSummary.tsx | 19 +-- .../PublicationSummaryLabel.tsx | 2 +- .../PublicationsDrawer/PublicationWrapper.jsx | 12 +- .../PublicationsDrawer/PublicationsDrawer.jsx | 34 ++-- .../components/PublicationsDrawer/index.js | 4 +- .../components/RoutingTabs/RoutingTabs.jsx | 8 +- .../ui/src/components/RoutingTabs/index.js | 2 +- .../ui/src/components/ScientificNotation.tsx | 2 +- .../components/Section/SectionContainer.tsx | 2 +- .../src/components/Section/SectionError.tsx | 2 +- .../ui/src/components/Section/SectionItem.tsx | 16 +- .../src/components/Section/SectionLoader.tsx | 2 +- .../components/Section/SectionViewToggle.tsx | 4 +- .../components/Section/SectionsRenderer.tsx | 4 +- .../src/components/Section/sectionStyles.js | 2 +- .../ui/src/components/StudyPublication.tsx | 2 +- .../ui/src/components/Summary/SummaryItem.jsx | 5 +- .../components/Summary/SummaryRenderer.tsx | 2 +- .../src/components/Summary/summaryStyles.js | 2 +- packages/ui/src/components/Summary/utils.js | 9 +- .../ui/src/components/SummaryStatsTable.tsx | 2 +- .../ui/src/components/Table/DataTable.jsx | 15 +- .../ui/src/components/Table/GlobalFilter.jsx | 6 +- packages/ui/src/components/Table/Table.jsx | 19 ++- .../ui/src/components/Table/TableDrawer.jsx | 29 ++-- .../ui/src/components/Table/TableHeader.jsx | 18 +- .../Table/TablePaginationActions.jsx | 17 +- packages/ui/src/components/Table/TableRow.jsx | 6 +- packages/ui/src/components/Table/index.js | 6 +- .../components/Table/sortingAndFiltering.js | 9 +- .../ui/src/components/Table/tableStyles.js | 2 +- packages/ui/src/components/Table/utils.js | 2 +- packages/ui/src/components/Tooltip.jsx | 4 +- packages/ui/src/components/Viewer/Usage.tsx | 6 +- packages/ui/src/components/Viewer/Viewer.tsx | 106 ++++++------ .../ui/src/components/Viewer/ViewerTrack.tsx | 90 +++++----- .../components/icons/ArrowTurnDownLeft.tsx | 4 +- .../src/components/icons/BrokenSearchIcon.tsx | 4 +- 140 files changed, 924 insertions(+), 897 deletions(-) diff --git a/biome.json b/biome.json index cf69b1263..5457f1206 100644 --- a/biome.json +++ b/biome.json @@ -29,7 +29,6 @@ "!**/*.d.ts", "!**/generated", "!**/apps/platform/src", - "!**/packages/ui/src/components", "!**/packages/sections", "!**/packages/ot-config", "!**/packages/ot-constants", diff --git a/packages/ui/src/components/AlphaFoldPathogenicityLegend.tsx b/packages/ui/src/components/AlphaFoldPathogenicityLegend.tsx index 12f23ebd5..a4ac85fe8 100644 --- a/packages/ui/src/components/AlphaFoldPathogenicityLegend.tsx +++ b/packages/ui/src/components/AlphaFoldPathogenicityLegend.tsx @@ -24,12 +24,22 @@ export default function AlphaFoldPathogenicityLegend({ showTitle = true }) { {showTitle && Model Confidence} - + - {stops.map((stop, i) => ( - + {stops.map((stop, _i) => ( + ))} @@ -44,9 +54,9 @@ export default function AlphaFoldPathogenicityLegend({ showTitle = true }) { stroke="none" /> - {primaryDomain.map((t, i) => ( + {primaryDomain.map((t, _i) => ( {["likely benign", "uncertain", "likely pathogenic"].map((label, i) => ( ))} - {primaryDomain.map((t, i) => ( + {primaryDomain.map((t, _i) => ( - import("graphiql").then(module => { + import("graphiql").then((module) => { function GraphiQLEmpty() { - return <>; + return null; } GraphiQLEmpty.displayName = ""; @@ -35,7 +34,7 @@ const GraphiQL = lazy(() => type ApiPlaygroundDrawerProps = { query: string; - variables: any; + variables: Record; fullHeight: boolean; inMenu?: boolean; }; @@ -92,7 +91,7 @@ function ApiPlaygroundDrawer({ sx: { width: "80%", overflowY: "hidden" }, }} open={open} - onClose={e => close(e)} + onClose={(e) => close(e)} anchor="right" > theme.spacing(2), + p: (theme) => theme.spacing(2), }} > API query - close(e)}> + close(e)}> theme.spacing(2), p: theme => theme.spacing(2) }} + sx={{ m: (theme) => theme.spacing(2), p: (theme) => theme.spacing(2) }} variant="outlined" > Press the Play button to explore the GraphQL API query used to populate this table. You @@ -127,7 +126,7 @@ function ApiPlaygroundDrawer({ for more how-to guides and tutorials. {query ? ( - theme.spacing(2), mt: 0 }}> + theme.spacing(2), mt: 0 }}> Loading...}> ({ tooltip: { @@ -57,7 +57,7 @@ function ChipList({ items, small }: ChipListProps): ReactElement[] | string { if (!items || items.length === 0) return naLabel; - return items.map(item => { + return items.map((item) => { const component: ElementType = item.url ? "a" : Box; return ( diff --git a/packages/ui/src/components/ClinvarStars.tsx b/packages/ui/src/components/ClinvarStars.tsx index ae788b36f..102a2c06f 100644 --- a/packages/ui/src/components/ClinvarStars.tsx +++ b/packages/ui/src/components/ClinvarStars.tsx @@ -1,14 +1,14 @@ -import { makeStyles } from "@mui/styles"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faStar as faStarSolid } from "@fortawesome/free-solid-svg-icons"; import { faStar } from "@fortawesome/free-regular-svg-icons"; +import { faStar as faStarSolid } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { makeStyles } from "@mui/styles"; type ClinvarStarsProps = { num: number; length?: number; }; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ star: { color: theme.palette.primary.main, }, diff --git a/packages/ui/src/components/ColorRamp.tsx b/packages/ui/src/components/ColorRamp.tsx index 5e05816d6..925ae34d8 100644 --- a/packages/ui/src/components/ColorRamp.tsx +++ b/packages/ui/src/components/ColorRamp.tsx @@ -1,6 +1,6 @@ -import { useRef, useEffect } from "react"; +import { useEffect, useRef } from "react"; -function ColorRamp({ interpolator, n = 256, width = 100, height= 11 }) { +function ColorRamp({ interpolator, n = 256, width = 100, height = 11 }) { const canvasRef = useRef(null); useEffect(() => { @@ -21,4 +21,4 @@ function ColorRamp({ interpolator, n = 256, width = 100, height= 11 }) { ); } -export default ColorRamp; \ No newline at end of file +export default ColorRamp; diff --git a/packages/ui/src/components/CompactAlphaFoldDomainLegend.tsx b/packages/ui/src/components/CompactAlphaFoldDomainLegend.tsx index 78f20c525..46fe99218 100644 --- a/packages/ui/src/components/CompactAlphaFoldDomainLegend.tsx +++ b/packages/ui/src/components/CompactAlphaFoldDomainLegend.tsx @@ -10,23 +10,25 @@ export default function CompactAlphaFoldDomainLegend({ domains, colorScheme }) { flexWrap: "wrap", justifyContent: { xs: "start", lg: "end" }, alignItems: "center", - }}> - {domains.descriptions.length === 0 - ? ( - No annotated domains - ) : ( - domains.descriptions.map(description => ( - - - {description} - - ) - ))} + }} + > + {domains.descriptions.length === 0 ? ( + + No annotated domains + + ) : ( + domains.descriptions.map((description) => ( + + + {description} + + )) + )} ); } diff --git a/packages/ui/src/components/CompactAlphaFoldHydrophobicityLegend.tsx b/packages/ui/src/components/CompactAlphaFoldHydrophobicityLegend.tsx index 7dd953b5e..e1530e0c8 100644 --- a/packages/ui/src/components/CompactAlphaFoldHydrophobicityLegend.tsx +++ b/packages/ui/src/components/CompactAlphaFoldHydrophobicityLegend.tsx @@ -6,7 +6,7 @@ function CompactAlphaFoldHydrophobicityLegend({ colorInterpolator }) { hydrophilic - + hydrophobic diff --git a/packages/ui/src/components/CompactAlphaFoldLegend.tsx b/packages/ui/src/components/CompactAlphaFoldLegend.tsx index 7412fb36e..b79cff123 100644 --- a/packages/ui/src/components/CompactAlphaFoldLegend.tsx +++ b/packages/ui/src/components/CompactAlphaFoldLegend.tsx @@ -1,6 +1,6 @@ import { Box, Typography } from "@mui/material"; import { alphaFoldConfidenceBands } from "@ot/constants"; -import { DetailPopover, AlphaFoldLegend } from "ui"; +import { AlphaFoldLegend, DetailPopover } from "ui"; export default function CompactAlphaFoldLegend({ showTitle = true }) { return ( diff --git a/packages/ui/src/components/CompactAlphaFoldPathogenicityLegend.tsx b/packages/ui/src/components/CompactAlphaFoldPathogenicityLegend.tsx index aff24f4f9..a00742f1d 100644 --- a/packages/ui/src/components/CompactAlphaFoldPathogenicityLegend.tsx +++ b/packages/ui/src/components/CompactAlphaFoldPathogenicityLegend.tsx @@ -1,6 +1,6 @@ import { Box, Typography } from "@mui/material"; import { alphaFoldPathogenicityColorScale } from "@ot/constants"; -import { DetailPopover, AlphaFoldPathogenicityLegend } from "ui"; +import { AlphaFoldPathogenicityLegend, DetailPopover } from "ui"; export default function CompactAlphaFoldPathogenicityLegend({ showTitle = true }) { const barWidth = 100; @@ -22,11 +22,21 @@ export default function CompactAlphaFoldPathogenicityLegend({ showTitle = true } {showTitle && AlphaFold model pathogenicity:} likely benign - + - {stops.map((stop, i) => ( - + {stops.map((stop, _i) => ( + ))} diff --git a/packages/ui/src/components/CopyUrlButton.tsx b/packages/ui/src/components/CopyUrlButton.tsx index 7c5ede84a..d184f6165 100644 --- a/packages/ui/src/components/CopyUrlButton.tsx +++ b/packages/ui/src/components/CopyUrlButton.tsx @@ -5,7 +5,7 @@ import { makeStyles } from "@mui/styles"; import { useState } from "react"; import { Tooltip } from "ui"; -const styles = makeStyles(theme => ({ +const styles = makeStyles((_theme) => ({ snackbarContentMessage: { display: "flex", justifyContent: "center", diff --git a/packages/ui/src/components/DataDownloader.jsx b/packages/ui/src/components/DataDownloader.jsx index 4870838fd..8b844cc95 100644 --- a/packages/ui/src/components/DataDownloader.jsx +++ b/packages/ui/src/components/DataDownloader.jsx @@ -1,37 +1,35 @@ -import _ from "lodash"; -import { useState } from "react"; -import FileSaver from "file-saver"; -import { makeStyles } from "@mui/styles"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCode, faFileArrowDown, faTable } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { + Box, Button, CircularProgress, - Snackbar, - Slide, - Menu, - MenuItem, ListItemIcon, ListItemText, + Menu, + MenuItem, + Slide, + Snackbar, Typography, - Box, } from "@mui/material"; +import { makeStyles } from "@mui/styles"; +import FileSaver from "file-saver"; +import _ from "lodash"; +import { useId, useState } from "react"; import "graphiql/graphiql.min.css"; import ApiPlaygroundDrawer from "./ApiPlaygroundDrawer"; const asJSON = (columns, rows) => { - const rowStrings = rows.map(row => + const rowStrings = rows.map((row) => columns.reduce((accumulator, newKey) => { if (newKey.exportValue === false) return accumulator; const newLabel = _.camelCase(newKey.exportLabel || newKey.label || newKey.id); - return { - ...accumulator, - [newLabel]: newKey.exportValue - ? newKey.exportValue(row) - : _.get(row, newKey.propertyPath || newKey.id, ""), - }; + accumulator[newLabel] = newKey.exportValue + ? newKey.exportValue(row) + : _.get(row, newKey.propertyPath || newKey.id, ""); + return accumulator; }, {}) ); @@ -39,7 +37,7 @@ const asJSON = (columns, rows) => { }; const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { - const quoteString = d => { + const quoteString = (d) => { let result = d; // converts arrays to strings if (Array.isArray(d)) { @@ -56,12 +54,13 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { const newLabel = quoteString(_.camelCase(column.exportLabel || column.label || column.id)); - return [...accHeaderString, newLabel]; + accHeaderString.push(newLabel); + return accHeaderString; }, []) .join(separator); const rowStrings = rows - .map(row => + .map((row) => columns .reduce((rowString, column) => { if (column.exportValue === false) return rowString; @@ -72,7 +71,8 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { : _.get(row, column.propertyPath || column.id, "") ); - return [...rowString, newValue]; + rowString.push(newValue); + return rowString; }, []) .join(separator) ) @@ -81,7 +81,7 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { return [headerString, rowStrings].join(lineSeparator); }; -const createBlob = format => +const createBlob = (format) => ({ json: (columns, rows) => new Blob([asJSON(columns, rows)], { @@ -95,9 +95,9 @@ const createBlob = format => new Blob([asDSV(columns, rows, "\t", false)], { type: "text/tab-separated-values;charset=utf-8", }), - }[format]); + })[format]; -const styles = makeStyles(theme => ({ +const styles = makeStyles((_theme) => ({ messageProgress: { marginRight: "1rem", color: "white !important", @@ -117,11 +117,12 @@ const styles = makeStyles(theme => ({ function DataDownloader({ columns, rows, fileStem, query, variables, btnLabel = "Export" }) { const [downloading, setDownloading] = useState(false); const [anchorEl, setAnchorEl] = useState(null); + const menuId = useId(); const classes = styles(); const open = Boolean(anchorEl); - const handleClickExportButton = event => { + const handleClickExportButton = (event) => { setAnchorEl(event.currentTarget); }; @@ -173,7 +174,7 @@ function DataDownloader({ columns, rows, fileStem, query, variables, btnLabel = {query ? : null} - + diff --git a/packages/ui/src/components/DetailPopover.tsx b/packages/ui/src/components/DetailPopover.tsx index 74de2dc53..472bac963 100644 --- a/packages/ui/src/components/DetailPopover.tsx +++ b/packages/ui/src/components/DetailPopover.tsx @@ -1,7 +1,7 @@ -import { ReactNode, useState } from "react"; -import { Typography, Popover, Box } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCaretDown, faCaretRight } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Box, Popover, Typography } from "@mui/material"; +import { type ReactNode, useState } from "react"; type DetailPopoverProps = { title: string; diff --git a/packages/ui/src/components/DirectionOfEffectIcon.tsx b/packages/ui/src/components/DirectionOfEffectIcon.tsx index cd080b05c..1cd30448f 100644 --- a/packages/ui/src/components/DirectionOfEffectIcon.tsx +++ b/packages/ui/src/components/DirectionOfEffectIcon.tsx @@ -1,4 +1,3 @@ -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowTrendDown, faArrowTrendUp, @@ -6,11 +5,12 @@ import { faQuestion, faShieldHalved, } from "@fortawesome/free-solid-svg-icons"; -import { makeStyles } from "@mui/styles"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Divider, Tooltip } from "@mui/material"; -import { ReactNode } from "react"; +import { makeStyles } from "@mui/styles"; +import type { ReactNode } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ colorBlue: { color: theme.palette.primary.main, }, @@ -73,7 +73,7 @@ function DirectionOfEffectIcon({ display: "flex", justifyContent: "space-around", alignItems: "center", - background: theme => theme.palette.grey[200], + background: (theme) => theme.palette.grey[200], borderRadius: 4, }} > diff --git a/packages/ui/src/components/DirectionOfEffectTooltip.tsx b/packages/ui/src/components/DirectionOfEffectTooltip.tsx index ffa73abc3..386ef7af3 100644 --- a/packages/ui/src/components/DirectionOfEffectTooltip.tsx +++ b/packages/ui/src/components/DirectionOfEffectTooltip.tsx @@ -1,6 +1,6 @@ -import OTTooltip from "./Tooltip"; +import type { ReactElement } from "react"; import Link from "./Link"; -import { ReactElement } from "react"; +import OTTooltip from "./Tooltip"; type DirectionOfEffectTooltipProps = { docsUrl: string; diff --git a/packages/ui/src/components/DirectionalityDrawer.tsx b/packages/ui/src/components/DirectionalityDrawer.tsx index 09a270ed1..ca40d6460 100644 --- a/packages/ui/src/components/DirectionalityDrawer.tsx +++ b/packages/ui/src/components/DirectionalityDrawer.tsx @@ -4,16 +4,16 @@ import { faXmark, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Box, ButtonBase, Divider, Drawer, IconButton, Paper, Typography } from "@mui/material"; -import { useState } from "react"; +import { Box, ButtonBase, Drawer, IconButton, Paper, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; import { naLabel } from "@ot/constants"; +import { useState } from "react"; import { v1 } from "uuid"; import Link from "./Link"; import OtTable from "./OtTable/OtTable"; import Tooltip from "./Tooltip"; -const sourceDrawerStyles = makeStyles(theme => ({ +const sourceDrawerStyles = makeStyles((theme) => ({ drawerLink: { color: `${theme.palette.primary.main} !important`, }, @@ -107,7 +107,7 @@ export function DirectionalityList({ variantAnnotation }) { mr: 1, mt: "2px", alignItems: "center", - background: theme => theme.palette.grey[200], + background: (theme) => theme.palette.grey[200], borderRadius: 4, // minWidth: "40px", maxWidth: "40px", diff --git a/packages/ui/src/components/DisplayVariantId.tsx b/packages/ui/src/components/DisplayVariantId.tsx index bb1cd04ee..27ed5bedb 100644 --- a/packages/ui/src/components/DisplayVariantId.tsx +++ b/packages/ui/src/components/DisplayVariantId.tsx @@ -1,21 +1,21 @@ -import { ReactNode, useState } from "react"; +import { faClipboard } from "@fortawesome/free-regular-svg-icons"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, - Typography, - IconButton, - Snackbar, Dialog, - DialogTitle, DialogContent, + DialogTitle, + IconButton, + Snackbar, + Typography, } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faXmark } from "@fortawesome/free-solid-svg-icons"; -import { faClipboard } from "@fortawesome/free-regular-svg-icons"; -import { Tooltip } from "ui"; -import { lighten } from "polished"; import { processVariantId } from "@ot/utils"; +import { lighten } from "polished"; +import { type ReactNode, useId, useState } from "react"; +import { Tooltip } from "ui"; -const highlightBackground = theme => lighten(0.4, theme.palette.primary.main); +const highlightBackground = (theme) => lighten(0.4, theme.palette.primary.main); type DisplayVariantIdProps = { variantId: string; @@ -34,6 +34,7 @@ function DisplayVariantId({ }: DisplayVariantIdProps): ReactNode { const [open, setOpen] = useState(false); const [snackbarOpen, setSnackbarOpen] = useState(false); + const dialogTitleId = useId(); if (!otVariantId || !referenceAllele || !alternateAllele) return null; @@ -102,7 +103,7 @@ function DisplayVariantId({ aria-describedby="dialog-description" maxWidth="md" > - + Variant ID @@ -186,7 +187,7 @@ function CopyPanel({ label, text, tooltipText, copyToClipboard }: CopyPanelProps theme.palette.grey[300], + backgroundColor: (theme) => theme.palette.grey[300], position: "relative", }} > diff --git a/packages/ui/src/components/DownloadSvgPlot/DownloadSvgPlot.jsx b/packages/ui/src/components/DownloadSvgPlot/DownloadSvgPlot.jsx index 71ea70f69..d0f1c49fd 100644 --- a/packages/ui/src/components/DownloadSvgPlot/DownloadSvgPlot.jsx +++ b/packages/ui/src/components/DownloadSvgPlot/DownloadSvgPlot.jsx @@ -1,7 +1,6 @@ import { Button, Grid } from "@mui/material"; - -import downloadSvg from "./DownloadSvg"; import PlotContainer from "../PlotContainer"; +import downloadSvg from "./DownloadSvg"; const handleSvgDownload = (svgContainer, filenameStem) => { const svgNode = svgContainer.current; diff --git a/packages/ui/src/components/DownloadSvgPlot/index.js b/packages/ui/src/components/DownloadSvgPlot/index.js index b7418616b..8c464b189 100644 --- a/packages/ui/src/components/DownloadSvgPlot/index.js +++ b/packages/ui/src/components/DownloadSvgPlot/index.js @@ -1,2 +1,2 @@ -export { default as DownloadSvgPlot } from "./DownloadSvgPlot"; export { default as downloadSvg } from "./DownloadSvg"; +export { default as DownloadSvgPlot } from "./DownloadSvgPlot"; diff --git a/packages/ui/src/components/EllsWrapper.tsx b/packages/ui/src/components/EllsWrapper.tsx index 174b081d5..91d8d6e06 100644 --- a/packages/ui/src/components/EllsWrapper.tsx +++ b/packages/ui/src/components/EllsWrapper.tsx @@ -1,5 +1,5 @@ import { makeStyles } from "@mui/styles"; -import { ReactElement } from "react"; +import type { ReactElement } from "react"; const useStyles = makeStyles(() => ({ ellipseContainer: { diff --git a/packages/ui/src/components/EmailLink.tsx b/packages/ui/src/components/EmailLink.tsx index a0b20ebfc..1dfe1d7c3 100644 --- a/packages/ui/src/components/EmailLink.tsx +++ b/packages/ui/src/components/EmailLink.tsx @@ -1,7 +1,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { makeStyles } from "@mui/styles"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ emailLink: { display: "block", textDecoration: "none", diff --git a/packages/ui/src/components/ErrorBoundary.jsx b/packages/ui/src/components/ErrorBoundary.jsx index 46daff9a3..72ff088a3 100644 --- a/packages/ui/src/components/ErrorBoundary.jsx +++ b/packages/ui/src/components/ErrorBoundary.jsx @@ -1,5 +1,5 @@ -import { Component } from "react"; import { Typography } from "@mui/material"; +import { Component } from "react"; import Link from "./Link"; const defaultConfig = { diff --git a/packages/ui/src/components/ExternalLink/CrisprDepmapLink.tsx b/packages/ui/src/components/ExternalLink/CrisprDepmapLink.tsx index 436e4346f..5bcfd8db9 100644 --- a/packages/ui/src/components/ExternalLink/CrisprDepmapLink.tsx +++ b/packages/ui/src/components/ExternalLink/CrisprDepmapLink.tsx @@ -1,11 +1,11 @@ import { faCircleQuestion } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { makeStyles } from "@mui/styles"; import { Tooltip } from "@mui/material"; +import { makeStyles } from "@mui/styles"; import Link from "../Link"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ helpIcon: { fontSize: "0.875rem !important", }, diff --git a/packages/ui/src/components/ExternalLink/TepLink.tsx b/packages/ui/src/components/ExternalLink/TepLink.tsx index fee727f5d..e66609782 100644 --- a/packages/ui/src/components/ExternalLink/TepLink.tsx +++ b/packages/ui/src/components/ExternalLink/TepLink.tsx @@ -1,14 +1,14 @@ +import { useQuery } from "@apollo/client"; import { faCircleQuestion } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { makeStyles } from "@mui/styles"; import { Tooltip } from "@mui/material"; -import { useQuery } from "@apollo/client"; +import { makeStyles } from "@mui/styles"; import Link from "../Link"; import TEP_LINK_QUERY from "./TepLinkQuery.gql"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ helpIcon: { fontSize: "10px", }, diff --git a/packages/ui/src/components/ExternalLink/XRefLinks.tsx b/packages/ui/src/components/ExternalLink/XRefLinks.tsx index f379e1289..9c5b5f1c8 100644 --- a/packages/ui/src/components/ExternalLink/XRefLinks.tsx +++ b/packages/ui/src/components/ExternalLink/XRefLinks.tsx @@ -1,9 +1,9 @@ -import { useState } from "react"; import { makeStyles } from "@mui/styles"; +import { useState } from "react"; import Link from "../Link"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ showMore: { color: theme.palette.primary.main, cursor: "pointer", @@ -40,9 +40,20 @@ function XRefLinks({ label, urlBuilder, urlStem, ids, names, limit }: XRefLinksP {ids.length > limit ? ( {showMore ? "" : "... "}[{" "} - setShowMore(!showMore)}> + {" "} ] ) : null} diff --git a/packages/ui/src/components/FacetsSelect/FacetsHelpBlock.tsx b/packages/ui/src/components/FacetsSelect/FacetsHelpBlock.tsx index 6788e8714..6496da218 100644 --- a/packages/ui/src/components/FacetsSelect/FacetsHelpBlock.tsx +++ b/packages/ui/src/components/FacetsSelect/FacetsHelpBlock.tsx @@ -1,10 +1,9 @@ -import { ReactElement, useState } from "react"; +import { faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Collapse } from "@mui/material"; - -import { ENTITY } from "./facetsTypes"; +import { type ReactElement, useState } from "react"; import { Link } from "ui"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faCaretDown, faCaretUp } from "@fortawesome/free-solid-svg-icons"; +import { ENTITY } from "./facetsTypes"; const EXAMPLE = { [ENTITY.DISEASE]: "Eczema", @@ -12,7 +11,6 @@ const EXAMPLE = { }; function FacetsHelpBlock({ entityToGet }: { entityToGet: ENTITY }): ReactElement { - const [open, setOpen] = useState(false); return ( diff --git a/packages/ui/src/components/FacetsSelect/FacetsSelect.tsx b/packages/ui/src/components/FacetsSelect/FacetsSelect.tsx index 0ba52a05a..33ecb5cce 100644 --- a/packages/ui/src/components/FacetsSelect/FacetsSelect.tsx +++ b/packages/ui/src/components/FacetsSelect/FacetsSelect.tsx @@ -1,11 +1,11 @@ -import { Box, Chip, MenuItem, SelectChangeEvent, TextField, Typography } from "@mui/material"; -import { ReactElement, useEffect, useReducer, useState } from "react"; +import { faCircleXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Box, Chip, MenuItem, type SelectChangeEvent, TextField, Typography } from "@mui/material"; +import { type ReactElement, useEffect, useId, useReducer, useState } from "react"; +import { v1 } from "uuid"; import { Tooltip, useApolloClient, useDebounce } from "../../index"; - import FacetsHelpBlock from "./FacetsHelpBlock"; import { resetFacets, selectFacet, setCategory, setFacetsData, setLoading } from "./facetsActions"; -import { createInitialState, facetsReducer } from "./facetsReducer"; -import { v1 } from "uuid"; import { FacetListItemCategory, FacetListItemContainer, @@ -14,13 +14,12 @@ import { FacetsPopper, Select, } from "./facetsLayout"; +import { createInitialState, facetsReducer } from "./facetsReducer"; +import type { ENTITY, Facet } from "./facetsTypes"; import { getFacetsData } from "./service/facetsService"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faCircleXmark } from "@fortawesome/free-solid-svg-icons"; -import { ENTITY, Facet } from "./facetsTypes"; function removeFacet(items: Facet[], idToRemove: string): Facet[] { - return items.filter(item => item.id !== idToRemove); + return items.filter((item) => item.id !== idToRemove); } type onFacetSelect = (f: Facet[]) => void; @@ -47,6 +46,7 @@ function FacetsSelect({ const [inputValue, setInputValue] = useState(""); const [value, setValue] = useState(null); const [optionsOpen, setOptionsOpen] = useState(false); + const facetsInputId = useId(); const debouncedInputValue = useDebounce(inputValue, 200); const [state, dispatch] = useReducer(facetsReducer, entityToGet, createInitialState); @@ -58,7 +58,7 @@ function FacetsSelect({ return dispatch(setCategory(category, [])); } const facetData = getFacetsData("*", entityToGet, category, client); - facetData.then(data => { + facetData.then((data) => { dispatch(setCategory(category, data)); }); } @@ -66,7 +66,7 @@ function FacetsSelect({ function getFacetsQueryData() { dispatch(setLoading(true)); const facetData = getFacetsData(inputValue, entityToGet, state.categoryFilterValue, client); - facetData.then(data => { + facetData.then((data) => { dispatch(setFacetsData(data)); }); } @@ -87,7 +87,7 @@ function FacetsSelect({ const handleOptionSelect = (_, newValue) => { if (newValue) { - if (!parentState.some(option => option.id === newValue.id)) { + if (!parentState.some((option) => option.id === newValue.id)) { dispatch(selectFacet([newValue, ...parentState])); onFacetSelect([newValue, ...parentState]); } @@ -105,7 +105,7 @@ function FacetsSelect({ x} - getOptionLabel={option => option?.label} + filterOptions={(x) => x} + getOptionLabel={(option) => option?.label} isOptionEqualToValue={(option, value) => option.id === value?.id} onOpen={() => setOptionsOpen(true)} onClose={() => setOptionsOpen(false)} onChange={handleOptionSelect} - onInputChange={(event, newInputValue) => { + onInputChange={(_event, newInputValue) => { setInputValue(newInputValue); }} PopperComponent={FacetsPopper} - renderInput={params => ( + renderInput={(params) => ( )} renderOption={(props, option) => ( diff --git a/packages/ui/src/components/FacetsSelect/facetsActions.ts b/packages/ui/src/components/FacetsSelect/facetsActions.ts index 49039c268..6cf36b566 100644 --- a/packages/ui/src/components/FacetsSelect/facetsActions.ts +++ b/packages/ui/src/components/FacetsSelect/facetsActions.ts @@ -1,9 +1,9 @@ import { - Action, + type Action, ActionType, DISEASE_CATEGORIES, ENTITY, - Facet, + type Facet, TARGET_CATEGORIES, } from "./facetsTypes"; diff --git a/packages/ui/src/components/FacetsSelect/facetsLayout.tsx b/packages/ui/src/components/FacetsSelect/facetsLayout.tsx index 0dfb5610c..bc6b5b49f 100644 --- a/packages/ui/src/components/FacetsSelect/facetsLayout.tsx +++ b/packages/ui/src/components/FacetsSelect/facetsLayout.tsx @@ -1,4 +1,4 @@ -import { Autocomplete, Popper, Select as MuiSlect, styled } from "@mui/material"; +import { Autocomplete, Select as MuiSlect, Popper, styled } from "@mui/material"; export const Select = styled(MuiSlect)(({ theme }) => ({ minWidth: "150px", @@ -18,11 +18,11 @@ export const Select = styled(MuiSlect)(({ theme }) => ({ }, })); -export const FacetsPopper = props => { +export const FacetsPopper = (props) => { return ; }; -export const FacetsAutocomplete = styled(Autocomplete)(({ theme }) => ({ +export const FacetsAutocomplete = styled(Autocomplete)(({ _theme }) => ({ minWidth: "240px", flexWrap: "nowrap", ".MuiAutocomplete-popper": { diff --git a/packages/ui/src/components/FacetsSelect/facetsReducer.ts b/packages/ui/src/components/FacetsSelect/facetsReducer.ts index e070af182..942efce64 100644 --- a/packages/ui/src/components/FacetsSelect/facetsReducer.ts +++ b/packages/ui/src/components/FacetsSelect/facetsReducer.ts @@ -1,10 +1,10 @@ import { - Action, + type Action, ActionType, ALL_CATEGORY, DISEASE_CATEGORIES, ENTITY, - FacetState, + type FacetState, TARGET_CATEGORIES, } from "./facetsTypes"; @@ -26,7 +26,7 @@ export function createInitialState(entityToGet: string): FacetState { } export function facetsReducer(state: FacetState = initialFacetState, action: Action): FacetState { - if (typeof state === undefined) { + if (typeof state === "undefined") { throw Error("State provided to facetsReducer is undefined"); } switch (action.type) { @@ -75,8 +75,7 @@ export function facetsReducer(state: FacetState = initialFacetState, action: Act }; } default: { - throw Error("Unknown action: " + action); - return state; + throw Error(`Unknown action: ${action}`); } } } diff --git a/packages/ui/src/components/FacetsSelect/service/facetsService.ts b/packages/ui/src/components/FacetsSelect/service/facetsService.ts index 7042d0a66..abd563929 100644 --- a/packages/ui/src/components/FacetsSelect/service/facetsService.ts +++ b/packages/ui/src/components/FacetsSelect/service/facetsService.ts @@ -1,6 +1,6 @@ +import type { ApolloClient, NormalizedCacheObject } from "@apollo/client"; import FACETS_SEARCH_QUERY from "../FacetsQuery.gql"; -import { Facet } from "../facetsTypes"; -import { ApolloClient, NormalizedCacheObject } from "@apollo/client"; +import type { Facet } from "../facetsTypes"; export async function getFacetsData( inputValue: string, diff --git a/packages/ui/src/components/Footer.tsx b/packages/ui/src/components/Footer.tsx index bc6c1754a..1711c2544 100644 --- a/packages/ui/src/components/Footer.tsx +++ b/packages/ui/src/components/Footer.tsx @@ -1,13 +1,12 @@ -import { Grid, Typography } from "@mui/material"; +import type { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { faQuestion } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { Grid, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; - -import Link from "./Link"; +import { useConfigContext } from "../providers/ConfigurationProvider"; import { EmailLink } from "./EmailLink"; - +import Link from "./Link"; import PrivateWrapper from "./PrivateWrapper"; -import { useConfigContext } from "../providers/ConfigurationProvider"; const FOOTER_BACKGROUND_COLOR = "#2e2d35"; @@ -80,15 +79,15 @@ type FooterSocialProps = { }; const FooterSocial = ({ social }: FooterSocialProps) => { const classes = useSocialLinkStyle(); - const socialsWithIcons = social.filter(s => s.icon); + const socialsWithIcons = social.filter((s) => s.icon); return ( <> Follow us {socialsWithIcons.map(({ icon, url, label }, i) => ( - + - + ))} @@ -118,12 +117,19 @@ const FooterSection = ({ heading, links, social, children }: FooterSectionProps) {links.map((link, i) => { if (link.showOnlyPartner) { return ( - + ); } else { - return ; + return ( + + ); } })} @@ -176,16 +182,16 @@ const LicenseCC0 = ({ link }: LicenseCC0Props) => { > CC0 1.0 cc0 license image 1 cc0 license image 2 `${theme.spacing(5)} 0 ${theme.spacing(5)}`, + margin: (theme) => `${theme.spacing(5)} 0 ${theme.spacing(5)}`, }), }; @@ -64,7 +64,7 @@ function GlobalSearch({ isHomePage }) { }} > theme.spacing(1), display: "flex", alignItems: "center" }} + sx={{ paddingLeft: (theme) => theme.spacing(1), display: "flex", alignItems: "center" }} > Search... @@ -73,10 +73,10 @@ function GlobalSearch({ isHomePage }) { sx={{ typography: "caption", fontWeight: "bold", - color: theme => (isHomePage ? theme.palette.text : "white"), - backgroundColor: theme => (isHomePage ? "#CECECE" : "#235d89"), - padding: theme => `${theme.spacing(0.2)} ${theme.spacing(1)}`, - borderRadius: theme => theme.spacing(0.4), + color: (theme) => (isHomePage ? theme.palette.text : "white"), + backgroundColor: (_theme) => (isHomePage ? "#CECECE" : "#235d89"), + padding: (theme) => `${theme.spacing(0.2)} ${theme.spacing(1)}`, + borderRadius: (theme) => theme.spacing(0.4), }} > {shortcutText} diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchDialog.jsx b/packages/ui/src/components/GlobalSearch/GlobalSearchDialog.jsx index ae7cfeb66..a1f4ba847 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchDialog.jsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchDialog.jsx @@ -1,14 +1,13 @@ -import { useContext, useState } from "react"; -import { Box, Dialog, DialogContent, DialogTitle, styled } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons"; - -import GlobalSearchList from "./GlobalSearchList"; -import { defaultEntityFilterState, SearchContext, SearchInputProvider } from "./SearchContext"; -import GlobalSearchInput from "./GlobalSearchInput"; -import GlobalSearchFreeListItem from "./GlobalSearchFreeListItem"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Box, Dialog, DialogContent, DialogTitle, styled } from "@mui/material"; +import { useContext, useState } from "react"; import ErrorBoundary from "../ErrorBoundary"; import GlobalSearchEntityFilter from "./GlobalSearchEntityFilter"; +import GlobalSearchFreeListItem from "./GlobalSearchFreeListItem"; +import GlobalSearchInput from "./GlobalSearchInput"; +import GlobalSearchList from "./GlobalSearchList"; +import { defaultEntityFilterState, SearchContext, SearchInputProvider } from "./SearchContext"; const EscButton = styled("button")(({ theme }) => ({ display: "block", @@ -45,8 +44,8 @@ function GlobalSearchDialog() { "& .MuiPaper-root": { width: "80vw", maxWidth: "800px", - borderRadius: theme => theme.spacing(0.5), - margin: theme => theme.spacing(6), + borderRadius: (theme) => theme.spacing(0.5), + margin: (theme) => theme.spacing(6), }, }, }} @@ -59,8 +58,8 @@ function GlobalSearchDialog() { sx={{ display: "flex", alignItems: "center", - fontSize: theme => `${theme.spacing(3.5)}`, - color: theme => theme.palette.grey[500], + fontSize: (theme) => `${theme.spacing(3.5)}`, + color: (theme) => theme.palette.grey[500], }} > diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchEntityFilter.tsx b/packages/ui/src/components/GlobalSearch/GlobalSearchEntityFilter.tsx index 7c4e1092b..e636d9449 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchEntityFilter.tsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchEntityFilter.tsx @@ -1,8 +1,8 @@ -import { Box, Checkbox, Chip, Divider, FormControlLabel, FormGroup } from "@mui/material"; +import { Box, Checkbox, Chip, FormControlLabel, FormGroup } from "@mui/material"; import { useContext } from "react"; +import GlobalSearchIcon from "./GlobalSearchIcon"; import { defaultEntityFilterState, SearchContext } from "./SearchContext"; import { getSelectedEntityFilterLength } from "./utils/searchUtils"; -import GlobalSearchIcon from "./GlobalSearchIcon"; const ALL = "All"; @@ -30,11 +30,72 @@ function GlobalSearchEntityFilter() { - theme.palette.grey[500], + ".MuiChip-icon": { + fontSize: "12px", + }, + }} + size="small" + label={ {ALL}} + variant="outlined" + clickable + tabIndex={-1} + icon={} + /> + } + checkedIcon={ + `${theme.palette.primary.light}30`, + ".MuiChip-icon": { + fontSize: "12px", + }, + }} + color="primary" + size="small" + label={ {ALL}} + variant="outlined" + clickable + tabIndex={-1} + icon={} + /> + } + /> + /> + `1px solid ${theme.palette.grey[400]}`, + marginY: "10px", + paddingX: "6px", + }} + /> + + {Object.entries(filterState).map(([key, value]) => { + return ( + handleChangeFilter(key, e)} inputProps={{ "aria-label": "controlled" }} size="small" icon={ @@ -44,17 +105,17 @@ function GlobalSearchEntityFilter() { fontWeight: "bold", display: "flex", padding: "15px 6px", - color: theme => theme.palette.grey[500], + color: (theme) => theme.palette.grey[500], ".MuiChip-icon": { fontSize: "12px", }, }} size="small" - label={ {ALL}} + label={ {key}} variant="outlined" clickable tabIndex={-1} - icon={} + icon={} /> } checkedIcon={ @@ -64,90 +125,21 @@ function GlobalSearchEntityFilter() { fontWeight: "bold", display: "flex", padding: "15px 6px", - backgroundColor: theme => `${theme.palette.primary.light}30`, + backgroundColor: (theme) => `${theme.palette.primary.light}30`, ".MuiChip-icon": { fontSize: "12px", }, }} color="primary" size="small" - label={ {ALL}} + label={ {key}} variant="outlined" clickable tabIndex={-1} - icon={} + icon={} /> } /> - - } - /> - `1px solid ${theme.palette.grey[400]}`, - marginY: "10px", - paddingX: "6px", - }} - /> - - {Object.entries(filterState).map(([key, value]) => { - return ( - - handleChangeFilter(key, e)} - inputProps={{ "aria-label": "controlled" }} - size="small" - icon={ - theme.palette.grey[500], - ".MuiChip-icon": { - fontSize: "12px", - }, - }} - size="small" - label={ {key}} - variant="outlined" - clickable - tabIndex={-1} - icon={} - /> - } - checkedIcon={ - `${theme.palette.primary.light}30`, - ".MuiChip-icon": { - fontSize: "12px", - }, - }} - color="primary" - size="small" - label={ {key}} - variant="outlined" - clickable - tabIndex={-1} - icon={} - /> - } - /> - - } label={""} /> ); diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchFreeListItem.jsx b/packages/ui/src/components/GlobalSearch/GlobalSearchFreeListItem.jsx index 7d55a8971..fd9a2a48c 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchFreeListItem.jsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchFreeListItem.jsx @@ -1,9 +1,8 @@ +import { Box, styled, Typography } from "@mui/material"; import { useCallback, useContext } from "react"; -import { Box, Typography, styled } from "@mui/material"; - -import { SearchContext, SearchInputContext } from "./SearchContext"; -import ArrowTurnDownLeft from "../icons/ArrowTurnDownLeft"; import useListOption from "../../hooks/useListOption"; +import ArrowTurnDownLeft from "../icons/ArrowTurnDownLeft"; +import { SearchContext, SearchInputContext } from "./SearchContext"; const FreeSearchListItem = styled("li")(({ theme }) => ({ cursor: "pointer", @@ -46,7 +45,7 @@ function GlobalSearchFreeListItem() { }; const handleItemClick = useCallback( - item => { + (item) => { setOpen(false); openListItem(item, filterState); }, diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchIcon.tsx b/packages/ui/src/components/GlobalSearch/GlobalSearchIcon.tsx index 5ce191559..4832e0a47 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchIcon.tsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchIcon.tsx @@ -10,7 +10,7 @@ import { import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { makeStyles } from "@mui/styles"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((_theme) => ({ labelIcon: { fontSize: "0.8rem", }, diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchInput.tsx b/packages/ui/src/components/GlobalSearch/GlobalSearchInput.tsx index f2b657319..306ebd6aa 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchInput.tsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchInput.tsx @@ -1,5 +1,5 @@ -import { useContext, memo, FocusEvent, ChangeEvent, ReactElement } from "react"; import { styled } from "@mui/material"; +import { type ChangeEvent, type FocusEvent, memo, type ReactElement, useContext } from "react"; import { SearchContext, SearchInputContext } from "./SearchContext"; diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchList.jsx b/packages/ui/src/components/GlobalSearch/GlobalSearchList.jsx index ee18a1dcb..5092f49ca 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchList.jsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchList.jsx @@ -1,8 +1,10 @@ -import { useContext, useEffect, useState, memo, useCallback, Fragment, useMemo } from "react"; -import { Box, styled } from "@mui/material"; import { useLazyQuery } from "@apollo/client"; +import { Box, styled } from "@mui/material"; +import { Fragment, memo, useCallback, useContext, useEffect, useMemo, useState } from "react"; +import useListOption from "../../hooks/useListOption"; import GlobalSearchListHeader from "./GlobalSearchListHeader"; import GlobalSearchListItem from "./GlobalSearchListItem"; +import GlobalSearchLoadingState from "./GlobalSearchLoadingState"; import { defaultEntityFilterState, SearchContext } from "./SearchContext"; import { formatSearchData, @@ -10,8 +12,6 @@ import { TOTAL_ENTITIES, TOTAL_SEARCH_RESULTS, } from "./utils/searchUtils"; -import useListOption from "../../hooks/useListOption"; -import GlobalSearchLoadingState from "./GlobalSearchLoadingState"; import VariantMessage from "./VariantMessage"; const VARIANT_COMPONENTS = { @@ -87,7 +87,7 @@ function GlobalSearchList({ inputValue }) { selected = index; const items = document.querySelectorAll(".search-list-item"); if (items.length) { - items.forEach(el => { + items.forEach((el) => { el.classList.remove("search-list-item-active"); }); items[index].classList.add("search-list-item-active"); @@ -98,7 +98,7 @@ function GlobalSearchList({ inputValue }) { } }, []); - const onKeyDownHandler = useCallback(e => { + const onKeyDownHandler = useCallback((e) => { if (e.key === "Escape") { setOpen(false); e.preventDefault(); @@ -122,7 +122,7 @@ function GlobalSearchList({ inputValue }) { }, []); const handleItemClick = useCallback( - item => { + (item) => { setOpen(false); openListItem(item, filterState); setFilterState(defaultEntityFilterState); @@ -142,11 +142,11 @@ function GlobalSearchList({ inputValue }) { size: Math.ceil(TOTAL_SEARCH_RESULTS / selectedEntityFilterLength), }, }) - .then(res => { + .then((res) => { const formattedData = formatSearchData(res.data); setSearchResult({ ...formattedData }); }) - .catch(err => { + .catch((err) => { console.log(err); }); } @@ -201,7 +201,7 @@ function GlobalSearchList({ inputValue }) { > - {searchSuggestions.map(item => ( + {searchSuggestions.map((item) => ( - {value.map(item => ( + {value.map((item) => ( - {recentItems.map(item => ( + {recentItems.map((item) => ( ({ +const useStyles = makeStyles((theme) => ({ sectionHeader: { textTransform: "capitalize", color: theme.palette.grey[600], diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchListItem.jsx b/packages/ui/src/components/GlobalSearch/GlobalSearchListItem.jsx index 78fca33ee..244244b30 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchListItem.jsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchListItem.jsx @@ -1,14 +1,13 @@ -import { memo } from "react"; -import { styled } from "@mui/styles"; -import { Typography, Chip, Box } from "@mui/material"; +import { faClockRotateLeft, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faXmark, faClockRotateLeft, faArrowTrendUp } from "@fortawesome/free-solid-svg-icons"; - -import { clearRecentItem } from "./utils/searchUtils"; -import DisplayVariantId from "../DisplayVariantId"; +import { Box, Chip, Typography } from "@mui/material"; +import { styled } from "@mui/styles"; import { getStudyItemMetaData } from "@ot/utils"; +import { memo } from "react"; +import DisplayVariantId from "../DisplayVariantId"; import StudyPublication from "../StudyPublication"; import GlobalSearchIcon from "./GlobalSearchIcon"; +import { clearRecentItem } from "./utils/searchUtils"; const ListItem = styled("li")(({ theme }) => ({ cursor: "pointer", @@ -161,7 +160,7 @@ function RecentListItem({ item, onItemClick }) { { + onClick={(event) => { event.preventDefault(); event.stopPropagation(); clearRecentItem(item); @@ -190,7 +189,7 @@ function TopHitListItem({ item, onItemClick }) { theme.palette.primary.main, + color: (theme) => theme.palette.primary.main, }} > {symbolNameOrId(item)} @@ -295,11 +294,7 @@ function GlobalSearchListItem({ item, isTopHit = false, onItemClick }) { {item.name} ); - return ( - <> - {symbolNameOrId(item)} - - ); + return {symbolNameOrId(item)}; }; function getVariantRsIds() { diff --git a/packages/ui/src/components/GlobalSearch/GlobalSearchLoadingState.tsx b/packages/ui/src/components/GlobalSearch/GlobalSearchLoadingState.tsx index e5c16a2a4..b678eda98 100644 --- a/packages/ui/src/components/GlobalSearch/GlobalSearchLoadingState.tsx +++ b/packages/ui/src/components/GlobalSearch/GlobalSearchLoadingState.tsx @@ -1,4 +1,4 @@ -import { Collapse, Grid, Grow, Skeleton } from "@mui/material"; +import { Collapse, Grid, Skeleton } from "@mui/material"; function GlobalSearchLoadingState() { const listItemsToShow = new Array(4).fill(0); @@ -19,7 +19,7 @@ function GlobalSearchLoadingState() { {listItemsToShow.map((_item, index) => ( void; - searchSuggestions: Array; + searchSuggestions: Array; filterState: EntityFilterState; - setFilterState: (arg) => void; - allSearchResults: Array; - setAllSearchResults: (arg) => void; + setFilterState: (arg: EntityFilterState) => void; + allSearchResults: Array; + setAllSearchResults: (arg: Array) => void; }>({ searchQuery: "", searchPlaceholder: "Search...", diff --git a/packages/ui/src/components/GlobalSearch/VariantMessage.tsx b/packages/ui/src/components/GlobalSearch/VariantMessage.tsx index 9d99d767e..aa8bfe2c9 100644 --- a/packages/ui/src/components/GlobalSearch/VariantMessage.tsx +++ b/packages/ui/src/components/GlobalSearch/VariantMessage.tsx @@ -5,7 +5,7 @@ import Link from "../Link"; const docsLink = "https://platform-docs.opentargets.org/variant"; -function VariantMessage({ inputValue }: { inputValue: string }) { +function VariantMessage({ inputValue: _inputValue }: { inputValue: string }) { return ( { +const mapStandardKeys = (originalKey) => { switch (originalKey) { case "studyId": return "id"; @@ -19,25 +19,25 @@ const mapStandardKeys = originalKey => { } }; -const flattenObj = ob => { +const flattenObj = (ob) => { const result = {}; - Object.entries(ob).forEach(([key, value]) => { + for (const [key, value] of Object.entries(ob)) { if (value && typeof value === "object" && !Array.isArray(value)) { const temp = flattenObj(value); - Object.entries(temp).forEach(([nestedKey, nestedValue]) => { + for (const [nestedKey, nestedValue] of Object.entries(temp)) { result[nestedKey] = nestedValue; - }); + } } else if (key === "functionDescriptions") { result[mapStandardKeys(key)] = value[0]; } else { result[mapStandardKeys(key)] = value; } - }); + } return result; }; -const exceedsArrayLengthLimit = array => { +const exceedsArrayLengthLimit = (array) => { const limitLength = 7; let exceedsLimit = false; @@ -47,13 +47,13 @@ const exceedsArrayLengthLimit = array => { return exceedsLimit; }; -export const formatSearchData = unformattedData => { +export const formatSearchData = (unformattedData) => { const formattedData = {}; - Object.entries(unformattedData).forEach(([key, value]) => { + for (const [key, value] of Object.entries(unformattedData)) { const typesArray = []; - value.hits.map(i => + value.hits.map((i) => typesArray.push({ type: key === "topHit" ? "topHit" : i.entity, entity: i.entity, @@ -62,7 +62,7 @@ export const formatSearchData = unformattedData => { ); if (typesArray.length > 0) formattedData[key] = typesArray; - }); + } return formattedData; }; @@ -77,7 +77,7 @@ export const containsObject = (obj, list) => { return -1; }; -export const addSearchToLocalStorage = item => { +export const addSearchToLocalStorage = (item) => { const recentItems = JSON.parse(localStorage.getItem("search-history")) || []; const newItem = { ...item }; delete newItem.description; @@ -99,7 +99,7 @@ export const clearAllRecent = () => { window.dispatchEvent(new Event("storage")); }; -export const clearRecentItem = item => { +export const clearRecentItem = (item) => { const recentItems = JSON.parse(localStorage.getItem("search-history")); const removedItems = [...recentItems]; const existingIndex = containsObject(item, removedItems); @@ -109,17 +109,18 @@ export const clearRecentItem = item => { return removedItems; }; -export const getSelectedEntityFilterLength = obj => { +export const getSelectedEntityFilterLength = (obj) => { if (!obj) return TOTAL_ENTITIES; return Object.values(obj).filter(Boolean).length; }; -export const getSelectedEntityFilter = obj => { +export const getSelectedEntityFilter = (obj) => { if (!obj) return []; return ( Object.entries(obj) .map(([key, value]) => { if (value) return key; + return null; }) .filter(Boolean) || [] ); diff --git a/packages/ui/src/components/Header.tsx b/packages/ui/src/components/Header.tsx index f8dd92b0b..f3fc57d0b 100644 --- a/packages/ui/src/components/Header.tsx +++ b/packages/ui/src/components/Header.tsx @@ -1,9 +1,9 @@ -import { Box, Grid, Skeleton, SxProps, Theme, Typography } from "@mui/material"; -import { makeStyles } from "@mui/styles"; - +import type { IconProp } from "@fortawesome/fontawesome-svg-core"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { ReactElement, ReactNode } from "react"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { Box, Grid, Skeleton, type SxProps, type Theme, Typography } from "@mui/material"; +import { makeStyles } from "@mui/styles"; +import type { ReactElement, ReactNode } from "react"; +import { useId } from "react"; const useStyles = makeStyles((theme: Theme) => ({ externalLinks: { @@ -74,9 +74,10 @@ function Header({ rightContent = null, }: HeaderProps): ReactElement { const classes = useStyles(); + const headerId = useId(); return ( - + diff --git a/packages/ui/src/components/HeaderMenu.tsx b/packages/ui/src/components/HeaderMenu.tsx index 99d79086a..5ce0aae95 100644 --- a/packages/ui/src/components/HeaderMenu.tsx +++ b/packages/ui/src/components/HeaderMenu.tsx @@ -1,18 +1,18 @@ -import { ReactElement, useState, MouseEvent, KeyboardEvent } from "react"; -import { v1 } from "uuid"; +import { faBars, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { + ClickAwayListener, + Fade, + IconButton, MenuItem, - Popper, MenuList, - IconButton, - Fade, Paper, - ClickAwayListener, - PopperPlacementType, + Popper, + type PopperPlacementType, } from "@mui/material"; -import { faXmark, faBars } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { makeStyles } from "@mui/styles"; +import { type KeyboardEvent, type MouseEvent, type ReactElement, useState } from "react"; +import { v1 } from "uuid"; import Link from "./Link"; import PrivateWrapper from "./PrivateWrapper"; @@ -81,7 +81,6 @@ function HeaderMenu({ items, placement }: HeaderMenuProps): ReactElement { d.target.id === row.targetId) + data.rows.find((d) => d.target.id === row.targetId) ); - function handleMouseEnter(event) { + function handleMouseEnter(_event) { setOver(true); } - function handleMouseLeave(event) { + function handleMouseLeave(_event) { setOver(false); } @@ -79,7 +79,7 @@ function BodyRow({ row, colorInterpolator, data }) { - {groupNames.map(groupName => ( + {groupNames.map((groupName) => ( {value}{" "} - {value == "Score" && ( + {value === "Score" && ( @@ -160,7 +160,7 @@ function HeatCell({ value, bgrd, groupName, mouseLeaveRow, waterfallRow, waterfa function handleClick(event) { const filteredWaterfallRow = structuredClone(waterfallRow); - filteredWaterfallRow.features = filteredWaterfallRow.features.filter(d => { + filteredWaterfallRow.features = filteredWaterfallRow.features.filter((d) => { return featureToGroup[d.name] === groupName; }); let { row, xDomain } = computeWaterfall(filteredWaterfallRow, waterfallXDomain, true); @@ -193,7 +193,7 @@ function HeatCell({ value, bgrd, groupName, mouseLeaveRow, waterfallRow, waterfa setAnchorEl(event.currentTarget); } - function handleClose(event) { + function handleClose(_event) { setAnchorEl(null); setPlotProps(null); mouseLeaveRow(); @@ -399,7 +399,7 @@ function HeatmapTable({ ({ all }) => { if (!filterProvied) return all; if (filterProvied && showAll) return all; - return all.filter(row => row.targetId === fixedGene); + return all.filter((row) => row.targetId === fixedGene); }, [showAll] ); @@ -486,7 +486,7 @@ function HeatmapTable({ ))} - {rows.map(row => ( + {rows.map((row) => ( { + const handleClick = (event) => { loadIndicatorData(); setAnchorEl(event.currentTarget); }; diff --git a/packages/ui/src/components/HeatmapTable/constants.ts b/packages/ui/src/components/HeatmapTable/constants.ts index 389b7d59a..570359e71 100644 --- a/packages/ui/src/components/HeatmapTable/constants.ts +++ b/packages/ui/src/components/HeatmapTable/constants.ts @@ -44,7 +44,7 @@ export const featureToGroup = { export const groupToFeature = Object.groupBy( Object.entries(featureToGroup), - ([feature, group]) => group + ([_feature, group]) => group ); export const groupNames = Object.keys(groupToFeature); diff --git a/packages/ui/src/components/HeatmapTable/helpers.ts b/packages/ui/src/components/HeatmapTable/helpers.ts index f0078b12f..b497f091d 100644 --- a/packages/ui/src/components/HeatmapTable/helpers.ts +++ b/packages/ui/src/components/HeatmapTable/helpers.ts @@ -1,8 +1,8 @@ -import { scaleLinear, scaleDiverging, extent, mean, interpolateRgbBasis } from "d3"; -import { groupNames, featureToGroup, DIVERGING_COLORS } from "./constants"; +import { extent, interpolateRgbBasis, mean, scaleDiverging, scaleLinear } from "d3"; +import { DIVERGING_COLORS, featureToGroup, groupNames } from "./constants"; export function getGroupResults(data) { - const rows = data.map(d => { + const rows = data.map((d) => { const row = { targetId: d.target.id, targetSymbol: d.target.approvedSymbol, @@ -34,7 +34,7 @@ export function computeWaterfall(originalRow, fullXDomain, zeroBase) { feature._start = features[index - 1]?._end ?? (zeroBase ? 0 : row.shapBaseValue); feature._end = feature._start + feature.shapValue; } - const xExtent = extent(features.map(d => [d._start, d._end]).flat()); + const xExtent = extent(features.flatMap((d) => [d._start, d._end])); if (fullXDomain) { const relativeSize = (xExtent[1] - xExtent[0]) / (fullXDomain[1] - fullXDomain[0]); if (relativeSize < 0.25) { @@ -57,6 +57,10 @@ export function getColorInterpolator(groupResults) { max = Math.max(max, row[groupName]); } } - Math.abs(min) > max ? (max = -min) : (min = -max); + if (Math.abs(min) > max) { + max = -min; + } else { + min = -max; + } return scaleDiverging().domain([min, 0, max]).interpolator(interpolateRgbBasis(DIVERGING_COLORS)); } diff --git a/packages/ui/src/components/HeatmapTable/renderWaterfallPlot.ts b/packages/ui/src/components/HeatmapTable/renderWaterfallPlot.ts index 047d7f10e..e07a52813 100644 --- a/packages/ui/src/components/HeatmapTable/renderWaterfallPlot.ts +++ b/packages/ui/src/components/HeatmapTable/renderWaterfallPlot.ts @@ -29,11 +29,11 @@ export function renderWaterfallPlot({ labelArrow: false, domain: xDomain, ticks: xTicks, - tickFormat: v => (Number.isInteger(v) ? String(v) : v), + tickFormat: (v) => (Number.isInteger(v) ? String(v) : v), }, y: { type: "band", - domain: features.map(d => d.name), + domain: features.map((d) => d.name), reverse: true, axis: null, grid: true, @@ -45,7 +45,7 @@ export function renderWaterfallPlot({ y: "name", dx: dxName, dy: dyHeader, - text: d => "Feature", + text: (_d) => "Feature", fontWeight: 500, textAnchor: "end", fontSize: textFontSize, @@ -56,7 +56,7 @@ export function renderWaterfallPlot({ y: "name", dx: dxValue, dy: dyHeader, - text: d => "Value", + text: (_d) => "Value", fontWeight: 500, fontSize: textFontSize, textAnchor: "end", @@ -65,7 +65,7 @@ export function renderWaterfallPlot({ PlotLib.text(features.slice(-1), { x: "_end", y: "name", - text: d => `Shapley\n(sum: ${d._end.toFixed(3)})`, + text: (d) => `Shapley\n(sum: ${d._end.toFixed(3)})`, lineHeight: 1.2, dy: dyHeader, fontWeight: 500, @@ -87,7 +87,7 @@ export function renderWaterfallPlot({ PlotLib.text(features, { x: xDomain[0], y: "name", - text: d => d.value.toFixed(3), + text: (d) => d.value.toFixed(3), dx: dxValue, textAnchor: "end", fontSize: 11.5, @@ -113,19 +113,19 @@ export function renderWaterfallPlot({ PlotLib.text(labelBase ? features.slice(0, 1) : [], { x: shapBaseValue, y: "name", - text: d => `Base: ${shapBaseValue.toFixed(3)}`, + text: (_d) => `Base: ${shapBaseValue.toFixed(3)}`, dy: 40, fontSize: textFontSize, }), // bars PlotLib.ruleY( - features.filter(d => Math.abs(d.shapValue) > 0.0005), + features.filter((d) => Math.abs(d.shapValue) > 0.0005), { x1: "_start", x2: "_end", y: "name", - stroke: d => (d.shapValue < 0 ? negColor : posColor), + stroke: (d) => (d.shapValue < 0 ? negColor : posColor), strokeWidth: 10, } ), @@ -150,11 +150,11 @@ export function renderWaterfallPlot({ // show shap values in or next to bars PlotLib.text( - features.filter(d => d.shapValue > 0.0005), + features.filter((d) => d.shapValue > 0.0005), { x: "_end", y: "name", - text: d => `+${d.shapValue.toFixed(3)}`, + text: (d) => `+${d.shapValue.toFixed(3)}`, textAnchor: "start", dx: 3, fontSize: 11, @@ -162,11 +162,11 @@ export function renderWaterfallPlot({ } ), PlotLib.text( - features.filter(d => d.shapValue < -0.0005), + features.filter((d) => d.shapValue < -0.0005), { x: "_end", y: "name", - text: d => d.shapValue.toFixed(3), + text: (d) => d.shapValue.toFixed(3), textAnchor: "end", dx: -3, fontSize: 11, diff --git a/packages/ui/src/components/Highlights.tsx b/packages/ui/src/components/Highlights.tsx index 539314315..0ea558a10 100644 --- a/packages/ui/src/components/Highlights.tsx +++ b/packages/ui/src/components/Highlights.tsx @@ -1,11 +1,16 @@ -import { ReactNode, useState } from "react"; -import { Theme, Typography } from "@mui/material"; +import { type Theme, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; +import { type ReactNode, useState } from "react"; const useStyles = makeStyles((theme: Theme) => ({ showMore: { cursor: "pointer", color: theme.palette.primary.main, + textDecoration: "underline", + background: "none", + border: "none", + padding: 0, + font: "inherit", }, matches: { marginTop: "4px", @@ -18,12 +23,27 @@ type HighlightsProps = { highlights: HighlightItem[]; }; +// Helper function to safely convert TrustedHTML to string +const trustedHTMLToString = (item: HighlightItem): string => { + if (typeof item === "string") { + return item; + } + // Convert TrustedHTML to string safely + return String(item); +}; + function Highlights({ highlights }: HighlightsProps): ReactNode { const classes = useStyles(); const [showMore, setShowMore] = useState(false); if (highlights.length === 0) return null; + // Convert all highlights to strings for safe HTML rendering + const highlightStrings = highlights.map(trustedHTMLToString); + const htmlContent = showMore + ? highlightStrings.join(' | ') + : highlightStrings[0]; + return (
@@ -33,8 +53,9 @@ function Highlights({ highlights }: HighlightsProps): ReactNode { display="inline" variant="caption" className="highlights" + // biome-ignore lint/security/noDangerouslySetInnerHtml: HTML content is needed for highlights dangerouslySetInnerHTML={{ - __html: showMore ? highlights.join(' | ') : highlights[0], + __html: htmlContent, }} /> {highlights.length > 1 && ( @@ -42,9 +63,19 @@ function Highlights({ highlights }: HighlightsProps): ReactNode { {" "} [{" "} - setShowMore(!showMore)}> + {" "} ] diff --git a/packages/ui/src/components/KnownDrugsSourceDrawer.jsx b/packages/ui/src/components/KnownDrugsSourceDrawer.jsx index ef0f80736..3b5bef644 100644 --- a/packages/ui/src/components/KnownDrugsSourceDrawer.jsx +++ b/packages/ui/src/components/KnownDrugsSourceDrawer.jsx @@ -1,26 +1,25 @@ -import { useState } from "react"; +import { faChevronDown, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { - List, - ListItem, - Drawer, - AccordionSummary, - AccordionDetails, Accordion, + AccordionDetails, + AccordionSummary, Box, - Paper, + ButtonBase, + Drawer, IconButton, - Link as MUILink, + List, + ListItem, + Paper, Typography, - ButtonBase, } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { faChevronDown, faXmark } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import _ from "lodash"; +import { useState } from "react"; import { Link } from "ui"; -const sourceDrawerStyles = makeStyles(theme => ({ +const sourceDrawerStyles = makeStyles((theme) => ({ drawerLink: { color: `${theme.palette.primary.main} !important`, }, @@ -70,7 +69,7 @@ const sourceDrawerStyles = makeStyles(theme => ({ }, })); -const tableSourceLabel = name => +const tableSourceLabel = (name) => ({ ATC: "ATC", ClinicalTrials: "ClinicalTrials.gov", @@ -79,7 +78,7 @@ const tableSourceLabel = name => EMA: "European Medicines Agency", INN: "International Nonproprietary Names", USAN: "United States Adopted Name", - }[name]); + })[name]; const drawerSourceLabel = (name, url) => { if (name === "ClinicalTrials") { @@ -115,7 +114,7 @@ function KnownDrugsSourceDrawer({ references }) { const groupedReferences = _.groupBy(references, "name"); - const toggleDrawer = event => { + const toggleDrawer = (event) => { if (event.type === "keydown" && (event.key === "Tab" || event.key === "Shift")) { return; } @@ -139,7 +138,7 @@ function KnownDrugsSourceDrawer({ references }) { - {Object.keys(groupedReferences).map(group => ( + {Object.keys(groupedReferences).map((group) => ( - {groupedReferences[group].map(item => ( + {groupedReferences[group].map((item) => ( {drawerSourceLabel(item.name, item.url)} diff --git a/packages/ui/src/components/LabelChip.tsx b/packages/ui/src/components/LabelChip.tsx index 6a202a520..a6fe0634f 100644 --- a/packages/ui/src/components/LabelChip.tsx +++ b/packages/ui/src/components/LabelChip.tsx @@ -1,6 +1,6 @@ import { Typography } from "@mui/material"; +import type { ReactElement } from "react"; import OTTooltip from "./Tooltip"; -import { ReactElement } from "react"; type LabelChipProps = { label?: string; diff --git a/packages/ui/src/components/Legend.tsx b/packages/ui/src/components/Legend.tsx index 7fc78a96a..bea52ca4c 100644 --- a/packages/ui/src/components/Legend.tsx +++ b/packages/ui/src/components/Legend.tsx @@ -1,6 +1,6 @@ -import { Link } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Link } from "@mui/material"; import { colorRange } from "@ot/constants"; type LegendProps = { diff --git a/packages/ui/src/components/Link.tsx b/packages/ui/src/components/Link.tsx index 9e22a180c..91308453d 100644 --- a/packages/ui/src/components/Link.tsx +++ b/packages/ui/src/components/Link.tsx @@ -1,11 +1,11 @@ -import { ReactElement, ReactNode } from "react"; +import { makeStyles } from "@mui/styles"; import classNames from "classnames"; +import type { ReactElement, ReactNode } from "react"; import { Link as RouterLink } from "react-router-dom"; -import { makeStyles } from "@mui/styles"; -import Tooltip from "./Tooltip"; import OtAsyncTooltip from "./OtAsyncTooltip/OtAsyncTooltip"; +import Tooltip from "./Tooltip"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ base: { fontSize: "inherit", "text-decoration-color": "transparent", @@ -43,7 +43,7 @@ const useStyles = makeStyles(theme => ({ type LinkProptypes = { className?: string; to: string; - onClick?: () => void | null; + onClick?: () => undefined | null; external?: boolean; newTab?: boolean; footer?: boolean; diff --git a/packages/ui/src/components/LoadingBackdrop.tsx b/packages/ui/src/components/LoadingBackdrop.tsx index 3aec287fc..c20e280d7 100644 --- a/packages/ui/src/components/LoadingBackdrop.tsx +++ b/packages/ui/src/components/LoadingBackdrop.tsx @@ -1,11 +1,11 @@ -import { makeStyles } from "@mui/styles"; import { Box, CircularProgress } from "@mui/material"; +import { makeStyles } from "@mui/styles"; type LoadingBackdropProps = { height?: number; }; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ container: { color: theme.palette.primary.main, background: theme.palette.grey["50"], diff --git a/packages/ui/src/components/LongList.tsx b/packages/ui/src/components/LongList.tsx index 4792cbad8..ea0cb3a7b 100644 --- a/packages/ui/src/components/LongList.tsx +++ b/packages/ui/src/components/LongList.tsx @@ -1,6 +1,6 @@ -import { ReactNode, useState } from "react"; -import { Typography, Theme } from "@mui/material"; +import { type Theme, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; +import { type ReactNode, useState } from "react"; const useStyles = makeStyles((theme: Theme) => ({ showMore: { diff --git a/packages/ui/src/components/LongText.tsx b/packages/ui/src/components/LongText.tsx index c169dc880..626d82eb7 100644 --- a/packages/ui/src/components/LongText.tsx +++ b/packages/ui/src/components/LongText.tsx @@ -1,8 +1,8 @@ -import { useState, useLayoutEffect, useRef, PropsWithChildren } from "react"; +import { type Theme, Typography, type TypographyProps } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { Typography } from "@mui/material"; +import { type PropsWithChildren, useLayoutEffect, useRef, useState } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme: Theme) => ({ textContainer: { display: "flex", flexDirection: "column", @@ -11,12 +11,17 @@ const useStyles = makeStyles(theme => ({ showMore: { color: theme.palette.primary.main, cursor: "pointer", + textDecoration: "underline", + background: "none", + border: "none", + padding: 0, + font: "inherit", }, })); type LongTextProps = { lineLimit: number; - variant: string; + variant: TypographyProps["variant"]; }; const LongText = ({ lineLimit, variant = "body2", children }: PropsWithChildren) => { @@ -34,7 +39,7 @@ const LongText = ({ lineLimit, variant = "body2", children }: PropsWithChildren< const DOMLineHeight = document.defaultView ? document.defaultView.getComputedStyle(el, null).getPropertyValue("line-height") : ""; - const lineHeight = Number.parseInt(DOMLineHeight); + const lineHeight = Number.parseInt(DOMLineHeight, 10); const numberOfLines = Math.round(height / lineHeight); container.style.height = numberOfLines <= lineLimit ? "auto" : showMore ? "auto" : `${lineLimit * lineHeight}px`; @@ -47,12 +52,22 @@ const LongText = ({ lineLimit, variant = "body2", children }: PropsWithChildren< {children} - {numberOfLines > lineLimit && ( + {numberOfLines && numberOfLines > lineLimit && ( {showMore ? "" : "... "}[{" "} - setShowMore(!showMore)}> + {" "} ] )} diff --git a/packages/ui/src/components/MouseModelAllelicComposition.tsx b/packages/ui/src/components/MouseModelAllelicComposition.tsx index 6ad4d7bc9..026abb591 100644 --- a/packages/ui/src/components/MouseModelAllelicComposition.tsx +++ b/packages/ui/src/components/MouseModelAllelicComposition.tsx @@ -1,5 +1,5 @@ import { Typography } from "@mui/material"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; type MouseModelAllelicCompositionProps = { allelicComposition: string; diff --git a/packages/ui/src/components/NavBar.jsx b/packages/ui/src/components/NavBar.jsx index b28988c7d..2234fad89 100644 --- a/packages/ui/src/components/NavBar.jsx +++ b/packages/ui/src/components/NavBar.jsx @@ -1,13 +1,12 @@ -import { Link as ReactRouterLink } from "react-router-dom"; -import { AppBar, Toolbar, Button, Typography, useMediaQuery, Box } from "@mui/material"; -import { makeStyles, useTheme } from "@mui/styles"; +import { AppBar, Box, Button, Toolbar, Typography, useMediaQuery } from "@mui/material"; import { styled } from "@mui/material/styles"; +import { makeStyles, useTheme } from "@mui/styles"; import classNames from "classnames"; +import { Link as ReactRouterLink } from "react-router-dom"; import { v1 } from "uuid"; - +import HeaderMenu from "./HeaderMenu"; import Link from "./Link"; import OpenTargetsTitle from "./OpenTargetsTitle"; -import HeaderMenu from "./HeaderMenu"; import PrivateWrapper from "./PrivateWrapper"; const LogoBTN = styled(Button)` @@ -15,7 +14,7 @@ const LogoBTN = styled(Button)` color: white; `; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ navbar: { backgroundColor: `${theme.palette.primary.dark} !important`, margin: 0, @@ -172,7 +171,7 @@ function NavBar({ name, search, api, downloads, docs, contact, homepage, items, {isHomePageRegular && ( - {items.map(item => { + {items.map((item) => { if (item.showOnlyPartner) { return ( diff --git a/packages/ui/src/components/Navigate.tsx b/packages/ui/src/components/Navigate.tsx index 3aea1e300..05a55f6f0 100644 --- a/packages/ui/src/components/Navigate.tsx +++ b/packages/ui/src/components/Navigate.tsx @@ -1,7 +1,7 @@ +import { faArrowRightToBracket } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box } from "@mui/material"; import Link from "./Link"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faArrowRightToBracket } from "@fortawesome/free-solid-svg-icons"; type NavigateProps = { to: string; diff --git a/packages/ui/src/components/NewChip.tsx b/packages/ui/src/components/NewChip.tsx index 6c2801c76..bd8f32681 100644 --- a/packages/ui/src/components/NewChip.tsx +++ b/packages/ui/src/components/NewChip.tsx @@ -1,6 +1,6 @@ -import classNames from "classnames"; import { Chip as MUIChip } from "@mui/material"; import { makeStyles } from "@mui/styles"; +import classNames from "classnames"; const useStyles = makeStyles({ chip: { diff --git a/packages/ui/src/components/ObsPlot/ObsChart.tsx b/packages/ui/src/components/ObsPlot/ObsChart.tsx index 5389ef6d6..d2c9ddbcc 100644 --- a/packages/ui/src/components/ObsPlot/ObsChart.tsx +++ b/packages/ui/src/components/ObsPlot/ObsChart.tsx @@ -1,5 +1,5 @@ -import { useRef, useEffect, Dispatch, SetStateAction } from "react"; import { Box } from "@mui/material"; +import { type Dispatch, type SetStateAction, useEffect, useRef } from "react"; type ObsChartProps = { data: any; @@ -64,7 +64,7 @@ function ObsChart({ } }; elmt.setAttribute("data-index", dataIndex); - elmt.addEventListener("click", event => { + elmt.addEventListener("click", (event) => { if (clicked && selectedDatum === elmtDatum) { clicked = false; selectedDatum = null; diff --git a/packages/ui/src/components/ObsPlot/ObsPlot.tsx b/packages/ui/src/components/ObsPlot/ObsPlot.tsx index 8fde06990..5350dc819 100644 --- a/packages/ui/src/components/ObsPlot/ObsPlot.tsx +++ b/packages/ui/src/components/ObsPlot/ObsPlot.tsx @@ -1,6 +1,6 @@ -import { ReactElement, useState } from "react"; -import { useMeasure } from "@uidotdev/usehooks"; import { Box, Fade } from "@mui/material"; +import { useMeasure } from "@uidotdev/usehooks"; +import { type ReactElement, useState } from "react"; import { ObsChart, ObsTooltip } from "ui"; type ObsPlotProps = { diff --git a/packages/ui/src/components/ObsPlot/ObsTooltip.tsx b/packages/ui/src/components/ObsPlot/ObsTooltip.tsx index a59a41e06..d3c19edc4 100644 --- a/packages/ui/src/components/ObsPlot/ObsTooltip.tsx +++ b/packages/ui/src/components/ObsPlot/ObsTooltip.tsx @@ -1,5 +1,5 @@ -import { ReactElement } from "react"; import { Box } from "@mui/material"; +import type { ReactElement } from "react"; type ObsTooltipProps = { width: number; diff --git a/packages/ui/src/components/ObsPlot/ObsTooltipRow.tsx b/packages/ui/src/components/ObsPlot/ObsTooltipRow.tsx index 4a005b8e8..301ddba32 100644 --- a/packages/ui/src/components/ObsPlot/ObsTooltipRow.tsx +++ b/packages/ui/src/components/ObsPlot/ObsTooltipRow.tsx @@ -1,5 +1,5 @@ import { Typography } from "@mui/material"; -import { ReactElement } from "react"; +import type { ReactElement } from "react"; type ObsTooltipRowProps = { children: ReactElement; diff --git a/packages/ui/src/components/ObsPlot/ObsTooltipTable.tsx b/packages/ui/src/components/ObsPlot/ObsTooltipTable.tsx index d3ca1ac9f..c55b15f28 100644 --- a/packages/ui/src/components/ObsPlot/ObsTooltipTable.tsx +++ b/packages/ui/src/components/ObsPlot/ObsTooltipTable.tsx @@ -1,4 +1,4 @@ -import { ReactElement } from "react"; +import type { ReactElement } from "react"; type ObsTooltipTableProps = { children: ReactElement; diff --git a/packages/ui/src/components/OtAsyncTooltip/OtAsyncTooltip.tsx b/packages/ui/src/components/OtAsyncTooltip/OtAsyncTooltip.tsx index d638ada4b..723bdb615 100644 --- a/packages/ui/src/components/OtAsyncTooltip/OtAsyncTooltip.tsx +++ b/packages/ui/src/components/OtAsyncTooltip/OtAsyncTooltip.tsx @@ -1,4 +1,4 @@ -import { ReactElement, useEffect, useState } from "react"; +import { useLazyQuery } from "@apollo/client"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, @@ -6,19 +6,18 @@ import { Skeleton, styled, Tooltip, + type TooltipProps, tooltipClasses, - TooltipProps, } from "@mui/material"; -import { useLazyQuery } from "@apollo/client"; +import { naLabel } from "@ot/constants"; +import { type ReactElement, useEffect, useState } from "react"; +import StudyPublication from "../StudyPublication"; import { getEntityDescription, getEntityIcon, getEntityQuery, getQueryVariables, } from "./utils/asyncTooltipUtil"; -import { naLabel } from "@ot/constants"; - -import StudyPublication from "../StudyPublication"; const DELAY_REQUEST = 1000; @@ -161,28 +160,28 @@ function AsyncTooltipDataView({ p: 1, py: 0, fontSize: "0.7rem", - color: theme => theme.palette.grey[700], + color: (theme) => theme.palette.grey[700], textDecoration: "underline", }} > {`${entity}/${data?.id}`} - theme.palette.primary.main }}> + theme.palette.primary.main }}> theme.palette.grey[900], + color: (theme) => theme.palette.grey[900], textTransform: "capitalize", fontWeight: "bold", }} > {getLabel()} {" "} - theme.palette.grey[800] }}> + theme.palette.grey[800] }}> {getEntityDescription(entity, data)} @@ -191,7 +190,7 @@ function AsyncTooltipDataView({ <> theme.palette.grey[900], pt: 1, pl: 1 }} + sx={{ typography: "caption", color: (theme) => theme.palette.grey[900], pt: 1, pl: 1 }} > {getSubtext()} diff --git a/packages/ui/src/components/OtAsyncTooltip/utils/asyncTooltipUtil.ts b/packages/ui/src/components/OtAsyncTooltip/utils/asyncTooltipUtil.ts index 5df8064af..6027846cb 100644 --- a/packages/ui/src/components/OtAsyncTooltip/utils/asyncTooltipUtil.ts +++ b/packages/ui/src/components/OtAsyncTooltip/utils/asyncTooltipUtil.ts @@ -1,9 +1,3 @@ -import DRUG_TOOLTIP_QUERY from "../queries/DrugTooltipQuery.gql"; -import DISEASE_TOOLTIP_QUERY from "../queries/DiseaseTooltipQuery.gql"; -import STUDY_TOOLTIP_QUERY from "../queries/StudyTooltipQuery.gql"; -import TARGET_TOOLTIP_QUERY from "../queries/TargetTooltipQuery.gql"; -import VARIANT_TOOLTIP_QUERY from "../queries/VariantTooltipQuery.gql"; -import CREDIBLE_SETS_TOOLTIP_QUERY from "../queries/CredibleSetsTooltipQuery.gql"; import { faChartBar, faDiagramProject, @@ -14,6 +8,12 @@ import { faTag, } from "@fortawesome/free-solid-svg-icons"; import { getStudyItemMetaData } from "@ot/utils"; +import CREDIBLE_SETS_TOOLTIP_QUERY from "../queries/CredibleSetsTooltipQuery.gql"; +import DISEASE_TOOLTIP_QUERY from "../queries/DiseaseTooltipQuery.gql"; +import DRUG_TOOLTIP_QUERY from "../queries/DrugTooltipQuery.gql"; +import STUDY_TOOLTIP_QUERY from "../queries/StudyTooltipQuery.gql"; +import TARGET_TOOLTIP_QUERY from "../queries/TargetTooltipQuery.gql"; +import VARIANT_TOOLTIP_QUERY from "../queries/VariantTooltipQuery.gql"; export function getQueryVariables(entity: string, id: string): Record { switch (entity) { diff --git a/packages/ui/src/components/OtBtnGroup.tsx b/packages/ui/src/components/OtBtnGroup.tsx index e46e86c9e..08f92fb0c 100644 --- a/packages/ui/src/components/OtBtnGroup.tsx +++ b/packages/ui/src/components/OtBtnGroup.tsx @@ -1,5 +1,5 @@ import { Box, Divider } from "@mui/material"; -import { ReactNode, useState } from "react"; +import { type ReactNode, useState } from "react"; import { v1 } from "uuid"; export type singleBtnGroupObj = { @@ -21,9 +21,9 @@ function OtBtnGroup({ btnGroup, defaultActiveId }: OtBtnGroupPropType) { } return ( - `1px solid ${theme.palette.grey[400]}`, borderRadius: 3 }}> + `1px solid ${theme.palette.grey[400]}`, borderRadius: 3 }}> - {Object.keys(btnGroup).map(e => ( + {Object.keys(btnGroup).map((e) => ( `${theme.palette.grey[700]}`, + color: (theme) => `${theme.palette.grey[700]}`, "&:hover": { - borderBottom: theme => `2px solid ${theme.palette.grey[500]}`, + borderBottom: (theme) => `2px solid ${theme.palette.grey[500]}`, }, ...(activeId === e && { - borderBottom: theme => `2px solid ${theme.palette.primary.dark}`, - color: theme => `${theme.palette.primary.dark}`, + borderBottom: (theme) => `2px solid ${theme.palette.primary.dark}`, + color: (theme) => `${theme.palette.primary.dark}`, }), }} onClick={() => setActiveTab(e)} diff --git a/packages/ui/src/components/OtCodeBlock.tsx b/packages/ui/src/components/OtCodeBlock.tsx index 62bcd341c..faf1cf0c5 100644 --- a/packages/ui/src/components/OtCodeBlock.tsx +++ b/packages/ui/src/components/OtCodeBlock.tsx @@ -1,6 +1,6 @@ import { Box } from "@mui/material"; -import OtCopyToClipboard from "./OtCopyToClipboard"; import type { ReactNode } from "react"; +import OtCopyToClipboard from "./OtCopyToClipboard"; type OtCodeBlockPropTypes = { children: ReactNode; @@ -11,7 +11,7 @@ function OtCodeBlock({ children, textToCopy }: OtCodeBlockPropTypes) { return ( theme.palette.grey[100], + background: (theme) => theme.palette.grey[100], pb: textToCopy ? 3 : 1, borderRadius: 3, px: 3, diff --git a/packages/ui/src/components/OtCopyToClipboard.tsx b/packages/ui/src/components/OtCopyToClipboard.tsx index a10ba13ea..eef3a4ed3 100644 --- a/packages/ui/src/components/OtCopyToClipboard.tsx +++ b/packages/ui/src/components/OtCopyToClipboard.tsx @@ -2,7 +2,7 @@ import { faCopy } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Snackbar } from "@mui/material"; import { grey } from "@mui/material/colors"; -import { ReactNode, useState } from "react"; +import { type ReactNode, useState } from "react"; type OtCopyToClipboardProps = { displayElement?: ReactNode | null; @@ -37,7 +37,7 @@ function OtCopyToClipboard({ displayElement, textToCopy }: OtCopyToClipboardProp }} > {displayElement || ( - theme.palette.grey[700] }}> + theme.palette.grey[700] }}> {" "} diff --git a/packages/ui/src/components/OtInvalidResultFilters.tsx b/packages/ui/src/components/OtInvalidResultFilters.tsx index d2c602a13..b3c143781 100644 --- a/packages/ui/src/components/OtInvalidResultFilters.tsx +++ b/packages/ui/src/components/OtInvalidResultFilters.tsx @@ -18,7 +18,7 @@ function OtInvalidResultFilters() { theme.palette.grey[300], + backgroundColor: (theme) => theme.palette.grey[300], display: "flex", width: "100px", height: "100px", diff --git a/packages/ui/src/components/OtLongText.tsx b/packages/ui/src/components/OtLongText.tsx index a981afa9e..eb6197f73 100644 --- a/packages/ui/src/components/OtLongText.tsx +++ b/packages/ui/src/components/OtLongText.tsx @@ -1,8 +1,8 @@ -import { useState, useLayoutEffect, useRef, PropsWithChildren } from "react"; -import { makeStyles } from "@mui/styles"; import { Typography } from "@mui/material"; +import { makeStyles } from "@mui/styles"; +import { type PropsWithChildren, useLayoutEffect, useRef, useState } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ textContainer: { display: "flex", flexDirection: "column", @@ -40,7 +40,7 @@ const OtLongText = ({ const DOMLineHeight = document.defaultView ? document.defaultView.getComputedStyle(el, null).getPropertyValue("line-height") : ""; - const lineHeight = Number.parseInt(DOMLineHeight); + const lineHeight = Number.parseInt(DOMLineHeight, 10); const numberOfLines = Math.round(height / lineHeight); container.style.height = numberOfLines <= lineLimit ? "auto" : showMore ? "auto" : `${lineLimit * lineHeight}px`; diff --git a/packages/ui/src/components/OtScoreLinearBar.tsx b/packages/ui/src/components/OtScoreLinearBar.tsx index eb78df2ce..3c0824204 100644 --- a/packages/ui/src/components/OtScoreLinearBar.tsx +++ b/packages/ui/src/components/OtScoreLinearBar.tsx @@ -1,5 +1,5 @@ -import LinearProgress, { linearProgressClasses } from "@mui/material/LinearProgress"; import { styled } from "@mui/material"; +import LinearProgress, { linearProgressClasses } from "@mui/material/LinearProgress"; const OtScoreLinearBar = styled(LinearProgress)(({ theme }) => ({ height: 8, diff --git a/packages/ui/src/components/OtTable/OtTable.tsx b/packages/ui/src/components/OtTable/OtTable.tsx index fd05cbdb3..32796dfc5 100644 --- a/packages/ui/src/components/OtTable/OtTable.tsx +++ b/packages/ui/src/components/OtTable/OtTable.tsx @@ -1,44 +1,44 @@ -import { ReactElement, ReactNode, useMemo, useState, useEffect } from "react"; -import { Box, Grid, IconButton, NativeSelect, Skeleton } from "@mui/material"; -import { - useReactTable, - ColumnFiltersState, - getCoreRowModel, - getFilteredRowModel, - getPaginationRowModel, - getSortedRowModel, - FilterFn, - flexRender, - getFacetedUniqueValues, - Row, -} from "@tanstack/react-table"; import { faAngleLeft, faAngleRight, - faArrowUp, faArrowDown, - faForwardStep, + faArrowUp, faBackwardStep, + faForwardStep, } from "@fortawesome/free-solid-svg-icons"; - -import { RankingInfo, rankItem } from "@tanstack/match-sorter-utils"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - +import { Box, Grid, IconButton, NativeSelect, Skeleton } from "@mui/material"; +import { type RankingInfo, rankItem } from "@tanstack/match-sorter-utils"; +import { + type ColumnFiltersState, + type FilterFn, + flexRender, + getCoreRowModel, + getFacetedUniqueValues, + getFilteredRowModel, + getPaginationRowModel, + getSortedRowModel, + type Row, + useReactTable, +} from "@tanstack/react-table"; +import { type ReactElement, type ReactNode, useEffect, useMemo, useState } from "react"; +import DataDownloader from "../DataDownloader"; +import Tooltip from "../Tooltip"; import OtTableColumnFilter from "./OtTableColumnFilter"; +import OtTableColumnVisibility from "./OtTableColumnVisibility"; // import { naLabel } from "@ot/constants"; import OtTableSearch from "./OtTableSearch"; -import { OtTableProps } from "./types/tableTypes"; import { FontAwesomeIconPadded, + OtTableCellContainer, OtTableContainer, OtTableHeader, - OtTH, OtTableHeaderText, OtTD, - OtTableCellContainer, + OtTH, OtTR, } from "./otTableLayout"; -import DataDownloader from "../DataDownloader"; +import type { OtTableProps } from "./types/tableTypes"; import { getCurrentPagePosition, getDefaultSortObj, @@ -47,8 +47,6 @@ import { isNestedColumns, mapTableColumnToTanstackColumns, } from "./utils/tableUtils"; -import Tooltip from "../Tooltip"; -import OtTableColumnVisibility from "./OtTableColumnVisibility"; declare module "@tanstack/table-core" { interface FilterFns { @@ -144,7 +142,7 @@ function OtTable({ onRowSelectionChange: setRowSelection, }); - function onRowSelection(e: any, row: Row) { + function onRowSelection(_e: any, row: Row) { enableRowSelection && row.toggleSelected(); } @@ -197,13 +195,13 @@ function OtTable({ {/* Table component container */} - theme.spacing(3) }}> + theme.spacing(3) }}> {/* Table component */} - {table.getHeaderGroups().map(headerGroup => ( + {table.getHeaderGroups().map((headerGroup) => ( - {headerGroup.headers.map(header => { + {headerGroup.headers.map((header) => { return ( - {table.getRowModel().rows.map(row => { + {table.getRowModel().rows.map((row) => { return ( onRowSelection(e, row)} + onClick={(e) => onRowSelection(e, row)} enableRowSelection={enableRowSelection} isSelected={row.getIsSelected()} onMouseEnter={getEnteredRow ? () => getEnteredRow(row) : null} onMouseLeave={getExitedRow ? () => getExitedRow(row) : null} > - {row.getVisibleCells().map(cell => { + {row.getVisibleCells().map((cell) => { return ( @@ -294,7 +292,7 @@ function OtTable({ display: "flex", justifyContent: "end", alignItems: "center", - padding: theme => `${theme.spacing(2)} 0 `, + padding: (theme) => `${theme.spacing(2)} 0 `, }} >
@@ -303,13 +301,13 @@ function OtTable({ id="paginationSelect" disableUnderline disabled={loading} - sx={{ pl: theme => theme.spacing(2) }} + sx={{ pl: (theme) => theme.spacing(2) }} value={table.getState().pagination.pageSize} - onChange={e => { + onChange={(e) => { table.setPageSize(Number(e.target.value)); }} > - {[10, 25, 100].map(pageSize => ( + {[10, 25, 100].map((pageSize) => ( @@ -321,8 +319,8 @@ function OtTable({ sx={{ display: "flex", alignItems: "center", - gap: theme => theme.spacing(3), - marginLeft: theme => theme.spacing(3), + gap: (theme) => theme.spacing(3), + marginLeft: (theme) => theme.spacing(3), }} >
@@ -374,7 +372,7 @@ function OtTable({ function getLoadingCells(columms: Array>) { const arr: Record[] = []; - columms.forEach(e => { + columms.forEach((e) => { if (isNestedColumns(e)) { const headerObj = { header: e.header || e.label, diff --git a/packages/ui/src/components/OtTable/OtTableColumnFilter.tsx b/packages/ui/src/components/OtTable/OtTableColumnFilter.tsx index 8dc9e9603..812b59d53 100644 --- a/packages/ui/src/components/OtTable/OtTableColumnFilter.tsx +++ b/packages/ui/src/components/OtTable/OtTableColumnFilter.tsx @@ -1,7 +1,5 @@ -import { ReactElement, useState } from "react"; -import { Column } from "@tanstack/react-table"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faFilter, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Badge, ClickAwayListener, @@ -12,6 +10,8 @@ import { ListItemButton, TextField, } from "@mui/material"; +import type { Column } from "@tanstack/react-table"; +import { type ReactElement, useState } from "react"; import { v1 } from "uuid"; import OtPopper from "../OtPopper"; @@ -70,11 +70,11 @@ function OtTableColumnFilter({ column }: { column: Column }): Reac {/* INPUT FOR COLUMN FILTER */} `${theme.spacing(1)} ${theme.spacing(1.5)}` }} + sx={{ width: 1, padding: (theme) => `${theme.spacing(1)} ${theme.spacing(1.5)}` }} autoFocus variant="standard" value={columnFilterInputValue} - onChange={e => setColumnFilterInputValue(e.target.value)} + onChange={(e) => setColumnFilterInputValue(e.target.value)} placeholder={`Search..`} InputProps={{ endAdornment: ( @@ -91,7 +91,7 @@ function OtTableColumnFilter({ column }: { column: Column }): Reac {Object.keys(sortedUniqueValues).map( - keyName => + (keyName) => /**************************************************** * STRING.SEARCH FUNCTION FILTERS THE LIST OF * * UNIQUE VALUES WITHOUT HAVING TO MODIFY ANY STATE * diff --git a/packages/ui/src/components/OtTable/OtTableColumnVisibility.tsx b/packages/ui/src/components/OtTable/OtTableColumnVisibility.tsx index 19b0ba9b5..83d9b6ffb 100644 --- a/packages/ui/src/components/OtTable/OtTableColumnVisibility.tsx +++ b/packages/ui/src/components/OtTable/OtTableColumnVisibility.tsx @@ -1,4 +1,5 @@ -import { MouseEvent, ReactElement, useState } from "react"; +import { faGear } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Badge, Box, @@ -10,11 +11,9 @@ import { List, ListItemButton, } from "@mui/material"; -import { faGear } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - -import { OtTableColumnVisibilityProps } from "./table.types"; +import { type MouseEvent, type ReactElement, useState } from "react"; import OtPopper from "../OtPopper"; +import type { OtTableColumnVisibilityProps } from "./table.types"; function OtTableColumnVisibility({ table }: OtTableColumnVisibilityProps): ReactElement { const [anchorEl, setAnchorEl] = useState(); @@ -52,7 +51,7 @@ function OtTableColumnVisibility({ table }: OtTableColumnVisibilityProps): React - {table.getAllLeafColumns().map(column => ( + {table.getAllLeafColumns().map((column) => ( { + }).then((d) => { dispatch(addRows(d.data[entity][sectionName])); setPagination(newPagination); }); @@ -197,7 +193,7 @@ function OtTableSSP({ size: newPagination.pageSize, freeTextQuery, client, - }).then(d => { + }).then((d) => { dispatch(setNewData(d.data[entity][sectionName])); if (!state.freeTextQuery) setInitialRequestData(d); }); @@ -254,7 +250,7 @@ function OtTableSSP({ {showGlobalFilter && ( { + setGlobalSearchTerm={(freeTextQuery) => { dispatch(textSearch(freeTextQuery)); }} /> @@ -276,13 +272,13 @@ function OtTableSSP({ {/* Table component container */} - theme.spacing(3) }}> + theme.spacing(3) }}> {/* Table component */} - {table.getHeaderGroups().map(headerGroup => ( + {table.getHeaderGroups().map((headerGroup) => ( - {headerGroup.headers.map(header => { + {headerGroup.headers.map((header) => { return ( - {table.getRowModel().rows.map(row => { + {table.getRowModel().rows.map((row) => { return ( - {row.getVisibleCells().map(cell => { + {row.getVisibleCells().map((cell) => { return ( @@ -348,19 +344,19 @@ function OtTableSSP({ display: "flex", justifyContent: "end", alignItems: "center", - padding: theme => `${theme.spacing(2)} 0 `, + padding: (theme) => `${theme.spacing(2)} 0 `, }} > - {state.loading && theme.spacing(2) }} size={25} />} + {state.loading && theme.spacing(2) }} size={25} />}
theme.spacing(2) }} + sx={{ pl: (theme) => theme.spacing(2) }} value={pagination.pageSize} - onChange={e => { + onChange={(e) => { table.setPageSize(Number(e.target.value)); setPagination({ pageIndex: 0, @@ -369,7 +365,7 @@ function OtTableSSP({ }} > {/* TODO: set page size */} - {[10, 25, 100].map(pageSize => ( + {[10, 25, 100].map((pageSize) => ( @@ -380,8 +376,8 @@ function OtTableSSP({ sx={{ display: "flex", alignItems: "center", - gap: theme => theme.spacing(3), - marginLeft: theme => theme.spacing(3), + gap: (theme) => theme.spacing(3), + marginLeft: (theme) => theme.spacing(3), }} >
@@ -423,7 +419,7 @@ function OtTableSSP({ // TODO: FIND A WAY TO USE SAME FUNCTION FROM CLIENT TABLE function getLoadingCells(columms: Array>) { const arr: Record[] = []; - columms.forEach(e => { + columms.forEach((e) => { if (isNestedColumns(e)) { const headerObj = { header: e.header || e.label, diff --git a/packages/ui/src/components/OtTable/OtTableSearch.tsx b/packages/ui/src/components/OtTable/OtTableSearch.tsx index 2bd9b3f13..ac8ff7efa 100644 --- a/packages/ui/src/components/OtTable/OtTableSearch.tsx +++ b/packages/ui/src/components/OtTable/OtTableSearch.tsx @@ -1,9 +1,9 @@ -import { ReactElement, useEffect, useState } from "react"; -import { Input, InputAdornment } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Input, InputAdornment } from "@mui/material"; +import { type ReactElement, useEffect, useState } from "react"; import useDebounce from "../../hooks/useDebounce"; -import { OtTableSearchProps } from "./table.types"; +import type { OtTableSearchProps } from "./table.types"; /**************************************** * OT TABLE SEARCH COMPONENT * @@ -24,7 +24,7 @@ function OtTableSearch({ setGlobalSearchTerm }: OtTableSearchProps): ReactElemen setGlobalFilter(e.target.value)} + onChange={(e) => setGlobalFilter(e.target.value)} placeholder="Search all columns..." startAdornment={ diff --git a/packages/ui/src/components/OtTable/context/otTableActions.ts b/packages/ui/src/components/OtTable/context/otTableActions.ts index 911691d1a..f6d6abedb 100644 --- a/packages/ui/src/components/OtTable/context/otTableActions.ts +++ b/packages/ui/src/components/OtTable/context/otTableActions.ts @@ -1,4 +1,4 @@ -import { Action, ActionType } from "../types/tableTypes"; +import { type Action, ActionType } from "../types/tableTypes"; export function onPageSizeChange(pageSize: number): Action { return { diff --git a/packages/ui/src/components/OtTable/context/otTableReducer.ts b/packages/ui/src/components/OtTable/context/otTableReducer.ts index 6c69683b9..96594d3c1 100644 --- a/packages/ui/src/components/OtTable/context/otTableReducer.ts +++ b/packages/ui/src/components/OtTable/context/otTableReducer.ts @@ -1,4 +1,4 @@ -import { Action, ActionType, OtTableSSPState } from "../types/tableTypes"; +import { type Action, ActionType, type OtTableSSPState } from "../types/tableTypes"; import { getLoadingRows } from "../utils/tableUtils"; export const initialState: OtTableSSPState = { @@ -10,7 +10,7 @@ export const initialState: OtTableSSPState = { initialLoading: true, }; -export function createInitialState(str: string): OtTableSSPState { +export function createInitialState(_str: string): OtTableSSPState { return initialState; } @@ -55,7 +55,7 @@ export function otTableReducer( }; } default: { - throw Error("Unknown action: " + action); + throw Error(`Unknown action: ${action}`); return state; } } diff --git a/packages/ui/src/components/OtTable/otTableLayout.tsx b/packages/ui/src/components/OtTable/otTableLayout.tsx index 50559db63..1b3425a54 100644 --- a/packages/ui/src/components/OtTable/otTableLayout.tsx +++ b/packages/ui/src/components/OtTable/otTableLayout.tsx @@ -32,7 +32,7 @@ export const OtTableContainer = styled("table")(({ theme }) => ({ })); export const OtTableHeader = styled("div", { - shouldForwardProp: prop => prop !== "canBeSorted" && prop !== "numeric", + shouldForwardProp: (prop) => prop !== "canBeSorted" && prop !== "numeric", })(({ theme, canBeSorted, numeric }) => theme.unstable_sx({ display: "flex", @@ -61,7 +61,7 @@ export const FontAwesomeIconPadded = styled(FontAwesomeIcon)(({ theme }) => ({ })); export const OtTH = styled("th", { - shouldForwardProp: prop => prop !== "stickyColumn", + shouldForwardProp: (prop) => prop !== "stickyColumn", })(({ theme, stickyColumn }) => ({ ...(stickyColumn && { left: "0", @@ -72,7 +72,7 @@ export const OtTH = styled("th", { })); export const OtTD = styled("td", { - shouldForwardProp: prop => prop !== "stickyColumn", + shouldForwardProp: (prop) => prop !== "stickyColumn", })(({ theme, stickyColumn }) => ({ ...(stickyColumn && { left: "0", @@ -83,7 +83,7 @@ export const OtTD = styled("td", { })); export const OtTR = styled("tr", { - shouldForwardProp: prop => prop !== "enableRowSelection" && prop !== "isSelected", + shouldForwardProp: (prop) => prop !== "enableRowSelection" && prop !== "isSelected", })(({ theme, enableRowSelection, isSelected }) => theme.unstable_sx({ ...(enableRowSelection && { @@ -96,7 +96,7 @@ export const OtTR = styled("tr", { ); export const OtTableHeaderText = styled(Box, { - shouldForwardProp: prop => prop !== "verticalHeader", + shouldForwardProp: (prop) => prop !== "verticalHeader", })(({ theme, verticalHeader }) => theme.unstable_sx({ typography: "subtitle2", @@ -110,7 +110,7 @@ export const OtTableHeaderText = styled(Box, { ); export const OtTableCellContainer = styled(Box, { - shouldForwardProp: prop => prop !== "numeric", + shouldForwardProp: (prop) => prop !== "numeric", })(({ theme, numeric }) => theme.unstable_sx({ typography: "body2", diff --git a/packages/ui/src/components/OtTable/service/tableService.ts b/packages/ui/src/components/OtTable/service/tableService.ts index a8130d0dd..a724117ff 100644 --- a/packages/ui/src/components/OtTable/service/tableService.ts +++ b/packages/ui/src/components/OtTable/service/tableService.ts @@ -1,4 +1,4 @@ -import { getTableRowsProps } from "../types/tableTypes"; +import type { getTableRowsProps } from "../types/tableTypes"; export async function getTableRows({ query, diff --git a/packages/ui/src/components/OtTable/types/tableTypes.ts b/packages/ui/src/components/OtTable/types/tableTypes.ts index e4bc77f70..e4e68902b 100644 --- a/packages/ui/src/components/OtTable/types/tableTypes.ts +++ b/packages/ui/src/components/OtTable/types/tableTypes.ts @@ -1,5 +1,5 @@ -import { ApolloClient, DocumentNode, NormalizedCacheObject } from "@apollo/client"; -import { ColumnDef, Row, Table } from "@tanstack/table-core"; +import type { ApolloClient, DocumentNode, NormalizedCacheObject } from "@apollo/client"; +import type { ColumnDef, Row, Table } from "@tanstack/table-core"; export const INIT_PAGE_SIZE = 10; @@ -12,7 +12,7 @@ export type DefaultSortProp = { id: string; desc: boolean; - } + }, ] | undefined; diff --git a/packages/ui/src/components/OtTable/utils/tableUtils.ts b/packages/ui/src/components/OtTable/utils/tableUtils.ts index 4b30c6aaa..184f1369c 100644 --- a/packages/ui/src/components/OtTable/utils/tableUtils.ts +++ b/packages/ui/src/components/OtTable/utils/tableUtils.ts @@ -1,4 +1,4 @@ -import { DefaultSortProp, loadingTableRows } from "./table.types"; +import type { DefaultSortProp, loadingTableRows } from "./table.types"; /********************************************************************* * FN TO CONVERT CLASSIC MUI TABLE COLUMNS TO TANSTACK TABLE COLUMNS * @@ -8,7 +8,7 @@ export function mapTableColumnToTanstackColumns( allColumns: Record[] ): Record[] { const arr: Record[] = []; - allColumns.forEach(e => { + allColumns.forEach((e) => { if (isNestedColumns(e)) { const headerObj = { header: e.header || e.label, @@ -72,7 +72,7 @@ export function flattenObj(ob: Record): Record for (const i in ob) { if (typeof ob[i] === "object") { const temp = flattenObj(ob[i]); - for (const j in temp) result[i + "." + j] = temp[j]; + for (const j in temp) result[`${i}.${j}`] = temp[j]; } else result[i] = ob[i]; } return result; @@ -132,7 +132,7 @@ function mapToTanstackColumnObject( enableColumnFilter: originalTableObject.enableColumnFilter || false, filterFn: "equalsString", ...(originalTableObject.comparator && { - sortingFn: (rowA, rowB, column) => + sortingFn: (rowA, rowB, _column) => originalTableObject.comparator(rowA.original, rowB.original), }), accessorFn: (row: Record) => { diff --git a/packages/ui/src/components/Page.tsx b/packages/ui/src/components/Page.tsx index 5d47a83a2..0a14ee9e6 100644 --- a/packages/ui/src/components/Page.tsx +++ b/packages/ui/src/components/Page.tsx @@ -1,6 +1,6 @@ -import { Theme, Grid } from "@mui/material"; +import { Grid, type Theme } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { ReactElement } from "react"; +import type { ReactElement } from "react"; const useStyles = makeStyles((theme: Theme) => ({ page: { diff --git a/packages/ui/src/components/PartnerLockIcon.tsx b/packages/ui/src/components/PartnerLockIcon.tsx index 7e71b6344..4b9b9948a 100644 --- a/packages/ui/src/components/PartnerLockIcon.tsx +++ b/packages/ui/src/components/PartnerLockIcon.tsx @@ -1,7 +1,7 @@ -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faLock } from "@fortawesome/free-solid-svg-icons"; -import Tooltip from "./Tooltip"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useConfigContext } from "../providers/ConfigurationProvider"; +import Tooltip from "./Tooltip"; function PartnerLockIcon() { const { config } = useConfigContext(); diff --git a/packages/ui/src/components/PlotContainer.jsx b/packages/ui/src/components/PlotContainer.jsx index 7d105f0b9..b9238297f 100644 --- a/packages/ui/src/components/PlotContainer.jsx +++ b/packages/ui/src/components/PlotContainer.jsx @@ -1,4 +1,4 @@ -import { Typography, Paper, Grid, LinearProgress } from "@mui/material"; +import { Grid, LinearProgress, Paper, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; import { v1 } from "uuid"; @@ -38,7 +38,7 @@ function PlotContainer({ loading, error, left, center, right, children }) {
- {error.graphQLErrors.map(({ message }, i) => ( + {error.graphQLErrors.map(({ message }, _i) => ( {message} ))} diff --git a/packages/ui/src/components/PlotContainerSection.jsx b/packages/ui/src/components/PlotContainerSection.jsx index 67e426b58..3e7eda1d1 100644 --- a/packages/ui/src/components/PlotContainerSection.jsx +++ b/packages/ui/src/components/PlotContainerSection.jsx @@ -1,6 +1,6 @@ import { makeStyles } from "@mui/styles"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ plotContainerSection: { padding: "4px 0", borderBottom: `1px solid ${theme.palette.grey[300]}`, diff --git a/packages/ui/src/components/ProfileHeader/Description.tsx b/packages/ui/src/components/ProfileHeader/Description.tsx index aeda68a09..9cc765afa 100644 --- a/packages/ui/src/components/ProfileHeader/Description.tsx +++ b/packages/ui/src/components/ProfileHeader/Description.tsx @@ -1,7 +1,6 @@ import { Skeleton, Typography } from "@mui/material"; - +import type { ReactNode } from "react"; import LongText from "../LongText"; -import { ReactNode } from "react"; type DescriptionProps = { children?: ReactNode; diff --git a/packages/ui/src/components/ProfileHeader/Field.tsx b/packages/ui/src/components/ProfileHeader/Field.tsx index a08b847bf..095d797c9 100644 --- a/packages/ui/src/components/ProfileHeader/Field.tsx +++ b/packages/ui/src/components/ProfileHeader/Field.tsx @@ -1,5 +1,5 @@ import { Skeleton, Typography } from "@mui/material"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; type FieldProps = { children?: ReactNode; diff --git a/packages/ui/src/components/ProfileHeader/ProfileChipList.tsx b/packages/ui/src/components/ProfileHeader/ProfileChipList.tsx index 0f14423ed..f688c1d40 100644 --- a/packages/ui/src/components/ProfileHeader/ProfileChipList.tsx +++ b/packages/ui/src/components/ProfileHeader/ProfileChipList.tsx @@ -1,8 +1,7 @@ -import { Box, Skeleton, Typography, Tooltip, Theme } from "@mui/material"; +import { Box, Skeleton, type Theme, Tooltip, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { ReactNode } from "react"; - import _ from "lodash"; +import type { ReactNode } from "react"; import Chip from "../Chip"; import LongList from "../LongList"; diff --git a/packages/ui/src/components/ProfileHeader/ProfileHeader.jsx b/packages/ui/src/components/ProfileHeader/ProfileHeader.jsx index dbe5436f7..a4bf0b29f 100644 --- a/packages/ui/src/components/ProfileHeader/ProfileHeader.jsx +++ b/packages/ui/src/components/ProfileHeader/ProfileHeader.jsx @@ -1,6 +1,6 @@ -import { Children } from "react"; import { Grid } from "@mui/material"; import { makeStyles } from "@mui/styles"; +import { Children } from "react"; const useStyles = makeStyles({ profileHeaderContainer: { @@ -16,7 +16,7 @@ function ProfileHeader({ children }) { return ( - {Children.map(children, child => ( + {Children.map(children, (child) => ( {child} diff --git a/packages/ui/src/components/ProfileHeader/index.js b/packages/ui/src/components/ProfileHeader/index.js index b2165c522..458b56e8c 100644 --- a/packages/ui/src/components/ProfileHeader/index.js +++ b/packages/ui/src/components/ProfileHeader/index.js @@ -1,4 +1,4 @@ export { default as ProfileDescription } from "./Description"; -export { default as ProfileChipList } from "./ProfileChipList"; export { default as Field } from "./Field"; +export { default as ProfileChipList } from "./ProfileChipList"; export { default as ProfileHeader } from "./ProfileHeader"; diff --git a/packages/ui/src/components/PublicationsDrawer/PublicationActionsTooltip.jsx b/packages/ui/src/components/PublicationsDrawer/PublicationActionsTooltip.jsx index 8e354f680..c29d31073 100644 --- a/packages/ui/src/components/PublicationsDrawer/PublicationActionsTooltip.jsx +++ b/packages/ui/src/components/PublicationsDrawer/PublicationActionsTooltip.jsx @@ -1,7 +1,7 @@ import { Tooltip } from "@mui/material"; import { withStyles } from "@mui/styles"; -const StyledTooltip = withStyles(theme => ({ +const StyledTooltip = withStyles((theme) => ({ tooltip: { maxWidth: 220, fontSize: theme.typography.pxToRem(12), diff --git a/packages/ui/src/components/PublicationsDrawer/PublicationSummary.tsx b/packages/ui/src/components/PublicationsDrawer/PublicationSummary.tsx index bd853ebb5..68a03b2ca 100644 --- a/packages/ui/src/components/PublicationsDrawer/PublicationSummary.tsx +++ b/packages/ui/src/components/PublicationsDrawer/PublicationSummary.tsx @@ -1,13 +1,12 @@ -import { useEffect, useState } from "react"; -import { makeStyles, createStyles } from "@mui/styles"; -import { Collapse, Box, Typography, Button, Theme } from "@mui/material"; - import { faCircleNodes } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Box, Button, Collapse, type Theme, Typography } from "@mui/material"; +import { createStyles, makeStyles } from "@mui/styles"; import { publicationSummaryQuery } from "@ot/utils"; +import { useEffect, useState } from "react"; import PublicationActionsTooltip from "./PublicationActionsTooltip"; -import SummaryLoader from "./SummaryLoader"; import PublicationSummaryLabel from "./PublicationSummaryLabel"; +import SummaryLoader from "./SummaryLoader"; type LoadingState = true | false; type CollapsedState = true | false; @@ -54,23 +53,23 @@ function PublicationSummary({ pmcId, symbol, name }: PublicationSummaryProps): J const classes = useStyles(); const handleChange = () => { - setCollapseOpen(prev => !prev); + setCollapseOpen((prev) => !prev); }; function requestSummary({ baseUrl, requestOptions }: any) { fetch(baseUrl, requestOptions) - .then(response => { + .then((response) => { if (response.ok) return response.json(); - return response.json().then(err => { + return response.json().then((err) => { throw new Error(err.error); }); }) - .then(data => { + .then((data) => { setSummaryText(data.text); setError(null); setLoading(false); }) - .catch(err => { + .catch((err) => { setError(err.message); setLoading(false); }); diff --git a/packages/ui/src/components/PublicationsDrawer/PublicationSummaryLabel.tsx b/packages/ui/src/components/PublicationsDrawer/PublicationSummaryLabel.tsx index b1c9fd1eb..6886ca766 100644 --- a/packages/ui/src/components/PublicationsDrawer/PublicationSummaryLabel.tsx +++ b/packages/ui/src/components/PublicationsDrawer/PublicationSummaryLabel.tsx @@ -1,5 +1,5 @@ -import { makeStyles } from "@mui/styles"; import { Typography } from "@mui/material"; +import { makeStyles } from "@mui/styles"; const useStyles = makeStyles(() => ({ container: { diff --git a/packages/ui/src/components/PublicationsDrawer/PublicationWrapper.jsx b/packages/ui/src/components/PublicationsDrawer/PublicationWrapper.jsx index 709e9cee3..796ce849f 100644 --- a/packages/ui/src/components/PublicationsDrawer/PublicationWrapper.jsx +++ b/packages/ui/src/components/PublicationsDrawer/PublicationWrapper.jsx @@ -1,20 +1,18 @@ -import { useState, useEffect } from "react"; -import { faPlusCircle, faMinusCircle, faFileAlt } from "@fortawesome/free-solid-svg-icons"; +import { faFileAlt, faMinusCircle, faPlusCircle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Button, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; - -import LongText from "../LongText"; +import { useEffect, useState } from "react"; +import { useConfigContext } from "../../providers/ConfigurationProvider"; import Link from "../Link"; - +import LongText from "../LongText"; import PublicationSummary from "./PublicationSummary"; -import { useConfigContext } from "../../providers/ConfigurationProvider"; const pmUrl = "https://europepmc.org/"; const pmTitleUrlMED = "abstract/med/"; const pmTitleUrlPAT = "abstract/pat/"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme) => ({ abstractSpan: { whiteSpace: "normal", }, diff --git a/packages/ui/src/components/PublicationsDrawer/PublicationsDrawer.jsx b/packages/ui/src/components/PublicationsDrawer/PublicationsDrawer.jsx index c9984c167..dff1baeae 100644 --- a/packages/ui/src/components/PublicationsDrawer/PublicationsDrawer.jsx +++ b/packages/ui/src/components/PublicationsDrawer/PublicationsDrawer.jsx @@ -1,22 +1,22 @@ -import { useState, useEffect } from "react"; +import { faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, - IconButton, + ButtonBase, + CircularProgress, Drawer, - Typography, + IconButton, Paper, - CircularProgress, - ButtonBase, + Typography, } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { faXmark } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { naLabel } from "@ot/constants"; import { europePmcSearchPOSTQuery } from "@ot/utils"; -import PublicationWrapper from "./PublicationWrapper"; +import { useEffect, useState } from "react"; import OtTable from "../OtTable/OtTable"; +import PublicationWrapper from "./PublicationWrapper"; -const sourceDrawerStyles = makeStyles(theme => ({ +const sourceDrawerStyles = makeStyles((theme) => ({ drawerLink: { color: `${theme.palette.primary.main} !important`, }, @@ -67,7 +67,7 @@ const sourceDrawerStyles = makeStyles(theme => ({ }, })); -const listComponentStyles = makeStyles(theme => ({ +const listComponentStyles = makeStyles((theme) => ({ loader: { display: "flex", justifyContent: "center", @@ -97,8 +97,8 @@ export function PublicationsList({ entriesIds, hideSearch = false, name, symbol body: formBody, }; fetch(baseUrl, requestOptions) - .then(response => response.json()) - .then(data => { + .then((response) => response.json()) + .then((data) => { setLoading(false); setPublications(data.resultList.result); }); @@ -122,7 +122,7 @@ export function PublicationsList({ entriesIds, hideSearch = false, name, symbol ); - const parsedPublications = publications.map(pub => { + const parsedPublications = publications.map((pub) => { const row = {}; row.europePmcId = pub.id; row.pmcId = pub.pmcid; @@ -143,7 +143,7 @@ export function PublicationsList({ entriesIds, hideSearch = false, name, symbol { id: "publications", label: " ", - renderCell: publication => { + renderCell: (publication) => { const { europePmcId, title, @@ -177,7 +177,7 @@ export function PublicationsList({ entriesIds, hideSearch = false, name, symbol /> ); }, - filterValue: row => + filterValue: (row) => `${row.journal.journal?.title} ${row?.title} ${row?.year} ${row.authors .reduce((acc, author) => { @@ -209,13 +209,13 @@ function PublicationsDrawer({ const [open, setOpen] = useState(false); const classes = sourceDrawerStyles(); - const entriesIds = entries.map(entry => entry.name); + const entriesIds = entries.map((entry) => entry.name); if (entries.length === 0) { return naLabel; } - const toggleDrawer = event => { + const toggleDrawer = (event) => { if (event.type === "keydown" && (event.key === "Tab" || event.key === "Shift")) { return; } diff --git a/packages/ui/src/components/PublicationsDrawer/index.js b/packages/ui/src/components/PublicationsDrawer/index.js index 61976b2ee..d4ee63a63 100644 --- a/packages/ui/src/components/PublicationsDrawer/index.js +++ b/packages/ui/src/components/PublicationsDrawer/index.js @@ -1,5 +1,5 @@ -export { default as PublicationsDrawer, PublicationsList } from "./PublicationsDrawer"; -export { default as PublicationWrapper } from "./PublicationWrapper"; export { default as PublicationSummary } from "./PublicationSummary"; export { default as PublicationSummaryLabel } from "./PublicationSummaryLabel"; +export { default as PublicationsDrawer, PublicationsList } from "./PublicationsDrawer"; +export { default as PublicationWrapper } from "./PublicationWrapper"; export { default as SummaryLoader } from "./SummaryLoader"; diff --git a/packages/ui/src/components/RoutingTabs/RoutingTabs.jsx b/packages/ui/src/components/RoutingTabs/RoutingTabs.jsx index a00179f92..dc9948f8e 100644 --- a/packages/ui/src/components/RoutingTabs/RoutingTabs.jsx +++ b/packages/ui/src/components/RoutingTabs/RoutingTabs.jsx @@ -1,6 +1,6 @@ -import { Suspense, Children, cloneElement } from "react"; -import { generatePath, Route, Routes, useNavigate, useMatch } from "react-router-dom"; -import { Tabs, Box } from "@mui/material"; +import { Box, Tabs } from "@mui/material"; +import { Children, cloneElement, Suspense } from "react"; +import { generatePath, Route, Routes, useMatch, useNavigate } from "react-router-dom"; import { v1 } from "uuid"; import LoadingBackdrop from "../LoadingBackdrop"; @@ -9,7 +9,7 @@ function RoutingTabs({ children }) { const history = useNavigate(); const routes = []; - const preparedChildren = Children.map(children, child => { + const preparedChildren = Children.map(children, (child) => { // Prepares routes for the tabs. if (child.props.component) { routes.push({ diff --git a/packages/ui/src/components/RoutingTabs/index.js b/packages/ui/src/components/RoutingTabs/index.js index a3307cd44..fa3529fe6 100644 --- a/packages/ui/src/components/RoutingTabs/index.js +++ b/packages/ui/src/components/RoutingTabs/index.js @@ -1,3 +1,3 @@ +export { default as PrivateRoutingTab } from "./PrivateRoutingTab"; export { default as RoutingTab } from "./RoutingTab"; export { default as RoutingTabs } from "./RoutingTabs"; -export { default as PrivateRoutingTab } from "./PrivateRoutingTab"; diff --git a/packages/ui/src/components/ScientificNotation.tsx b/packages/ui/src/components/ScientificNotation.tsx index 8d7378e30..4221a3cb9 100644 --- a/packages/ui/src/components/ScientificNotation.tsx +++ b/packages/ui/src/components/ScientificNotation.tsx @@ -1,5 +1,5 @@ -import { ReactElement } from "react"; import { decimalPlaces } from "@ot/constants"; +import type { ReactElement } from "react"; type ScientificNotationProps = { number: number | number[]; diff --git a/packages/ui/src/components/Section/SectionContainer.tsx b/packages/ui/src/components/Section/SectionContainer.tsx index 500c48878..6378ea281 100644 --- a/packages/ui/src/components/Section/SectionContainer.tsx +++ b/packages/ui/src/components/Section/SectionContainer.tsx @@ -1,5 +1,5 @@ import { Grid } from "@mui/material"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; type SectionContainerProps = { children: ReactNode; diff --git a/packages/ui/src/components/Section/SectionError.tsx b/packages/ui/src/components/Section/SectionError.tsx index 0e474d615..f1de12b62 100644 --- a/packages/ui/src/components/Section/SectionError.tsx +++ b/packages/ui/src/components/Section/SectionError.tsx @@ -1,5 +1,5 @@ import { Typography } from "@mui/material"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; type SectionErrorProps = { message: string; diff --git a/packages/ui/src/components/Section/SectionItem.tsx b/packages/ui/src/components/Section/SectionItem.tsx index 6c3d60704..120be052f 100644 --- a/packages/ui/src/components/Section/SectionItem.tsx +++ b/packages/ui/src/components/Section/SectionItem.tsx @@ -1,16 +1,14 @@ -import classNames from "classnames"; import { Avatar, Box, Card, CardContent, Divider, Grid, Skeleton, Typography } from "@mui/material"; +import { VIEW } from "@ot/constants"; +import classNames from "classnames"; +import { type ReactNode, useState } from "react"; import { Element } from "react-scroll"; - import ErrorBoundary from "../ErrorBoundary"; -import SectionError from "./SectionError"; -import sectionStyles from "./sectionStyles"; -import { createShortName } from "../Summary/utils"; import PartnerLockIcon from "../PartnerLockIcon"; +import { createShortName } from "../Summary/utils"; +import SectionError from "./SectionError"; import SectionViewToggle from "./SectionViewToggle"; -import { ReactNode, useEffect, useState } from "react"; -import { VIEW } from "@ot/constants"; -import { SummaryLoader } from "../PublicationsDrawer"; +import sectionStyles from "./sectionStyles"; type definitionType = { id: string; @@ -55,7 +53,7 @@ function SectionItem({ const shortName = createShortName(definition); let hasData = false; const [selectedView, setSelectedView] = useState(defaultView); - const [showDelayLoadingMessage, setShowDelayLoadingMessage] = useState(false); + const [showDelayLoadingMessage, _setShowDelayLoadingMessage] = useState(false); // TODO: refactor to avoid re-renders diff --git a/packages/ui/src/components/Section/SectionLoader.tsx b/packages/ui/src/components/Section/SectionLoader.tsx index ca26e648c..c3cf87d46 100644 --- a/packages/ui/src/components/Section/SectionLoader.tsx +++ b/packages/ui/src/components/Section/SectionLoader.tsx @@ -8,7 +8,7 @@ type SectionContainerLoaderProps = { function SectionLoader({ sectionsCount = 1 }: SectionContainerLoaderProps) { const loadingSections = Array.from(Array(sectionsCount)); - return loadingSections.map((_, i) => ( + return loadingSections.map((_, _i) => (
diff --git a/packages/ui/src/components/Section/SectionViewToggle.tsx b/packages/ui/src/components/Section/SectionViewToggle.tsx index 99c008ebd..2c7232b00 100644 --- a/packages/ui/src/components/Section/SectionViewToggle.tsx +++ b/packages/ui/src/components/Section/SectionViewToggle.tsx @@ -1,8 +1,8 @@ import { faChartLine, faTableColumns } from "@fortawesome/free-solid-svg-icons"; -import { ToggleButtonGroup, ToggleButton, styled } from "@mui/material"; -import { ReactElement, useState, MouseEvent } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { styled, ToggleButton, ToggleButtonGroup } from "@mui/material"; import { VIEW } from "@ot/constants"; +import { type MouseEvent, type ReactElement, useState } from "react"; type SectionViewToggleProps = { defaultValue: string; diff --git a/packages/ui/src/components/Section/SectionsRenderer.tsx b/packages/ui/src/components/Section/SectionsRenderer.tsx index a6c6e5acf..cdddee8da 100644 --- a/packages/ui/src/components/Section/SectionsRenderer.tsx +++ b/packages/ui/src/components/Section/SectionsRenderer.tsx @@ -1,5 +1,5 @@ import { Suspense } from "react"; -import { Widget } from "sections"; +import type { Widget } from "sections"; import usePermissions from "../../hooks/usePermissions"; import SectionLoader from "./SectionLoader"; @@ -14,7 +14,7 @@ function SectionsRenderer({ id, label, entity, widgets }: SectionsRendererProps) const { isPartnerPreview } = usePermissions(); return ( <> - {widgets.map(widget => { + {widgets.map((widget) => { const Body = widget.getBodyComponent(); const isPrivate = widget.definition.isPrivate; if (isPrivate && !isPartnerPreview) { diff --git a/packages/ui/src/components/Section/sectionStyles.js b/packages/ui/src/components/Section/sectionStyles.js index 3c782836f..db7d37ce6 100644 --- a/packages/ui/src/components/Section/sectionStyles.js +++ b/packages/ui/src/components/Section/sectionStyles.js @@ -1,6 +1,6 @@ import { makeStyles } from "@mui/styles"; -const sectionStyles = makeStyles(theme => ({ +const sectionStyles = makeStyles((theme) => ({ avatar: { color: "white", backgroundColor: theme.palette.grey[300], diff --git a/packages/ui/src/components/StudyPublication.tsx b/packages/ui/src/components/StudyPublication.tsx index a53706ad5..949d56c42 100644 --- a/packages/ui/src/components/StudyPublication.tsx +++ b/packages/ui/src/components/StudyPublication.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from "react"; +import type { ReactNode } from "react"; type StudyPublicationProps = { publicationFirstAuthor: string; diff --git a/packages/ui/src/components/Summary/SummaryItem.jsx b/packages/ui/src/components/Summary/SummaryItem.jsx index db7541a78..bc611aa58 100644 --- a/packages/ui/src/components/Summary/SummaryItem.jsx +++ b/packages/ui/src/components/Summary/SummaryItem.jsx @@ -1,4 +1,3 @@ -import classNames from "classnames"; import { Avatar, Card, @@ -8,11 +7,11 @@ import { Skeleton, Typography, } from "@mui/material"; +import classNames from "classnames"; import { scroller } from "react-scroll"; - +import PartnerLockIcon from "../PartnerLockIcon"; import summaryStyles from "./summaryStyles"; import { createShortName } from "./utils"; -import PartnerLockIcon from "../PartnerLockIcon"; function SummaryItem({ definition, request, subText }) { const classes = summaryStyles(); diff --git a/packages/ui/src/components/Summary/SummaryRenderer.tsx b/packages/ui/src/components/Summary/SummaryRenderer.tsx index c536b67dd..9635dd237 100644 --- a/packages/ui/src/components/Summary/SummaryRenderer.tsx +++ b/packages/ui/src/components/Summary/SummaryRenderer.tsx @@ -1,5 +1,5 @@ +import type { Widget } from "sections"; import { v1 } from "uuid"; -import { Widget } from "sections"; import usePermissions from "../../hooks/usePermissions"; type SummaryRendererProps = { diff --git a/packages/ui/src/components/Summary/summaryStyles.js b/packages/ui/src/components/Summary/summaryStyles.js index cb38f1399..3264c0e97 100644 --- a/packages/ui/src/components/Summary/summaryStyles.js +++ b/packages/ui/src/components/Summary/summaryStyles.js @@ -1,6 +1,6 @@ import { makeStyles } from "@mui/styles"; -const summaryStyles = makeStyles(theme => ({ +const summaryStyles = makeStyles((theme) => ({ avatar: { color: "white", backgroundColor: theme.palette.grey[300], diff --git a/packages/ui/src/components/Summary/utils.js b/packages/ui/src/components/Summary/utils.js index 00c26a85a..bdc431ed7 100644 --- a/packages/ui/src/components/Summary/utils.js +++ b/packages/ui/src/components/Summary/utils.js @@ -5,7 +5,7 @@ export function createSummaryFragment(sections, entity, fragmentName) { const sectionFragmentNames = []; const fragmentNameStr = fragmentName || `${entity}ProfileSummaryFragment`; - sections.forEach(Summary => { + sections.forEach((Summary) => { if (!Summary.fragments) return; const sectionFragmentName = Object.keys(Summary.fragments)[0]; @@ -17,7 +17,9 @@ export function createSummaryFragment(sections, entity, fragmentName) { return gql` fragment ${fragmentNameStr} on ${entity} { ${ - sectionFragmentNames.length ? sectionFragmentNames.map(sfn => `...${sfn}`).join("\n") : "id" + sectionFragmentNames.length + ? sectionFragmentNames.map((sfn) => `...${sfn}`).join("\n") + : "id" } } ${sectionFragments.reduce( @@ -28,7 +30,6 @@ export function createSummaryFragment(sections, entity, fragmentName) { "" )} `; - } export function createShortName(definition) { @@ -37,7 +38,7 @@ export function createShortName(definition) { definition.name .split(" ") .slice(0, 2) - .map(w => w[0].toUpperCase()) + .map((w) => w[0].toUpperCase()) .join("") ); } diff --git a/packages/ui/src/components/SummaryStatsTable.tsx b/packages/ui/src/components/SummaryStatsTable.tsx index 29f05b2c3..05af541f2 100644 --- a/packages/ui/src/components/SummaryStatsTable.tsx +++ b/packages/ui/src/components/SummaryStatsTable.tsx @@ -1,6 +1,6 @@ import { Typography } from "@mui/material"; -import { v1 } from "uuid"; import { Tooltip } from "ui"; +import { v1 } from "uuid"; const dicSummary = [ { id: "n_variants", label: "Total variants", tooltip: "Number of harmonised variants" }, diff --git a/packages/ui/src/components/Table/DataTable.jsx b/packages/ui/src/components/Table/DataTable.jsx index 574fe634a..58a28748c 100644 --- a/packages/ui/src/components/Table/DataTable.jsx +++ b/packages/ui/src/components/Table/DataTable.jsx @@ -1,10 +1,9 @@ /* eslint-disable */ import { useState } from "react"; - +import { getComparator, globalFilter } from "./sortingAndFiltering"; import Table from "./Table"; -import { getPage } from "./utils"; -import { globalFilter, getComparator } from "./sortingAndFiltering"; import { PaginationActionsComplete } from "./TablePaginationActions"; +import { getPage } from "./utils"; function DataTable({ noWrap, @@ -36,22 +35,22 @@ function DataTable({ const [sortOrder, setSortOrder] = useState(order); const showPagination = rows.length > [...rowsPerPageOptions, initialPageSize].sort()[0]; - const handleGlobalFilterChange = globalFilter => { + const handleGlobalFilterChange = (globalFilter) => { setGlobalFilterVal(globalFilter); setPage(0); }; - const handleSortBy = sortBy => { + const handleSortBy = (sortBy) => { setSortColumn(sortBy); setSortOrder(sortColumn === sortBy ? (sortOrder === "asc" ? "desc" : "asc") : "asc"); }; - const handlePageChange = page => { + const handlePageChange = (page) => { setPage(page); onPagination(page, pageSize); }; - const handleRowsPerPageChange = newPageSize => { + const handleRowsPerPageChange = (newPageSize) => { const newPageSizeNumber = Number(newPageSize); setPageSize(newPageSizeNumber); setPage(0); @@ -60,7 +59,7 @@ function DataTable({ let processedRows = [...rows]; if (globalFilterVal) { - processedRows = processedRows.filter(row => globalFilter(row, columns, globalFilterVal)); + processedRows = processedRows.filter((row) => globalFilter(row, columns, globalFilterVal)); } if (sortColumn) { diff --git a/packages/ui/src/components/Table/GlobalFilter.jsx b/packages/ui/src/components/Table/GlobalFilter.jsx index dbe5d2a70..89b97d6ce 100644 --- a/packages/ui/src/components/Table/GlobalFilter.jsx +++ b/packages/ui/src/components/Table/GlobalFilter.jsx @@ -1,7 +1,7 @@ -import { useEffect, useState } from "react"; -import { Grid, Input, IconButton } from "@mui/material"; import { faMagnifyingGlass, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Grid, IconButton, Input } from "@mui/material"; +import { useEffect, useState } from "react"; import useDebounce from "../../hooks/useDebounce"; import { globalSearchStyles } from "./tableStyles"; @@ -10,7 +10,7 @@ function GlobalFilter({ onGlobalFilterChange }) { const [inputValue, setInputValue] = useState(""); const debouncedInputValue = useDebounce(inputValue, 300); - const handleInputChange = e => { + const handleInputChange = (e) => { setInputValue(e.target.value); }; diff --git a/packages/ui/src/components/Table/Table.jsx b/packages/ui/src/components/Table/Table.jsx index 60632250d..3c4e8c02e 100644 --- a/packages/ui/src/components/Table/Table.jsx +++ b/packages/ui/src/components/Table/Table.jsx @@ -1,17 +1,18 @@ /* eslint-disable */ -import { useState } from "react"; -import classNames from "classnames"; + import { + Box, CircularProgress, Grid, - TableContainer, + TableRow as MUITableRow, Table as MuiTable, TableBody, TableCell, + TableContainer, TablePagination, - TableRow as MUITableRow, - Box, } from "@mui/material"; +import classNames from "classnames"; +import { useState } from "react"; import DataDownloader from "../DataDownloader"; import GlobalFilter from "./GlobalFilter"; @@ -56,7 +57,7 @@ const Table = ({ const [selectedRow, setSelectedRow] = useState(0); const defaultClasses = tableStyles(); - const handleGlobalFilterChange = newGlobalFilter => { + const handleGlobalFilterChange = (newGlobalFilter) => { if (newGlobalFilter !== globalFilter) { onGlobalFilterChange(newGlobalFilter); } @@ -66,7 +67,7 @@ const Table = ({ onSortBy(sortBy); }; - const handleChangeRowsPerPage = event => { + const handleChangeRowsPerPage = (event) => { onRowsPerPageChange(Number(event.target.value)); }; const handleChangePage = (_, page) => { @@ -75,7 +76,7 @@ const Table = ({ setSelectedRow(0); onPageChange(page); }; - const handleClick = (event, row, i) => { + const handleClick = (_event, row, i) => { setSelectedRow(i); onRowClick(row, i); }; @@ -128,7 +129,7 @@ const Table = ({ key={i} row={row} noWrap={noWrap} - onClick={event => handleClick(event, row, i)} + onClick={(event) => handleClick(event, row, i)} selected={rowIsSelectable && selectedRow === i} /> ))} diff --git a/packages/ui/src/components/Table/TableDrawer.jsx b/packages/ui/src/components/Table/TableDrawer.jsx index 631fa1aa2..e7c6e75fb 100644 --- a/packages/ui/src/components/Table/TableDrawer.jsx +++ b/packages/ui/src/components/Table/TableDrawer.jsx @@ -1,28 +1,27 @@ -import { useState } from "react"; +import { faChevronDown, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { - AccordionSummary, - AccordionDetails, Accordion, + AccordionDetails, + AccordionSummary, Box, + ButtonBase, + Drawer, IconButton, List, ListItem, - Drawer, - Typography, Paper, - Button, - ButtonBase, + Typography, } from "@mui/material"; import { makeStyles } from "@mui/styles"; -import { faXmark, faChevronDown } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { naLabel } from "@ot/constants"; import _ from "lodash"; +import { useState } from "react"; import { v1 } from "uuid"; -import { naLabel } from "@ot/constants"; import Link from "../Link"; -const sourceDrawerStyles = makeStyles(theme => ({ +const sourceDrawerStyles = makeStyles((theme) => ({ drawerLink: { color: `${theme.palette.primary.main} !important`, }, @@ -90,11 +89,11 @@ function TableDrawer({ entries, message, caption = "Records", showSingle = true {entries[0].name} ) : ( - entries[0].name ?? naLabel + (entries[0].name ?? naLabel) ); } - const toggleDrawer = event => { + const toggleDrawer = (event) => { if (event.type === "keydown" && (event.key === "Tab" || event.key === "Shift")) { return; } @@ -120,7 +119,7 @@ function TableDrawer({ entries, message, caption = "Records", showSingle = true - {Object.keys(groupedEntries).map(group => ( + {Object.keys(groupedEntries).map((group) => ( - {groupedEntries[group].map(entry => ( + {groupedEntries[group].map((entry) => ( {entry.url ? ( diff --git a/packages/ui/src/components/Table/TableHeader.jsx b/packages/ui/src/components/Table/TableHeader.jsx index db4a1681a..e6c7fe0cf 100644 --- a/packages/ui/src/components/Table/TableHeader.jsx +++ b/packages/ui/src/components/Table/TableHeader.jsx @@ -1,20 +1,20 @@ /* eslint-disable */ -import classNames from "classnames"; -import _ from "lodash"; + import { Hidden, // note this is deprecated in MUI 5 + TableCell, TableHead, TableRow, - TableCell, TableSortLabel, useMediaQuery, } from "@mui/material"; import { useTheme } from "@mui/styles"; - -import { getHiddenBreakpoints } from "./utils"; -import { tableStyles } from "./tableStyles"; -import Tooltip from "../Tooltip"; +import classNames from "classnames"; +import _ from "lodash"; import useDynamicColspan from "../../hooks/useDynamicColspans"; +import Tooltip from "../Tooltip"; +import { tableStyles } from "./tableStyles"; +import { getHiddenBreakpoints } from "./utils"; function HeaderCell({ classes = {}, @@ -80,10 +80,10 @@ function HeaderCell({ function TableHeader({ columns, headerGroups, noWrapHeader, order, onRequestSort, sortBy }) { // workaround for the old withWidth hook const theme = useTheme(); - const width = theme.breakpoints.keys.filter(k => useMediaQuery(theme.breakpoints.only(k))); + const width = theme.breakpoints.keys.filter((k) => useMediaQuery(theme.breakpoints.only(k))); const colspans = useDynamicColspan(headerGroups, columns, width); - const createSortHandler = property => event => { + const createSortHandler = (property) => (event) => { onRequestSort(event, property); }; diff --git a/packages/ui/src/components/Table/TablePaginationActions.jsx b/packages/ui/src/components/Table/TablePaginationActions.jsx index a4d44ae28..4d071d03a 100644 --- a/packages/ui/src/components/Table/TablePaginationActions.jsx +++ b/packages/ui/src/components/Table/TablePaginationActions.jsx @@ -1,13 +1,12 @@ -import { IconButton } from "@mui/material"; -import { makeStyles } from "@mui/styles"; - -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faBackwardStep, - faForwardStep, faChevronLeft, faChevronRight, + faForwardStep, } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { IconButton } from "@mui/material"; +import { makeStyles } from "@mui/styles"; const useStyles = makeStyles({ root: { flexShrink: 0 }, @@ -16,19 +15,19 @@ const useStyles = makeStyles({ export function PaginationActionsComplete({ count, page, rowsPerPage, onPageChange }) { const classes = useStyles(); - const handleFirstPageButtonClick = event => { + const handleFirstPageButtonClick = (event) => { onPageChange(event, 0); }; - const handleBackButtonClick = event => { + const handleBackButtonClick = (event) => { onPageChange(event, page - 1); }; - const handleNextButtonClick = event => { + const handleNextButtonClick = (event) => { onPageChange(event, page + 1); }; - const handleLastPageButtonClick = event => { + const handleLastPageButtonClick = (event) => { onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); }; diff --git a/packages/ui/src/components/Table/TableRow.jsx b/packages/ui/src/components/Table/TableRow.jsx index 647f80f26..cb9e6e7e4 100644 --- a/packages/ui/src/components/Table/TableRow.jsx +++ b/packages/ui/src/components/Table/TableRow.jsx @@ -1,10 +1,10 @@ /* eslint-disable */ + +import { Hidden, TableRow as MUITableRow, TableCell } from "@mui/material"; import classNames from "classnames"; -import { Hidden, TableCell, TableRow as MUITableRow } from "@mui/material"; import _ from "lodash"; - -import { getHiddenBreakpoints } from "./utils"; import { tableStyles } from "./tableStyles"; +import { getHiddenBreakpoints } from "./utils"; function TableRow({ columns, hover, isFixedRow, noWrap, row, style, onClick, selected }) { const classes = tableStyles(); diff --git a/packages/ui/src/components/Table/index.js b/packages/ui/src/components/Table/index.js index fe7858146..24ca5e040 100644 --- a/packages/ui/src/components/Table/index.js +++ b/packages/ui/src/components/Table/index.js @@ -1,6 +1,6 @@ -export { default as Table } from "./Table"; export { default as DataTable } from "./DataTable"; +export { getComparator, globalFilter } from "./sortingAndFiltering"; +export { default as Table } from "./Table"; export { default as TableDrawer } from "./TableDrawer"; export { PaginationActionsComplete } from "./TablePaginationActions"; -export { getPage, getHiddenBreakpoints } from "./utils"; -export { getComparator, globalFilter } from "./sortingAndFiltering"; +export { getHiddenBreakpoints, getPage } from "./utils"; diff --git a/packages/ui/src/components/Table/sortingAndFiltering.js b/packages/ui/src/components/Table/sortingAndFiltering.js index 09365a013..97052cf66 100644 --- a/packages/ui/src/components/Table/sortingAndFiltering.js +++ b/packages/ui/src/components/Table/sortingAndFiltering.js @@ -1,6 +1,5 @@ -import _ from "lodash"; - import { safeToString } from "@ot/utils"; +import _ from "lodash"; function ascendingComparator(a, b, sortBy) { if (a[sortBy] === undefined || a[sortBy] < b[sortBy]) return -1; @@ -9,7 +8,7 @@ function ascendingComparator(a, b, sortBy) { } export function getComparator(columns, order, sortBy) { - const column = columns.find(col => col.id === sortBy); + const column = columns.find((col) => col.id === sortBy); const columnComparator = column?.comparator ? column.comparator : ascendingComparator; return order === "asc" @@ -30,6 +29,6 @@ export function globalFilter(row, columns, value) { }, []); return contents - .map(content => safeToString(content).toLowerCase().includes(value.toLowerCase())) - .some(e => e); + .map((content) => safeToString(content).toLowerCase().includes(value.toLowerCase())) + .some((e) => e); } diff --git a/packages/ui/src/components/Table/tableStyles.js b/packages/ui/src/components/Table/tableStyles.js index ec575309d..929ba8120 100644 --- a/packages/ui/src/components/Table/tableStyles.js +++ b/packages/ui/src/components/Table/tableStyles.js @@ -1,6 +1,6 @@ import { makeStyles } from "@mui/styles"; -export const tableStyles = makeStyles(theme => ({ +export const tableStyles = makeStyles((theme) => ({ cell: { "&:first-child": { paddingLeft: "1rem", diff --git a/packages/ui/src/components/Table/utils.js b/packages/ui/src/components/Table/utils.js index 7c3f6d5e7..115a69029 100644 --- a/packages/ui/src/components/Table/utils.js +++ b/packages/ui/src/components/Table/utils.js @@ -1,7 +1,7 @@ /* Returns a list of breakpoints translating values from hidden prop. */ -export const getHiddenBreakpoints = column => +export const getHiddenBreakpoints = (column) => column.hidden?.reduce( (obj, b) => { if (b.includes("Only")) { diff --git a/packages/ui/src/components/Tooltip.jsx b/packages/ui/src/components/Tooltip.jsx index 1db390e98..d2f04d9ef 100644 --- a/packages/ui/src/components/Tooltip.jsx +++ b/packages/ui/src/components/Tooltip.jsx @@ -1,5 +1,5 @@ -import { makeStyles } from "@mui/styles"; import { Tooltip as MUITooltip } from "@mui/material"; +import { makeStyles } from "@mui/styles"; import { merge } from "lodash"; function Tooltip({ @@ -10,7 +10,7 @@ function Tooltip({ placement = "top", ...props }) { - const classes = makeStyles(theme => + const classes = makeStyles((theme) => merge(style, { tooltip: { backgroundColor: `${theme.palette.background.paper} !important`, diff --git a/packages/ui/src/components/Viewer/Usage.tsx b/packages/ui/src/components/Viewer/Usage.tsx index e4dea887a..8bd53e9e4 100644 --- a/packages/ui/src/components/Viewer/Usage.tsx +++ b/packages/ui/src/components/Viewer/Usage.tsx @@ -1,7 +1,7 @@ -import { useState } from "react"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faInfo } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Button, Typography } from "@mui/material"; +import { useState } from "react"; import { Tooltip } from "ui"; // !!!!! ADD TYPES !!!!! @@ -12,7 +12,7 @@ function Usage({ instructions }) { const handleClick = () => { setIsHovered(false); - setIsClicked(prev => !prev); + setIsClicked((prev) => !prev); }; const handleMouseEnter = () => { diff --git a/packages/ui/src/components/Viewer/Viewer.tsx b/packages/ui/src/components/Viewer/Viewer.tsx index 6d5ce0223..88864f9d7 100644 --- a/packages/ui/src/components/Viewer/Viewer.tsx +++ b/packages/ui/src/components/Viewer/Viewer.tsx @@ -1,13 +1,12 @@ -import { useState, useEffect, useRef } from "react"; -import { createViewer } from "3dmol"; -import { Box, Button } from "@mui/material"; -import { useViewerState, useViewerDispatch } from "../../providers/ViewerProvider"; -import { useViewerInteractionState, useViewerInteractionDispatch } from "ui"; -import Usage from "./Usage"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCamera } from "@fortawesome/free-solid-svg-icons"; -import { Tooltip, ViewerTrack } from "ui"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Box, Button } from "@mui/material"; +import { createViewer } from "3dmol"; +import { useEffect, useRef, useState } from "react"; +import { Tooltip, useViewerInteractionDispatch, useViewerInteractionState, ViewerTrack } from "ui"; +import { useViewerDispatch, useViewerState } from "../../providers/ViewerProvider"; import { onClickCapture } from "./helpers"; +import Usage from "./Usage"; const hoverDuration = 0; @@ -55,22 +54,17 @@ export default function Viewer({ function applyAppearance( appearance, - resi = null, // only non-null for click/hover on structure (not track) appearance changes + resi = null // only non-null for click/hover on structure (not track) appearance changes ) { const resolvedSelection = resolveProperty(appearance, "selection", viewerState, resi); const resolvedStyle = resolveProperty(appearance, "style", viewerState, resi); if (resolvedSelection && resolvedStyle) { - viewer[appearance.addStyle ? "addStyle" : "setStyle"]( - resolvedSelection, - resolvedStyle - ); + viewer[appearance.addStyle ? "addStyle" : "setStyle"](resolvedSelection, resolvedStyle); } } function getEventSelection(selection) { - return typeof selection === "function" - ? selection(viewerState) - : selection; + return typeof selection === "function" ? selection(viewerState) : selection; } // keep ref in sync @@ -83,7 +77,6 @@ export default function Viewer({ let _viewer; if (data && viewerRef.current) { - // create viewer _viewer = createViewer(viewerRef.current, { backgroundColor: "#f8f8f8", @@ -99,7 +92,7 @@ export default function Viewer({ setViewer(_viewer); _viewer.getCanvas().addEventListener( "wheel", - event => { + (event) => { if (!event.ctrlKey) event.stopImmediatePropagation(); }, true // use capture phase so fires before library handler @@ -110,34 +103,27 @@ export default function Viewer({ onData?.(_viewer, viewerDispatch); // set state viewer after load data - since state groups atoms by resi - viewerDispatch({ type: '_setViewer', value: _viewer }); + viewerDispatch({ type: "_setViewer", value: _viewer }); } // interaction if (viewerInteractionState) { - // disable hover when mousedown - _viewer.getCanvas().addEventListener( - "mousedown", - event => { - manipulating.current = true; - startedManipulating.current = Date.now(); - } - ); - _viewer.getCanvas().addEventListener( - "mouseup", - event => { - viewerInteractionDispatch({ type: "setHoveredResi", value: null }); - manipulating.current = false; - } - ); - + _viewer.getCanvas().addEventListener("mousedown", (_event) => { + manipulating.current = true; + startedManipulating.current = Date.now(); + }); + _viewer.getCanvas().addEventListener("mouseup", (_event) => { + viewerInteractionDispatch({ type: "setHoveredResi", value: null }); + manipulating.current = false; + }); + // click event on canvas for 'click off' events - _viewer.getCanvas().addEventListener("click", event => { + _viewer.getCanvas().addEventListener("click", (_event) => { setTimeout(() => { - if( + if ( !clickHandled.current && - Date.now() - startedManipulating.current < 250 // click rather than manipulate structure + Date.now() - startedManipulating.current < 250 // click rather than manipulate structure ) { viewerInteractionDispatch({ type: "setClickedResi", value: null }); } @@ -149,7 +135,7 @@ export default function Viewer({ if (clickSelection) { const sel = getEventSelection(clickSelection); if (sel && clickAppearance?.length > 0) { - _viewer.setClickable(sel, true, atom => { + _viewer.setClickable(sel, true, (atom) => { viewerInteractionDispatch({ type: "setClickedResi", value: +atom.resi }); clickHandled.current = true; }); @@ -165,7 +151,7 @@ export default function Viewer({ true, // use tempHoveredResi and setTimeout to prevent flicker when hover aross // different atoms on same residue - atom => { + (atom) => { if (hoverTimeout.current) { clearTimeout(hoverTimeout.current); hoverTimeout.current = null; @@ -175,11 +161,12 @@ export default function Viewer({ // tempHoveredResi.current = +atom.resi; } }, - atom => { + (atom) => { hoverTimeout.current = setTimeout(() => { - if (!manipulating.current && - // viewerInteractionState.hoveredResi === +atom.resi //&& - tempHoveredResi.current === +atom.resi + if ( + !manipulating.current && + // viewerInteractionState.hoveredResi === +atom.resi //&& + tempHoveredResi.current === +atom.resi ) { viewerInteractionDispatch({ type: "setHoveredResi", value: null }); tempHoveredResi.current = null; @@ -188,7 +175,7 @@ export default function Viewer({ }, 50); } ); - _viewer.render(); // required to reactivate hover + _viewer.render(); // required to reactivate hover } } @@ -206,7 +193,7 @@ export default function Viewer({ // double click callback useEffect(() => { if (!viewer || !onDblClick) return; - viewer.getCanvas().addEventListener("dblclick", event => { + viewer.getCanvas().addEventListener("dblclick", (_event) => { onDblClick(viewerState); }); }, [viewer]); @@ -220,7 +207,7 @@ export default function Viewer({ let anyUsed = false; for (const appearance of clickAppearance) { for (const leaveAppearance of appearance.leave || []) { - const a = {...leaveAppearance }; + const a = { ...leaveAppearance }; const resi = Number(oldClickedResi.current); if (!a.use || a.use(viewerState, resi)) { if (!a.selection) a.selection = { resi }; @@ -255,13 +242,13 @@ export default function Viewer({ // update for change in hovered resi useEffect(() => { if (!viewer || !viewerInteractionState) return; - + // unhover if (oldHoveredResi.current) { let anyUsed = false; for (const appearance of hoverAppearance) { - for (const leaveAppearance of appearance.leave || []) { - const a = {...leaveAppearance }; + for (const leaveAppearance of appearance.leave || []) { + const a = { ...leaveAppearance }; const resi = Number(oldHoveredResi.current); if (!a.use || a.use(viewerState, resi)) { if (!a.selection) a.selection = { resi }; @@ -273,12 +260,12 @@ export default function Viewer({ } if (anyUsed) viewer.render(); } - + // hover if (viewerInteractionState.hoveredResi) { let anyUsed = false; for (const appearance of hoverAppearance) { - const a = {...appearance }; + const a = { ...appearance }; const resi = Number(viewerInteractionState.hoveredResi); if (!a.use || a.use(viewerState, resi)) { if (!a.selection) a.selection = { resi }; @@ -289,7 +276,7 @@ export default function Viewer({ } if (anyUsed) viewer.render(); } - + oldHoveredResi.current = viewerInteractionState.hoveredResi; }, [viewer, viewerInteractionState?.hoveredResi]); @@ -311,19 +298,18 @@ export default function Viewer({ return ( - {/* track */} {trackColor && } - + {/* viewer */} {/* // position="relative" width="100%" height={height} sx={{resize: "vertical", overflow: "hidden"}}> */} @@ -368,7 +354,7 @@ export default function Viewer({ position="absolute" top={0} left={0} - height="50%" // stops jumping when canvas overlaps top/bottom of window + height="50%" // stops jumping when canvas overlaps top/bottom of window display="flex" alignItems="start" zIndex={100} @@ -384,7 +370,7 @@ export default function Viewer({ position="absolute" bottom={0} right={0} - height="50%" // stops jumping when canvas overlaps top/bottom of window + height="50%" // stops jumping when canvas overlaps top/bottom of window display="flex" alignItems="end" zIndex={100} @@ -396,4 +382,4 @@ export default function Viewer({ ); -} \ No newline at end of file +} diff --git a/packages/ui/src/components/Viewer/ViewerTrack.tsx b/packages/ui/src/components/Viewer/ViewerTrack.tsx index 67189d390..aa8ca762a 100644 --- a/packages/ui/src/components/Viewer/ViewerTrack.tsx +++ b/packages/ui/src/components/Viewer/ViewerTrack.tsx @@ -1,8 +1,8 @@ -import { useRef, useEffect } from "react"; import { Box } from "@mui/material"; +import { format, scaleLinear } from "d3"; +import { useEffect, useRef } from "react"; +import { useViewerInteractionDispatch, useViewerInteractionState } from "ui"; import { useViewerState } from "../../providers/ViewerProvider"; -import { useViewerInteractionState, useViewerInteractionDispatch } from "ui"; -import { scaleLinear, format } from "d3"; const trackHeight = 8; const topSpace = 24; @@ -22,10 +22,7 @@ function tickGroup({ fontWeight = 400, }) { const g = svgElement("g"); - g.setAttribute( - "transform", - `translate(${x - 0.5}, 0)` - ); + g.setAttribute("transform", `translate(${x - 0.5}, 0)`); let yLine, yLabel, dominantBaseline; if (position === "top") { yLine = topSpace - 5; @@ -60,22 +57,22 @@ function tickGroup({ function updateTextScale(textOrSvg) { let xScale; - const textElements = textOrSvg.tagName.toLowerCase() === "text" - ? [textOrSvg] - : textOrSvg.querySelectorAll("._track_text_"); + const textElements = + textOrSvg.tagName.toLowerCase() === "text" + ? [textOrSvg] + : textOrSvg.querySelectorAll("._track_text_"); for (const text of textElements) { if (!xScale) { text.setAttribute("transform", `scale(1, 1)`); xScale ??= text.getCTM().a; } - text.setAttribute("transform", `scale(${1/xScale}, 1)`); + text.setAttribute("transform", `scale(${1 / xScale}, 1)`); } } // currently for alphaFold only - assumes single/first structure and contiguous // residue indices from 1 to structure length export default function ViewerTrack({ trackColor, trackTicks }) { - const viewerState = useViewerState(); const viewerInteractionState = useViewerInteractionState(); const viewerInteractionDispatch = useViewerInteractionDispatch(); @@ -90,7 +87,7 @@ export default function ViewerTrack({ trackColor, trackTicks }) { }); } - function handleMouseleave(event) { + function handleMouseleave(_event) { viewerInteractionDispatch({ type: "setHoveredResi", value: null }); } @@ -123,7 +120,7 @@ export default function ViewerTrack({ trackColor, trackTicks }) { rect.setAttribute("height", trackHeight); rect.setAttribute("fill", trackColor(viewerState, resi)); rect.setAttribute("pointer-events", "none"); - rect.setAttribute("shape-rendering","crispEdges"); + rect.setAttribute("shape-rendering", "crispEdges"); // larger invisible rect for interaction const invisibleRect = svgElement("rect"); @@ -132,12 +129,12 @@ export default function ViewerTrack({ trackColor, trackTicks }) { invisibleRect.setAttribute("width", 1); invisibleRect.setAttribute("height", totalHeight); invisibleRect.setAttribute("stoke", "none"); - invisibleRect.setAttribute("fill-opacity", 0); // so can still trigger evevnts + invisibleRect.setAttribute("fill-opacity", 0); // so can still trigger evevnts invisibleRect.setAttribute("data-resi", resi); invisibleRect.addEventListener("click", handleClick); rects.push(rect, invisibleRect); } - + // add rects and event handlers svg.append(...rects); svg.addEventListener("pointermove", handlePointerMove); @@ -145,12 +142,16 @@ export default function ViewerTrack({ trackColor, trackTicks }) { // track ticks if (trackTicks) { - svg.append(...trackTicks(viewerState).map(({ resi, label }) => tickGroup({ - x: resi, - position: "top", - fontWeight: 500, - label, - }))); + svg.append( + ...trackTicks(viewerState).map(({ resi, label }) => + tickGroup({ + x: resi, + position: "top", + fontWeight: 500, + label, + }) + ) + ); } // add hover tick group once and reuse @@ -160,15 +161,17 @@ export default function ViewerTrack({ trackColor, trackTicks }) { svg.append(g); // axis - const ticks = scaleLinear() - .domain([0, nResidues]) - .ticks() + const ticks = scaleLinear().domain([0, nResidues]).ticks(); if (ticks[0] === 0) ticks[0] = 1; const tickFormatter = format(","); - svg.append(...ticks.map(value => tickGroup({ - x: value, - label: tickFormatter(value), - }))); + svg.append( + ...ticks.map((value) => + tickGroup({ + x: value, + label: tickFormatter(value), + }) + ) + ); updateTextScale(svg); window.addEventListener("resize", () => updateTextScale(svg)); }, [viewerState]); @@ -178,7 +181,7 @@ export default function ViewerTrack({ trackColor, trackTicks }) { if (!viewerInteractionState) return; const svg = svgRef.current; if (!svg) return; - svg.querySelector('._clicked_tick_group_')?.remove(); + svg.querySelector("._clicked_tick_group_")?.remove(); const resi = viewerInteractionState.clickedResi; if (resi) { const g = tickGroup({ @@ -199,12 +202,9 @@ export default function ViewerTrack({ trackColor, trackTicks }) { if (!svg) return; const resi = viewerInteractionState.hoveredResi; const g = svg.querySelector("._hovered_tick_group_"); - if(!g) return; + if (!g) return; if (resi) { - g.setAttribute( - "transform", - `translate(${resi - 0.5}, 0)` - ); + g.setAttribute("transform", `translate(${resi - 0.5}, 0)`); const text = g.querySelector("text"); text.textContent = `${viewerState.atomsByResi.get(+resi)[0].resn} ${resi}`; g.style.display = "inline"; @@ -215,13 +215,15 @@ export default function ViewerTrack({ trackColor, trackTicks }) { if (!viewerInteractionState) return null; - return ( - + return ( + + > {/* rectangles and highlight added by useEffect */} ); -} \ No newline at end of file +} diff --git a/packages/ui/src/components/icons/ArrowTurnDownLeft.tsx b/packages/ui/src/components/icons/ArrowTurnDownLeft.tsx index 2f3972b23..80a230d73 100644 --- a/packages/ui/src/components/icons/ArrowTurnDownLeft.tsx +++ b/packages/ui/src/components/icons/ArrowTurnDownLeft.tsx @@ -1,7 +1,7 @@ import { makeStyles } from "@mui/styles"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((_theme) => ({ mainIcon: { width: "1em", display: "flex", diff --git a/packages/ui/src/components/icons/BrokenSearchIcon.tsx b/packages/ui/src/components/icons/BrokenSearchIcon.tsx index c2eb51bb1..bd0257c89 100644 --- a/packages/ui/src/components/icons/BrokenSearchIcon.tsx +++ b/packages/ui/src/components/icons/BrokenSearchIcon.tsx @@ -1,7 +1,7 @@ import { makeStyles } from "@mui/styles"; -import { ReactNode } from "react"; +import type { ReactNode } from "react"; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((_theme) => ({ mainIcon: { width: "1em", display: "flex", From 9f88b1c371be7f2249c40d7c293c06a7fd8d7f99 Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Mon, 27 Oct 2025 15:15:49 +0000 Subject: [PATCH 08/10] [ot-config]: lint on (#821) --- biome.json | 1 - packages/ot-config/src/environment.ts | 55 +++++++++++++-------------- packages/ot-config/src/index.ts | 2 +- packages/ot-config/src/theme.ts | 4 +- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/biome.json b/biome.json index b1509b0e5..8b0d29cc4 100644 --- a/biome.json +++ b/biome.json @@ -31,7 +31,6 @@ "!**/apps/platform/src", "!**/packages/ui", "!**/packages/sections", - "!**/packages/ot-config", "!**/packages/ot-constants", "!**/packages/ot-utils" ] diff --git a/packages/ot-config/src/environment.ts b/packages/ot-config/src/environment.ts index a70486e48..8b1d81c00 100644 --- a/packages/ot-config/src/environment.ts +++ b/packages/ot-config/src/environment.ts @@ -1,26 +1,26 @@ import type { Config, Environment } from "./types"; export const getEnvironmentConfig = (env: Environment): Config => { - const configs: Record = { - development: { - urlApi: "http://localhost:8080", - urlAiApi: "http://localhost:8081", - profile: {}, - googleTagManagerID: null, - geneticsPortalUrl: "https://genetics.opentargets.org", - gitVersion: "", - }, - production: { - urlApi: "https://api.platform.opentargets.org", - urlAiApi: "https://ai.platform.opentargets.org", - profile: {}, - googleTagManagerID: "GTM-XXXXX", - geneticsPortalUrl: "https://genetics.opentargets.org", - gitVersion: "", - }, - }; + const configs: Record = { + development: { + urlApi: "http://localhost:8080", + urlAiApi: "http://localhost:8081", + profile: {}, + googleTagManagerID: null, + geneticsPortalUrl: "https://genetics.opentargets.org", + gitVersion: "", + }, + production: { + urlApi: "https://api.platform.opentargets.org", + urlAiApi: "https://ai.platform.opentargets.org", + profile: {}, + googleTagManagerID: "GTM-XXXXX", + geneticsPortalUrl: "https://genetics.opentargets.org", + gitVersion: "", + }, + }; - return configs[env]; + return configs[env]; }; // Vite environment variables @@ -29,13 +29,12 @@ const ENV_AI_API_URL: string | undefined = import.meta.env.VITE_AI_API_URL; const ENV_GIT_VERSION: string | undefined = import.meta.env.VITE_GIT_VERSION; export const getConfig = (): Config => { - return { - urlApi:window.configUrlApi ?? ENV_API_URL ?? "", - urlAiApi: window.configOTAiApi ?? ENV_AI_API_URL ?? "", - gitVersion: window.gitVersion ?? ENV_GIT_VERSION ?? "", - profile: window.configProfile ?? { isPartnerPreview: false }, - googleTagManagerID: window.configGoogleTagManagerID ?? null, - geneticsPortalUrl: - window.configGeneticsPortalUrl ?? "https://genetics.opentargets.org", - }; + return { + urlApi: window.configUrlApi ?? ENV_API_URL ?? "", + urlAiApi: window.configOTAiApi ?? ENV_AI_API_URL ?? "", + gitVersion: window.gitVersion ?? ENV_GIT_VERSION ?? "", + profile: window.configProfile ?? { isPartnerPreview: false }, + googleTagManagerID: window.configGoogleTagManagerID ?? null, + geneticsPortalUrl: window.configGeneticsPortalUrl ?? "https://genetics.opentargets.org", + }; }; diff --git a/packages/ot-config/src/index.ts b/packages/ot-config/src/index.ts index be4b007b6..c77c6da82 100644 --- a/packages/ot-config/src/index.ts +++ b/packages/ot-config/src/index.ts @@ -1,6 +1,6 @@ -export * from "./types"; export * from "./environment"; export * from "./theme"; +export * from "./types"; // Add window augmentation declare global { diff --git a/packages/ot-config/src/theme.ts b/packages/ot-config/src/theme.ts index c6385df54..b2d5a9ce8 100644 --- a/packages/ot-config/src/theme.ts +++ b/packages/ot-config/src/theme.ts @@ -1,6 +1,6 @@ -import { lighten, darken } from "polished"; import { grey } from "@mui/material/colors"; -import { ThemeOptions, createTheme } from "@mui/material/styles"; +import { createTheme, type ThemeOptions } from "@mui/material/styles"; +import { darken, lighten } from "polished"; import { getConfig } from "./environment"; const config = getConfig(); From cff24118469aad3a9718617b964fb08d62a991f1 Mon Sep 17 00:00:00 2001 From: Carlos Cruz Date: Mon, 27 Oct 2025 15:20:13 +0000 Subject: [PATCH 09/10] [ot-utils]: lint on (#822) --- biome.json | 1 + packages/ot-utils/src/alphaFold.ts | 29 +++++----- packages/ot-utils/src/comparators.ts | 54 ++++++++++++----- packages/ot-utils/src/createScopedContext.tsx | 28 ++++----- packages/ot-utils/src/downloads.js | 58 +++++++++---------- packages/ot-utils/src/fetch.ts | 4 +- packages/ot-utils/src/formatters.ts | 4 +- packages/ot-utils/src/global.ts | 8 +-- packages/ot-utils/src/index.ts | 16 ++--- packages/ot-utils/src/interactors.ts | 21 +++++-- packages/ot-utils/src/searchSuggestions.ts | 2 +- packages/ot-utils/src/study.js | 4 +- packages/ot-utils/src/urls.ts | 14 ++--- packages/ot-utils/src/variant.ts | 3 +- 14 files changed, 136 insertions(+), 110 deletions(-) diff --git a/biome.json b/biome.json index 8b0d29cc4..b1509b0e5 100644 --- a/biome.json +++ b/biome.json @@ -31,6 +31,7 @@ "!**/apps/platform/src", "!**/packages/ui", "!**/packages/sections", + "!**/packages/ot-config", "!**/packages/ot-constants", "!**/packages/ot-utils" ] diff --git a/packages/ot-utils/src/alphaFold.ts b/packages/ot-utils/src/alphaFold.ts index a0779694f..7d655aadf 100644 --- a/packages/ot-utils/src/alphaFold.ts +++ b/packages/ot-utils/src/alphaFold.ts @@ -1,7 +1,7 @@ import { csvParse, mean } from "d3"; import { safeFetch } from "./fetch"; -import { alphaFoldPathogenicityUrl, alphaFoldDomainsUrl } from "./urls"; - +import { alphaFoldDomainsUrl, alphaFoldPathogenicityUrl } from "./urls"; + // returns map of pathogenicity scores grouped by residue index (number). Each // group is an array of objects giving pathogencity scores for alternate amino // acids: @@ -9,21 +9,20 @@ import { alphaFoldPathogenicityUrl, alphaFoldDomainsUrl } from "./urls"; // protein_variant (string): e.g. "M1E" - current AA, residue index, alternate AA // am_pathogenicity (string): score // am_class (string) -// } +// } export async function fetchPathogenicityScores(uniprotId: string) { - const [scoresCSV, error] = - await safeFetch(alphaFoldPathogenicityUrl(uniprotId), "text"); + const [scoresCSV, error] = await safeFetch(alphaFoldPathogenicityUrl(uniprotId), "text"); if (error) return [undefined, error]; const scores = Map.groupBy( - csvParse(scoresCSV), // string -> array of objects - row => Number(row.protein_variant.match(/\d+/)[0]) + csvParse(scoresCSV), // string -> array of objects + (row) => Number(row.protein_variant.match(/\d+/)[0]) ); return [scores, undefined]; -}; +} export async function fetchDomains(uniprotId: string) { return safeFetch(alphaFoldDomainsUrl(uniprotId), "json"); -}; +} // returns map: // - key (number): residue index @@ -31,7 +30,10 @@ export async function fetchDomains(uniprotId: string) { export function meanPathogenicityScores(pathogenicityScores) { const meanScores = new Map(); for (const [resi, group] of pathogenicityScores) { - meanScores.set(resi, mean(group, d => Number(d.am_pathogenicity))); + meanScores.set( + resi, + mean(group, (d) => Number(d.am_pathogenicity)) + ); } return meanScores; } @@ -40,13 +42,12 @@ export function meanPathogenicityScores(pathogenicityScores) { export function pickPathogenicityScore(pathogenicityScores, resi, alternateAminoAcid) { const row = pathogenicityScores .get(Number(resi)) - .find(row => row.protein_variant.at(-1) === alternateAminoAcid); + .find((row) => row.protein_variant.at(-1) === alternateAminoAcid); return row ? Number(row.am_pathogenicity) : undefined; } export function processDomains(domains) { - const uniqueDescriptions = - [...new Set(domains.map(domain => domain.description))]; + const uniqueDescriptions = [...new Set(domains.map((domain) => domain.description))]; const descriptionToIndex = {}; for (const [index, description] of uniqueDescriptions.entries()) { descriptionToIndex[description] = index; @@ -63,4 +64,4 @@ export function processDomains(domains) { descriptionToIndex, getDescription, }; -} \ No newline at end of file +} diff --git a/packages/ot-utils/src/comparators.ts b/packages/ot-utils/src/comparators.ts index 2c54d66de..215559a89 100644 --- a/packages/ot-utils/src/comparators.ts +++ b/packages/ot-utils/src/comparators.ts @@ -2,19 +2,25 @@ Example usage: const comparatorDiseaseName = generateComparatorFromAccessor(d => d.disease.name); */ -export const generateComparatorFromAccessor = accessor => (a, b) => { - const aValue = accessor(a); - const bValue = accessor(b); - if (aValue > bValue) return 1; - if (aValue === bValue) return 0; - return -1; -}; +export const generateComparatorFromAccessor = + (accessor: (item: T) => string | number) => + (a: T, b: T) => { + const aValue = accessor(a); + const bValue = accessor(b); + if (aValue > bValue) return 1; + if (aValue === bValue) return 0; + return -1; + }; /* Return comparator that sorts nullish values to end */ -export const nullishComparator = (comparator, accessor = x => x, nullishIsMax = true) => { - return (a, b) => { +export const nullishComparator = ( + comparator: (a: unknown, b: unknown) => number, + accessor: (x: T) => unknown = (x: T) => x, + nullishIsMax = true +) => { + return (a: T, b: T) => { const aVal = accessor(a); const bVal = accessor(b); if (!aVal && aVal !== 0) { @@ -29,8 +35,12 @@ export const nullishComparator = (comparator, accessor = x => x, nullishIsMax = /* Return comparator that sorts NaNs to end */ -export const nanComparator = (comparator, accessor = x => x, nanIsMax = true) => { - return (a, b) => { +export const nanComparator = ( + comparator: (a: unknown, b: unknown) => number, + accessor: (x: T) => unknown = (x: T) => x, + nanIsMax = true +) => { + return (a: T, b: T) => { const aVal = accessor(a); const bVal = accessor(b); if (Number.isNaN(aVal)) { @@ -45,14 +55,18 @@ export const nanComparator = (comparator, accessor = x => x, nanIsMax = true) => /* Compares a breakpoint against a breakpoint helper. */ -export const breakpointMatch = (breakpoint, breakpointHelper) => { - const breakpointMap = { xs: 0, sm: 1, md: 2, lg: 3, xl: 4 }; +export const breakpointMatch = (breakpoint: string, breakpointHelper: string) => { + const breakpointMap: Record = { xs: 0, sm: 1, md: 2, lg: 3, xl: 4 }; const isDownComparator = breakpointHelper.includes("Down"); const isUpComparator = breakpointHelper.includes("Up"); const breakpointIndex = breakpointMap[breakpoint]; const breakpointHelperIndex = breakpointMap[breakpointHelper.replace(/Down|Up|Only/g, "")]; + if (breakpointIndex === undefined || breakpointHelperIndex === undefined) { + return false; + } + if (breakpointIndex === breakpointHelperIndex) { return true; } @@ -85,8 +99,10 @@ type VariantType = { alternateAllele: string; }; -export function variantComparator(accessor: (arg: any) => VariantType = d => d) { - return function (obj1: any, obj2: any) { +export function variantComparator( + accessor: (arg: unknown) => VariantType = (d: unknown) => d as VariantType +) { + return (obj1: unknown, obj2: unknown) => { const v1 = accessor(obj1); const v2 = accessor(obj2); @@ -107,7 +123,13 @@ export function variantComparator(accessor: (arg: any) => VariantType = d => d) }; } -export function mantissaExponentComparator(m1, e1, m2, e2, nullishIsMax = true) { +export function mantissaExponentComparator( + m1: number | null, + e1: number | null, + m2: number | null, + e2: number | null, + nullishIsMax = true +) { if (m1 == null || e1 == null) { if (m2 == null || e2 == null) return 0; return nullishIsMax ? 1 : -1; diff --git a/packages/ot-utils/src/createScopedContext.tsx b/packages/ot-utils/src/createScopedContext.tsx index 1a3e4abc2..e335b5324 100644 --- a/packages/ot-utils/src/createScopedContext.tsx +++ b/packages/ot-utils/src/createScopedContext.tsx @@ -1,31 +1,28 @@ -import { useReducer, useContext, createContext } from "react"; +import { createContext, useContext, useReducer } from "react"; export function createScopedContext({ - name, - extraStateProperties = {}, // key-value pairs are propertyName: initialValue - extraActions = {}, // key-value pairs are actionType: (state, action) => newState - }) { + name, + extraStateProperties = {}, // key-value pairs are propertyName: initialValue + extraActions = {}, // key-value pairs are actionType: (state, action) => newState +}) { const StateContext = createContext(null); const DispatchContext = createContext(null); const ScopedProvider = ({ reducer, initialState = {}, children }) => { - function wrappedReducer(state, action) { return extraActions[action.type] ? extraActions[action.type](state, action) - : reducer(state, action); + : reducer(state, action); } - const [state, dispatch] = useReducer( - wrappedReducer, - {...initialState, ...extraStateProperties} - ); + const [state, dispatch] = useReducer(wrappedReducer, { + ...initialState, + ...extraStateProperties, + }); return ( - - {children} - + {children} ); }; @@ -50,6 +47,5 @@ export function createScopedContext({ ScopedProvider, useScopedState, useScopedDispatch, - } + }; } - diff --git a/packages/ot-utils/src/downloads.js b/packages/ot-utils/src/downloads.js index fe101d415..bc477fa40 100644 --- a/packages/ot-utils/src/downloads.js +++ b/packages/ot-utils/src/downloads.js @@ -3,28 +3,26 @@ import _ from "lodash"; const targetName = { id: "symbol", label: "Symbol", - exportValue: data => data.target.approvedSymbol, + exportValue: (data) => data.target.approvedSymbol, }; const diseaseName = { id: "disease", label: "Disease", - exportValue: data => data.disease.name, + exportValue: (data) => data.disease.name, }; const asJSON = (columns, rows) => { - const rowStrings = rows.map(row => + const rowStrings = rows.map((row) => columns.reduce((accumulator, newKey) => { if (newKey.exportValue === false) return accumulator; const newLabel = _.camelCase(newKey.exportLabel || newKey.label || newKey.id); - return { - ...accumulator, - [newLabel]: newKey.exportValue - ? newKey.exportValue(row) - : _.get(row, newKey.propertyPath || newKey.id, ""), - }; + accumulator[newLabel] = newKey.exportValue + ? newKey.exportValue(row) + : _.get(row, newKey.propertyPath || newKey.id, ""); + return accumulator; }, {}) ); @@ -38,12 +36,13 @@ const getHeaderString = ({ columns, quoteString, separator }) => const newLabel = quoteString(_.camelCase(column.exportLabel || column.label || column.id)); - return [...headerString, newLabel]; + headerString.push(newLabel); + return headerString; }, []) .join(separator); const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { - const quoteString = d => { + const quoteString = (d) => { let result = d; // converts arrays to strings if (Array.isArray(d)) { @@ -57,7 +56,7 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { const headerString = getHeaderString({ columns, quoteString, separator }); const rowStrings = rows - .map(row => + .map((row) => columns .reduce((rowString, column) => { if (column.exportValue === false) return rowString; @@ -68,7 +67,8 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { : _.get(row, column.propertyPath || column.id, "") ); - return [...rowString, newValue]; + rowString.push(newValue); + return rowString; }, []) .join(separator) ) @@ -77,7 +77,7 @@ const asDSV = (columns, rows, separator = ",", quoteStrings = true) => { return [headerString, rowStrings].join(lineSeparator); }; -export const getRowsQuerySelector = entityToGet => +export const getRowsQuerySelector = (entityToGet) => entityToGet === "target" ? "data.disease.associatedTargets" : "data.target.associatedDiseases"; export const getExportedColumns = (entityToGet, assocArr, prioArr, pinnedArr) => { @@ -88,8 +88,8 @@ export const getExportedColumns = (entityToGet, assocArr, prioArr, pinnedArr) => const isPinnedObj = [ { id: "isPinned", - exportValue: data => - pinnedArr.some(currentValue => currentValue.id === data[entityToGet].id), + exportValue: (data) => + pinnedArr.some((currentValue) => currentValue.id === data[entityToGet].id), }, ]; exportedColumns = [...exportedColumns, ...isPinnedObj]; @@ -97,9 +97,9 @@ export const getExportedColumns = (entityToGet, assocArr, prioArr, pinnedArr) => const sources = assocArr.map(({ id }) => ({ id, - exportValue: data => { + exportValue: (data) => { const datatypeScore = data.datasourceScores.find( - datasourceScore => datasourceScore.componentId === id + (datasourceScore) => datasourceScore.componentId === id ); return datatypeScore ? parseFloat(datatypeScore.score) : "No data"; }, @@ -110,9 +110,9 @@ export const getExportedColumns = (entityToGet, assocArr, prioArr, pinnedArr) => if (entityToGet === "target") { const prioritisationExportCols = prioArr.map(({ id }) => ({ id, - exportValue: data => { + exportValue: (data) => { const prioritisationScore = data.target.prioritisation.items.find( - prioritisationItem => prioritisationItem.key === id + (prioritisationItem) => prioritisationItem.key === id ); return prioritisationScore ? parseFloat(prioritisationScore.value) : "No data"; }, @@ -126,7 +126,7 @@ export const getExportedColumns = (entityToGet, assocArr, prioArr, pinnedArr) => { id: "globalScore", label: "Global Score", - exportValue: data => data.score, + exportValue: (data) => data.score, }, ...exportedColumns, ]; @@ -139,8 +139,8 @@ export const getExportedPrioritisationColumns = (arr, pinnedArr, entityToGet) => const isPinnedObj = [ { id: "isPinned", - exportValue: data => - pinnedArr.some(currentValue => currentValue.id === data[entityToGet].id), + exportValue: (data) => + pinnedArr.some((currentValue) => currentValue.id === data[entityToGet].id), }, ]; exportedColumns = [...exportedColumns, ...isPinnedObj]; @@ -148,9 +148,9 @@ export const getExportedPrioritisationColumns = (arr, pinnedArr, entityToGet) => const prioritisationExportCols = arr.map(({ id }) => ({ id, - exportValue: data => { + exportValue: (data) => { const prioritisationScore = data.target.prioritisation.items.find( - prioritisationItem => prioritisationItem.key === id + (prioritisationItem) => prioritisationItem.key === id ); return prioritisationScore ? parseFloat(prioritisationScore.value) : "No data"; }, @@ -163,13 +163,13 @@ export const getExportedPrioritisationColumns = (arr, pinnedArr, entityToGet) => { id: "globalScore", label: "Global Score", - exportValue: data => data.score, + exportValue: (data) => data.score, }, ...exportedColumns, ]; }; -export const createBlob = format => +export const createBlob = (format) => ({ json: (columns, rows) => new Blob([asJSON(columns, rows)], { @@ -183,10 +183,10 @@ export const createBlob = format => new Blob([asDSV(columns, rows, "\t", false)], { type: "text/tab-separated-values;charset=utf-8", }), - }[format]); + })[format]; export const getFilteredColumnArray = (selectArray, requestArray) => { - const arr = selectArray.map(ag => requestArray.filter(e => e.aggregation === ag)).flat(1); + const arr = selectArray.flatMap((ag) => requestArray.filter((e) => e.aggregation === ag)); return arr.length > 0 ? arr : []; }; diff --git a/packages/ot-utils/src/fetch.ts b/packages/ot-utils/src/fetch.ts index 788697bda..6e4a92623 100644 --- a/packages/ot-utils/src/fetch.ts +++ b/packages/ot-utils/src/fetch.ts @@ -8,8 +8,8 @@ export async function safeFetch( if (!response.ok) { throw new Error(`HTTP error ${response.status}: ${response.statusText}`); } - return [(parseAs ? (await response[parseAs]()) : response), undefined]; + return [parseAs ? await response[parseAs]() : response, undefined]; } catch (error) { return [undefined, error]; } -} \ No newline at end of file +} diff --git a/packages/ot-utils/src/formatters.ts b/packages/ot-utils/src/formatters.ts index 0bb51859a..5b5467621 100644 --- a/packages/ot-utils/src/formatters.ts +++ b/packages/ot-utils/src/formatters.ts @@ -22,11 +22,9 @@ export function formatSignificantDigits( const magnitude = Math.floor(Math.log10(absNum)) + 1; // digits before decimal const decimalPlaces = Math.max(0, 3 - magnitude); - const rounded = Math.round(absNum * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces); + const rounded = Math.round(absNum * 10 ** decimalPlaces) / 10 ** decimalPlaces; const formatted = rounded.toFixed(decimalPlaces); const trimmed = formatted.replace(/\.?0+$/, ""); return num < 0 ? `-${trimmed}` : trimmed; } - - diff --git a/packages/ot-utils/src/global.ts b/packages/ot-utils/src/global.ts index e6e1a6be3..f39bdf63c 100644 --- a/packages/ot-utils/src/global.ts +++ b/packages/ot-utils/src/global.ts @@ -1,5 +1,5 @@ -import { format } from "d3-format"; import { getConfig } from "@ot/config"; +import { format } from "d3-format"; const config = getConfig(); @@ -35,8 +35,8 @@ export const formatComma = format(","); export function getUniprotIds(proteinIds: ProteinId[]): string[] { return proteinIds - .filter(proteinId => proteinId.source === "uniprot_swissprot") - .map(proteinId => proteinId.id); + .filter((proteinId) => proteinId.source === "uniprot_swissprot") + .map((proteinId) => proteinId.id); } const makePmidLink = (themeColor: string) => { @@ -52,7 +52,7 @@ export function clearDescriptionCodes( themeColor: string ): string[] { if (!descriptions) return []; - return descriptions.map(desc => { + return descriptions.map((desc) => { const codeStart = desc.indexOf("{"); const parsedDesc = desc.slice(0, codeStart); return parsedDesc.replace(/Pubmed:\d+/gi, makePmidLink(themeColor)); diff --git a/packages/ot-utils/src/index.ts b/packages/ot-utils/src/index.ts index 58c60ff85..c6b755b9b 100644 --- a/packages/ot-utils/src/index.ts +++ b/packages/ot-utils/src/index.ts @@ -1,13 +1,13 @@ -export * from "./searchSuggestions"; +export * from "./alphaFold"; +export * from "./comparators"; +export * from "./createScopedContext"; export * from "./downloads"; export * from "./fetch"; -export * from "./interactors"; +export * from "./formatters"; export * from "./global"; -export * from "./urls"; -export * from "./comparators"; -export * from "./study"; +export * from "./interactors"; export * from "./literature"; +export * from "./searchSuggestions"; +export * from "./study"; +export * from "./urls"; export * from "./variant"; -export * from "./createScopedContext"; -export * from "./alphaFold"; -export * from "./formatters"; diff --git a/packages/ot-utils/src/interactors.ts b/packages/ot-utils/src/interactors.ts index 9ad13b011..d7735ca4a 100644 --- a/packages/ot-utils/src/interactors.ts +++ b/packages/ot-utils/src/interactors.ts @@ -19,8 +19,21 @@ export const INTERACTORS_SOURCE_THRESHOLD = { [INTERACTORS_SOURCES.REACTOME]: null, }; -// TODO: refactor to remove any -export function getInteractorIds(targetRowInteractorsRequest: any) { +interface TargetRowInteractorsRequest { + data?: { + target?: { + interactions?: { + rows?: Array<{ + targetB?: { + id: string; + }; + }>; + }; + }; + }; +} + +export function getInteractorIds(targetRowInteractorsRequest: TargetRowInteractorsRequest) { if (!targetRowInteractorsRequest?.data?.target?.interactions?.rows) { return []; } @@ -28,8 +41,8 @@ export function getInteractorIds(targetRowInteractorsRequest: any) { const interactorsIds = [ ...new Set( targetRowInteractorsRequest.data.target.interactions.rows - .map(int => int.targetB?.id) - .filter(id => id !== null && id !== undefined) + .map((int) => int.targetB?.id) + .filter((id) => id !== null && id !== undefined) ), ]; diff --git a/packages/ot-utils/src/searchSuggestions.ts b/packages/ot-utils/src/searchSuggestions.ts index 4b2071963..5305d08c5 100644 --- a/packages/ot-utils/src/searchSuggestions.ts +++ b/packages/ot-utils/src/searchSuggestions.ts @@ -1,4 +1,4 @@ -import { searchSuggestions, SearchSuggestions, Suggestion } from "@ot/constants"; +import { type SearchSuggestions, type Suggestion, searchSuggestions } from "@ot/constants"; /** * Efficiently selects n random elements from an array without modifying the original. diff --git a/packages/ot-utils/src/study.js b/packages/ot-utils/src/study.js index 8c1f6a183..1574ccc68 100644 --- a/packages/ot-utils/src/study.js +++ b/packages/ot-utils/src/study.js @@ -5,8 +5,8 @@ export function getStudyCategory(projectId) { return "QTL"; } -export const getStudyTypeDisplay = studyType => { - if (studyType) return studyType?.replace(/(qtl|gwas)/gi, match => match.toUpperCase()); +export const getStudyTypeDisplay = (studyType) => { + if (studyType) return studyType?.replace(/(qtl|gwas)/gi, (match) => match.toUpperCase()); return studyType; }; diff --git a/packages/ot-utils/src/urls.ts b/packages/ot-utils/src/urls.ts index 8aee9b5cc..8bd51a4ab 100644 --- a/packages/ot-utils/src/urls.ts +++ b/packages/ot-utils/src/urls.ts @@ -14,12 +14,6 @@ interface SearchPostResult { requestOptions?: RequestOptions; } -interface PublicationSummaryParams { - pmcId: string; - symbol: string; - name: string; -} - export function epmcUrl(id: string): string { return `https://europepmc.org/article/MED/${id}`; } @@ -39,11 +33,11 @@ export function europePmcLiteratureQuery(ids: string[]): string { export const encodeParams = (params: Record): string => { const formBody: string[] = []; - Object.keys(params).forEach(key => { + for (const key of Object.keys(params)) { const encodedKey = encodeURIComponent(key); - const encodedValue = encodeURIComponent(params[key]); + const encodedValue = encodeURIComponent(params[key] ?? ""); formBody.push(`${encodedKey}=${encodedValue}`); - }); + } return formBody.join("&"); }; @@ -89,7 +83,7 @@ function emaUrl() { return "https://www.ema.europa.eu/en/medicines"; } -function usanUrl(id) { +function usanUrl(id: string) { return `https://searchusan.ama-assn.org/finder/usan/search/${id}/relevant/1`; } diff --git a/packages/ot-utils/src/variant.ts b/packages/ot-utils/src/variant.ts index 060f81ce6..10f299ebd 100644 --- a/packages/ot-utils/src/variant.ts +++ b/packages/ot-utils/src/variant.ts @@ -3,7 +3,8 @@ export function processVariantId(id: string, referenceAllele: string, alternateA if (idParts[0] === "OTVAR") { idParts.shift(); } - let isHashed, stem; + let isHashed: boolean; + let stem: string; if (idParts.at(-2) === referenceAllele && idParts.at(-1) === alternateAllele) { isHashed = false; stem = idParts.slice(0, -2).join("_"); From 101e0369c3c0a32d7338a49d3b9f16d1393ca8bc Mon Sep 17 00:00:00 2001 From: Graham McNeill Date: Mon, 27 Oct 2025 15:21:14 +0000 Subject: [PATCH 10/10] [ot-constants]: lint on (#826) --- biome.json | 3 +- .../scripts/generate-graphql-types.js | 38 +- packages/ot-constants/src/alphaFold.ts | 16 +- packages/ot-constants/src/index.ts | 48 +- .../ot-constants/src/partnerPreviewUtils.ts | 13 +- .../ot-constants/src/types/graphql-types.ts | 19 +- yarn.lock | 692 +++++++++--------- 7 files changed, 425 insertions(+), 404 deletions(-) diff --git a/biome.json b/biome.json index b1509b0e5..74cc96e06 100644 --- a/biome.json +++ b/biome.json @@ -32,7 +32,8 @@ "!**/packages/ui", "!**/packages/sections", "!**/packages/ot-config", - "!**/packages/ot-constants", + "**/packages/ot-constants", + "!**/packages/ot-constants/src/types", "!**/packages/ot-utils" ] }, diff --git a/packages/ot-constants/scripts/generate-graphql-types.js b/packages/ot-constants/scripts/generate-graphql-types.js index 7434c5b7e..da653f152 100644 --- a/packages/ot-constants/scripts/generate-graphql-types.js +++ b/packages/ot-constants/scripts/generate-graphql-types.js @@ -1,8 +1,8 @@ #!/usr/bin/env node -import fs from "fs"; -import path from "path"; -import { fileURLToPath } from "url"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -148,7 +148,7 @@ function generateTypeScriptInterface(type) { let interfaceCode = `export interface ${type.name} {\n`; - fields.forEach(field => { + for (const field of fields) { const fieldType = graphqlTypeToTypeScript(field.type); const isOptional = field.type.kind !== "NON_NULL"; const optionalMarker = isOptional ? "?" : ""; @@ -157,7 +157,7 @@ function generateTypeScriptInterface(type) { interfaceCode += ` /** ${field.description} */\n`; } interfaceCode += ` ${field.name}${optionalMarker}: ${fieldType};\n`; - }); + } interfaceCode += "}\n\n"; return interfaceCode; @@ -171,12 +171,12 @@ function generateTypeScriptEnum(type) { let enumCode = `export enum ${type.name} {\n`; - type.enumValues.forEach(enumValue => { + for (const enumValue of type.enumValues) { if (enumValue.description) { enumCode += ` /** ${enumValue.description} */\n`; } enumCode += ` ${enumValue.name} = '${enumValue.name}',\n`; - }); + } enumCode += "}\n\n"; return enumCode; @@ -188,7 +188,7 @@ function generateTypeScriptUnion(type) { return null; } - const possibleTypes = type.possibleTypes.map(t => t.name).join(" | "); + const possibleTypes = type.possibleTypes.map((t) => t.name).join(" | "); return `export type ${type.name} = ${possibleTypes};\n\n`; } @@ -209,7 +209,7 @@ async function testEndpoint(endpoint) { if (response.ok) { const result = await response.json(); - if (result.data && result.data.__schema) { + if (result.data?.__schema) { console.log(`✅ Endpoint working: ${endpoint}`); return result; } @@ -246,7 +246,7 @@ async function generateGraphQLTypes() { const schema = result.data.__schema; const types = schema.types.filter( - type => + (type) => !type.name.startsWith("__") && type.name !== "Query" && type.name !== "Mutation" && @@ -263,32 +263,32 @@ async function generateGraphQLTypes() { // Generate interfaces and input types const objectTypes = types.filter( - type => type.kind === "OBJECT" || type.kind === "INPUT_OBJECT" + (type) => type.kind === "OBJECT" || type.kind === "INPUT_OBJECT" ); - objectTypes.forEach(type => { + for (const type of objectTypes) { const interfaceCode = generateTypeScriptInterface(type); if (interfaceCode) { generatedCode += interfaceCode; } - }); + } // Generate enums - const enumTypes = types.filter(type => type.kind === "ENUM"); - enumTypes.forEach(type => { + const enumTypes = types.filter((type) => type.kind === "ENUM"); + for (const type of enumTypes) { const enumCode = generateTypeScriptEnum(type); if (enumCode) { generatedCode += enumCode; } - }); + } // Generate union types - const unionTypes = types.filter(type => type.kind === "UNION"); - unionTypes.forEach(type => { + const unionTypes = types.filter((type) => type.kind === "UNION"); + for (const type of unionTypes) { const unionCode = generateTypeScriptUnion(type); if (unionCode) { generatedCode += unionCode; } - }); + } // Write the generated types to a file in the types folder const outputPath = path.join(__dirname, "..", "src", "types", "graphql-types.ts"); diff --git a/packages/ot-constants/src/alphaFold.ts b/packages/ot-constants/src/alphaFold.ts index 65b01c6b6..539339ce4 100644 --- a/packages/ot-constants/src/alphaFold.ts +++ b/packages/ot-constants/src/alphaFold.ts @@ -1,4 +1,4 @@ -import { scaleLinear, interpolateLab, rgb, scaleQuantize } from "d3"; +import { interpolateLab, rgb, scaleLinear } from "d3"; export const alphaFoldConfidenceBands = [ { lowerLimit: 90, label: "Very high", sublabel: "90 > pLDDT", color: "rgb(0, 83, 214)" }, @@ -12,7 +12,10 @@ export const alphaFoldConfidenceBands = [ { lowerLimit: 0, label: "Very low ", sublabel: "50 > pLDDT", color: "rgb(255, 125, 69)" }, ]; -export function getAlphaFoldConfidence(atom, propertyName = "label") { +export function getAlphaFoldConfidence( + atom: { b: number }, + propertyName: "label" | "sublabel" | "color" = "label" +): string { for (const obj of alphaFoldConfidenceBands) { if (atom.b > obj.lowerLimit) return obj[propertyName]; } @@ -35,7 +38,10 @@ export const alphaFoldPathogenicityBands = [ { lowerLimit: 0, label: "Likely benign", sublabel: "score < 0.34", color: "rgb(61, 84, 147)" }, ]; -export function getAlphaFoldPathogenicity(score, propertyName = "label") { +export function getAlphaFoldPathogenicity( + score: number, + propertyName: "label" | "sublabel" | "color" = "label" +): string { for (const obj of alphaFoldPathogenicityBands) { if (score > obj.lowerLimit) return obj[propertyName]; } @@ -59,7 +65,7 @@ export const alphaFoldPathogenicityColorScale = scaleLinear() // only some of the scale breakpoints are meaningful for the legend alphaFoldPathogenicityColorScale._primaryDomain = [0, 0.34, 0.564, 1]; -export function getAlphaFoldPathogenicityColor(score) { +export function getAlphaFoldPathogenicityColor(score: number) { return alphaFoldPathogenicityColorScale(score); } @@ -109,4 +115,4 @@ export const aminoAcidHydrophobicity = { GLU: { value: -31, label: "hydrophilic" }, PRO: { value: -46, label: "hydrophilic" }, ASP: { value: -55, label: "hydrophilic" }, -}; \ No newline at end of file +}; diff --git a/packages/ot-constants/src/index.ts b/packages/ot-constants/src/index.ts index 638d9bb76..e6191cc0e 100644 --- a/packages/ot-constants/src/index.ts +++ b/packages/ot-constants/src/index.ts @@ -1,12 +1,12 @@ -import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; -import { faBook, faEnvelope } from "@fortawesome/free-solid-svg-icons"; +import type { IconDefinition } from "@fortawesome/fontawesome-svg-core"; import { faDiscourse, - faTwitterSquare, - faLinkedin, faGithubSquare, + faLinkedin, + faTwitterSquare, faYoutubeSquare, } from "@fortawesome/free-brands-svg-icons"; +import { faBook, faEnvelope } from "@fortawesome/free-solid-svg-icons"; import { getConfig } from "@ot/config"; const config = getConfig(); @@ -303,7 +303,9 @@ export const VIEW = { table: "Table", }; -export const getStudyTypeDisplay = (studyType: string | null | undefined): string | null | undefined => { +export const getStudyTypeDisplay = ( + studyType: string | null | undefined +): string | null | undefined => { if (studyType) return studyType?.replace(/(qtl|gwas)/gi, (match: string) => match.toUpperCase()); return studyType; }; @@ -311,7 +313,7 @@ export const getStudyTypeDisplay = (studyType: string | null | undefined): strin export const getStudyItemMetaData = ({ studyType, credibleSetsCount, - nSamples + nSamples, }: { studyType?: string; credibleSetsCount: number; @@ -326,26 +328,32 @@ export const getStudyItemMetaData = ({ return metaData; }; -export const getGenomicLocation = (genomicLocation: { - chromosome?: string; - start?: number; - end?: number; - strand?: number; -} | null | undefined) => { +export const getGenomicLocation = ( + genomicLocation: + | { + chromosome?: string; + start?: number; + end?: number; + strand?: number; + } + | null + | undefined +) => { /**** * TODO: add GRCh38 to this function * check all the locations we are using this * option 1: getGenomicLocation() -> ["GRCh38", "chromosome-string"] * option 2: getGenomicLocation("GRCh38") -> "GRCh38|chromosome-string" ****/ - return `${genomicLocation?.chromosome}:${genomicLocation?.start}-${genomicLocation?.end},${Math.sign(genomicLocation?.strand) === 1 ? "+" : "-" - }`; + return `${genomicLocation?.chromosome}:${genomicLocation?.start}-${genomicLocation?.end},${ + Math.sign(genomicLocation?.strand ?? 1) === 1 ? "+" : "-" + }`; }; -export * from "./dataTypes"; -export * from "./types/response"; -export * from "./types/graphql-types"; -export * from "./searchSuggestions"; -export * from "./partnerPreviewUtils"; export * from "./alphaFold"; +export * from "./dataTypes"; export * from "./particlesBackground"; -export * from "./variant"; \ No newline at end of file +export * from "./partnerPreviewUtils"; +export * from "./searchSuggestions"; +export * from "./types/graphql-types"; +export * from "./types/response"; +export * from "./variant"; diff --git a/packages/ot-constants/src/partnerPreviewUtils.ts b/packages/ot-constants/src/partnerPreviewUtils.ts index f4ea08edb..5945bab38 100644 --- a/packages/ot-constants/src/partnerPreviewUtils.ts +++ b/packages/ot-constants/src/partnerPreviewUtils.ts @@ -3,11 +3,12 @@ import { getConfig } from "@ot/config"; const config = getConfig(); // page sections -export const isPrivateTargetSection = id => config.profile.partnerTargetSectionIds.includes(id); -export const isPrivateDiseaseSection = id => config.profile.partnerDiseaseSectionIds.includes(id); -export const isPrivateDrugSection = id => config.profile.partnerDrugSectionIds.includes(id); -export const isPrivateEvidenceSection = id => config.profile.partnerEvidenceSectionIds.includes(id); +export const isPrivateTargetSection = (id) => config.profile.partnerTargetSectionIds.includes(id); +export const isPrivateDiseaseSection = (id) => config.profile.partnerDiseaseSectionIds.includes(id); +export const isPrivateDrugSection = (id) => config.profile.partnerDrugSectionIds.includes(id); +export const isPrivateEvidenceSection = (id) => + config.profile.partnerEvidenceSectionIds.includes(id); // associations -export const isPrivateDataType = id => config.profile.partnerDataTypes.includes(id); -export const isPrivateDataSource = id => config.profile.partnerDataSources.includes(id); +export const isPrivateDataType = (id) => config.profile.partnerDataTypes.includes(id); +export const isPrivateDataSource = (id) => config.profile.partnerDataSources.includes(id); diff --git a/packages/ot-constants/src/types/graphql-types.ts b/packages/ot-constants/src/types/graphql-types.ts index b927d9b89..f2e23f102 100644 --- a/packages/ot-constants/src/types/graphql-types.ts +++ b/packages/ot-constants/src/types/graphql-types.ts @@ -1438,16 +1438,15 @@ export interface geneticVariation { } export enum StudyTypeEnum { - eqtl = 'eqtl', - gwas = 'gwas', - pqtl = 'pqtl', - sceqtl = 'sceqtl', - scpqtl = 'scpqtl', - scsqtl = 'scsqtl', - sctuqtl = 'sctuqtl', - sqtl = 'sqtl', - tuqtl = 'tuqtl', + eqtl = "eqtl", + gwas = "gwas", + pqtl = "pqtl", + sceqtl = "sceqtl", + scpqtl = "scpqtl", + scsqtl = "scsqtl", + sctuqtl = "sctuqtl", + sqtl = "sqtl", + tuqtl = "tuqtl", } export type EntityUnionType = Target | Drug | Disease | Variant | Study; - diff --git a/yarn.lock b/yarn.lock index 7711eb1b3..7cfcf633c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -454,135 +454,135 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@esbuild/aix-ppc64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" - integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== - -"@esbuild/android-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" - integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== - -"@esbuild/android-arm@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" - integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== - -"@esbuild/android-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" - integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== - -"@esbuild/darwin-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" - integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== - -"@esbuild/darwin-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" - integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== - -"@esbuild/freebsd-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" - integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== - -"@esbuild/freebsd-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" - integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== - -"@esbuild/linux-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" - integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== - -"@esbuild/linux-arm@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" - integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== - -"@esbuild/linux-ia32@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" - integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== - -"@esbuild/linux-loong64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" - integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== - -"@esbuild/linux-mips64el@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" - integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== - -"@esbuild/linux-ppc64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" - integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== - -"@esbuild/linux-riscv64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" - integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== - -"@esbuild/linux-s390x@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" - integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== - -"@esbuild/linux-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" - integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== - -"@esbuild/netbsd-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" - integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== - -"@esbuild/netbsd-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" - integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== - -"@esbuild/openbsd-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" - integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== - -"@esbuild/openbsd-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" - integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== - -"@esbuild/openharmony-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" - integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== - -"@esbuild/sunos-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" - integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== - -"@esbuild/win32-arm64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" - integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== - -"@esbuild/win32-ia32@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" - integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== - -"@esbuild/win32-x64@0.25.9": - version "0.25.9" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" - integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== +"@esbuild/aix-ppc64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz#ee6b7163a13528e099ecf562b972f2bcebe0aa97" + integrity sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw== + +"@esbuild/android-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz#115fc76631e82dd06811bfaf2db0d4979c16e2cb" + integrity sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg== + +"@esbuild/android-arm@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.10.tgz#8d5811912da77f615398611e5bbc1333fe321aa9" + integrity sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w== + +"@esbuild/android-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.10.tgz#e3e96516b2d50d74105bb92594c473e30ddc16b1" + integrity sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg== + +"@esbuild/darwin-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz#6af6bb1d05887dac515de1b162b59dc71212ed76" + integrity sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA== + +"@esbuild/darwin-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz#99ae82347fbd336fc2d28ffd4f05694e6e5b723d" + integrity sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg== + +"@esbuild/freebsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz#0c6d5558a6322b0bdb17f7025c19bd7d2359437d" + integrity sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg== + +"@esbuild/freebsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz#8c35873fab8c0857a75300a3dcce4324ca0b9844" + integrity sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA== + +"@esbuild/linux-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz#3edc2f87b889a15b4cedaf65f498c2bed7b16b90" + integrity sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ== + +"@esbuild/linux-arm@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz#86501cfdfb3d110176d80c41b27ed4611471cde7" + integrity sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg== + +"@esbuild/linux-ia32@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz#e6589877876142537c6864680cd5d26a622b9d97" + integrity sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ== + +"@esbuild/linux-loong64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz#11119e18781f136d8083ea10eb6be73db7532de8" + integrity sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg== + +"@esbuild/linux-mips64el@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz#3052f5436b0c0c67a25658d5fc87f045e7def9e6" + integrity sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA== + +"@esbuild/linux-ppc64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz#2f098920ee5be2ce799f35e367b28709925a8744" + integrity sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA== + +"@esbuild/linux-riscv64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz#fa51d7fd0a22a62b51b4b94b405a3198cf7405dd" + integrity sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA== + +"@esbuild/linux-s390x@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz#a27642e36fc282748fdb38954bd3ef4f85791e8a" + integrity sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew== + +"@esbuild/linux-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz#9d9b09c0033d17529570ced6d813f98315dfe4e9" + integrity sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA== + +"@esbuild/netbsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz#25c09a659c97e8af19e3f2afd1c9190435802151" + integrity sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A== + +"@esbuild/netbsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz#7fa5f6ffc19be3a0f6f5fd32c90df3dc2506937a" + integrity sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig== + +"@esbuild/openbsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz#8faa6aa1afca0c6d024398321d6cb1c18e72a1c3" + integrity sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw== + +"@esbuild/openbsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz#a42979b016f29559a8453d32440d3c8cd420af5e" + integrity sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw== + +"@esbuild/openharmony-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz#fd87bfeadd7eeb3aa384bbba907459ffa3197cb1" + integrity sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag== + +"@esbuild/sunos-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz#3a18f590e36cb78ae7397976b760b2b8c74407f4" + integrity sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ== + +"@esbuild/win32-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz#e71741a251e3fd971408827a529d2325551f530c" + integrity sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw== + +"@esbuild/win32-ia32@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz#c6f010b5d3b943d8901a0c87ea55f93b8b54bf94" + integrity sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw== + +"@esbuild/win32-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz#e4b3e255a1b4aea84f6e1d2ae0b73f826c3785bd" + integrity sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw== "@floating-ui/core@^1.7.3": version "1.7.3" @@ -881,9 +881,9 @@ lit "3.1.3" "@nightingale-elements/nightingale-structure@^5.4.1": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-structure/-/nightingale-structure-5.6.2.tgz#c388ae2a62b2db2412b054e282c6b0d70070a85c" - integrity sha512-XNuCu6xfO0sxf/d2r3kkd/SD8QgAvX8Z7g/FVqYqbH1uT9iROcg9j/yD3nEkVuJc+tke00swLycxzgkABlm7jw== + version "5.7.0" + resolved "https://registry.yarnpkg.com/@nightingale-elements/nightingale-structure/-/nightingale-structure-5.7.0.tgz#dcfb75b3d73332c01abc0e34090bec173f211bf6" + integrity sha512-sP554EZqt1gJcZTok5qVa4kdBC7pM1OSTbqnx15LYqThqHiUJ0RwiJoCVyPD6RcjlKUZEM4l60e7kISnaKGNbA== dependencies: "@nightingale-elements/nightingale-new-core" "^5.6.0" d3 "7.9.0" @@ -1027,110 +1027,115 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz#52d66eba5198155f265f54aed94d2489c49269f6" - integrity sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A== - -"@rollup/rollup-android-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz#137e8153fc9ce6757531ce300b8d2262299f758e" - integrity sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g== - -"@rollup/rollup-darwin-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz#d4afd904386d37192cf5ef7345fdb0dd1bac0bc3" - integrity sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q== - -"@rollup/rollup-darwin-x64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz#6dbe83431fc7cbc09a2b6ed2b9fb7a62dd66ebc2" - integrity sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A== - -"@rollup/rollup-freebsd-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz#d35afb9f66154b557b3387d12450920f8a954b96" - integrity sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow== - -"@rollup/rollup-freebsd-x64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz#849303ecdc171a420317ad9166a70af308348f34" - integrity sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog== - -"@rollup/rollup-linux-arm-gnueabihf@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz#ab36199ca613376232794b2f3ba10e2b547a447c" - integrity sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w== - -"@rollup/rollup-linux-arm-musleabihf@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz#f3704bc2eaecd176f558dc47af64197fcac36e8a" - integrity sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw== - -"@rollup/rollup-linux-arm64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz#dda0b06fd1daedd00b34395a2fb4aaaa2ed6c32b" - integrity sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg== - -"@rollup/rollup-linux-arm64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz#a018de66209051dad0c58e689e080326c3dd15b0" - integrity sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ== - -"@rollup/rollup-linux-loong64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz#6e514f09988615e0c98fa5a34a88a30fec64d969" - integrity sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw== - -"@rollup/rollup-linux-ppc64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz#9b2efebc7b4a1951e684a895fdee0fef26319e0d" - integrity sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag== - -"@rollup/rollup-linux-riscv64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz#a7104270e93d75789d1ba857b2c68ddf61f24f68" - integrity sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ== - -"@rollup/rollup-linux-riscv64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz#42d153f734a7b9fcacd764cc9bee6c207dca4db6" - integrity sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw== - -"@rollup/rollup-linux-s390x-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz#826ad73099f6fd57c083dc5329151b25404bc67d" - integrity sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w== - -"@rollup/rollup-linux-x64-gnu@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz#b9ec17bf0ca3f737d0895fca2115756674342142" - integrity sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA== - -"@rollup/rollup-linux-x64-musl@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz#29fe0adb45a1d99042f373685efbac9cdd5354d9" - integrity sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw== - -"@rollup/rollup-openharmony-arm64@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz#29648f11e202736b74413f823b71e339e3068d60" - integrity sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA== - -"@rollup/rollup-win32-arm64-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz#91e7edec80542fd81ab1c2581a91403ac63458ae" - integrity sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA== - -"@rollup/rollup-win32-ia32-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz#9b7cd9779f1147a3e8d3ddad432ae64dd222c4e9" - integrity sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA== - -"@rollup/rollup-win32-x64-msvc@4.50.2": - version "4.50.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz#40ecd1357526fe328c7af704a283ee8533ca7ad6" - integrity sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA== +"@rollup/rollup-android-arm-eabi@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.2.tgz#3a43e904367cd6147c5a8de9df4ff7ffa48634ec" + integrity sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ== + +"@rollup/rollup-android-arm64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.2.tgz#7af548eefb4def2fb678a207ff0236a045678be7" + integrity sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw== + +"@rollup/rollup-darwin-arm64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.2.tgz#13a9b8d3e31e7425b71d0caf13527ead19baf27a" + integrity sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA== + +"@rollup/rollup-darwin-x64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.2.tgz#c794e406914ff9e3ffbfe994080590135e70ad9a" + integrity sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ== + +"@rollup/rollup-freebsd-arm64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.2.tgz#63fa5783edd02a7aae141fc718e1f26882736c2b" + integrity sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw== + +"@rollup/rollup-freebsd-x64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.2.tgz#5c22816795cebb4f64d6440dd52951e5948ed1e3" + integrity sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng== + +"@rollup/rollup-linux-arm-gnueabihf@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.2.tgz#e65c6cf40153e06cfc7d2e15bb9ce8333a033649" + integrity sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA== + +"@rollup/rollup-linux-arm-musleabihf@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.2.tgz#d17ffee4a8b73d9dac55590748f8ec1d88c9398d" + integrity sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w== + +"@rollup/rollup-linux-arm64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.2.tgz#b359b24b1c1f40f5920d2fd827fde1407608a941" + integrity sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg== + +"@rollup/rollup-linux-arm64-musl@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.2.tgz#d8260f24d292525b03e5c257dee8e46de0df61bc" + integrity sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA== + +"@rollup/rollup-linux-loong64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.2.tgz#da159bad4467c41868a0803d4009839aac2f38d3" + integrity sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw== + +"@rollup/rollup-linux-ppc64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.2.tgz#f0b10d49210bef2eed9ae7a0ec9ef3e3bf1beffd" + integrity sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A== + +"@rollup/rollup-linux-riscv64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.2.tgz#f3d023dc14669780de638c662b3ecf6431253bb8" + integrity sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w== + +"@rollup/rollup-linux-riscv64-musl@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.2.tgz#1c451e83ae32ad926c3af90a0a64073d432aa179" + integrity sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q== + +"@rollup/rollup-linux-s390x-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.2.tgz#ca91af9d54132db20f06ffdf6b81720aeb434e7b" + integrity sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ== + +"@rollup/rollup-linux-x64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.2.tgz#074807dca3a15542b5e224ef6138f000a1015193" + integrity sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA== + +"@rollup/rollup-linux-x64-musl@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.2.tgz#b786fd7a6b0a1146be56d952626170f3784594e9" + integrity sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ== + +"@rollup/rollup-openharmony-arm64@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.2.tgz#4bd9469e14c178186c5c594a7d418aaeb031df81" + integrity sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q== + +"@rollup/rollup-win32-arm64-msvc@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.2.tgz#3e82d9cfcbcf268dbb861c49f631b17a68ed0411" + integrity sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA== + +"@rollup/rollup-win32-ia32-msvc@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.2.tgz#f4e68265d5c758afd2e1c6ff13319558b0c8a205" + integrity sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A== + +"@rollup/rollup-win32-x64-gnu@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.2.tgz#54f9e64b3550416c8520e3dc22301ef8e454b37e" + integrity sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA== + +"@rollup/rollup-win32-x64-msvc@4.52.2": + version "4.52.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.2.tgz#cf83e2c56b581bad4614eeb3d2da5b5917ed34ec" + integrity sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw== "@scarf/scarf@=1.4.0": version "1.4.0" @@ -1635,9 +1640,9 @@ form-data "^4.0.4" "@types/node@*": - version "24.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.1.tgz#dab6917c47113eb4502d27d06e89a407ec0eff95" - integrity sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q== + version "24.5.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.2.tgz#52ceb83f50fe0fcfdfbd2a9fab6db2e9e7ef6446" + integrity sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ== dependencies: undici-types "~7.12.0" @@ -1647,9 +1652,9 @@ integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== "@types/node@^18.0.0": - version "18.19.126" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.126.tgz#b1a9e0bac6338098f465ab242cbd6a8884d79b80" - integrity sha512-8AXQlBfrGmtYJEJUPs63F/uZQqVeFiN9o6NUjbDJYfxNxFnArlZufANPw4h6dGhYGKxcyw+TapXFvEsguzIQow== + version "18.19.127" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.127.tgz#7c2e47fa79ad7486134700514d4a975c4607f09d" + integrity sha512-gSjxjrnKXML/yo0BO099uPixMqfpJU0TKYjpfLU7TrtA2WWDki412Np/RSTPRil1saKBhvVVKzVx/p/6p94nVA== dependencies: undici-types "~5.26.4" @@ -2049,9 +2054,9 @@ base64-js@^1.3.1: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== baseline-browser-mapping@^2.8.3: - version "2.8.4" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz#e553e12272c4965682743705efd8b4b4cf0d709b" - integrity sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw== + version "2.8.7" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.7.tgz#4d3606fdb1738fd902da40c5fcc0595e87cec044" + integrity sha512-bxxN2M3a4d1CRoQC//IqsR5XrLh0IJ8TCv2x6Y9N0nckNz/rTjZB3//GGscZziZOxmjP55rzxg/ze7usFI9FqQ== binary-search-bounds@^2.0.0: version "2.0.5" @@ -2214,9 +2219,9 @@ camelize@^1.0.0: integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001741: - version "1.0.30001743" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz#50ff91a991220a1ee2df5af00650dd5c308ea7cd" - integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw== + version "1.0.30001745" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001745.tgz#ab2a36e3b6ed5bfb268adc002c476aab6513f859" + integrity sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ== canvas@^2.11.2: version "2.11.2" @@ -3262,9 +3267,9 @@ detect-libc@^1.0.3: integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-libc@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.0.tgz#3ca811f60a7b504b0480e5008adacc660b0b8c4f" - integrity sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.1.tgz#9f1e511ace6bb525efea4651345beac424dac7b9" + integrity sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw== devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -3367,9 +3372,9 @@ ejs@^3.1.5: jake "^10.8.5" electron-to-chromium@^1.5.218: - version "1.5.220" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.220.tgz#a9853fa5edcf51f4c7db369144377cf31d783b8f" - integrity sha512-TWXijEwR1ggr4BdAKrb1nMNqYLTx1/4aD1fkeZU+FVJGTKu53/T7UyHKXlqEX3Ub02csyHePbHmkvnrjcaYzMA== + version "1.5.224" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.224.tgz#dbc6827cb3d41d7293811d6d8af53114804e0ed1" + integrity sha512-kWAoUu/bwzvnhpdZSIc6KUyvkI1rbRXMT0Eq8pKReyOyaPZcctMli+EgvcN1PAvwVc7Tdo4Fxi2PsLNDU05mdg== emoji-regex@^8.0.0: version "8.0.0" @@ -3539,36 +3544,36 @@ es-to-primitive@^1.3.0: is-symbol "^1.0.4" esbuild@^0.25.0: - version "0.25.9" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" - integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + version "0.25.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.10.tgz#37f5aa5cd14500f141be121c01b096ca83ac34a9" + integrity sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.9" - "@esbuild/android-arm" "0.25.9" - "@esbuild/android-arm64" "0.25.9" - "@esbuild/android-x64" "0.25.9" - "@esbuild/darwin-arm64" "0.25.9" - "@esbuild/darwin-x64" "0.25.9" - "@esbuild/freebsd-arm64" "0.25.9" - "@esbuild/freebsd-x64" "0.25.9" - "@esbuild/linux-arm" "0.25.9" - "@esbuild/linux-arm64" "0.25.9" - "@esbuild/linux-ia32" "0.25.9" - "@esbuild/linux-loong64" "0.25.9" - "@esbuild/linux-mips64el" "0.25.9" - "@esbuild/linux-ppc64" "0.25.9" - "@esbuild/linux-riscv64" "0.25.9" - "@esbuild/linux-s390x" "0.25.9" - "@esbuild/linux-x64" "0.25.9" - "@esbuild/netbsd-arm64" "0.25.9" - "@esbuild/netbsd-x64" "0.25.9" - "@esbuild/openbsd-arm64" "0.25.9" - "@esbuild/openbsd-x64" "0.25.9" - "@esbuild/openharmony-arm64" "0.25.9" - "@esbuild/sunos-x64" "0.25.9" - "@esbuild/win32-arm64" "0.25.9" - "@esbuild/win32-ia32" "0.25.9" - "@esbuild/win32-x64" "0.25.9" + "@esbuild/aix-ppc64" "0.25.10" + "@esbuild/android-arm" "0.25.10" + "@esbuild/android-arm64" "0.25.10" + "@esbuild/android-x64" "0.25.10" + "@esbuild/darwin-arm64" "0.25.10" + "@esbuild/darwin-x64" "0.25.10" + "@esbuild/freebsd-arm64" "0.25.10" + "@esbuild/freebsd-x64" "0.25.10" + "@esbuild/linux-arm" "0.25.10" + "@esbuild/linux-arm64" "0.25.10" + "@esbuild/linux-ia32" "0.25.10" + "@esbuild/linux-loong64" "0.25.10" + "@esbuild/linux-mips64el" "0.25.10" + "@esbuild/linux-ppc64" "0.25.10" + "@esbuild/linux-riscv64" "0.25.10" + "@esbuild/linux-s390x" "0.25.10" + "@esbuild/linux-x64" "0.25.10" + "@esbuild/netbsd-arm64" "0.25.10" + "@esbuild/netbsd-x64" "0.25.10" + "@esbuild/openbsd-arm64" "0.25.10" + "@esbuild/openbsd-x64" "0.25.10" + "@esbuild/openharmony-arm64" "0.25.10" + "@esbuild/sunos-x64" "0.25.10" + "@esbuild/win32-arm64" "0.25.10" + "@esbuild/win32-ia32" "0.25.10" + "@esbuild/win32-x64" "0.25.10" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -6532,33 +6537,34 @@ rollup-plugin-visualizer@^5.14.0: yargs "^17.5.1" rollup@^4.34.9: - version "4.50.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.50.2.tgz#938d898394939f3386d1e367ee6410a796b8f268" - integrity sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w== + version "4.52.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.52.2.tgz#43dd135805c919285376634c8520074c5eb7a91a" + integrity sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.50.2" - "@rollup/rollup-android-arm64" "4.50.2" - "@rollup/rollup-darwin-arm64" "4.50.2" - "@rollup/rollup-darwin-x64" "4.50.2" - "@rollup/rollup-freebsd-arm64" "4.50.2" - "@rollup/rollup-freebsd-x64" "4.50.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.50.2" - "@rollup/rollup-linux-arm-musleabihf" "4.50.2" - "@rollup/rollup-linux-arm64-gnu" "4.50.2" - "@rollup/rollup-linux-arm64-musl" "4.50.2" - "@rollup/rollup-linux-loong64-gnu" "4.50.2" - "@rollup/rollup-linux-ppc64-gnu" "4.50.2" - "@rollup/rollup-linux-riscv64-gnu" "4.50.2" - "@rollup/rollup-linux-riscv64-musl" "4.50.2" - "@rollup/rollup-linux-s390x-gnu" "4.50.2" - "@rollup/rollup-linux-x64-gnu" "4.50.2" - "@rollup/rollup-linux-x64-musl" "4.50.2" - "@rollup/rollup-openharmony-arm64" "4.50.2" - "@rollup/rollup-win32-arm64-msvc" "4.50.2" - "@rollup/rollup-win32-ia32-msvc" "4.50.2" - "@rollup/rollup-win32-x64-msvc" "4.50.2" + "@rollup/rollup-android-arm-eabi" "4.52.2" + "@rollup/rollup-android-arm64" "4.52.2" + "@rollup/rollup-darwin-arm64" "4.52.2" + "@rollup/rollup-darwin-x64" "4.52.2" + "@rollup/rollup-freebsd-arm64" "4.52.2" + "@rollup/rollup-freebsd-x64" "4.52.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.52.2" + "@rollup/rollup-linux-arm-musleabihf" "4.52.2" + "@rollup/rollup-linux-arm64-gnu" "4.52.2" + "@rollup/rollup-linux-arm64-musl" "4.52.2" + "@rollup/rollup-linux-loong64-gnu" "4.52.2" + "@rollup/rollup-linux-ppc64-gnu" "4.52.2" + "@rollup/rollup-linux-riscv64-gnu" "4.52.2" + "@rollup/rollup-linux-riscv64-musl" "4.52.2" + "@rollup/rollup-linux-s390x-gnu" "4.52.2" + "@rollup/rollup-linux-x64-gnu" "4.52.2" + "@rollup/rollup-linux-x64-musl" "4.52.2" + "@rollup/rollup-openharmony-arm64" "4.52.2" + "@rollup/rollup-win32-arm64-msvc" "4.52.2" + "@rollup/rollup-win32-ia32-msvc" "4.52.2" + "@rollup/rollup-win32-x64-gnu" "4.52.2" + "@rollup/rollup-win32-x64-msvc" "4.52.2" fsevents "~2.3.2" rw@1: @@ -6622,9 +6628,9 @@ sanitize-html@^1.20.1: postcss "^7.0.27" sass@^1.49.10: - version "1.92.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.92.1.tgz#07fb1fec5647d7b712685d1090628bf52456fe86" - integrity sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ== + version "1.93.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.93.2.tgz#e97d225d60f59a3b3dbb6d2ae3c1b955fd1f2cd1" + integrity sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg== dependencies: chokidar "^4.0.0" immutable "^5.0.2" @@ -7613,47 +7619,47 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -turbo-darwin-64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.5.6.tgz#d694492bdd16359b31918f9d33234bccc44f853e" - integrity sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A== +turbo-darwin-64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.5.8.tgz#9c4c09374bce747ed7b26f5cdc156fdfb3583e9d" + integrity sha512-Dh5bCACiHO8rUXZLpKw+m3FiHtAp2CkanSyJre+SInEvEr5kIxjGvCK/8MFX8SFRjQuhjtvpIvYYZJB4AGCxNQ== -turbo-darwin-arm64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.6.tgz#b8800a1613bc06ded2445b0337ed146c1dbac234" - integrity sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA== +turbo-darwin-arm64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.8.tgz#c2c5a2eeac913a9a10f0027826392a261532eaff" + integrity sha512-f1H/tQC9px7+hmXn6Kx/w8Jd/FneIUnvLlcI/7RGHunxfOkKJKvsoiNzySkoHQ8uq1pJnhJ0xNGTlYM48ZaJOQ== -turbo-linux-64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.5.6.tgz#23938cee385e358a1363316b6d7464899354349d" - integrity sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA== +turbo-linux-64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.5.8.tgz#a5f22e8436907c84a058c46a9a3e4b1ed03f2ab9" + integrity sha512-hMyvc7w7yadBlZBGl/bnR6O+dJTx3XkTeyTTH4zEjERO6ChEs0SrN8jTFj1lueNXKIHh1SnALmy6VctKMGnWfw== -turbo-linux-arm64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.5.6.tgz#1e36c543497ffbefed7e479bd9dbe594de457321" - integrity sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ== +turbo-linux-arm64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.5.8.tgz#5c49aed3c2de4c9482d14545809ca559257d4493" + integrity sha512-LQELGa7bAqV2f+3rTMRPnj5G/OHAe2U+0N9BwsZvfMvHSUbsQ3bBMWdSQaYNicok7wOZcHjz2TkESn1hYK6xIQ== -turbo-windows-64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.5.6.tgz#abbb9a8226d0b2b293fc7dbea0e0869a95323545" - integrity sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg== +turbo-windows-64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.5.8.tgz#c9042bc181b732e5a1ab824d6549ad7d358594f5" + integrity sha512-3YdcaW34TrN1AWwqgYL9gUqmZsMT4T7g8Y5Azz+uwwEJW+4sgcJkIi9pYFyU4ZBSjBvkfuPZkGgfStir5BBDJQ== -turbo-windows-arm64@2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.6.tgz#81af8538b338ef3b3814db0ed1d9ea31d30ff72d" - integrity sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q== +turbo-windows-arm64@2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.8.tgz#d252d3924412d8590d58830e5d4b5f05def81af3" + integrity sha512-eFC5XzLmgXJfnAK3UMTmVECCwuBcORrWdewoiXBnUm934DY6QN8YowC/srhNnROMpaKaqNeRpoB5FxCww3eteQ== turbo@^2.4.2: - version "2.5.6" - resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.6.tgz#610810b87037520cc2c0f94decba552d3a6e770b" - integrity sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w== + version "2.5.8" + resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.8.tgz#f6b911bc487653028d32e05eb507b266b85ce6c1" + integrity sha512-5c9Fdsr9qfpT3hA0EyYSFRZj1dVVsb6KIWubA9JBYZ/9ZEAijgUEae0BBR/Xl/wekt4w65/lYLTFaP3JmwSO8w== optionalDependencies: - turbo-darwin-64 "2.5.6" - turbo-darwin-arm64 "2.5.6" - turbo-linux-64 "2.5.6" - turbo-linux-arm64 "2.5.6" - turbo-windows-64 "2.5.6" - turbo-windows-arm64 "2.5.6" + turbo-darwin-64 "2.5.8" + turbo-darwin-arm64 "2.5.8" + turbo-linux-64 "2.5.8" + turbo-linux-arm64 "2.5.8" + turbo-windows-64 "2.5.8" + turbo-windows-arm64 "2.5.8" type-fest@^1.0.2: version "1.4.0"