diff --git a/.github/update-npm-version/action.yml b/.github/update-npm-version/action.yml new file mode 100644 index 00000000..6dbad7c4 --- /dev/null +++ b/.github/update-npm-version/action.yml @@ -0,0 +1,31 @@ +name: Update npm version + +description: Updates the global npm version based on the `devEngines` field of a package.json + +inputs: + package-json-path: + description: Path pointing to package.json file. Attempts to use the one in current directory by default. + required: false + default: './package.json' + +outputs: + npm-version: + description: Installed npm version + value: ${{ steps.update-npm.npm-version }} + +runs: + using: composite + steps: + - name: Update npm + id: update-npm + shell: bash + env: + PACKAGE_JSON_PATH: ${{ inputs.package-json-path }} + run: | + version=$(cat "$PACKAGE_JSON_PATH" | jq '.devEngines.packageManager.version' --raw-output) + + echo "Version detected: $version" + + npm install -g npm@$version + + echo "npm-version=$(npm --version)" >> $GITHUB_OUTPUT diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db42047f..099975a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,31 +15,45 @@ concurrency: cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }} jobs: - lint: + checks: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + id: setup-node + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: '.nvmrc' - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Install deps run: npm ci + - name: Check Electron node version + shell: bash + env: + EXPECTED_NODE_VERSION: ${{ steps.setup-node.outputs.node-version }} + run: | + electron_node_version=$(ELECTRON_RUN_AS_NODE=true npx electron -e 'console.log(process.versions.node);') + + # Version string from setup-node is prefixed with "v" + if [[ "v$electron_node_version" == "$EXPECTED_NODE_VERSION" ]] + then + echo "✅ Electron node version matches expected ($electron_node_version)" + else + echo "⛔️ Electron node version ($electron_node_version) does not match expected ($EXPECTED_NODE_VERSION)" + exit 1 + fi + - name: Build translations run: node --run intl - - name: Run lint - run: node --run lint + - name: Run checks + run: node --run checks + test: timeout-minutes: 10 strategy: @@ -52,16 +66,12 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: '.nvmrc' - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Install deps run: npm ci @@ -92,16 +102,12 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: '.nvmrc' - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Install deps run: npm ci @@ -119,22 +125,14 @@ jobs: - name: Run e2e tests if: ${{ matrix.os.name != 'linux'}} - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 - with: - timeout_minutes: 5 - max_attempts: 3 - command: node --run test-e2e + run: node --run test-e2e # NOTE: Addresses issue with app not launching (https://github.com/microsoft/playwright/issues/34251#issuecomment-2580645333) - name: Run e2e tests (Linux) if: ${{ matrix.os.name == 'linux'}} - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 - with: - timeout_minutes: 5 - max_attempts: 3 - command: | - sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 - xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- node --run test-e2e + run: | + sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- node --run test-e2e - name: Upload Playwright report if: ${{ !cancelled() }} diff --git a/.github/workflows/create-builds.yml b/.github/workflows/create-builds.yml index 847b7814..4a928518 100644 --- a/.github/workflows/create-builds.yml +++ b/.github/workflows/create-builds.yml @@ -72,16 +72,12 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: .nvmrc - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Install dependencies run: npm ci diff --git a/.github/workflows/hotfix-release.yml b/.github/workflows/hotfix-release.yml index 0dfc8b39..677cfc6c 100644 --- a/.github/workflows/hotfix-release.yml +++ b/.github/workflows/hotfix-release.yml @@ -69,16 +69,12 @@ jobs: token: ${{ steps.app-token.outputs.token }} - name: Setup Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: .nvmrc - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Parse version id: version diff --git a/.github/workflows/scheduled-release.yml b/.github/workflows/scheduled-release.yml index b89e05ca..5e74feaf 100644 --- a/.github/workflows/scheduled-release.yml +++ b/.github/workflows/scheduled-release.yml @@ -49,16 +49,12 @@ jobs: token: ${{ steps.app-token.outputs.token }} - name: Setup Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: .nvmrc - name: Update npm version - shell: bash - run: | - version=$(cat package.json | jq '.devEngines.packageManager.version' --raw-output) - echo "Version detected: $version" - npm install -g npm@$version + uses: ./.github/update-npm-version - name: Parse version id: version diff --git a/.nvmrc b/.nvmrc index f082edaa..eca09052 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1,3 +1,3 @@ # We keep this aligned with the Node version that comes with Electron -22.21.1 +24.11.1 diff --git a/.tool-versions b/.tool-versions index 548dd646..bd26db01 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,3 @@ # We keep this aligned with the Node version that comes with Electron -nodejs 22.21.1 +nodejs 24.11.1 diff --git a/README.md b/README.md index 0386f5bf..afcf1394 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ Go to the [Development](./docs/DEVELOPMENT.md) docs to learn about how the proje Make sure you have the preferred versions of tooling installed: -- [`NodeJS`](https://nodejs.org): [22.21.1](./.nvmrc) -- [`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm): 11.7.0 +- [`NodeJS`](https://nodejs.org): [24.11.1](./.nvmrc) +- [`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm): 11.8.0 1. Clone the repo: diff --git a/forge.config.ts b/forge.config.ts index 70c2d4ad..ac9dd00d 100644 --- a/forge.config.ts +++ b/forge.config.ts @@ -3,6 +3,7 @@ import { mkdirSync } from 'node:fs' import fs from 'node:fs/promises' import { arch, platform } from 'node:os' import path from 'node:path' +import { loadEnvFile } from 'node:process' import { fileURLToPath } from 'node:url' import { MakerDeb } from '@electron-forge/maker-deb' import { MakerDMG } from '@electron-forge/maker-dmg' @@ -12,6 +13,11 @@ import { MakerZIP } from '@electron-forge/maker-zip' import { AutoUnpackNativesPlugin } from '@electron-forge/plugin-auto-unpack-natives' import { PluginBase } from '@electron-forge/plugin-base' import { FusesPlugin } from '@electron-forge/plugin-fuses' +import type { + ForgeConfig, + ForgeConfigPlugin, + ForgeHookFn, +} from '@electron-forge/shared-types' import { FuseV1Options, FuseVersion } from '@electron/fuses' import { MakerAppImage } from '@reforged/maker-appimage' import semver from 'semver' @@ -21,13 +27,11 @@ import { build, createServer, type ViteDevServer } from 'vite' import packageJSON from './package.json' with { type: 'json' } import type { AppConfig, AppType } from './src/shared/app.ts' -import 'dotenv/config' - -import type { - ForgeConfig, - ForgeConfigPlugin, - ForgeHookFn, -} from '@electron-forge/shared-types' +try { + loadEnvFile() +} catch (err) { + console.warn(`Failed to load .env file: ${err}`) +} const { APP_TYPE, diff --git a/knip.config.ts b/knip.config.ts index 25d535c7..7e10be5d 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -14,7 +14,7 @@ export default { project: [ 'src/**/*.{js,ts,jsx,tsx}!', 'scripts/*.{js,ts}', - 'tests-e2e/*.{js,ts}', + 'tests-e2e/**/*.{js,ts}', '*.{js,ts}', ], ignore: [ diff --git a/messages/renderer/de.json b/messages/renderer/de.json index 114657ce..6d75e49c 100644 --- a/messages/renderer/de.json +++ b/messages/renderer/de.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Neustart" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Etwas ist schief gelaufen" @@ -539,6 +543,10 @@ "description": "Text displayed when waiting for Wi-Fi information.", "message": "Lade Wi-Fi-Informationen…" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Gehe zurück." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Gerät auswählen" @@ -547,6 +555,10 @@ "description": "Detail about how to control data sharing.", "message": "Freigabe in den Projekteinstellungen kontrollieren." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Gehe zurück." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Mitarbeiter einladen" @@ -707,6 +719,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Koordinator" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Gehe zurück." + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "Sie sind der letzte Koordinator. Überlegen Sie, ein anderes Gerät zu einem Koordinator zu machen, bevor Sie das Projekt verlassen." diff --git a/messages/renderer/en.json b/messages/renderer/en.json index e344a05e..270612e4 100644 --- a/messages/renderer/en.json +++ b/messages/renderer/en.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Restart" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Something went wrong" @@ -539,6 +543,10 @@ "description": "Text displayed when waiting for Wi-Fi information.", "message": "Getting Wi-Fi information…" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Go back." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Select a Device" @@ -547,6 +555,10 @@ "description": "Detail about how to control data sharing.", "message": "Control sharing in Project Settings." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Go back." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Invite Collaborators" diff --git a/messages/renderer/es.json b/messages/renderer/es.json index beac0587..408f7af0 100644 --- a/messages/renderer/es.json +++ b/messages/renderer/es.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Reiniciar" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Algo salió mal" @@ -531,6 +535,10 @@ "description": "Text displayed when waiting for Wi-Fi information.", "message": "Obteniendo información Wi-Fi…" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Regresar." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Seleccione un dispositivo" @@ -539,6 +547,10 @@ "description": "Detail about how to control data sharing.", "message": "Control para compartir en la configuración del proyecto." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Regresar." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Invita colaboradores" @@ -699,6 +711,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Persona Coordinadora" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Regresar." + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "Eres el último coordinator. Considera hacer otro dispositivo un coordinator antes de abandonar el proyecto." diff --git a/messages/renderer/fr.json b/messages/renderer/fr.json index a8a81664..98cbd74c 100644 --- a/messages/renderer/fr.json +++ b/messages/renderer/fr.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Redémarrer" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Quelque chose s'est mal passé" @@ -519,6 +523,10 @@ "description": "Text displayed when waiting for Wi-Fi information.", "message": "Récupération des informations Wi-Fi…" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Revenir en arrière." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Sélectionnez un appareil" @@ -527,6 +535,10 @@ "description": "Detail about how to control data sharing.", "message": "Contrôle du partage dans les paramètres du projet." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Revenir en arrière." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Inviter des collaborateurs" @@ -683,6 +695,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Coordonnateur" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Revenir en arrière." + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "Vous êtes le dernier coordinateur. Pensez à faire d'un autre appareil un coordinator avant de quitter le projet." diff --git a/messages/renderer/ja.json b/messages/renderer/ja.json index 41bcb989..b7b5b43b 100644 --- a/messages/renderer/ja.json +++ b/messages/renderer/ja.json @@ -19,6 +19,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "再起動" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "問題が発生しました" @@ -515,6 +519,10 @@ "description": "Title for device discovery troubleshooting section.", "message": "デバイスが表示されませんか?" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "戻ってください。" + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "デバイスを選択" @@ -523,6 +531,10 @@ "description": "Detail about how to control data sharing.", "message": "プロジェクト設定で共有を制御します。" }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "戻ってください。" + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "コラボレーターを招待" @@ -683,6 +695,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Coordinator" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "戻ってください。" + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "あなたは最後のコーディネーターです。プロジェクトを離れる前に別のデバイスをコーディネーターにすることを検討してください。" diff --git a/messages/renderer/km.json b/messages/renderer/km.json index 29915c37..6562bdf0 100644 --- a/messages/renderer/km.json +++ b/messages/renderer/km.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "កំហុសឆ្គង" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "ចាប់ផ្ដើមឡើងវិញ" + }, "routes.app.projects.$projectId.-data-list.observationCategoryNameFallback": { "description": "Fallback name for observation without a matching category.", "message": "ការសង្កេត" diff --git a/messages/renderer/mn.json b/messages/renderer/mn.json index 99429ecd..64a814eb 100644 --- a/messages/renderer/mn.json +++ b/messages/renderer/mn.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "Алдаа" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Дахин эхлүүлэх" + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "Дахин оролдох" diff --git a/messages/renderer/nl.json b/messages/renderer/nl.json index 232c1d25..f72972bb 100644 --- a/messages/renderer/nl.json +++ b/messages/renderer/nl.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Herstarten" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Er ging iets mis" @@ -519,6 +523,10 @@ "description": "Title for device discovery troubleshooting section.", "message": "Zie je geen apparaat?" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Ga terug." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Selecteer een apparaat" @@ -527,6 +535,10 @@ "description": "Detail about how to control data sharing.", "message": "Controleer delen in projectinstellingen." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Ga terug." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Nodig samenwerkers uit" @@ -687,6 +699,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Coördinator" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Ga terug." + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "U bent de laatste coördinator. Overweeg een ander apparaat tot coördinator te maken voordat u het project verlaat." diff --git a/messages/renderer/pt.json b/messages/renderer/pt.json index 65bc95ad..cb609ff0 100644 --- a/messages/renderer/pt.json +++ b/messages/renderer/pt.json @@ -23,6 +23,10 @@ "description": "Text for button to reload page.", "message": "Reload" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Reiniciar" + }, "components.generic-route-error-component.somethinWentWrong": { "description": "Title text of page error", "message": "Algo deu errado" @@ -531,6 +535,10 @@ "description": "Text displayed when waiting for Wi-Fi information.", "message": "Obtendo informações do Wi-Fi…" }, + "routes.app.projects.$projectId_.invite.devices.index.goBackAccessibleLabel": { + "description": "Accessible label for back button", + "message": "Voltar." + }, "routes.app.projects.$projectId_.invite.devices.index.navTitle": { "description": "Title of the device selection for invite page.", "message": "Selecione um dispositivo" @@ -539,6 +547,10 @@ "description": "Detail about how to control data sharing.", "message": "Controle de compartilhamento nas Configurações do Projeto." }, + "routes.app.projects.$projectId_.invite.index.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Voltar." + }, "routes.app.projects.$projectId_.invite.index.inviteCollaborators": { "description": "Title of the Invite Get Started page.", "message": "Convide colaboradores" @@ -699,6 +711,10 @@ "description": "Text indicating collaborator is a coordinator.", "message": "Coordenador" }, + "routes.app.projects.$projectId_.team.$deviceId.goBackAccessibleLabel": { + "description": "Accessible label for back button.", + "message": "Voltar." + }, "routes.app.projects.$projectId_.team.$deviceId.lastCoordinatorWarning": { "description": "Warning text about leaving the project as the last coordinator.", "message": "Você é o último coordinator. Considere fazer de outro dispositivo um coordinator antes de sair do projeto." diff --git a/messages/renderer/si.json b/messages/renderer/si.json index c1b1076c..05fb01f0 100644 --- a/messages/renderer/si.json +++ b/messages/renderer/si.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "දෝෂයකි" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "නැවත ආරම්භ" + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "යලි උත්සාහ කරන්න" diff --git a/messages/renderer/sw.json b/messages/renderer/sw.json index ce492afe..dafd395a 100644 --- a/messages/renderer/sw.json +++ b/messages/renderer/sw.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "Hitilafu" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Anzisha tena" + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "Jaribu Tena" diff --git a/messages/renderer/ta.json b/messages/renderer/ta.json index b4188568..0b641a4a 100644 --- a/messages/renderer/ta.json +++ b/messages/renderer/ta.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "பிழை" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "மீண்டும் தொடங்கவும் " + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "மீண்டும் முயற்சி" diff --git a/messages/renderer/th.json b/messages/renderer/th.json index 941e070a..bd33faf7 100644 --- a/messages/renderer/th.json +++ b/messages/renderer/th.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "ข้อผิดพลาด" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "เริ่มการใช้งานใหม่" + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "ลองอีกครั้ง" diff --git a/messages/renderer/vi.json b/messages/renderer/vi.json index fd99edab..16b80d36 100644 --- a/messages/renderer/vi.json +++ b/messages/renderer/vi.json @@ -7,6 +7,10 @@ "description": "Label for error section", "message": "Lỗi" }, + "components.generic-route-error-component.restart": { + "description": "Text for button to restart app.", + "message": "Khởi động lại" + }, "components.generic-route-not-found-component.tryAgain": { "description": "Button text for try again button.", "message": "Thử lại" diff --git a/package-lock.json b/package-lock.json index 395b393c..83474a44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "comapeo-desktop", - "version": "0.1.0-pre", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "comapeo-desktop", - "version": "0.1.0-pre", + "version": "0.1.0", "hasInstallScript": true, "license": "GPL-3.0", "dependencies": { @@ -14,9 +14,9 @@ "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "6.0.2", - "@formatjs/intl": "3.1.8", + "@formatjs/intl": "4.1.1", "@homebridge/ciao": "1.3.4", - "@sentry/electron": "7.5.0", + "@sentry/electron": "7.6.0", "atomically": "2.1.0", "debug": "4.4.3", "electron-context-menu": "4.1.1", @@ -24,53 +24,53 @@ "electron-squirrel-startup": "1.0.1", "fastify": "4.29.1", "sodium-native": "4.3.3", - "systeminformation": "5.27.13", + "systeminformation": "5.30.6", "tiny-typed-emitter": "2.1.0", "valibot": "1.2.0", - "zustand": "5.0.9" + "zustand": "5.0.10" }, "devDependencies": { "@comapeo/core-react": "7.2.0", "@comapeo/schema": "2.2.0", - "@electron-forge/cli": "7.10.2", - "@electron-forge/maker-deb": "7.10.2", - "@electron-forge/maker-dmg": "7.10.2", - "@electron-forge/maker-rpm": "7.10.2", - "@electron-forge/maker-squirrel": "7.10.2", - "@electron-forge/maker-zip": "7.10.2", - "@electron-forge/plugin-auto-unpack-natives": "7.10.2", - "@electron-forge/plugin-base": "7.10.2", - "@electron-forge/plugin-fuses": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/cli": "7.11.1", + "@electron-forge/maker-deb": "7.11.1", + "@electron-forge/maker-dmg": "7.11.1", + "@electron-forge/maker-rpm": "7.11.1", + "@electron-forge/maker-squirrel": "7.11.1", + "@electron-forge/maker-zip": "7.11.1", + "@electron-forge/plugin-auto-unpack-natives": "7.11.1", + "@electron-forge/plugin-base": "7.11.1", + "@electron-forge/plugin-fuses": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "@electron/fuses": "1.8.0", "@emotion/react": "11.14.0", "@emotion/styled": "11.14.1", - "@eslint-react/eslint-plugin": "2.3.13", - "@eslint/compat": "2.0.0", + "@eslint-react/eslint-plugin": "2.7.4", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "@fontsource-variable/rubik": "5.2.8", - "@formatjs/cli": "6.7.4", + "@formatjs/cli": "6.12.0", "@ianvs/prettier-plugin-sort-imports": "4.7.0", - "@mui/material": "7.3.6", - "@playwright/test": "1.57.0", + "@mui/material": "7.3.7", + "@playwright/test": "1.58.0", "@reforged/maker-appimage": "5.1.1", - "@sentry/react": "10.29.0", - "@sentry/vite-plugin": "4.6.1", - "@tanstack/eslint-plugin-query": "5.91.2", - "@tanstack/eslint-plugin-router": "1.141.0", - "@tanstack/react-form": "1.27.4", - "@tanstack/react-query": "5.90.12", - "@tanstack/react-router": "1.141.2", - "@tanstack/react-virtual": "3.13.13", - "@tanstack/router-plugin": "1.141.2", - "@turf/bbox": "7.3.1", - "@turf/bbox-polygon": "7.3.1", - "@turf/center": "7.3.1", - "@turf/helpers": "7.3.1", - "@turf/random": "7.3.1", + "@sentry/react": "10.34.0", + "@sentry/vite-plugin": "4.8.0", + "@tanstack/eslint-plugin-query": "5.91.3", + "@tanstack/eslint-plugin-router": "1.155.0", + "@tanstack/react-form": "1.28.0", + "@tanstack/react-query": "5.90.20", + "@tanstack/react-router": "1.157.15", + "@tanstack/react-virtual": "3.13.18", + "@tanstack/router-plugin": "1.157.15", + "@turf/bbox": "7.3.2", + "@turf/bbox-polygon": "7.3.2", + "@turf/center": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/random": "7.3.2", "@types/geojson": "7946.0.16", - "@types/node": "22.19.2", - "@types/react": "19.2.7", + "@types/node": "24.10.9", + "@types/react": "19.2.9", "@types/react-dom": "19.2.3", "@types/semver": "7.7.1", "@types/sodium-native": "2.3.9", @@ -78,36 +78,35 @@ "@vitejs/plugin-react": "5.1.2", "concurrently": "9.2.1", "date-fns": "4.1.0", - "dotenv": "17.2.3", - "electron": "39.2.7", - "electron-playwright-helpers": "2.0.1", + "electron": "40.0.0", + "electron-playwright-helpers": "2.1.0", "eslint": "9.39.2", "eslint-plugin-react-hooks": "7.0.1", - "eslint-plugin-react-refresh": "0.4.24", - "globals": "16.5.0", + "eslint-plugin-react-refresh": "0.4.26", + "globals": "17.1.0", "husky": "9.1.7", - "knip": "5.73.4", + "knip": "5.82.1", "lint-staged": "16.2.7", - "maplibre-gl": "5.14.0", + "maplibre-gl": "5.16.0", "maplibregl-mapbox-request-transformer": "0.0.3", "network-information-types": "0.1.1", "patch-package": "8.0.1", - "playwright": "1.57.0", - "prettier": "3.7.4", + "playwright": "1.58.0", + "prettier": "3.8.1", "prettier-plugin-jsdoc": "1.8.0", "radashi": "12.7.1", "react": "19.2.3", "react-dom": "19.2.3", - "react-intl": "7.1.14", + "react-intl": "8.1.1", "react-map-gl": "8.1.0", "react-transition-group": "4.4.5", "semver": "7.7.3", "typescript": "5.9.3", - "typescript-eslint": "8.49.0", + "typescript-eslint": "8.53.1", "utm": "1.1.1", - "vite": "7.3.0", + "vite": "7.3.1", "vite-plugin-icons-spritesheet": "3.0.1", - "vitest": "4.0.15" + "vitest": "4.0.18" } }, "node_modules/@apm-js-collab/code-transformer": { @@ -128,12 +127,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -142,9 +141,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -152,21 +151,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -200,14 +199,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -216,27 +215,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -256,38 +242,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", - "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -298,44 +252,30 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -344,57 +284,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, "engines": { "node": ">=6.9.0" } @@ -429,27 +324,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -459,13 +354,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -475,30 +370,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -539,50 +417,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", - "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", - "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, "license": "MIT", "engines": { @@ -590,33 +428,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -624,9 +462,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -796,9 +634,9 @@ "license": "MIT" }, "node_modules/@electron-forge/cli": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.10.2.tgz", - "integrity": "sha512-X1RtS5IqNgzGDS2rr1q0Y74wU/m3DbU4vSgllNun1ZQv1BfMpDcKLhnKi3aeetoA0huLTpMVU9eWJ7bziI9fxA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.11.1.tgz", + "integrity": "sha512-pk8AoLsr7t7LBAt0cFD06XFA6uxtPdvtLx06xeal7O9o7GHGCbj29WGwFoJ8Br/ENM0Ho868S3PrAn1PtBXt5g==", "dev": true, "funding": [ { @@ -812,9 +650,9 @@ ], "license": "MIT", "dependencies": { - "@electron-forge/core": "7.10.2", - "@electron-forge/core-utils": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/core": "7.11.1", + "@electron-forge/core-utils": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "@electron/get": "^3.0.0", "@inquirer/prompts": "^6.0.1", "@listr2/prompt-adapter-inquirer": "^2.0.22", @@ -836,9 +674,9 @@ } }, "node_modules/@electron-forge/core": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.10.2.tgz", - "integrity": "sha512-HAIuOtpOfGjA0cd55tbEV2gAv+A7tSZg9bonmVDYFEe6dBgbLk8a3+/1fJUdWW8fyFkg1wa8zK7pjP751bAXsA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.11.1.tgz", + "integrity": "sha512-YtuPLzggPKPabFAD2rOZFE0s7f4KaUTpGRduhSMbZUqpqD1TIPyfoDBpYiZvao3Ht8pyZeOJjbzcC0LpFs9gIQ==", "dev": true, "funding": [ { @@ -852,17 +690,17 @@ ], "license": "MIT", "dependencies": { - "@electron-forge/core-utils": "7.10.2", - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/plugin-base": "7.10.2", - "@electron-forge/publisher-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2", - "@electron-forge/template-base": "7.10.2", - "@electron-forge/template-vite": "7.10.2", - "@electron-forge/template-vite-typescript": "7.10.2", - "@electron-forge/template-webpack": "7.10.2", - "@electron-forge/template-webpack-typescript": "7.10.2", - "@electron-forge/tracer": "7.10.2", + "@electron-forge/core-utils": "7.11.1", + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/plugin-base": "7.11.1", + "@electron-forge/publisher-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1", + "@electron-forge/template-base": "7.11.1", + "@electron-forge/template-vite": "7.11.1", + "@electron-forge/template-vite-typescript": "7.11.1", + "@electron-forge/template-webpack": "7.11.1", + "@electron-forge/template-webpack-typescript": "7.11.1", + "@electron-forge/tracer": "7.11.1", "@electron/get": "^3.0.0", "@electron/packager": "^18.3.5", "@electron/rebuild": "^3.7.0", @@ -892,13 +730,13 @@ } }, "node_modules/@electron-forge/core-utils": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.10.2.tgz", - "integrity": "sha512-JXrk2hWR4q8KgZFABpojjuqql3tYeVIH6qmtbkNEkZEQq7YIxajJBCct7J7bWfNQTmHotsQ3k5KLknhyhTaBMw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.11.1.tgz", + "integrity": "sha512-9UxRWVsfcziBsbAA2MS0Oz4yYovQCO2BhnGIfsbKNTBtMc/RcVSxAS0NMyymce44i43p1ZC/FqWhnt1XqYw3bQ==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/shared-types": "7.11.1", "@electron/rebuild": "^3.7.0", "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", @@ -914,13 +752,13 @@ } }, "node_modules/@electron-forge/maker-base": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.10.2.tgz", - "integrity": "sha512-1QN4qnPVTjo+qWYG+s0kYv7XcuIowsPVvbl718FgJUcvkxyRjUA6kWHjFxRvdV6g7Sa2PzZBF+/Mrjpws1lehQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.11.1.tgz", + "integrity": "sha512-yhZrCGoN6bDeiB5DHFaueZ1h84AReElEj+f0hl2Ph4UbZnO0cnLpbx+Bs+XfMLAiA+beC8muB5UDK5ysfuT9BQ==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/shared-types": "7.11.1", "fs-extra": "^10.0.0", "which": "^2.0.2" }, @@ -929,14 +767,14 @@ } }, "node_modules/@electron-forge/maker-deb": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.10.2.tgz", - "integrity": "sha512-4MPr9NW5UbEUbf9geZn5R/0O/QVIiy2EgUXOYOeKkA7oR8U6I1I3+BytYFHYcxbY6+PGhi1H1VTLJLITbHGVWw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.11.1.tgz", + "integrity": "sha512-QTYiryQLYPDkq6pIfBmx0GQ6D8QatUkowH7rTlW5MnCUa0uumX0Xu7yGIjesuwW37fxT3Lv4xi+FSXMCm2eC1w==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" @@ -946,14 +784,14 @@ } }, "node_modules/@electron-forge/maker-dmg": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.10.2.tgz", - "integrity": "sha512-ksSX6/Ioxa3h3rEGIg26qfDcJgB3aFGivitRdSkEnzUCLWJSUoThEwLToA7CAq4J/4ZREK0PDJ7FPsB+F8CYfQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-dmg/-/maker-dmg-7.11.1.tgz", + "integrity": "sha512-7zs5/Ewz1PcOl4N1102stFgBiFGWxU18+UPFUSd/fgf9MErBl4HBWuVNMIHyeJ/56rdfkcmTxTqE+9TBEYrZcg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "fs-extra": "^10.0.0" }, "engines": { @@ -964,14 +802,14 @@ } }, "node_modules/@electron-forge/maker-rpm": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.10.2.tgz", - "integrity": "sha512-LQoeYzbY/z1yuBBA+bNutCJmhCA4NcXUbFO4OTqsIX8B6y1zNTYZT4JEuhoK7eBsP4/Rz6u/JnNp0XOyjftOUQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.11.1.tgz", + "integrity": "sha512-iEfJPRQQyaTqk2EbUfZgulChNWvxGXeYUH0xBX/r5cj1pL4vcJXt3jLMQBVn3mk/0Ytv9UWRs8R/XuNWX6sf2w==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" @@ -981,14 +819,14 @@ } }, "node_modules/@electron-forge/maker-squirrel": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.10.2.tgz", - "integrity": "sha512-Y5EhNSBXf4a7qcq+BK/x5qVDlQ1Gez5V+arUpDvVxf1zwvsB1aSyAjmoBrOKGYD9A5pJzjkMWMDw95MStl1W4A==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.11.1.tgz", + "integrity": "sha512-oSg7fgad6l+X0DjtRkSpMzB0AjzyDO4mb2gzM4kTodkP1ADeiMi08bxy0ZeCESqLm5+fG72cAPmEr3BAPvI1yw==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "fs-extra": "^10.0.0" }, "engines": { @@ -999,14 +837,14 @@ } }, "node_modules/@electron-forge/maker-zip": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.10.2.tgz", - "integrity": "sha512-APRqVPM+O1rj4O7sk5f8tqJpS5UgxcUJEsCnXN4JRpdRvsOlMopzYZdazlCLH9l7S+r4ZKirjtMluIGeYq8YOg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.11.1.tgz", + "integrity": "sha512-30rcp0AbJLfkFBX2hmO14LKXx7z9V61LffTVbTCFMh5vUB2kZvcA5xAhsBk2oUJWfGVxe1DuSEU0rDR9bUMHUg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/maker-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/maker-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "cross-zip": "^4.0.0", "fs-extra": "^10.0.0", "got": "^11.8.5" @@ -1016,41 +854,41 @@ } }, "node_modules/@electron-forge/plugin-auto-unpack-natives": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.10.2.tgz", - "integrity": "sha512-uQnahm1DECwqI8hBC7PKccyfovY/YqHNz8de3OxyjQDmwsqQfCA8Ucyh1E9n4NMEpw6Co8KLn+qF2BuIOsftLA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.11.1.tgz", + "integrity": "sha512-5uRM3WNv7jIeDt8pLP3V4U2puWHPGJ/3qRuSE47RKgTp5qxpZidWHSYcEJJxjoqOL/7KFwSqKSQ/a36GoZV4Fg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/plugin-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/plugin-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/plugin-base": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.10.2.tgz", - "integrity": "sha512-+4YLmkLZxvS6JFXYNI4dHt8Il8iIvwk2o6lCJGwNysOUq2KOZ3Wu1He4Ko8HhKcO1VWbFvslbh57oQn963Aryw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.11.1.tgz", + "integrity": "sha512-lKpSOV1GA3FoYiD9k05i6v4KaQVmojnRgCr7d6VL1bFp13QOtXSaAWhFI9mtSY7rGElOacX6Zt7P7rPoB8T9eQ==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/plugin-fuses": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.10.2.tgz", - "integrity": "sha512-X8FaBL5pVvKCTBNaa9EjbH6vuaeIU7UcPSmP9501XF4zcKPCfTbQKz49LTMl7gd5YzUm82IlqRjte12LLpcSDQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.11.1.tgz", + "integrity": "sha512-Td517mHf+RjQAayFDM2kKb7NaGdRXrZfPbc7KOHlGbXthp5YTkFu2cCZGWokiqt1y1wsFaAodULhqBIg7vbbbw==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/plugin-base": "7.10.2", - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/plugin-base": "7.11.1", + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" @@ -1060,26 +898,26 @@ } }, "node_modules/@electron-forge/publisher-base": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.10.2.tgz", - "integrity": "sha512-2k2VOY0wOoAgQoQXn/u3EJ2Ka2v363+wC/+zUMTWGeRHW8pRwX84WX2SpsTttRzbsqAEMJYw5FAzgMBEQUTfpg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.11.1.tgz", + "integrity": "sha512-rXE9oMFGMtdQrixnumWYH5TTGsp99iPHZb3jI74YWq518ctCh6DlIgWlhf6ok2X0+lhWovcIb45KJucUFAQ13w==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2" + "@electron-forge/shared-types": "7.11.1" }, "engines": { "node": ">= 16.4.0" } }, "node_modules/@electron-forge/shared-types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.10.2.tgz", - "integrity": "sha512-e2pd9RsdbKwsNf6UtKoolmJGy92Nc0/XO4SI91doV8cM954hM2XSYz3VHoqXebMFAF1JDfXoEUt6UCRbEDgMgw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.11.1.tgz", + "integrity": "sha512-vvBWdAEh53UJlDGUevpaJk1+sqDMQibfrbHR+0IPA4MPyQex7/Uhv3vYH9oGHujBVAChQahjAuJt0fG6IJBLZg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/tracer": "7.10.2", + "@electron-forge/tracer": "7.11.1", "@electron/packager": "^18.3.5", "@electron/rebuild": "^3.7.0", "listr2": "^7.0.2" @@ -1089,14 +927,14 @@ } }, "node_modules/@electron-forge/template-base": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.10.2.tgz", - "integrity": "sha512-D9DbEx3rtikIhUyn4tcz2pJqHNU/+FXKNnzSvmrJoJ9LusR3C42OU9GtbU8oT3nawpnCGgPFIOGXrzexFPp6DA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.11.1.tgz", + "integrity": "sha512-XpTaEf+EfQw+0BlSAtSpZKYIKYvKu4raNzSGHZZoSYHp+HDC7R+MlpFQmSJiGdYQzQ14C+uxO42tVjgM0DMbpw==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/core-utils": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/core-utils": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", "fs-extra": "^10.0.0", @@ -1108,14 +946,14 @@ } }, "node_modules/@electron-forge/template-vite": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.10.2.tgz", - "integrity": "sha512-hR9HBOM902yq7zhFl8bO3w5ufMgitdd5ZwDzAdKITFh2ttZemHy9ha5S0K+R+4GoXHz8t7hUTHk8+iPy09qrpA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.11.1.tgz", + "integrity": "sha512-Or8Lxf4awoeUZoMTKJEw5KQDIhqOFs24WhVka3yZXxc6VgVWN79KmYKYM6uM/YMQttmafhsBhY2t1Lxo1WR/ug==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", - "@electron-forge/template-base": "7.10.2", + "@electron-forge/shared-types": "7.11.1", + "@electron-forge/template-base": "7.11.1", "fs-extra": "^10.0.0" }, "engines": { @@ -1123,14 +961,14 @@ } }, "node_modules/@electron-forge/template-vite-typescript": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.10.2.tgz", - "integrity": "sha512-df7rpxxIOIyZn0RfQ1GIlLW7dXhxkerc9uZ3ozO4C7zfvip3z0Mg+wS1synktPfr4WISaPktIdnj3mVu6Uu7Mw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.11.1.tgz", + "integrity": "sha512-Us4AHXFb+4z+gXgZImSqMBS63oKnsQWLOhqRg321xiDzu2UcQPlwgWNb4rAEKNVC1e7LXrUNDHuBiTrQkvWXbg==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", - "@electron-forge/template-base": "7.10.2", + "@electron-forge/shared-types": "7.11.1", + "@electron-forge/template-base": "7.11.1", "fs-extra": "^10.0.0" }, "engines": { @@ -1138,14 +976,14 @@ } }, "node_modules/@electron-forge/template-webpack": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.10.2.tgz", - "integrity": "sha512-VIUXA+XHM5SLjg7fIpOOmBsgi0LstkjrEz4gUzVL0AaITM7e+BCziIHld1ceXLbQ1FnKtrUGnQ9X/cHYxYvhHg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.11.1.tgz", + "integrity": "sha512-15lbXxi+er461MPk6sbwAOyjofAHwmQjTvxNCiNpaU2naEwbj3t0SlLq/BMr5HxnVOaMmA7+lKV9afkIom+d4Q==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", - "@electron-forge/template-base": "7.10.2", + "@electron-forge/shared-types": "7.11.1", + "@electron-forge/template-base": "7.11.1", "fs-extra": "^10.0.0" }, "engines": { @@ -1153,14 +991,14 @@ } }, "node_modules/@electron-forge/template-webpack-typescript": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.10.2.tgz", - "integrity": "sha512-JtrLUAFbxxWJ1kU7b8MNyL5SO9/rY5UeNz1b9hvMvilW8GxyMWUen58dafgdnx3OpKLNZnhOOhgRagNppEzJOA==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.11.1.tgz", + "integrity": "sha512-6ExfFnFkHBz8rvRFTFg5HVGTC12uJpbVk4q8DVg0R8rhhxhqiVNh8lF2UPtZ2yT2UtGWjXNVlyP3Y3T6q6E3GQ==", "dev": true, "license": "MIT", "dependencies": { - "@electron-forge/shared-types": "7.10.2", - "@electron-forge/template-base": "7.10.2", + "@electron-forge/shared-types": "7.11.1", + "@electron-forge/template-base": "7.11.1", "fs-extra": "^10.0.0", "typescript": "~5.4.5", "webpack": "^5.69.1" @@ -1184,9 +1022,9 @@ } }, "node_modules/@electron-forge/tracer": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.10.2.tgz", - "integrity": "sha512-jhLLQbttfZViSOYn/3SJc8HML+jNZAytPVJwgGGd3coUiFysWJ2Xald99iqOiouPAhIigBfNPxQb/q/EbcDu4g==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.11.1.tgz", + "integrity": "sha512-tiB6cglVQFcSw9N8GRwVwZUeB9u0DOx2Mj7aFXBUsFLUYQapvVGv51tUSy/UAW5lvmubGscYIILuVko+II3+NA==", "dev": true, "license": "MIT", "dependencies": { @@ -1484,9 +1322,9 @@ } }, "node_modules/@electron/packager/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -1557,9 +1395,9 @@ } }, "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -1608,9 +1446,9 @@ } }, "node_modules/@electron/windows-sign/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -1623,9 +1461,9 @@ } }, "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "license": "MIT", "optional": true, "dependencies": { @@ -1634,9 +1472,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "license": "MIT", "optional": true, "dependencies": { @@ -1813,9 +1651,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", - "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -1830,9 +1668,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", - "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -1847,9 +1685,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", - "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -1864,9 +1702,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", - "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -1881,9 +1719,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", - "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -1898,9 +1736,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", - "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -1915,9 +1753,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", - "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -1932,9 +1770,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", - "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -1949,9 +1787,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", - "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -1966,9 +1804,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", - "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -1983,9 +1821,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", - "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -2000,9 +1838,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", - "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -2017,9 +1855,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", - "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -2034,9 +1872,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", - "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -2051,9 +1889,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", - "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -2068,9 +1906,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", - "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -2085,9 +1923,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", - "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -2102,9 +1940,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", - "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -2119,9 +1957,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", - "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -2136,9 +1974,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", - "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -2153,9 +1991,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", - "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -2170,9 +2008,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", - "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", "cpu": [ "arm64" ], @@ -2187,9 +2025,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", - "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -2204,9 +2042,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", - "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -2221,9 +2059,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", - "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -2238,9 +2076,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", - "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -2255,9 +2093,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2284,16 +2122,16 @@ } }, "node_modules/@eslint-react/ast": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-2.3.13.tgz", - "integrity": "sha512-OP2rOhHYLx2nfd9uA9uACKZJN9z9rX9uuAMx4PjT75JNOdYr1GgqWQZcYCepyJ+gmVNCyiXcLXuyhavqxCSM8Q==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-2.7.4.tgz", + "integrity": "sha512-es148MgD+yXVT+OW2SKgUZeVq5xIQ3FESjnY6A1XMEO92neDxij8Suo1CTDKurMw4jMHELmB7CPhg/FqsfvnJg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "2.3.13", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/typescript-estree": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/eff": "2.7.4", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/typescript-estree": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "string-ts": "^2.3.1" }, "engines": { @@ -2305,19 +2143,19 @@ } }, "node_modules/@eslint-react/core": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-2.3.13.tgz", - "integrity": "sha512-4bWBE+1kApuxJKIrLJH2FuFtCbM4fXfDs6Ou8MNamGoX6hdynlntssvaMZTd/lk/L8dt01H/3btr7xBX4+4BNA==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-2.7.4.tgz", + "integrity": "sha512-L2LrKNFqUPhhChPZyHz1ak11GQAxGRRrGBw0q9sNqm9taPO1Eu/U8wrcO/X5jhYT3orROZklCl0z+q8pxM3A/g==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "birecord": "^0.1.1", "ts-pattern": "^5.9.0" }, @@ -2330,9 +2168,9 @@ } }, "node_modules/@eslint-react/eff": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/eff/-/eff-2.3.13.tgz", - "integrity": "sha512-byXsssozwh3VaiqcOonAKQgLXgpMVNSxBWFjdfbNhW7+NttorSt950qtiw+P7A9JoRab1OuGYk4MDY5UVBno8Q==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/eff/-/eff-2.7.4.tgz", + "integrity": "sha512-L+ZU/m7UudB7fYaMLrNgt700gjFJ9Wa4HQxe4UXXd6z2LecJbYEXo2Z+dU/e5I21/jxtH+iq+bnZwCxh3SaRtA==", "dev": true, "license": "MIT", "engines": { @@ -2340,24 +2178,24 @@ } }, "node_modules/@eslint-react/eslint-plugin": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-2.3.13.tgz", - "integrity": "sha512-gq0Z0wADAXvJS8Y/Wk3isK7WIEcfrQGGGdWvorAv0T7MxPd3d32TVwdc1Gx3hVLka3fYq1BBlQ5Fr8e1VgNuIg==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-2.7.4.tgz", + "integrity": "sha512-J8gXKbXIABuExCx5Rxz3ckmBOQQ4AhuvF7TKoDPCfqpTan4NEwmAqf+wbx2bIGuyaAB5TDFpXVW31r5vWvsjFA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/type-utils": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", - "eslint-plugin-react-dom": "2.3.13", - "eslint-plugin-react-hooks-extra": "2.3.13", - "eslint-plugin-react-naming-convention": "2.3.13", - "eslint-plugin-react-web-api": "2.3.13", - "eslint-plugin-react-x": "2.3.13", - "ts-api-utils": "^2.1.0" + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/type-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", + "eslint-plugin-react-dom": "2.7.4", + "eslint-plugin-react-hooks-extra": "2.7.4", + "eslint-plugin-react-naming-convention": "2.7.4", + "eslint-plugin-react-web-api": "2.7.4", + "eslint-plugin-react-x": "2.7.4", + "ts-api-utils": "^2.4.0" }, "engines": { "node": ">=20.19.0" @@ -2368,16 +2206,16 @@ } }, "node_modules/@eslint-react/shared": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-2.3.13.tgz", - "integrity": "sha512-ESE7dVeOXtem3K6BD6k2wJaFt35kPtTT9SWCL99LFk7pym4OEGoMxPcyB2R7PMWiVudwl63BmiOgQOdaFYPONg==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-2.7.4.tgz", + "integrity": "sha512-at8Ib51JJl1GJy+ylRDG3zv64FD2V89sofQ9iemu6DXkya2ZSE5dcO2EN7FmEj6CyYS/YRu3XlJ3dXHShDYPLg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "2.3.13", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/eff": "2.7.4", + "@typescript-eslint/utils": "^8.53.1", "ts-pattern": "^5.9.0", - "zod": "^4.1.13" + "zod": "^3.25.0 || ^4.0.0" }, "engines": { "node": ">=20.19.0" @@ -2388,17 +2226,18 @@ } }, "node_modules/@eslint-react/var": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-2.3.13.tgz", - "integrity": "sha512-BozBfUZkzzobD6x/M8XERAnZQ3UvZPsD49zTGFKKU9M/bgsM78HwzxAPLkiu88W55v3sO/Kqf8fQTXT4VEeZ/g==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-2.7.4.tgz", + "integrity": "sha512-RdcX5j/3EvI+qchordszVD3pjCAV+3+vNEztTEuZB6G1Le3ulQaLsQGfLP70INut9IyZaZ56hyC0bwfgqIFjQA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "ts-pattern": "^5.9.0" }, "engines": { @@ -2410,13 +2249,13 @@ } }, "node_modules/@eslint/compat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.0.tgz", - "integrity": "sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.1.tgz", + "integrity": "sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.0.0" + "@eslint/core": "^1.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -2472,9 +2311,9 @@ } }, "node_modules/@eslint/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.0.tgz", - "integrity": "sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz", + "integrity": "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2790,9 +2629,9 @@ } }, "node_modules/@formatjs/cli": { - "version": "6.7.4", - "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.7.4.tgz", - "integrity": "sha512-k6uqdeZDAjDd7iKKQ8yFYizFpbi5Y9H9NkV+hoIhmxaMSGvWRnRusQJaIQ+2rI14MH6knW6fx7tnO15C+ijDiw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.12.0.tgz", + "integrity": "sha512-mF3U8XxwEWR+ttlG5e4onYO+M5T22jnnQq7Ce/WK10CTVYR8Us433hbML6vgBLkiTS/MuCq61L0op3yNRSp2Kg==", "dev": true, "license": "MIT", "bin": { @@ -2802,11 +2641,10 @@ "node": ">= 16" }, "peerDependencies": { - "@glimmer/syntax": "^0.95.0", - "@vue/compiler-core": "^3.5.12", - "content-tag": "^3.0.0", - "ember-template-recast": "^6.1.5", - "vue": "^3.5.12" + "@glimmer/syntax": "^0.84.3 || ^0.95.0", + "@vue/compiler-core": "3.5.27", + "content-tag": "^4.1.0", + "vue": "3.5.27" }, "peerDependenciesMeta": { "@glimmer/env": { @@ -2827,67 +2665,64 @@ "content-tag": { "optional": true }, - "ember-template-recast": { - "optional": true - }, "vue": { "optional": true } } }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", - "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-3.1.0.tgz", + "integrity": "sha512-CjP1sUzM7XiQW6YluDreN+dMvcKZysO/J4ikvuDjDyd6nSOoSqAK9gvD1s75ZFaJVXtYOsz+y3CUXPZ1sKxcxw==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/intl-localematcher": "0.6.2", - "decimal.js": "^10.4.3", - "tslib": "^2.8.0" + "@formatjs/fast-memoize": "3.1.0", + "@formatjs/intl-localematcher": "0.8.0", + "decimal.js": "^10.6.0", + "tslib": "^2.8.1" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", - "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.0.tgz", + "integrity": "sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg==", "license": "MIT", "dependencies": { - "tslib": "^2.8.0" + "tslib": "^2.8.1" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", - "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.0.tgz", + "integrity": "sha512-Q01XuvtbDVCJQsG/E2MSfMZ+UdUoZV8v4Aex8tTH44SqKJZCeu5LjuclaKFUS0o1YoXndfEinJen5k1T1GR1vg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.6", - "@formatjs/icu-skeleton-parser": "1.8.16", - "tslib": "^2.8.0" + "@formatjs/ecma402-abstract": "3.1.0", + "@formatjs/icu-skeleton-parser": "2.1.0", + "tslib": "^2.8.1" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.16", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", - "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-2.1.0.tgz", + "integrity": "sha512-wNer4imHDFBVAJnMb2OGoSyM4wL/uuLnuo5mrenliqkDaNjRbG4jzlJcwTTDEBhai8iCjnzUsE7xwNJC29SfWw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.6", - "tslib": "^2.8.0" + "@formatjs/ecma402-abstract": "3.1.0", + "tslib": "^2.8.1" } }, "node_modules/@formatjs/intl": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-3.1.8.tgz", - "integrity": "sha512-LWXgwI5zTMatvR8w8kCNh/priDTOF/ZssokMBHJ7ZWXFoYLVOYo0EJERD9Eajv+xsfQO1QkuAt77KWQ1OI4mOQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-4.1.1.tgz", + "integrity": "sha512-88qfxk5XK5UApY3I8ocY2WJyA64MlVQKwmqAjkaVkX25mZb9qZokDDH4+MWD6UX67uqZlsrwUg36yZr/R4X3Jw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.6", - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/icu-messageformat-parser": "2.11.4", - "intl-messageformat": "10.7.18", - "tslib": "^2.8.0" + "@formatjs/ecma402-abstract": "3.1.0", + "@formatjs/fast-memoize": "3.1.0", + "@formatjs/icu-messageformat-parser": "3.5.0", + "intl-messageformat": "11.1.1", + "tslib": "^2.8.1" }, "peerDependencies": { "typescript": "^5.6.0" @@ -2899,12 +2734,13 @@ } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", - "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.0.tgz", + "integrity": "sha512-zgMYWdUlmEZpX2Io+v3LHrfq9xZ6khpQVf9UAw2xYWhGerGgI9XgH1HvL/A34jWiruUJpYlP5pk4g8nIcaDrXQ==", "license": "MIT", "dependencies": { - "tslib": "^2.8.0" + "@formatjs/fast-memoize": "3.1.0", + "tslib": "^2.8.1" } }, "node_modules/@gar/promisify": { @@ -3115,6 +2951,21 @@ "node": ">=18" } }, + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@inquirer/core/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/@inquirer/editor": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", @@ -3389,6 +3240,29 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -3639,6 +3513,13 @@ "better-sqlite3": "*" } }, + "node_modules/@maplibre/geojson-vt": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@maplibre/geojson-vt/-/geojson-vt-5.0.4.tgz", + "integrity": "sha512-KGg9sma45S+stfH9vPCJk1J0lSDLWZgCT9Y8u8qWZJyjFlP8MNP1WGTxIMYJZjDvVT3PDn05kN1C95Sut1HpgQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@maplibre/maplibre-gl-style-spec": { "version": "24.4.1", "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-24.4.1.tgz", @@ -3671,25 +3552,25 @@ } }, "node_modules/@maplibre/vt-pbf": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@maplibre/vt-pbf/-/vt-pbf-4.2.0.tgz", - "integrity": "sha512-bxrk/kQUwWXZgmqYgwOCnZCMONCRi3MJMqJdza4T3E4AeR5i+VyMnaJ8iDWtWxdfEAJRtrzIOeJtxZSy5mFrFA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@maplibre/vt-pbf/-/vt-pbf-4.2.1.tgz", + "integrity": "sha512-IxZBGq/+9cqf2qdWlFuQ+ZfoMhWpxDUGQZ/poPHOJBvwMUT1GuxLo6HgYTou+xxtsOsjfbcjI8PZaPCtmt97rA==", "dev": true, "license": "MIT", "dependencies": { "@mapbox/point-geometry": "^1.1.0", "@mapbox/vector-tile": "^2.0.4", - "@types/geojson-vt": "3.2.5", + "@maplibre/geojson-vt": "^5.0.4", + "@types/geojson": "^7946.0.16", "@types/supercluster": "^7.1.3", - "geojson-vt": "^4.0.2", "pbf": "^4.0.1", "supercluster": "^8.0.1" } }, "node_modules/@mui/core-downloads-tracker": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.6.tgz", - "integrity": "sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.7.tgz", + "integrity": "sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==", "dev": true, "license": "MIT", "funding": { @@ -3698,23 +3579,23 @@ } }, "node_modules/@mui/material": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.6.tgz", - "integrity": "sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.7.tgz", + "integrity": "sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.28.4", - "@mui/core-downloads-tracker": "^7.3.6", - "@mui/system": "^7.3.6", - "@mui/types": "^7.4.9", - "@mui/utils": "^7.3.6", + "@mui/core-downloads-tracker": "^7.3.7", + "@mui/system": "^7.3.7", + "@mui/types": "^7.4.10", + "@mui/utils": "^7.3.7", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.12", "clsx": "^2.1.1", - "csstype": "^3.1.3", + "csstype": "^3.2.3", "prop-types": "^15.8.1", - "react-is": "^19.2.0", + "react-is": "^19.2.3", "react-transition-group": "^4.4.5" }, "engines": { @@ -3727,7 +3608,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^7.3.6", + "@mui/material-pigment-css": "^7.3.7", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -3748,14 +3629,14 @@ } }, "node_modules/@mui/private-theming": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.6.tgz", - "integrity": "sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.7.tgz", + "integrity": "sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.28.4", - "@mui/utils": "^7.3.6", + "@mui/utils": "^7.3.7", "prop-types": "^15.8.1" }, "engines": { @@ -3776,9 +3657,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.6.tgz", - "integrity": "sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.7.tgz", + "integrity": "sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==", "dev": true, "license": "MIT", "dependencies": { @@ -3786,7 +3667,7 @@ "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", - "csstype": "^3.1.3", + "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "engines": { @@ -3811,19 +3692,19 @@ } }, "node_modules/@mui/system": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.6.tgz", - "integrity": "sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.7.tgz", + "integrity": "sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.28.4", - "@mui/private-theming": "^7.3.6", - "@mui/styled-engine": "^7.3.6", - "@mui/types": "^7.4.9", - "@mui/utils": "^7.3.6", + "@mui/private-theming": "^7.3.7", + "@mui/styled-engine": "^7.3.7", + "@mui/types": "^7.4.10", + "@mui/utils": "^7.3.7", "clsx": "^2.1.1", - "csstype": "^3.1.3", + "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "engines": { @@ -3852,9 +3733,9 @@ } }, "node_modules/@mui/types": { - "version": "7.4.9", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.9.tgz", - "integrity": "sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==", + "version": "7.4.10", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.10.tgz", + "integrity": "sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3870,18 +3751,18 @@ } }, "node_modules/@mui/utils": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.6.tgz", - "integrity": "sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.7.tgz", + "integrity": "sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.28.4", - "@mui/types": "^7.4.9", + "@mui/types": "^7.4.10", "@types/prop-types": "^15.7.15", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^19.2.0" + "react-is": "^19.2.3" }, "engines": { "node": ">=14.0.0" @@ -3901,9 +3782,9 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.0.tgz", - "integrity": "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", "optional": true, @@ -3911,6 +3792,10 @@ "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, "node_modules/@node-rs/crc32": { @@ -4267,9 +4152,9 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz", - "integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.5.0.tgz", + "integrity": "sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==", "license": "Apache-2.0", "engines": { "node": "^18.19.0 || >=20.6.0" @@ -4279,9 +4164,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", - "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" @@ -4457,6 +4342,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/instrumentation-ioredis": { "version": "0.56.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.56.0.tgz", @@ -4681,12 +4581,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.2.0", + "@opentelemetry/core": "2.5.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -4697,13 +4597,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", - "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.5.0.tgz", + "integrity": "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", + "@opentelemetry/core": "2.5.0", + "@opentelemetry/resources": "2.5.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -4714,9 +4614,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", - "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", "license": "Apache-2.0", "engines": { "node": ">=14" @@ -4738,9 +4638,9 @@ } }, "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.15.0.tgz", - "integrity": "sha512-Q+lWuFfq7whNelNJIP1dhXaVz4zO9Tu77GcQHyxDWh3MaCoO2Bisphgzmsh4ZoUe2zIchQh6OvQL99GlWHg9Tw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.16.4.tgz", + "integrity": "sha512-6XUHilmj8D6Ggus+sTBp64x/DUQ7LgC/dvTDdUOt4iMQnDdSep6N1mnvVLIiG+qM5tRnNHravNzBJnUlYwRQoA==", "cpu": [ "arm" ], @@ -4752,9 +4652,9 @@ ] }, "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.15.0.tgz", - "integrity": "sha512-vbdBttesHR0W1oJaxgWVTboyMUuu+VnPsHXJ6jrXf4czELzB6GIg5DrmlyhAmFBhjwov+yJH/DfTnHS+2sDgOw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.16.4.tgz", + "integrity": "sha512-5ODwd1F5mdkm6JIg1CNny9yxIrCzrkKpxmqas7Alw23vE0Ot8D4ykqNBW5Z/nIZkXVEo5VDmnm0sMBBIANcpeQ==", "cpu": [ "arm64" ], @@ -4766,9 +4666,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.15.0.tgz", - "integrity": "sha512-R67lsOe1UzNjqVBCwCZX1rlItTsj/cVtBw4Uy19CvTicqEWvwaTn8t34zLD75LQwDDPCY3C8n7NbD+LIdw+ZoA==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.16.4.tgz", + "integrity": "sha512-egwvDK9DMU4Q8F4BG74/n4E22pQ0lT5ukOVB6VXkTj0iG2fnyoStHoFaBnmDseLNRA4r61Mxxz8k940CIaJMDg==", "cpu": [ "arm64" ], @@ -4780,9 +4680,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.15.0.tgz", - "integrity": "sha512-77mya5F8WV0EtCxI0MlVZcqkYlaQpfNwl/tZlfg4jRsoLpFbaTeWv75hFm6TE84WULVlJtSgvf7DhoWBxp9+ZQ==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.16.4.tgz", + "integrity": "sha512-HMkODYrAG4HaFNCpaYzSQFkxeiz2wzl+smXwxeORIQVEo1WAgUrWbvYT/0RNJg/A8z2aGMGK5KWTUr2nX5GiMw==", "cpu": [ "x64" ], @@ -4794,9 +4694,9 @@ ] }, "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.15.0.tgz", - "integrity": "sha512-X1Sz7m5PC+6D3KWIDXMUtux+0Imj6HfHGdBStSvgdI60OravzI1t83eyn6eN0LPTrynuPrUgjk7tOnOsBzSWHw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.16.4.tgz", + "integrity": "sha512-mkcKhIdSlUqnndD928WAVVFMEr1D5EwHOBGHadypW0PkM0h4pn89ZacQvU7Qs/Z2qquzvbyw8m4Mq3jOYI+4Dw==", "cpu": [ "x64" ], @@ -4808,9 +4708,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.15.0.tgz", - "integrity": "sha512-L1x/wCaIRre+18I4cH/lTqSAymlV0k4HqfSYNNuI9oeL28Ks86lI6O5VfYL6sxxWYgjuWB98gNGo7tq7d4GarQ==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.16.4.tgz", + "integrity": "sha512-ZJvzbmXI/cILQVcJL9S2Fp7GLAIY4Yr6mpGb+k6LKLUSEq85yhG+rJ9eWCqgULVIf2BFps/NlmPTa7B7oj8jhQ==", "cpu": [ "arm" ], @@ -4822,9 +4722,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.15.0.tgz", - "integrity": "sha512-abGXd/zMGa0tH8nKlAXdOnRy4G7jZmkU0J85kMKWns161bxIgGn/j7zxqh3DKEW98wAzzU9GofZMJ0P5YCVPVw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.16.4.tgz", + "integrity": "sha512-iZUB0W52uB10gBUDAi79eTnzqp1ralikCAjfq7CdokItwZUVJXclNYANnzXmtc0Xr0ox+YsDsG2jGcj875SatA==", "cpu": [ "arm" ], @@ -4836,9 +4736,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.15.0.tgz", - "integrity": "sha512-SVjjjtMW66Mza76PBGJLqB0KKyFTBnxmtDXLJPbL6ZPGSctcXVmujz7/WAc0rb9m2oV0cHQTtVjnq6orQnI/jg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.16.4.tgz", + "integrity": "sha512-qNQk0H6q1CnwS9cnvyjk9a+JN8BTbxK7K15Bb5hYfJcKTG1hfloQf6egndKauYOO0wu9ldCMPBrEP1FNIQEhaA==", "cpu": [ "arm64" ], @@ -4850,9 +4750,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.15.0.tgz", - "integrity": "sha512-JDv2/AycPF2qgzEiDeMJCcSzKNDm3KxNg0KKWipoKEMDFqfM7LxNwwSVyAOGmrYlE4l3dg290hOMsr9xG7jv9g==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.16.4.tgz", + "integrity": "sha512-wEXSaEaYxGGoVSbw0i2etjDDWcqErKr8xSkTdwATP798efsZmodUAcLYJhN0Nd4W35Oq6qAvFGHpKwFrrhpTrA==", "cpu": [ "arm64" ], @@ -4864,9 +4764,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.15.0.tgz", - "integrity": "sha512-zbu9FhvBLW4KJxo7ElFvZWbSt4vP685Qc/Gyk/Ns3g2gR9qh2qWXouH8PWySy+Ko/qJ42+HJCLg+ZNcxikERfg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.16.4.tgz", + "integrity": "sha512-CUFOlpb07DVOFLoYiaTfbSBRPIhNgwc/MtlYeg3p6GJJw+kEm/vzc9lohPSjzF2MLPB5hzsJdk+L/GjrTT3UPw==", "cpu": [ "ppc64" ], @@ -4878,9 +4778,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.15.0.tgz", - "integrity": "sha512-Kfleehe6B09C2qCnyIU01xLFqFXCHI4ylzkicfX/89j+gNHh9xyNdpEvit88Kq6i5tTGdavVnM6DQfOE2qNtlg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.16.4.tgz", + "integrity": "sha512-d8It4AH8cN9ReK1hW6ZO4x3rMT0hB2LYH0RNidGogV9xtnjLRU+Y3MrCeClLyOSGCibmweJJAjnwB7AQ31GEhg==", "cpu": [ "riscv64" ], @@ -4892,9 +4792,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.15.0.tgz", - "integrity": "sha512-J7LPiEt27Tpm8P+qURDwNc8q45+n+mWgyys4/V6r5A8v5gDentHRGUx3iVk5NxdKhgoGulrzQocPTZVosq25Eg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.16.4.tgz", + "integrity": "sha512-d09dOww9iKyEHSxuOQ/Iu2aYswl0j7ExBcyy14D6lJ5ijQSP9FXcJYJsJ3yvzboO/PDEFjvRuF41f8O1skiPVg==", "cpu": [ "riscv64" ], @@ -4906,9 +4806,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.15.0.tgz", - "integrity": "sha512-+8/d2tAScPjVJNyqa7GPGnqleTB/XW9dZJQ2D/oIM3wpH3TG+DaFEXBbk4QFJ9K9AUGBhvQvWU2mQyhK/yYn3Q==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.16.4.tgz", + "integrity": "sha512-lhjyGmUzTWHduZF3MkdUSEPMRIdExnhsqv8u1upX3A15epVn6YVwv4msFQPJl1x1wszkACPeDHGOtzHsITXGdw==", "cpu": [ "s390x" ], @@ -4920,9 +4820,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.15.0.tgz", - "integrity": "sha512-xtvSzH7Nr5MCZI2FKImmOdTl9kzuQ51RPyLh451tvD2qnkg3BaqI9Ox78bTk57YJhlXPuxWSOL5aZhKAc9J6qg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.16.4.tgz", + "integrity": "sha512-ZtqqiI5rzlrYBm/IMMDIg3zvvVj4WO/90Dg/zX+iA8lWaLN7K5nroXb17MQ4WhI5RqlEAgrnYDXW+hok1D9Kaw==", "cpu": [ "x64" ], @@ -4934,9 +4834,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.15.0.tgz", - "integrity": "sha512-14YL1zuXj06+/tqsuUZuzL0T425WA/I4nSVN1kBXeC5WHxem6lQ+2HGvG+crjeJEqHgZUT62YIgj88W+8E7eyg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.16.4.tgz", + "integrity": "sha512-LM424h7aaKcMlqHnQWgTzO+GRNLyjcNnMpqm8SygEtFRVW693XS+XGXYvjORlmJtsyjo84ej1FMb3U2HE5eyjg==", "cpu": [ "x64" ], @@ -4948,9 +4848,9 @@ ] }, "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.15.0.tgz", - "integrity": "sha512-/7Qli+1Wk93coxnrQaU8ySlICYN8HsgyIrzqjgIkQEpI//9eUeaeIHZptNl2fMvBGeXa7k2QgLbRNaBRgpnvMw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.16.4.tgz", + "integrity": "sha512-8w8U6A5DDWTBv3OUxSD9fNk37liZuEC5jnAc9wQRv9DeYKAXvuUtBfT09aIZ58swaci0q1WS48/CoMVEO6jdCA==", "cpu": [ "arm64" ], @@ -4962,9 +4862,9 @@ ] }, "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.15.0.tgz", - "integrity": "sha512-q5rn2eIMQLuc/AVGR2rQKb2EVlgreATGG8xXg8f4XbbYCVgpxaq+dgMbiPStyNywW1MH8VU2T09UEm30UtOQvg==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.16.4.tgz", + "integrity": "sha512-hnjb0mDVQOon6NdfNJ1EmNquonJUjoYkp7UyasjxVa4iiMcApziHP4czzzme6WZbp+vzakhVv2Yi5ACTon3Zlw==", "cpu": [ "wasm32" ], @@ -4972,16 +4872,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.0" + "@napi-rs/wasm-runtime": "^1.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.15.0.tgz", - "integrity": "sha512-yCAh2RWjU/8wWTxQDgGPgzV9QBv0/Ojb5ej1c/58iOjyTuy/J1ZQtYi2SpULjKmwIxLJdTiCHpMilauWimE31w==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.16.4.tgz", + "integrity": "sha512-+i0XtNfSP7cfnh1T8FMrMm4HxTeh0jxKP/VQCLWbjdUxaAQ4damho4gN9lF5dl0tZahtdszXLUboBFNloSJNOQ==", "cpu": [ "arm64" ], @@ -4993,9 +4893,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.15.0.tgz", - "integrity": "sha512-lmXKb6lvA6M6QIbtYfgjd+AryJqExZVSY2bfECC18OPu7Lv1mHFF171Mai5l9hG3r4IhHPPIwT10EHoilSCYeA==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.16.4.tgz", + "integrity": "sha512-ePW1islJrv3lPnef/iWwrjrSpRH8kLlftdKf2auQNWvYLx6F0xvcnv9d+r/upnVuttoQY9amLnWJf+JnCRksTw==", "cpu": [ "ia32" ], @@ -5007,9 +4907,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.15.0.tgz", - "integrity": "sha512-HZsfne0s/tGOcJK9ZdTGxsNU2P/dH0Shf0jqrPvsC6wX0Wk+6AyhSpHFLQCnLOuFQiHHU0ePfM8iYsoJb5hHpQ==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.16.4.tgz", + "integrity": "sha512-qnjQhjHI4TDL3hkidZyEmQRK43w2NHl6TP5Rnt/0XxYuLdEgx/1yzShhYidyqWzdnhGhSPTM/WVP2mK66XLegA==", "cpu": [ "x64" ], @@ -5046,13 +4946,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", - "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.0.tgz", + "integrity": "sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.57.0" + "playwright": "1.58.0" }, "bin": { "playwright": "cli.js" @@ -5187,9 +5087,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.4.tgz", - "integrity": "sha512-PWU3Y92H4DD0bOqorEPp1Y0tbzwAurFmIYpjcObv5axGVOtcTlB0b2UKMd2echo08MgN7jO8WQZSSysvfisFSQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", "cpu": [ "arm" ], @@ -5201,9 +5101,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.4.tgz", - "integrity": "sha512-Gw0/DuVm3rGsqhMGYkSOXXIx20cC3kTlivZeuaGt4gEgILivykNyBWxeUV5Cf2tDA2nPLah26vq3emlRrWVbng==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", "cpu": [ "arm64" ], @@ -5215,9 +5115,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.4.tgz", - "integrity": "sha512-+w06QvXsgzKwdVg5qRLZpTHh1bigHZIqoIUPtiqh05ZiJVUQ6ymOxaPkXTvRPRLH88575ZCRSRM3PwIoNma01Q==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", "cpu": [ "arm64" ], @@ -5229,9 +5129,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.4.tgz", - "integrity": "sha512-EB4Na9G2GsrRNRNFPuxfwvDRDUwQEzJPpiK1vo2zMVhEeufZ1k7J1bKnT0JYDfnPC7RNZ2H5YNQhW6/p2QKATw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", "cpu": [ "x64" ], @@ -5243,9 +5143,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.4.tgz", - "integrity": "sha512-bldA8XEqPcs6OYdknoTMaGhjytnwQ0NClSPpWpmufOuGPN5dDmvIa32FygC2gneKK4A1oSx86V1l55hyUWUYFQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", "cpu": [ "arm64" ], @@ -5257,9 +5157,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.4.tgz", - "integrity": "sha512-3T8GPjH6mixCd0YPn0bXtcuSXi1Lj+15Ujw2CEb7dd24j9thcKscCf88IV7n76WaAdorOzAgSSbuVRg4C8V8Qw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", "cpu": [ "x64" ], @@ -5271,9 +5171,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.4.tgz", - "integrity": "sha512-UPMMNeC4LXW7ZSHxeP3Edv09aLsFUMaD1TSVW6n1CWMECnUIJMFFB7+XC2lZTdPtvB36tYC0cJWc86mzSsaviw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", "cpu": [ "arm" ], @@ -5285,9 +5185,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.4.tgz", - "integrity": "sha512-H8uwlV0otHs5Q7WAMSoyvjV9DJPiy5nJ/xnHolY0QptLPjaSsuX7tw+SPIfiYH6cnVx3fe4EWFafo6gH6ekZKA==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", "cpu": [ "arm" ], @@ -5299,9 +5199,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.4.tgz", - "integrity": "sha512-BLRwSRwICXz0TXkbIbqJ1ibK+/dSBpTJqDClF61GWIrxTXZWQE78ROeIhgl5MjVs4B4gSLPCFeD4xML9vbzvCQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", "cpu": [ "arm64" ], @@ -5313,9 +5213,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.4.tgz", - "integrity": "sha512-6bySEjOTbmVcPJAywjpGLckK793A0TJWSbIa0sVwtVGfe/Nz6gOWHOwkshUIAp9j7wg2WKcA4Snu7Y1nUZyQew==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", "cpu": [ "arm64" ], @@ -5327,9 +5227,23 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.4.tgz", - "integrity": "sha512-U0ow3bXYJZ5MIbchVusxEycBw7bO6C2u5UvD31i5IMTrnt2p4Fh4ZbHSdc/31TScIJQYHwxbj05BpevB3201ug==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", "cpu": [ "loong64" ], @@ -5341,9 +5255,23 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.4.tgz", - "integrity": "sha512-iujDk07ZNwGLVn0YIWM80SFN039bHZHCdCCuX9nyx3Jsa2d9V/0Y32F+YadzwbvDxhSeVo9zefkoPnXEImnM5w==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", "cpu": [ "ppc64" ], @@ -5355,9 +5283,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.4.tgz", - "integrity": "sha512-MUtAktiOUSu+AXBpx1fkuG/Bi5rhlorGs3lw5QeJ2X3ziEGAq7vFNdWVde6XGaVqi0LGSvugwjoxSNJfHFTC0g==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", "cpu": [ "riscv64" ], @@ -5369,9 +5297,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.4.tgz", - "integrity": "sha512-btm35eAbDfPtcFEgaXCI5l3c2WXyzwiE8pArhd66SDtoLWmgK5/M7CUxmUglkwtniPzwvWioBKKl6IXLbPf2sQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", "cpu": [ "riscv64" ], @@ -5383,9 +5311,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.4.tgz", - "integrity": "sha512-uJlhKE9ccUTCUlK+HUz/80cVtx2RayadC5ldDrrDUFaJK0SNb8/cCmC9RhBhIWuZ71Nqj4Uoa9+xljKWRogdhA==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", "cpu": [ "s390x" ], @@ -5397,9 +5325,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.4.tgz", - "integrity": "sha512-jjEMkzvASQBbzzlzf4os7nzSBd/cvPrpqXCUOqoeCh1dQ4BP3RZCJk8XBeik4MUln3m+8LeTJcY54C/u8wb3DQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", "cpu": [ "x64" ], @@ -5411,9 +5339,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.4.tgz", - "integrity": "sha512-lu90KG06NNH19shC5rBPkrh6mrTpq5kviFylPBXQVpdEu0yzb0mDgyxLr6XdcGdBIQTH/UAhDJnL+APZTBu1aQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", "cpu": [ "x64" ], @@ -5424,10 +5352,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.4.tgz", - "integrity": "sha512-dFDcmLwsUzhAm/dn0+dMOQZoONVYBtgik0VuY/d5IJUUb787L3Ko/ibvTvddqhb3RaB7vFEozYevHN4ox22R/w==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", "cpu": [ "arm64" ], @@ -5439,9 +5381,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.4.tgz", - "integrity": "sha512-WvUpUAWmUxZKtRnQWpRKnLW2DEO8HB/l8z6oFFMNuHndMzFTJEXzaYJ5ZAmzNw0L21QQJZsUQFt2oPf3ykAD/w==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", "cpu": [ "arm64" ], @@ -5453,9 +5395,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.4.tgz", - "integrity": "sha512-JGbeF2/FDU0x2OLySw/jgvkwWUo05BSiJK0dtuI4LyuXbz3wKiC1xHhLB1Tqm5VU6ZZDmAorj45r/IgWNWku5g==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", "cpu": [ "ia32" ], @@ -5467,9 +5409,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.4.tgz", - "integrity": "sha512-zuuC7AyxLWLubP+mlUwEyR8M1ixW1ERNPHJfXm8x7eQNP4Pzkd7hS3qBuKBR70VRiQ04Kw8FNfRMF5TNxuZq2g==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", "cpu": [ "x64" ], @@ -5481,9 +5423,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.4.tgz", - "integrity": "sha512-Sbx45u/Lbb5RyptSbX7/3deP+/lzEmZ0BTSHxwxN/IMOZDZf8S0AGo0hJD5n/LQssxb5Z3B4og4P2X6Dd8acCA==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", "cpu": [ "x64" ], @@ -5495,59 +5437,59 @@ ] }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.29.0.tgz", - "integrity": "sha512-M3kycMY6f3KY9a8jDYac+yG0E3ZgWVWSxlOEC5MhYyX+g7mqxkwrb3LFQyuxSm/m+CCgMTCaPOOaB2twXP6EQg==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.34.0.tgz", + "integrity": "sha512-0YNr60rGHyedmwkO0lbDBjNx2KAmT3kWamjaqu7Aw+jsESoPLgt+fzaTVvUBvkftBDui2PeTSzXm/nqzssctYg==", "license": "MIT", "dependencies": { - "@sentry/core": "10.29.0" + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.29.0.tgz", - "integrity": "sha512-Y7IRsNeS99cEONu1mZWZc3HvbjNnu59Hgymm0swFFKbdgbCgdT6l85kn2oLsuq4Ew8Dw/pL/Sgpwsl9UgYFpUg==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.34.0.tgz", + "integrity": "sha512-wgGnq+iNxsFSOe9WX/FOvtoItSTjgLJJ4dQkVYtcVM6WGBVIg4wgNYfECCnRNztUTPzpZHLjC9r+4Pym451DDQ==", "license": "MIT", "dependencies": { - "@sentry/core": "10.29.0" + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.29.0.tgz", - "integrity": "sha512-45NVw9PwB9TQ8z+xJ6G6Za+wmQ1RTA35heBSzR6U4bknj8LmA04k2iwnobvxCBEQXeLfcJEO1vFgagMoqMZMBw==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.34.0.tgz", + "integrity": "sha512-Vmea0GcOg57z/S1bVSj3saFcRvDqdLzdy4wd9fQMpMgy5OCbTlo7lxVUndKzbcZnanma6zF6VxwnWER1WuN9RA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.29.0", - "@sentry/core": "10.29.0" + "@sentry-internal/browser-utils": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.29.0.tgz", - "integrity": "sha512-typY4JrpAQQGPuSyd/BD8+nNCbvTV2UVvKzr+iKgI0m1qc4Dz8tHZ4Nfais2Z8eYn/pL1kqVQN5ERTmJoYFdIw==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.34.0.tgz", + "integrity": "sha512-XWH/9njtgMD+LLWjc4KKgBpb+dTCkoUEIFDxcvzG/87d+jirmzf0+r8EfpLwKG+GrqNiiGRV39zIqu0SfPl+cw==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.29.0", - "@sentry/core": "10.29.0" + "@sentry-internal/replay": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.6.1.tgz", - "integrity": "sha512-aSIk0vgBqv7PhX6/Eov+vlI4puCE0bRXzUG5HdCsHBpAfeMkI8Hva6kSOusnzKqs8bf04hU7s3Sf0XxGTj/1AA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.8.0.tgz", + "integrity": "sha512-cy/9Eipkv23MsEJ4IuB4dNlVwS9UqOzI3Eu+QPake5BVFgPYCX0uP0Tr3Z43Ime6Rb+BiDnWC51AJK9i9afHYw==", "dev": true, "license": "MIT", "engines": { @@ -5555,30 +5497,30 @@ } }, "node_modules/@sentry/browser": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.29.0.tgz", - "integrity": "sha512-XdbyIR6F4qoR9Z1JCWTgunVcTJjS9p2Th+v4wYs4ME+ZdLC4tuKKmRgYg3YdSIWCn1CBfIgdI6wqETSf7H6Njw==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.34.0.tgz", + "integrity": "sha512-8WCsAXli5Z+eIN8dMY8KGQjrS3XgUp1np/pjdeWNrVPVR8q8XpS34qc+f+y/LFrYQC9bs2Of5aIBwRtDCIvRsg==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.29.0", - "@sentry-internal/feedback": "10.29.0", - "@sentry-internal/replay": "10.29.0", - "@sentry-internal/replay-canvas": "10.29.0", - "@sentry/core": "10.29.0" + "@sentry-internal/browser-utils": "10.34.0", + "@sentry-internal/feedback": "10.34.0", + "@sentry-internal/replay": "10.34.0", + "@sentry-internal/replay-canvas": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.1.tgz", - "integrity": "sha512-WPeRbnMXm927m4Kr69NTArPfI+p5/34FHftdCRI3LFPMyhZDzz6J3wLy4hzaVUgmMf10eLzmq2HGEMvpQmdynA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.8.0.tgz", + "integrity": "sha512-QaXd/NzaZ2vmiA2FNu2nBkgQU+17N3fE+zVOTzG0YK54QDSJMd4n3AeJIEyPhSzkOob+GqtO22nbYf6AATFMAw==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "4.6.1", + "@sentry/babel-plugin-component-annotate": "4.8.0", "@sentry/cli": "^2.57.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -5600,19 +5542,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", @@ -5835,26 +5764,26 @@ } }, "node_modules/@sentry/core": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.29.0.tgz", - "integrity": "sha512-olQ2DU9dA/Bwsz3PtA9KNXRMqBWRQSkPw+MxwWEoU1K1qtiM9L0j6lbEFb5iSY3d7WYD5MB+1d5COugjSBrHtw==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.34.0.tgz", + "integrity": "sha512-4FFpYBMf0VFdPcsr4grDYDOR87mRu6oCfb51oQjU/Pndmty7UgYo0Bst3LEC/8v0SpytBtzXq+Wx/fkwulBesg==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/electron": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-7.5.0.tgz", - "integrity": "sha512-88t/YsB5iO75faKdd7lIuJkwp9FGKgFlkDuaSJhsJiVcjlywkn8CwUbctAbS0gu6Suc0raHCF4ULvGyksKAoww==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-7.6.0.tgz", + "integrity": "sha512-ueW3Coa0BtOQFPaf+QaI3mBHMi/t7CkZnuzZ6PNoVpHe6CgYfCtNdE7H1BpMsCpG1FhEAgCLBJtpaMKyQBFdzQ==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.29.0", - "@sentry/core": "10.29.0", - "@sentry/node": "10.29.0" + "@sentry/browser": "10.34.0", + "@sentry/core": "10.34.0", + "@sentry/node": "10.34.0" }, "peerDependencies": { - "@sentry/node-native": "10.29.0" + "@sentry/node-native": "10.34.0" }, "peerDependenciesMeta": { "@sentry/node-native": { @@ -5863,9 +5792,9 @@ } }, "node_modules/@sentry/node": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.29.0.tgz", - "integrity": "sha512-9j8VzV06VCj+H8tlxpfa7BNN4HzH5exv68WOufdMTXzzWLOXnzrdNDoYplm1G2S3LMvWsc1SVI3a8A0yBY7oWg==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.34.0.tgz", + "integrity": "sha512-bEOyH97HuVtWZYAZ5mp0NhYNc+n6QCfiKuLee2P75n2kt4cIPTGvLOSdUwwjllf795uOdKZJuM1IUN0W+YMcVg==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -5898,10 +5827,10 @@ "@opentelemetry/sdk-trace-base": "^2.2.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.19.0", - "@sentry/core": "10.29.0", - "@sentry/node-core": "10.29.0", - "@sentry/opentelemetry": "10.29.0", - "import-in-the-middle": "^2", + "@sentry/core": "10.34.0", + "@sentry/node-core": "10.34.0", + "@sentry/opentelemetry": "10.34.0", + "import-in-the-middle": "^2.0.1", "minimatch": "^9.0.0" }, "engines": { @@ -5909,15 +5838,15 @@ } }, "node_modules/@sentry/node-core": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.29.0.tgz", - "integrity": "sha512-f/Y0okHhPPb5HnYNBqCivJ2YuXtSadvcIx16dzU5mHQxZhgGednUCPEX7rsvPcd4HneQz12HKLqxbAmNu+b3FA==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.34.0.tgz", + "integrity": "sha512-FrGfC8GzD1cnZDO3zwQ4cjyoY1ZwNHvZbXSvXRYxpjhXidZhvaPurjgLRSB0xGaFgoemmOp1ufsx/w6fQOGA6Q==", "license": "MIT", "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", - "@sentry/core": "10.29.0", - "@sentry/opentelemetry": "10.29.0", - "import-in-the-middle": "^2" + "@sentry/core": "10.34.0", + "@sentry/opentelemetry": "10.34.0", + "import-in-the-middle": "^2.0.1" }, "engines": { "node": ">=18" @@ -5957,12 +5886,12 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.29.0.tgz", - "integrity": "sha512-5QvtAwS73HlI/+OTF1poAFELzsc0se+PHmMsXGGrOeNBvjCr3ZE8qvke09aeMn7uRImf3Nc9J6i2KtSHJnbKPA==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.34.0.tgz", + "integrity": "sha512-uKuULBOmdVu3bYdD8doMLqKgN0PP3WWtI7Shu11P9PVrhSNT4U9yM9Z6v1aFlQcbrgyg3LynZuXs8lyjt90UbA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.29.0" + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" @@ -5976,15 +5905,14 @@ } }, "node_modules/@sentry/react": { - "version": "10.29.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.29.0.tgz", - "integrity": "sha512-YGaEUXubzil7qssD1koh1fyt0aS8tHB61/6+oNShJ6xZPg03AB42bNMr2/y8fIFx36kb3MiCA5sFoH/ubF0LnQ==", + "version": "10.34.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.34.0.tgz", + "integrity": "sha512-LDpg9WDrEwo6lr/YOAA54id/g5D1PGKEIiOGxqRZbBVyjzrsquwzhSG2CMqnp+YO6lz/r96LWuqm2cvfpht2zA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/browser": "10.29.0", - "@sentry/core": "10.29.0", - "hoist-non-react-statics": "^3.3.2" + "@sentry/browser": "10.34.0", + "@sentry/core": "10.34.0" }, "engines": { "node": ">=18" @@ -5994,13 +5922,13 @@ } }, "node_modules/@sentry/vite-plugin": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.6.1.tgz", - "integrity": "sha512-Qvys1y3o8/bfL3ikrHnJS9zxdjt0z3POshdBl3967UcflrTqBmnGNkcVk53SlmtJWIfh85fgmrLvGYwZ2YiqNg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.8.0.tgz", + "integrity": "sha512-/YZJitGsx/o72FFQYy3tucUfs4w3COvSI1d2NYyAhIzay4tjLLRjpM5PdwFnoBT7Uj/7jSbuHkg87PAliLiu2g==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "4.6.1", + "@sentry/bundler-plugin-core": "4.8.0", "unplugin": "1.0.1" }, "engines": { @@ -6046,9 +5974,9 @@ "license": "ISC" }, "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, "license": "MIT" }, @@ -6066,9 +5994,9 @@ } }, "node_modules/@tanstack/devtools-event-client": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@tanstack/devtools-event-client/-/devtools-event-client-0.3.5.tgz", - "integrity": "sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@tanstack/devtools-event-client/-/devtools-event-client-0.4.0.tgz", + "integrity": "sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==", "dev": true, "license": "MIT", "engines": { @@ -6080,13 +6008,13 @@ } }, "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.91.2", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.2.tgz", - "integrity": "sha512-UPeWKl/Acu1IuuHJlsN+eITUHqAaa9/04geHHPedY8siVarSaWprY0SVMKrkpKfk5ehRT7+/MZ5QwWuEtkWrFw==", + "version": "5.91.3", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.3.tgz", + "integrity": "sha512-5GMGZMYFK9dOvjpdedjJs4hU40EdPuO2AjzObQzP7eOSsikunCfrXaU3oNGXSsvoU9ve1Z1xQZZuDyPi0C1M7Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.44.1" + "@typescript-eslint/utils": "^8.48.0" }, "funding": { "type": "github", @@ -6097,9 +6025,9 @@ } }, "node_modules/@tanstack/eslint-plugin-router": { - "version": "1.141.0", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-router/-/eslint-plugin-router-1.141.0.tgz", - "integrity": "sha512-E5QSLvoS8By2UajtUE64CNp22LVyzdqNyR/ponVV+yxONWHC3IzDUUHKBnPxW1yVwRT88qQoJYV0RJL6noW25A==", + "version": "1.155.0", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-router/-/eslint-plugin-router-1.155.0.tgz", + "integrity": "sha512-Qq6uYYtcu1aMzFImEIz0Azcd9iCAbpkA3SBAGjwavFEyptafwnmtANKrjTqq09ej/CNTrTjEQBH72yvbqqTMqw==", "dev": true, "license": "MIT", "dependencies": { @@ -6114,13 +6042,13 @@ } }, "node_modules/@tanstack/form-core": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@tanstack/form-core/-/form-core-1.27.4.tgz", - "integrity": "sha512-aNzDJzCRQ+omFNkOXNuHNVYs4vMFmgVdJQKUJXfltHYX+acr4s/Pe80/YzZTtBDPfVP2Ov5MDNRHKSHBQ58Oxw==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@tanstack/form-core/-/form-core-1.28.0.tgz", + "integrity": "sha512-MX3YveB6SKHAJ2yUwp+Ca/PCguub8bVEnLcLUbFLwdkSRMkP0lMGdaZl+F0JuEgZw56c6iFoRyfILhS7OQpydA==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/devtools-event-client": "^0.3.5", + "@tanstack/devtools-event-client": "^0.4.0", "@tanstack/pacer-lite": "^0.1.1", "@tanstack/store": "^0.7.7" }, @@ -6130,9 +6058,9 @@ } }, "node_modules/@tanstack/history": { - "version": "1.141.0", - "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.141.0.tgz", - "integrity": "sha512-LS54XNyxyTs5m/pl1lkwlg7uZM3lvsv2FIIV1rsJgnfwVCnI+n4ZGZ2CcjNT13BPu/3hPP+iHmliBSscJxW5FQ==", + "version": "1.154.14", + "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.154.14.tgz", + "integrity": "sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA==", "dev": true, "license": "MIT", "engines": { @@ -6158,9 +6086,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.90.12", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.12.tgz", - "integrity": "sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==", + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", "dev": true, "license": "MIT", "funding": { @@ -6169,13 +6097,13 @@ } }, "node_modules/@tanstack/react-form": { - "version": "1.27.4", - "resolved": "https://registry.npmjs.org/@tanstack/react-form/-/react-form-1.27.4.tgz", - "integrity": "sha512-cbNoCDeL9yZGVOltHYZjEVofu61BLXohC3Kmfh7NFJ4Y9GhIZtA+TA3XcySkCbGHBFTJqS2QkbUXGBKMbm2NSg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-form/-/react-form-1.28.0.tgz", + "integrity": "sha512-ibLcf5QkTogV0Ly944CuqGxWTpHyreNA4Cy8Wtky7zE9wtE3HVapQt4/hUuXo51zihfTkv5URiXpoTSKF5Xosg==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/form-core": "1.27.4", + "@tanstack/form-core": "1.28.0", "@tanstack/react-store": "^0.8.0" }, "funding": { @@ -6192,13 +6120,13 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.90.12", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.12.tgz", - "integrity": "sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==", + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", + "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.90.12" + "@tanstack/query-core": "5.90.20" }, "funding": { "type": "github", @@ -6209,15 +6137,15 @@ } }, "node_modules/@tanstack/react-router": { - "version": "1.141.2", - "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.141.2.tgz", - "integrity": "sha512-inPEgxYuGPNJvd7wo9BYVKW/BP9GwZO0EaZLBE7+l0RtPcIqAQQLqYhYwb2xikuQg6ueZectj7LObAGivkBpSw==", + "version": "1.157.15", + "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.157.15.tgz", + "integrity": "sha512-dVHX3Ann1rxLkXCrB9ctNKveGOrkmlKMo5fDIaaPCqqkDN/aC1gZ9O93i0OQVPUNekpkdXijmpHkxw12WqMTRQ==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/history": "1.141.0", + "@tanstack/history": "1.154.14", "@tanstack/react-store": "^0.8.0", - "@tanstack/router-core": "1.141.2", + "@tanstack/router-core": "1.157.15", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" @@ -6265,13 +6193,13 @@ } }, "node_modules/@tanstack/react-virtual": { - "version": "3.13.13", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.13.tgz", - "integrity": "sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==", + "version": "3.13.18", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.18.tgz", + "integrity": "sha512-dZkhyfahpvlaV0rIKnvQiVoWPyURppl6w4m9IwMDpuIjcJ1sD9YGWrt0wISvgU7ewACXx2Ct46WPgI6qAD4v6A==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.13.13" + "@tanstack/virtual-core": "3.13.18" }, "funding": { "type": "github", @@ -6283,17 +6211,17 @@ } }, "node_modules/@tanstack/router-core": { - "version": "1.141.2", - "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.141.2.tgz", - "integrity": "sha512-6fJSQ+Xcqy6xvB+CTEJljynf5wxQXC/YbtvxAc7wkzBLQwXvwoYrkmUTzqWHFtDZVGKr0cxA+Tg1FikSAZOiQQ==", + "version": "1.157.15", + "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.157.15.tgz", + "integrity": "sha512-KaYz6s+wYcg92kRQ7HXlTJLhBaBXOYiiqRBv5tsRbKRIqqhWNyeGz5+NfDwaYFHg5XLSDs3DvN0elMtxcj4dTg==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/history": "1.141.0", + "@tanstack/history": "1.154.14", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", - "seroval": "^1.4.0", - "seroval-plugins": "^1.4.0", + "seroval": "^1.4.2", + "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, @@ -6317,15 +6245,15 @@ } }, "node_modules/@tanstack/router-generator": { - "version": "1.141.2", - "resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.141.2.tgz", - "integrity": "sha512-90xDdtHE1zHfL5J0sBV06h3H9Rv1qO+gQuGYUEEmRPGxluifx+ivIk/rD/8dpuqcjErofKi8io/DuKxxJ5kOmA==", + "version": "1.157.15", + "resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.157.15.tgz", + "integrity": "sha512-zGac6tyRFz/X86fk9/CAmS6z8lyZf4p9lhAqLBCKVkFiFPmU4eAJp1ODvs81EtV0uJdRL1/rb+uvgHLGUsmQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/router-core": "1.141.2", - "@tanstack/router-utils": "1.141.0", - "@tanstack/virtual-file-routes": "1.141.0", + "@tanstack/router-core": "1.157.15", + "@tanstack/router-utils": "1.154.7", + "@tanstack/virtual-file-routes": "1.154.7", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", @@ -6361,23 +6289,23 @@ } }, "node_modules/@tanstack/router-plugin": { - "version": "1.141.2", - "resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.141.2.tgz", - "integrity": "sha512-9dordZdt1C8D6O5kp5iASa3DDCLGV/7v4MDB9nx0WXKnBRLv9ZpLt58jevIQ6Wov8V9zH5gLWKaRVfiWMAE4Gg==", + "version": "1.157.15", + "resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.157.15.tgz", + "integrity": "sha512-EpRYRb35//sVJ8GPBhthqfPt9HNhx1xAaejiQ8i4vkG37et6qaSGAO+Woq91WjnpmxMYs4+sNJpGioPuVLBBqQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.7", + "@babel/core": "^7.28.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.7", - "@babel/types": "^7.27.7", - "@tanstack/router-core": "1.141.2", - "@tanstack/router-generator": "1.141.2", - "@tanstack/router-utils": "1.141.0", - "@tanstack/virtual-file-routes": "1.141.0", - "babel-dead-code-elimination": "^1.0.10", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@tanstack/router-core": "1.157.15", + "@tanstack/router-generator": "1.157.15", + "@tanstack/router-utils": "1.154.7", + "@tanstack/virtual-file-routes": "1.154.7", + "babel-dead-code-elimination": "^1.0.11", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" @@ -6391,7 +6319,7 @@ }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", - "@tanstack/react-router": "^1.141.2", + "@tanstack/react-router": "^1.157.15", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" @@ -6461,16 +6389,15 @@ } }, "node_modules/@tanstack/router-utils": { - "version": "1.141.0", - "resolved": "https://registry.npmjs.org/@tanstack/router-utils/-/router-utils-1.141.0.tgz", - "integrity": "sha512-/eFGKCiix1SvjxwgzrmH4pHjMiMxc+GA4nIbgEkG2RdAJqyxLcRhd7RPLG0/LZaJ7d0ad3jrtRqsHLv2152Vbw==", + "version": "1.154.7", + "resolved": "https://registry.npmjs.org/@tanstack/router-utils/-/router-utils-1.154.7.tgz", + "integrity": "sha512-61bGx32tMKuEpVRseu2sh1KQe8CfB7793Mch/kyQt0EP3tD7X0sXmimCl3truRiDGUtI0CaSoQV1NPjAII1RBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/parser": "^7.27.5", - "@babel/preset-typescript": "^7.27.1", + "@babel/core": "^7.28.5", + "@babel/generator": "^7.28.5", + "@babel/parser": "^7.28.5", "ansis": "^4.1.0", "diff": "^8.0.2", "pathe": "^2.0.3", @@ -6496,9 +6423,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.13.13", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.13.tgz", - "integrity": "sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==", + "version": "3.13.18", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.18.tgz", + "integrity": "sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg==", "dev": true, "license": "MIT", "funding": { @@ -6507,9 +6434,9 @@ } }, "node_modules/@tanstack/virtual-file-routes": { - "version": "1.141.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-file-routes/-/virtual-file-routes-1.141.0.tgz", - "integrity": "sha512-CJrWtr6L9TVzEImm9S7dQINx+xJcYP/aDkIi6gnaWtIgbZs1pnzsE0yJc2noqXZ+yAOqLx3TBGpBEs9tS0P9/A==", + "version": "1.154.7", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-file-routes/-/virtual-file-routes-1.154.7.tgz", + "integrity": "sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==", "dev": true, "license": "MIT", "engines": { @@ -6531,13 +6458,13 @@ } }, "node_modules/@turf/bbox": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.1.tgz", - "integrity": "sha512-/IyMKoS7P9B0ch5PIlQ6gMfoE8gRr48+cSbzlyexvEjuDuaAV1VURjH1jAthS0ipFG8RrFxFJKnp7TLL1Skong==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.2.tgz", + "integrity": "sha512-iohGIDVqi8Ck7VQY2Emp490BShWKixG8wkVPQ7qO4fXRqJwrWO7ntU9XPB+r0qs6Y8kaSd+nDnvG3VFfKDb+Vg==", "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.1", - "@turf/meta": "7.3.1", + "@turf/helpers": "7.3.2", + "@turf/meta": "7.3.2", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -6546,13 +6473,13 @@ } }, "node_modules/@turf/bbox-polygon": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.3.1.tgz", - "integrity": "sha512-2NvwPfuRtwJk7w5HIC/Knei3mUXrVT+t/0FB1zStgDbakmXrqKISaftlIh4YTOVlUsVnvq0tggjFMLZ/Xxo+lQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.3.2.tgz", + "integrity": "sha512-ofCbDrMlpqPbsRmXeCKfeKl3tV7q+6v/D3/zAx9C2flTFc6PoWPM05HPj5W+dDejpchm6p7MnNXmVR2k3Uw8sA==", "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.1", + "@turf/helpers": "7.3.2", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -6561,14 +6488,14 @@ } }, "node_modules/@turf/center": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.3.1.tgz", - "integrity": "sha512-czqNKLGGdik3phYsWCK5SHKBRkDulUArMlG4v62IQcNcRFq9MbOGqyN21GSshSMO792ynDeWzdXdcKmycQ14Yg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.3.2.tgz", + "integrity": "sha512-QOAdTaJStVkSx0a3pJ03UWZqIGzgh3gCZisNp/3PcTSZmf5I/KAmZh5IxUGb5+9J6l6zHRPRaDeWVTGWXexR2A==", "dev": true, "license": "MIT", "dependencies": { - "@turf/bbox": "7.3.1", - "@turf/helpers": "7.3.1", + "@turf/bbox": "7.3.2", + "@turf/helpers": "7.3.2", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -6577,9 +6504,9 @@ } }, "node_modules/@turf/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-zkL34JVhi5XhsuMEO0MUTIIFEJ8yiW1InMu4hu/oRqamlY4mMoZql0viEmH6Dafh/p+zOl8OYvMJ3Vm3rFshgg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.2.tgz", + "integrity": "sha512-5HFN42rgWjSobdTMxbuq+ZdXPcqp1IbMgFYULTLCplEQM3dXhsyRFe7DCss4Eiw12iW3q6Z5UeTNVfITsE5lgA==", "license": "MIT", "dependencies": { "@types/geojson": "^7946.0.10", @@ -6590,26 +6517,27 @@ } }, "node_modules/@turf/meta": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.1.tgz", - "integrity": "sha512-NWsfOE5RVtWpLQNkfOF/RrYvLRPwwruxhZUV0UFIzHqfiRJ50aO9Y6uLY4bwCUe2TumLJQSR4yaoA72Rmr2mnQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.2.tgz", + "integrity": "sha512-FIcIY+ZsAe9QV4fHciTXeuRz2TKIVaEjivkl4vMFCibdj7FUkWDofqOncbIre1xPrgktQeh20ZrmD+p0kf3n4Q==", "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.1", - "@types/geojson": "^7946.0.10" + "@turf/helpers": "7.3.2", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/random": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.3.1.tgz", - "integrity": "sha512-Iruica0gfdAuuqWG3SLe1MQOEP4IOGelPp81Cu552AamhHJmkEZCaiis2n28qdOlAbDs1NJZeJhRFNkiopiy+Q==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.3.2.tgz", + "integrity": "sha512-9sx6MD3FcM/5VVuG0cN8E3W8bkR48IR4COpHg/PltC6TRAIG5UpxKgUfg97XQUOSjmK57HxxKx+c0u9/LVwhRw==", "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.1", + "@turf/helpers": "7.3.2", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -6891,12 +6819,12 @@ } }, "node_modules/@types/node": { - "version": "22.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.2.tgz", - "integrity": "sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==", + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/parse-json": { @@ -6934,9 +6862,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "version": "19.2.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", + "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -7070,20 +6998,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.49.0.tgz", - "integrity": "sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", + "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.49.0", - "@typescript-eslint/type-utils": "8.49.0", - "@typescript-eslint/utils": "8.49.0", - "@typescript-eslint/visitor-keys": "8.49.0", - "ignore": "^7.0.0", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/type-utils": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7093,7 +7021,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.49.0", + "@typescript-eslint/parser": "^8.53.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -7109,17 +7037,17 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.49.0.tgz", - "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", + "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.49.0", - "@typescript-eslint/types": "8.49.0", - "@typescript-eslint/typescript-estree": "8.49.0", - "@typescript-eslint/visitor-keys": "8.49.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7134,15 +7062,15 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.49.0.tgz", - "integrity": "sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", + "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "debug": "^4.3.4" + "@typescript-eslint/tsconfig-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7156,14 +7084,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.49.0.tgz", - "integrity": "sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", + "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.49.0", - "@typescript-eslint/visitor-keys": "8.49.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7174,9 +7102,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.49.0.tgz", - "integrity": "sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", + "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", "dev": true, "license": "MIT", "engines": { @@ -7191,17 +7119,17 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.49.0.tgz", - "integrity": "sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", + "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.49.0", - "@typescript-eslint/typescript-estree": "8.49.0", - "@typescript-eslint/utils": "8.49.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7216,9 +7144,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.49.0.tgz", - "integrity": "sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", + "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "dev": true, "license": "MIT", "engines": { @@ -7230,21 +7158,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.49.0.tgz", - "integrity": "sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", + "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.49.0", - "@typescript-eslint/tsconfig-utils": "8.49.0", - "@typescript-eslint/types": "8.49.0", - "@typescript-eslint/visitor-keys": "8.49.0", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", + "@typescript-eslint/project-service": "8.53.1", + "@typescript-eslint/tsconfig-utils": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7284,16 +7212,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.49.0.tgz", - "integrity": "sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", + "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.49.0", - "@typescript-eslint/types": "8.49.0", - "@typescript-eslint/typescript-estree": "8.49.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7308,13 +7236,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.49.0.tgz", - "integrity": "sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", + "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/types": "8.53.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -7424,16 +7352,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz", - "integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.15", - "@vitest/utils": "4.0.15", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" }, @@ -7442,13 +7370,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz", - "integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.15", + "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -7479,9 +7407,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz", - "integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", "dev": true, "license": "MIT", "dependencies": { @@ -7492,13 +7420,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz", - "integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.15", + "@vitest/utils": "4.0.18", "pathe": "^2.0.3" }, "funding": { @@ -7506,13 +7434,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz", - "integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.15", + "@vitest/pretty-format": "4.0.18", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -7531,9 +7459,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz", - "integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", "dev": true, "license": "MIT", "funding": { @@ -7541,13 +7469,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz", - "integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.15", + "@vitest/pretty-format": "4.0.18", "tinyrainbow": "^3.0.3" }, "funding": { @@ -7555,9 +7483,9 @@ } }, "node_modules/@vscode/sudo-prompt": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz", - "integrity": "sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", "dev": true, "license": "MIT" }, @@ -8284,9 +8212,9 @@ } }, "node_modules/babel-dead-code-elimination": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.10.tgz", - "integrity": "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.12.tgz", + "integrity": "sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==", "dev": true, "license": "MIT", "dependencies": { @@ -8351,9 +8279,9 @@ } }, "node_modules/bare-fs": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", - "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.3.tgz", + "integrity": "sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ==", "license": "Apache-2.0", "dependencies": { "bare-events": "^2.5.4", @@ -8375,9 +8303,9 @@ } }, "node_modules/bare-module-resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.0.tgz", - "integrity": "sha512-JrzrqlC3Tds0iKRwQs8xIIJ+FRieKA9ll0jaqpotDLZtjJPVevzRoeuUYZ5GIo1t1z7/pIRdk85Q3i/2xQLfEQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.1.tgz", + "integrity": "sha512-hbmAPyFpEq8FoZMd5sFO3u6MC5feluWoGE8YKlA8fCrl6mNtx68Wjg4DTiDJcqRJaovTvOYKfYngoBUnbaT7eg==", "license": "Apache-2.0", "dependencies": { "bare-semver": "^1.0.0" @@ -8495,9 +8423,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.7.tgz", - "integrity": "sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -8544,9 +8472,9 @@ } }, "node_modules/better-sqlite3": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.5.0.tgz", - "integrity": "sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz", + "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -9002,9 +8930,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001760", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", - "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", "dev": true, "funding": [ { @@ -9023,9 +8951,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", - "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", "engines": { @@ -9128,9 +9056,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "license": "MIT" }, "node_modules/clean-stack": { @@ -9371,13 +9299,25 @@ } }, "node_modules/comapeocat/node_modules/p-event": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.0.1.tgz", - "integrity": "sha512-SI8GHTMMv6dAIMMHBG0g6PyZIEal+CCaKCje24NxkgEJrPvfdfEP0xXVoDC3OGxlfjM8qqSs/luTaobCkGdEUA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.1.0.tgz", + "integrity": "sha512-/lkPs5W1aC3cp6vqZefpdosOn65J571sWodyfOQiF0+tmDCpU+H8Atwpu0vQROCVUlZuToDN5eyTLsMLLc54mg==", "license": "MIT", "dependencies": { - "p-timeout": "^6.1.4" + "p-timeout": "^7.0.1" + }, + "engines": { + "node": ">=20" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/comapeocat/node_modules/p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "license": "MIT", "engines": { "node": ">=20" }, @@ -9395,9 +9335,9 @@ } }, "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.5.tgz", + "integrity": "sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==", "dev": true, "license": "MIT", "engines": { @@ -9832,9 +9772,9 @@ "license": "MIT" }, "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10035,9 +9975,9 @@ } }, "node_modules/diff": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", - "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -10152,9 +10092,9 @@ } }, "node_modules/dot-prop-extra/node_modules/type-fest": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.3.1.tgz", - "integrity": "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.1.tgz", + "integrity": "sha512-xygQcmneDyzsEuKZrFbRMne5HDqMs++aFzefrJTgEIKjQ3rekM+RPfFCVq2Gp1VIDqddoYeppCj4Pcb+RZW0GQ==", "license": "(MIT OR CC0-1.0)", "dependencies": { "tagged-tag": "^1.0.0" @@ -10167,9 +10107,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -10337,15 +10277,15 @@ "license": "MIT" }, "node_modules/electron": { - "version": "39.2.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-39.2.7.tgz", - "integrity": "sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==", + "version": "40.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-40.0.0.tgz", + "integrity": "sha512-UyBy5yJ0/wm4gNugCtNPjvddjAknMTuXR2aCHioXicH7aKRKGDBPp4xqTEi/doVcB3R+MN3wfU9o8d/9pwgK2A==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { "@electron/get": "^2.0.0", - "@types/node": "^22.7.7", + "@types/node": "^24.9.0", "extract-zip": "^2.0.1" }, "bin": { @@ -10826,9 +10766,9 @@ } }, "node_modules/electron-playwright-helpers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/electron-playwright-helpers/-/electron-playwright-helpers-2.0.1.tgz", - "integrity": "sha512-gnPi63Pyuli4hfRfgIFk6v0PGGQImIRaob9dcBoUaz5B6wFfQklJyqMZY3NzpP6p2/7ZWd7VFI0nMhvGB/biog==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/electron-playwright-helpers/-/electron-playwright-helpers-2.1.0.tgz", + "integrity": "sha512-aQOefS1irz/Ou6IYuTE34ZLmIKVHKoTGUwkVuwu2P5iguuMTLtsg6CFImsWu0cabRPVZ1NgEpcGPumFZNDdrqA==", "dev": true, "license": "MIT", "dependencies": { @@ -10860,9 +10800,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", "dev": true, "license": "ISC" }, @@ -11165,9 +11105,9 @@ "optional": true }, "node_modules/esbuild": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", - "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -11178,32 +11118,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.1", - "@esbuild/android-arm": "0.27.1", - "@esbuild/android-arm64": "0.27.1", - "@esbuild/android-x64": "0.27.1", - "@esbuild/darwin-arm64": "0.27.1", - "@esbuild/darwin-x64": "0.27.1", - "@esbuild/freebsd-arm64": "0.27.1", - "@esbuild/freebsd-x64": "0.27.1", - "@esbuild/linux-arm": "0.27.1", - "@esbuild/linux-arm64": "0.27.1", - "@esbuild/linux-ia32": "0.27.1", - "@esbuild/linux-loong64": "0.27.1", - "@esbuild/linux-mips64el": "0.27.1", - "@esbuild/linux-ppc64": "0.27.1", - "@esbuild/linux-riscv64": "0.27.1", - "@esbuild/linux-s390x": "0.27.1", - "@esbuild/linux-x64": "0.27.1", - "@esbuild/netbsd-arm64": "0.27.1", - "@esbuild/netbsd-x64": "0.27.1", - "@esbuild/openbsd-arm64": "0.27.1", - "@esbuild/openbsd-x64": "0.27.1", - "@esbuild/openharmony-arm64": "0.27.1", - "@esbuild/sunos-x64": "0.27.1", - "@esbuild/win32-arm64": "0.27.1", - "@esbuild/win32-ia32": "0.27.1", - "@esbuild/win32-x64": "0.27.1" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/escalade": { @@ -11308,20 +11248,20 @@ } }, "node_modules/eslint-plugin-react-dom": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-2.3.13.tgz", - "integrity": "sha512-O9jglTOnnuyfJcSxjeVc8lqIp5kuS9/0MLLCHlOTH8ZjIifHHxUr6GZ2fd4la9y0FsoEYXEO7DBIMjWx2vCwjg==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-2.7.4.tgz", + "integrity": "sha512-bQb4kkls+TEqkkPib6r5D2r2+WFeSSHBxaHDcpOXVFybz+gMenz9l+bUbQAShzPJVuzn+z65jmt5UEw06rEv9w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/core": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/core": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "compare-versions": "^6.1.1", "string-ts": "^2.3.1", "ts-pattern": "^5.9.0" @@ -11355,26 +11295,26 @@ } }, "node_modules/eslint-plugin-react-hooks-extra": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks-extra/-/eslint-plugin-react-hooks-extra-2.3.13.tgz", - "integrity": "sha512-NSnY8yvtrvu2FAALLuvc2xesIAkMqGyJgilpy8wEi1w/Nw6v0IwBEffoNKLq9OHW4v3nikud3aBTqWfWKOx67Q==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks-extra/-/eslint-plugin-react-hooks-extra-2.7.4.tgz", + "integrity": "sha512-ieQody9hn+zHPD+yUovM1ll/Ea3ksA2TLKYtJJNaoigDBqDxnAkubGiCKmjhifqIw96UJhvUfFY9EF7gEfSezw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/core": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/type-utils": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/core": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/type-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "string-ts": "^2.3.1", "ts-pattern": "^5.9.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", @@ -11382,21 +11322,22 @@ } }, "node_modules/eslint-plugin-react-naming-convention": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-2.3.13.tgz", - "integrity": "sha512-2iler1ldFpB/PaNpN8WAVk6dKYKwKcoGm1j0JAAjdCrsfOTJ007ol2xTAyoHKAbMOvkZSi7qq90q+Q//RuhWwA==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-2.7.4.tgz", + "integrity": "sha512-bupF/6lI960sZ+Tt3wYUxeGILl6m4GQ2r23gDijO5HnNNFs230qy9YP4uwkIRmh4IMeTyaYBwszx+hM+sZe7IA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/core": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/type-utils": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/core": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/type-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", + "compare-versions": "^6.1.1", "string-ts": "^2.3.1", "ts-pattern": "^5.9.0" }, @@ -11409,9 +11350,9 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", - "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -11419,20 +11360,20 @@ } }, "node_modules/eslint-plugin-react-web-api": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-2.3.13.tgz", - "integrity": "sha512-+UypRPHP9GFMulIENpsC/J+TygWywiyz2mb4qyUP6y/IwdcSilk1MyF9WquNYKB/4/FN4Rl1oRm6WMbfkbpMnQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-2.7.4.tgz", + "integrity": "sha512-UGxSXxx0zjKSdQ0MCdA52fLlWtGSeqVDpLqq/yRWozQKvKTIz3y4MibrdlZQtJuujuTF6Ym4PYjTNJfzyP/nyg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/core": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/core": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "string-ts": "^2.3.1", "ts-pattern": "^5.9.0" }, @@ -11445,25 +11386,25 @@ } }, "node_modules/eslint-plugin-react-x": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-2.3.13.tgz", - "integrity": "sha512-+m+V/5VLMxgx0VsFUUyflMNLQG0WFYspsfv0XJFqx7me3A2b3P20QatNDHQCYswz0PRbRFqinTPukPRhZh68ag==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-2.7.4.tgz", + "integrity": "sha512-IZPvMvE3iHxWzKIIfkb0Fcogxr++XHMh6dSjBcFVpmQmzLV4MpwFIe4PUgV8kM0uF/ULfAJ3oVyti3Ydj04yzw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "2.3.13", - "@eslint-react/core": "2.3.13", - "@eslint-react/eff": "2.3.13", - "@eslint-react/shared": "2.3.13", - "@eslint-react/var": "2.3.13", - "@typescript-eslint/scope-manager": "^8.49.0", - "@typescript-eslint/type-utils": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@typescript-eslint/utils": "^8.49.0", + "@eslint-react/ast": "2.7.4", + "@eslint-react/core": "2.7.4", + "@eslint-react/eff": "2.7.4", + "@eslint-react/shared": "2.7.4", + "@eslint-react/var": "2.7.4", + "@typescript-eslint/scope-manager": "^8.53.1", + "@typescript-eslint/type-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", "compare-versions": "^6.1.1", "is-immutable-type": "^5.0.1", "string-ts": "^2.3.1", - "ts-api-utils": "^2.1.0", + "ts-api-utils": "^2.4.0", "ts-pattern": "^5.9.0" }, "engines": { @@ -11589,9 +11530,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -11654,9 +11595,9 @@ } }, "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", "license": "MIT" }, "node_modules/events": { @@ -12082,9 +12023,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -12728,9 +12669,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.1.0.tgz", + "integrity": "sha512-8HoIcWI5fCvG5NADj4bDav+er9B9JMj2vyL2pI8D0eismKyUvPLTSs+Ln3wqhwcp306i73iyVnEKx3F6T47TGw==", "dev": true, "license": "MIT", "engines": { @@ -12994,9 +12935,9 @@ } }, "node_modules/hyperbee": { - "version": "2.26.5", - "resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.26.5.tgz", - "integrity": "sha512-6XIwQIF9wuFVCSS6ciXX+TNv3aUGzEujvI8rUYMjwDCBU+aYVbJuq2k2CEhjeLQSZHnt8j95h2lUtjkV1pBqKg==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.27.0.tgz", + "integrity": "sha512-Nt6fsLMPk6/gsjRso50YeypIrFzFhqpY71QTBVQ30Fco3/S+FEXmRIGRb5ZiKekqeDL84m9E+mAxQVR5LUdjeQ==", "license": "MIT", "dependencies": { "b4a": "^1.6.0", @@ -13174,15 +13115,15 @@ } }, "node_modules/import-in-the-middle": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.0.tgz", - "integrity": "sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.5.tgz", + "integrity": "sha512-0InH9/4oDCBRzWXhpOqusspLBrVfK1vPvbn9Wxl8DAQ8yyx5fWJRETICSwkiAMaYntjJAMBP1R4B6cQnEUYVEA==", "license": "Apache-2.0", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" + "cjs-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" } }, "node_modules/imul": { @@ -13274,15 +13215,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.18", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", - "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.1.1.tgz", + "integrity": "sha512-vnrF2f4vfsdaFY6tuLZfzGcx1GZFMFAq6c7QdK3HSXNcGXEIQncNgbeAcnpjAOszQzq3Jbol2SwgshIGY08WyA==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.6", - "@formatjs/fast-memoize": "2.2.7", - "@formatjs/icu-messageformat-parser": "2.11.4", - "tslib": "^2.8.0" + "@formatjs/ecma402-abstract": "3.1.0", + "@formatjs/fast-memoize": "3.1.0", + "@formatjs/icu-messageformat-parser": "3.5.0", + "tslib": "^2.8.1" } }, "node_modules/into-stream": { @@ -13658,9 +13599,9 @@ } }, "node_modules/isbot": { - "version": "5.1.32", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.32.tgz", - "integrity": "sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ==", + "version": "5.1.33", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.33.tgz", + "integrity": "sha512-P4Hgb5NqswjkI0J1CM6XKXon/sxKY1SuowE7Qx2hrBhIwICFyXy54mfgB5eMHXsbe/eStzzpbIGNOvGmz+dlKg==", "dev": true, "license": "Unlicense", "engines": { @@ -13935,9 +13876,9 @@ } }, "node_modules/knip": { - "version": "5.73.4", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.73.4.tgz", - "integrity": "sha512-q0DDgqsRMa4z2IMEPEblns0igitG8Fu7exkvEgQx1QMLKEqSvcvKP9fMk+C1Ehy+Ux6oayl6zfAEGt6DvFtidw==", + "version": "5.82.1", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.82.1.tgz", + "integrity": "sha512-1nQk+5AcnkqL40kGQXfouzAEXkTR+eSrgo/8m1d0BMei4eAzFwghoXC4gOKbACgBiCof7hE8wkBVDsEvznf85w==", "dev": true, "funding": [ { @@ -14003,9 +13944,9 @@ } }, "node_modules/ky": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.1.tgz", - "integrity": "sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", "license": "MIT", "engines": { "node": ">=18" @@ -14539,9 +14480,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash.get": { @@ -14765,9 +14706,9 @@ } }, "node_modules/magic-bytes.js": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.12.1.tgz", - "integrity": "sha512-ThQLOhN86ZkJ7qemtVRGYM+gRgR8GEXNli9H/PMvpnZsE44Xfh3wx9kGJaldg314v85m+bFW6WBMaVHJc/c3zA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.13.0.tgz", + "integrity": "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg==", "license": "MIT" }, "node_modules/magic-string": { @@ -14857,9 +14798,9 @@ } }, "node_modules/maplibre-gl": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-5.14.0.tgz", - "integrity": "sha512-O2ok6N/bQ9NA9nJ22r/PRQQYkUe9JwfDMjBPkQ+8OwsVH4TpA5skIAM2wc0k+rni5lVbAVONVyBvgi1rF2vEPA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-5.16.0.tgz", + "integrity": "sha512-/VDY89nr4jgLJyzmhy325cG6VUI02WkZ/UfVuDbG/piXzo6ODnM+omDFIwWY8tsEsBG26DNDmNMn3Y2ikHsBiA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -14870,9 +14811,9 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^2.0.4", "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^24.3.1", + "@maplibre/maplibre-gl-style-spec": "^24.4.1", "@maplibre/mlt": "^1.1.2", - "@maplibre/vt-pbf": "^4.1.0", + "@maplibre/vt-pbf": "^4.2.0", "@types/geojson": "^7946.0.16", "@types/geojson-vt": "3.2.5", "@types/supercluster": "^7.1.3", @@ -15821,9 +15762,9 @@ } }, "node_modules/nan": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.24.0.tgz", - "integrity": "sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", + "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", "dev": true, "license": "MIT", "optional": true @@ -15914,9 +15855,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.85.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz", - "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -15957,9 +15898,9 @@ } }, "node_modules/node-html-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-7.0.1.tgz", - "integrity": "sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-7.0.2.tgz", + "integrity": "sha512-DxodLVh7a6JMkYzWyc8nBX9MaF4M0lLFYkJHlWOiu7+9/I6mwNK9u5TbAMC7qfqDJEPX9OIoWA2A9t4C2l1mUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16310,35 +16251,35 @@ "license": "ISC" }, "node_modules/oxc-resolver": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.15.0.tgz", - "integrity": "sha512-Hk2J8QMYwmIO9XTCUiOH00+Xk2/+aBxRUnhrSlANDyCnLYc32R1WSIq1sU2yEdlqd53FfMpPEpnBYIKQMzliJw==", + "version": "11.16.4", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.16.4.tgz", + "integrity": "sha512-nvJr3orFz1wNaBA4neRw7CAn0SsjgVaEw1UHpgO/lzVW12w+nsFnvU/S6vVX3kYyFaZdxZheTExi/fa8R8PrZA==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-resolver/binding-android-arm-eabi": "11.15.0", - "@oxc-resolver/binding-android-arm64": "11.15.0", - "@oxc-resolver/binding-darwin-arm64": "11.15.0", - "@oxc-resolver/binding-darwin-x64": "11.15.0", - "@oxc-resolver/binding-freebsd-x64": "11.15.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "11.15.0", - "@oxc-resolver/binding-linux-arm-musleabihf": "11.15.0", - "@oxc-resolver/binding-linux-arm64-gnu": "11.15.0", - "@oxc-resolver/binding-linux-arm64-musl": "11.15.0", - "@oxc-resolver/binding-linux-ppc64-gnu": "11.15.0", - "@oxc-resolver/binding-linux-riscv64-gnu": "11.15.0", - "@oxc-resolver/binding-linux-riscv64-musl": "11.15.0", - "@oxc-resolver/binding-linux-s390x-gnu": "11.15.0", - "@oxc-resolver/binding-linux-x64-gnu": "11.15.0", - "@oxc-resolver/binding-linux-x64-musl": "11.15.0", - "@oxc-resolver/binding-openharmony-arm64": "11.15.0", - "@oxc-resolver/binding-wasm32-wasi": "11.15.0", - "@oxc-resolver/binding-win32-arm64-msvc": "11.15.0", - "@oxc-resolver/binding-win32-ia32-msvc": "11.15.0", - "@oxc-resolver/binding-win32-x64-msvc": "11.15.0" + "@oxc-resolver/binding-android-arm-eabi": "11.16.4", + "@oxc-resolver/binding-android-arm64": "11.16.4", + "@oxc-resolver/binding-darwin-arm64": "11.16.4", + "@oxc-resolver/binding-darwin-x64": "11.16.4", + "@oxc-resolver/binding-freebsd-x64": "11.16.4", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.16.4", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.16.4", + "@oxc-resolver/binding-linux-arm64-gnu": "11.16.4", + "@oxc-resolver/binding-linux-arm64-musl": "11.16.4", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.16.4", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.16.4", + "@oxc-resolver/binding-linux-riscv64-musl": "11.16.4", + "@oxc-resolver/binding-linux-s390x-gnu": "11.16.4", + "@oxc-resolver/binding-linux-x64-gnu": "11.16.4", + "@oxc-resolver/binding-linux-x64-musl": "11.16.4", + "@oxc-resolver/binding-openharmony-arm64": "11.16.4", + "@oxc-resolver/binding-wasm32-wasi": "11.16.4", + "@oxc-resolver/binding-win32-arm64-msvc": "11.16.4", + "@oxc-resolver/binding-win32-ia32-msvc": "11.16.4", + "@oxc-resolver/binding-win32-x64-msvc": "11.16.4" } }, "node_modules/p-cancelable": { @@ -16722,9 +16663,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz", + "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==", "license": "MIT" }, "node_modules/pg-types": { @@ -16817,9 +16758,9 @@ } }, "node_modules/pino-std-serializers": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", - "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", + "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", "license": "MIT" }, "node_modules/pino/node_modules/process-warning": { @@ -16839,13 +16780,13 @@ "license": "MIT" }, "node_modules/playwright": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", - "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.0.tgz", + "integrity": "sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.57.0" + "playwright-core": "1.58.0" }, "bin": { "playwright": "cli.js" @@ -16858,9 +16799,9 @@ } }, "node_modules/playwright-core": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", - "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.0.tgz", + "integrity": "sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -16939,9 +16880,9 @@ } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -17038,9 +16979,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -17493,22 +17434,22 @@ } }, "node_modules/react-intl": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-7.1.14.tgz", - "integrity": "sha512-VE/0Wi/lHJlBC7APQpCzLUdIt3GB5B0GZrRW8Q+ACbkHI4j+Wwgg9J1TniN6zmLHmPH5gxXcMy+fkSPfw5p1WQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-8.1.1.tgz", + "integrity": "sha512-mXqmFZ5SCvUk1NUgRBBtCKPB8oPs0dLfWGhYf71FbP9XTF6UGdWQzkH5kE+iIu9twIqiomiLTOuNEymUH2S1IQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.6", - "@formatjs/icu-messageformat-parser": "2.11.4", - "@formatjs/intl": "3.1.8", + "@formatjs/ecma402-abstract": "3.1.0", + "@formatjs/icu-messageformat-parser": "3.5.0", + "@formatjs/intl": "4.1.1", "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18 || 19", "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "10.7.18", - "tslib": "^2.8.0" + "intl-messageformat": "11.1.1", + "tslib": "^2.8.1" }, "peerDependencies": { + "@types/react": "^19.2.8", "react": "16 || 17 || 18 || 19", "typescript": "^5.6.0" }, @@ -18088,9 +18029,9 @@ } }, "node_modules/rollup": { - "version": "4.53.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.4.tgz", - "integrity": "sha512-YpXaaArg0MvrnJpvduEDYIp7uGOqKXbH9NsHGQ6SxKCOsNAjZF018MmxefFUulVP2KLtiGw1UvZbr+/ekjvlDg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", "dev": true, "license": "MIT", "dependencies": { @@ -18104,28 +18045,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.4", - "@rollup/rollup-android-arm64": "4.53.4", - "@rollup/rollup-darwin-arm64": "4.53.4", - "@rollup/rollup-darwin-x64": "4.53.4", - "@rollup/rollup-freebsd-arm64": "4.53.4", - "@rollup/rollup-freebsd-x64": "4.53.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.4", - "@rollup/rollup-linux-arm-musleabihf": "4.53.4", - "@rollup/rollup-linux-arm64-gnu": "4.53.4", - "@rollup/rollup-linux-arm64-musl": "4.53.4", - "@rollup/rollup-linux-loong64-gnu": "4.53.4", - "@rollup/rollup-linux-ppc64-gnu": "4.53.4", - "@rollup/rollup-linux-riscv64-gnu": "4.53.4", - "@rollup/rollup-linux-riscv64-musl": "4.53.4", - "@rollup/rollup-linux-s390x-gnu": "4.53.4", - "@rollup/rollup-linux-x64-gnu": "4.53.4", - "@rollup/rollup-linux-x64-musl": "4.53.4", - "@rollup/rollup-openharmony-arm64": "4.53.4", - "@rollup/rollup-win32-arm64-msvc": "4.53.4", - "@rollup/rollup-win32-ia32-msvc": "4.53.4", - "@rollup/rollup-win32-x64-gnu": "4.53.4", - "@rollup/rollup-win32-x64-msvc": "4.53.4", + "@rollup/rollup-android-arm-eabi": "4.56.0", + "@rollup/rollup-android-arm64": "4.56.0", + "@rollup/rollup-darwin-arm64": "4.56.0", + "@rollup/rollup-darwin-x64": "4.56.0", + "@rollup/rollup-freebsd-arm64": "4.56.0", + "@rollup/rollup-freebsd-x64": "4.56.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", + "@rollup/rollup-linux-arm64-gnu": "4.56.0", + "@rollup/rollup-linux-arm64-musl": "4.56.0", + "@rollup/rollup-linux-loong64-gnu": "4.56.0", + "@rollup/rollup-linux-loong64-musl": "4.56.0", + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", + "@rollup/rollup-linux-ppc64-musl": "4.56.0", + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", + "@rollup/rollup-linux-riscv64-musl": "4.56.0", + "@rollup/rollup-linux-s390x-gnu": "4.56.0", + "@rollup/rollup-linux-x64-gnu": "4.56.0", + "@rollup/rollup-linux-x64-musl": "4.56.0", + "@rollup/rollup-openbsd-x64": "4.56.0", + "@rollup/rollup-openharmony-arm64": "4.56.0", + "@rollup/rollup-win32-arm64-msvc": "4.56.0", + "@rollup/rollup-win32-ia32-msvc": "4.56.0", + "@rollup/rollup-win32-x64-gnu": "4.56.0", + "@rollup/rollup-win32-x64-msvc": "4.56.0", "fsevents": "~2.3.2" } }, @@ -18298,10 +18242,13 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "license": "BlueOak-1.0.0" + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } }, "node_modules/scheduler": { "version": "0.27.0", @@ -18452,9 +18399,9 @@ } }, "node_modules/seroval": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.4.0.tgz", - "integrity": "sha512-BdrNXdzlofomLTiRnwJTSEAaGKyHHZkbMXIywOh7zlzp4uZnXErEwl9XZ+N1hJSNpeTtNxWvVwN0wUzAIQ4Hpg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.0.tgz", + "integrity": "sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==", "dev": true, "license": "MIT", "engines": { @@ -18462,9 +18409,9 @@ } }, "node_modules/seroval-plugins": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.4.0.tgz", - "integrity": "sha512-zir1aWzoiax6pbBVjoYVd0O1QQXgIL3eVGBMsBsNmM8Ukq90yGaWlfx0AB9dTS8GPqrOrbXn79vmItCUP9U3BQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.5.0.tgz", + "integrity": "sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA==", "dev": true, "license": "MIT", "engines": { @@ -18714,9 +18661,9 @@ } }, "node_modules/smol-toml": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", - "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", + "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -19736,9 +19683,9 @@ } }, "node_modules/systeminformation": { - "version": "5.27.13", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.27.13.tgz", - "integrity": "sha512-geeE/7eNDoOhdc9j+qCsLlwbcyh0HnqhOZzmfNK4WBioWGUZbhwYrg+YZsZ3UJh4tmybQsnDuqzr3UoumMifew==", + "version": "5.30.6", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.30.6.tgz", + "integrity": "sha512-LEIyK1aEv5P3BhAPW3swdlIyCihxwEq/Gki+kcONieU4PIeRCSLDuGkk0Va/56PSBgjVgEksOM88dmY6YqOyfQ==", "license": "MIT", "os": [ "darwin", @@ -19788,21 +19735,20 @@ } }, "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.4.tgz", + "integrity": "sha512-AN04xbWGrSTDmVwlI4/GTlIIwMFk/XEv7uL8aa57zuvRy6s4hdBed+lVq2fAZ89XDa7Us3ANXcE3Tvqvja1kTA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar-fs": { @@ -19864,22 +19810,48 @@ "streamx": "^2.15.0" } }, + "node_modules/tar/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" } }, "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } }, "node_modules/temp": { "version": "0.9.4", @@ -19935,9 +19907,9 @@ } }, "node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -20248,9 +20220,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, "license": "MIT", "engines": { @@ -20381,16 +20353,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.49.0.tgz", - "integrity": "sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.1.tgz", + "integrity": "sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.49.0", - "@typescript-eslint/parser": "8.49.0", - "@typescript-eslint/typescript-estree": "8.49.0", - "@typescript-eslint/utils": "8.49.0" + "@typescript-eslint/eslint-plugin": "8.53.1", + "@typescript-eslint/parser": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20432,18 +20404,18 @@ } }, "node_modules/undici": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", - "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", "engines": { "node": ">=18.17" } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/union-value": { @@ -20589,9 +20561,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", - "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -20698,9 +20670,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "dependencies": { @@ -20846,9 +20818,9 @@ } }, "node_modules/vite-plugin-icons-spritesheet/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -20930,19 +20902,19 @@ } }, "node_modules/vitest": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz", - "integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.15", - "@vitest/mocker": "4.0.15", - "@vitest/pretty-format": "4.0.15", - "@vitest/runner": "4.0.15", - "@vitest/snapshot": "4.0.15", - "@vitest/spy": "4.0.15", - "@vitest/utils": "4.0.15", + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", @@ -20970,10 +20942,10 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.15", - "@vitest/browser-preview": "4.0.15", - "@vitest/browser-webdriverio": "4.0.15", - "@vitest/ui": "4.0.15", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, @@ -21051,9 +21023,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "dependencies": { @@ -21081,9 +21053,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.103.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", - "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "dev": true, "license": "MIT", "dependencies": { @@ -21095,10 +21067,10 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.26.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.3", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -21109,7 +21081,7 @@ "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.11", + "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, @@ -21146,6 +21118,13 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -21332,9 +21311,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -21399,9 +21378,9 @@ } }, "node_modules/xstate": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.25.0.tgz", - "integrity": "sha512-yyWzfhVRoTHNLjLoMmdwZGagAYfmnzpm9gPjlX2MhJZsDojXGqRxODDOi4BsgGRKD46NZRAdcLp6CKOyvQS0Bw==", + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.25.1.tgz", + "integrity": "sha512-oyvsNH5pF2qkHmiHEMdWqc3OjDtoZOH2MTAI35r01f/ZQWOD+VLOiYqo65UgQET0XMA5s9eRm8fnsIo+82biEw==", "license": "MIT", "funding": { "type": "opencollective", @@ -21617,6 +21596,15 @@ "zip-stream": "^7.0.2" } }, + "node_modules/zip-stream-promise/node_modules/@types/node": { + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "node_modules/zip-stream-promise/node_modules/compress-commons": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-7.0.0.tgz", @@ -21658,6 +21646,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zip-stream-promise/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/zip-stream-promise/node_modules/zip-stream": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-7.0.2.tgz", @@ -21673,9 +21667,9 @@ } }, "node_modules/zod": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.0.tgz", - "integrity": "sha512-Bd5fw9wlIhtqCCxotZgdTOMwGm1a0u75wARVEY9HMs1X17trvA/lMi4+MGK5EUfYkXVTbX8UDiDKW4OgzHVUZw==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", "funding": { @@ -21696,9 +21690,9 @@ } }, "node_modules/zustand": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.9.tgz", - "integrity": "sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.10.tgz", + "integrity": "sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==", "license": "MIT", "engines": { "node": ">=12.20.0" diff --git a/package.json b/package.json index 8af9aaa5..adf9c056 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "comapeo-desktop", "productName": "CoMapeo Desktop", "private": true, - "version": "0.1.0-pre", + "version": "0.1.0", "description": "Desktop application for CoMapeo", "keywords": [], "author": { @@ -25,12 +25,12 @@ "devEngines": { "runtime": { "name": "node", - "version": "~22.21.1", + "version": "~24.11.1", "onFail": "warn" }, "packageManager": { "name": "npm", - "version": "^11.7.0", + "version": "^11.8.0", "onFail": "warn" } }, @@ -49,10 +49,10 @@ "intl:renderer": "node --run \"intl:renderer:extract\" && node --run \"intl:renderer:compile\"", "intl:generate-translated-languages-list": "node scripts/generate-translated-languages-list.js", "intl": "concurrently --pad-prefix \"node:intl:renderer\" \"node:intl:main\" && node --run \"intl:generate-translated-languages-list\"", - "lint:eslint": "eslint --cache .", - "lint:format": "prettier --cache --check .", - "lint:knip": "knip", - "lint": "concurrently --prefix \"lint:{name}\" --pad-prefix --group \"node:lint:*\"", + "checks:eslint": "eslint --cache .", + "checks:format": "prettier --cache --check .", + "checks:knip": "knip", + "checks": "concurrently --prefix \"checks:{name}\" --pad-prefix --group \"node:checks:*\"", "types:root": "tsc -p tsconfig.json", "types:shared": "tsc -p src/shared/tsconfig.json", "types:main": "tsc -p src/main/tsconfig.json", @@ -73,9 +73,9 @@ "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "6.0.2", - "@formatjs/intl": "3.1.8", + "@formatjs/intl": "4.1.1", "@homebridge/ciao": "1.3.4", - "@sentry/electron": "7.5.0", + "@sentry/electron": "7.6.0", "atomically": "2.1.0", "debug": "4.4.3", "electron-context-menu": "4.1.1", @@ -83,53 +83,53 @@ "electron-squirrel-startup": "1.0.1", "fastify": "4.29.1", "sodium-native": "4.3.3", - "systeminformation": "5.27.13", + "systeminformation": "5.30.6", "tiny-typed-emitter": "2.1.0", "valibot": "1.2.0", - "zustand": "5.0.9" + "zustand": "5.0.10" }, "devDependencies": { "@comapeo/core-react": "7.2.0", "@comapeo/schema": "2.2.0", - "@electron-forge/cli": "7.10.2", - "@electron-forge/maker-deb": "7.10.2", - "@electron-forge/maker-dmg": "7.10.2", - "@electron-forge/maker-rpm": "7.10.2", - "@electron-forge/maker-squirrel": "7.10.2", - "@electron-forge/maker-zip": "7.10.2", - "@electron-forge/plugin-auto-unpack-natives": "7.10.2", - "@electron-forge/plugin-base": "7.10.2", - "@electron-forge/plugin-fuses": "7.10.2", - "@electron-forge/shared-types": "7.10.2", + "@electron-forge/cli": "7.11.1", + "@electron-forge/maker-deb": "7.11.1", + "@electron-forge/maker-dmg": "7.11.1", + "@electron-forge/maker-rpm": "7.11.1", + "@electron-forge/maker-squirrel": "7.11.1", + "@electron-forge/maker-zip": "7.11.1", + "@electron-forge/plugin-auto-unpack-natives": "7.11.1", + "@electron-forge/plugin-base": "7.11.1", + "@electron-forge/plugin-fuses": "7.11.1", + "@electron-forge/shared-types": "7.11.1", "@electron/fuses": "1.8.0", "@emotion/react": "11.14.0", "@emotion/styled": "11.14.1", - "@eslint-react/eslint-plugin": "2.3.13", - "@eslint/compat": "2.0.0", + "@eslint-react/eslint-plugin": "2.7.4", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "@fontsource-variable/rubik": "5.2.8", - "@formatjs/cli": "6.7.4", + "@formatjs/cli": "6.12.0", "@ianvs/prettier-plugin-sort-imports": "4.7.0", - "@mui/material": "7.3.6", - "@playwright/test": "1.57.0", + "@mui/material": "7.3.7", + "@playwright/test": "1.58.0", "@reforged/maker-appimage": "5.1.1", - "@sentry/react": "10.29.0", - "@sentry/vite-plugin": "4.6.1", - "@tanstack/eslint-plugin-query": "5.91.2", - "@tanstack/eslint-plugin-router": "1.141.0", - "@tanstack/react-form": "1.27.4", - "@tanstack/react-query": "5.90.12", - "@tanstack/react-router": "1.141.2", - "@tanstack/react-virtual": "3.13.13", - "@tanstack/router-plugin": "1.141.2", - "@turf/bbox": "7.3.1", - "@turf/bbox-polygon": "7.3.1", - "@turf/center": "7.3.1", - "@turf/helpers": "7.3.1", - "@turf/random": "7.3.1", + "@sentry/react": "10.34.0", + "@sentry/vite-plugin": "4.8.0", + "@tanstack/eslint-plugin-query": "5.91.3", + "@tanstack/eslint-plugin-router": "1.155.0", + "@tanstack/react-form": "1.28.0", + "@tanstack/react-query": "5.90.20", + "@tanstack/react-router": "1.157.15", + "@tanstack/react-virtual": "3.13.18", + "@tanstack/router-plugin": "1.157.15", + "@turf/bbox": "7.3.2", + "@turf/bbox-polygon": "7.3.2", + "@turf/center": "7.3.2", + "@turf/helpers": "7.3.2", + "@turf/random": "7.3.2", "@types/geojson": "7946.0.16", - "@types/node": "22.19.2", - "@types/react": "19.2.7", + "@types/node": "24.10.9", + "@types/react": "19.2.9", "@types/react-dom": "19.2.3", "@types/semver": "7.7.1", "@types/sodium-native": "2.3.9", @@ -137,40 +137,42 @@ "@vitejs/plugin-react": "5.1.2", "concurrently": "9.2.1", "date-fns": "4.1.0", - "dotenv": "17.2.3", - "electron": "39.2.7", - "electron-playwright-helpers": "2.0.1", + "electron": "40.0.0", + "electron-playwright-helpers": "2.1.0", "eslint": "9.39.2", "eslint-plugin-react-hooks": "7.0.1", - "eslint-plugin-react-refresh": "0.4.24", - "globals": "16.5.0", + "eslint-plugin-react-refresh": "0.4.26", + "globals": "17.1.0", "husky": "9.1.7", - "knip": "5.73.4", + "knip": "5.82.1", "lint-staged": "16.2.7", - "maplibre-gl": "5.14.0", + "maplibre-gl": "5.16.0", "maplibregl-mapbox-request-transformer": "0.0.3", "network-information-types": "0.1.1", "patch-package": "8.0.1", - "playwright": "1.57.0", - "prettier": "3.7.4", + "playwright": "1.58.0", + "prettier": "3.8.1", "prettier-plugin-jsdoc": "1.8.0", "radashi": "12.7.1", "react": "19.2.3", "react-dom": "19.2.3", - "react-intl": "7.1.14", + "react-intl": "8.1.1", "react-map-gl": "8.1.0", "react-transition-group": "4.4.5", "semver": "7.7.3", "typescript": "5.9.3", - "typescript-eslint": "8.49.0", + "typescript-eslint": "8.53.1", "utm": "1.1.1", - "vite": "7.3.0", + "vite": "7.3.1", "vite-plugin-icons-spritesheet": "3.0.1", - "vitest": "4.0.15" + "vitest": "4.0.18" }, "overrides": { - "better-sqlite3": "12.5.0", + "better-sqlite3": "12.6.2", "drizzle-orm": "1.0.0-beta.1-fd8bfcc", + "@electron-forge/shared-types": { + "tar": "7.5.4" + }, "tmp": "0.2.5" } } diff --git a/patches/@comapeo+core+5.2.1+002+fix-custom-map-info-cors.patch b/patches/@comapeo+core+5.2.1+002+fix-custom-map-info-cors.patch deleted file mode 100644 index abf1f4df..00000000 --- a/patches/@comapeo+core+5.2.1+002+fix-custom-map-info-cors.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/node_modules/@comapeo/core/src/fastify-plugins/maps.js b/node_modules/@comapeo/core/src/fastify-plugins/maps.js -index 855dee9..338a216 100644 ---- a/node_modules/@comapeo/core/src/fastify-plugins/maps.js -+++ b/node_modules/@comapeo/core/src/fastify-plugins/maps.js -@@ -30,7 +30,12 @@ export async function plugin(fastify, opts) { - - fastify.addHook('onClose', () => customMapReader.close().catch(noop)) - -- fastify.get(`/${CUSTOM_MAP_PREFIX}/info`, async () => { -+ fastify.get(`/${CUSTOM_MAP_PREFIX}/info`, async (_request, reply) => { -+ // NOTE: Fixes CORS issues while working in development -+ if (process.env.NODE_ENV === 'development') { -+ reply.headers({ 'access-control-allow-origin': '*' }) -+ } -+ - const baseUrl = new URL(fastify.prefix, fastify.listeningOrigin) - - if (!baseUrl.href.endsWith('/')) { diff --git a/patches/@tanstack+router-core+1.157.15+001+define-custom-protocol-as-safe.patch b/patches/@tanstack+router-core+1.157.15+001+define-custom-protocol-as-safe.patch new file mode 100644 index 00000000..38f1f1e3 --- /dev/null +++ b/patches/@tanstack+router-core+1.157.15+001+define-custom-protocol-as-safe.patch @@ -0,0 +1,26 @@ +diff --git a/node_modules/@tanstack/router-core/dist/cjs/utils.cjs b/node_modules/@tanstack/router-core/dist/cjs/utils.cjs +index 346cac9..f364a0e 100644 +--- a/node_modules/@tanstack/router-core/dist/cjs/utils.cjs ++++ b/node_modules/@tanstack/router-core/dist/cjs/utils.cjs +@@ -182,7 +182,7 @@ function decodeSegment(segment) { + } + return sanitizePathSegment(decoded); + } +-const SAFE_URL_PROTOCOLS = ["http:", "https:", "mailto:", "tel:"]; ++const SAFE_URL_PROTOCOLS = ["http:", "https:", "mailto:", "tel:", "comapeo:"]; + function isDangerousProtocol(url) { + if (!url) return false; + try { +diff --git a/node_modules/@tanstack/router-core/dist/esm/utils.js b/node_modules/@tanstack/router-core/dist/esm/utils.js +index 20822c1..c4b9e50 100644 +--- a/node_modules/@tanstack/router-core/dist/esm/utils.js ++++ b/node_modules/@tanstack/router-core/dist/esm/utils.js +@@ -180,7 +180,7 @@ function decodeSegment(segment) { + } + return sanitizePathSegment(decoded); + } +-const SAFE_URL_PROTOCOLS = ["http:", "https:", "mailto:", "tel:"]; ++const SAFE_URL_PROTOCOLS = ["http:", "https:", "mailto:", "tel:", "comapeo:"]; + function isDangerousProtocol(url) { + if (!url) return false; + try { diff --git a/patches/README.md b/patches/README.md index a160d541..786ab188 100644 --- a/patches/README.md +++ b/patches/README.md @@ -9,12 +9,8 @@ fixes. By default, core sets up a file watcher for the `fallbackMapPath` option that's provided when instantiating `MapeoManager`. This does not work when packaging the app as an ASAR file (via Electron Forge) because watching a file within the ASAR directory is not possible. Instead, we change the setup so that it does not try to watch the file and instead make the assumption that the file always exists on instantiation, which is generally the case in CoMapeo Desktop (for now). -### [Fix CORS issue when getting custom map info when in development](./@comapeo+core+5.2.1+002+fix-custom-map-info-cors.patch) +## @tanstack/router-core -Making a fetch-based request for the custom map info fails due to a CORS issue in development. This is because the app is technically being served from a development server in development, which thus has a different origin than server that hosts the relevant endpoint. +### [Define `comapeo:` protocol as safe](./@tanstack+router-core+1.157.15+001+define-custom-protocol-as-safe.patch) -## styled-map-package - -### [Fix CORS issues when in development](styled-map-package+3.0.0+001+fix-CORS-issues.patch) - -The maps served through the server plugin in this module can fail to load in the app due to CORS issues in development. This is because the app is technically being served from a development server in development, which thus has a different origin than the map server that the map is being served from. +When the router attempts to do a full page reload, it checks the protocol for security purposes. It uses a hardcoded list for known "safe" protocols which results in issues in the app that attempt to navigate to a `comapeo:` URL with `reloadDocument: true` set. This patch updates the hardcoded list to account for our custom protocol so that the router doesn't consider it dangerous. We are responsible for doing safety checks related to accessing resources using this protocol, which is handled in the protocol handler that's implemented in the main process. diff --git a/patches/styled-map-package+3.0.0+001+fix-CORS-issues.patch b/patches/styled-map-package+3.0.0+001+fix-CORS-issues.patch deleted file mode 100644 index 9c035e60..00000000 --- a/patches/styled-map-package+3.0.0+001+fix-CORS-issues.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/node_modules/styled-map-package/dist/server.js b/node_modules/styled-map-package/dist/server.js -index 377124f..e8e5dc0 100644 ---- a/node_modules/styled-map-package/dist/server.js -+++ b/node_modules/styled-map-package/dist/server.js -@@ -7,6 +7,10 @@ function sendResource(reply, resource) { - if (resource.contentEncoding) { - reply.header("content-encoding", resource.contentEncoding); - } -+ // NOTE: Fixes CORS issues while working in development -+ if (process.env.NODE_ENV === 'development') { -+ reply.header('access-control-allow-origin', '*') -+ } - return reply.send(resource.stream); - } - function createServer(fastify, opts, done) { -@@ -14,7 +18,11 @@ function createServer(fastify, opts, done) { - if (!("reader" in opts)) { - fastify.addHook("onClose", () => reader.close().catch(noop)); - } -- fastify.get("/style.json", async () => { -+ fastify.get("/style.json", async (_request, reply) => { -+ // NOTE: Fixes CORS issues while working in development -+ if (process.env.NODE_ENV === 'development') { -+ reply.header('access-control-allow-origin', '*') -+ } - try { - const baseUrl = new URL(fastify.prefix, fastify.listeningOrigin); - const style = await reader.getStyle(baseUrl.href); -@@ -27,6 +35,10 @@ function createServer(fastify, opts, done) { - } - }); - fastify.get("*", async (request, reply) => { -+ // NOTE: Fixes CORS issues while working in development -+ if (process.env.NODE_ENV === 'development') { -+ reply.header('access-control-allow-origin', '*') -+ } - const path = request.params["*"]; - try { - const resource = await reader.getResource(path); diff --git a/playwright.config.ts b/playwright.config.ts index 18ab0e1e..c743095b 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,35 +1,36 @@ import { defineConfig } from '@playwright/test' -export default defineConfig({ +import type { TestOptions } from './tests-e2e/specs/utils.ts' + +export default defineConfig({ testDir: 'tests-e2e', outputDir: 'tests-e2e/results', forbidOnly: !!process.env.CI, - workers: process.env.CI ? 1 : undefined, + workers: process.env.CI + ? // Based on specs defined in https://docs.github.com/en/actions/how-tos/write-workflows/choose-where-workflows-run/choose-the-runner-for-a-job#standard-github-hosted-runners-for-public-repositories + 3 + : undefined, maxFailures: 0, - timeout: process.env.CI ? 30_000 : 10_000, + retries: 2, + timeout: process.env.CI ? 45_000 : 30_000, reporter: [ ['list'], ['html', { open: 'never', outputFolder: 'tests-e2e/playwright-report' }], ], projects: [ { - name: 'setup', - testMatch: /setup\.spec\.ts/, - teardown: 'teardown', - }, - { - name: 'teardown', - testMatch: /teardown\.spec\.ts/, + name: 'smokescreen', + testMatch: 'specs/smokescreen.spec.ts', }, { name: 'onboarding', - testMatch: /onboarding\.spec\.ts/, - dependencies: ['setup'], + testMatch: 'specs/onboarding.spec.ts', + dependencies: ['smokescreen'], }, { name: 'app', - testMatch: /app\.spec\.ts/, - dependencies: ['setup', 'onboarding'], + testMatch: 'specs/app/*.spec.ts', + dependencies: ['smokescreen'], }, ], }) diff --git a/src/main/app.ts b/src/main/app.ts index 303b047f..8e3e6ba7 100644 --- a/src/main/app.ts +++ b/src/main/app.ts @@ -1,7 +1,7 @@ import { randomBytes } from 'node:crypto' import { copyFile, mkdir, rm } from 'node:fs/promises' -import { basename, isAbsolute, join } from 'node:path' -import { fileURLToPath } from 'node:url' +import { basename, isAbsolute, join, relative } from 'node:path' +import { fileURLToPath, pathToFileURL } from 'node:url' import { defineMessages } from '@formatjs/intl' import { captureException } from '@sentry/electron' import debug from 'debug' @@ -11,6 +11,8 @@ import { BrowserWindow, app, dialog, + net, + protocol, safeStorage, utilityProcess, type UtilityProcess, @@ -238,6 +240,49 @@ export async function start({ const diagnosticsEnabled = persisted.diagnosticsEnabled const sentryUserId = persisted.sentryUser.id + protocol.handle('comapeo', (request: Request) => { + const { hash, host, pathname } = new URL(request.url) + + const isDevelopment = appConfig.appType === 'development' + + if (isDevelopment) { + // TODO: Ideally forward to the Vite dev server + throw new Error('Custom protocol does not work in development yet') + } + + if (host !== 'renderer') { + throw new Error(`Unrecognized host: ${host}`) + } + + if (pathname === '/') { + const u = new URL('../renderer/index.html', import.meta.url) + // NOTE: Enables deeplinking in the app + u.hash = hash + return net.fetch(u.toString()) + } + + const allowedDirectoryPath = fileURLToPath( + new URL('../renderer', import.meta.url), + ) + const requestedPath = join(allowedDirectoryPath, pathname) + const relativePath = relative(allowedDirectoryPath, requestedPath) + + // NOTE: Make sure incoming requests do not attempt to access files outside the allowed directory scope + const isSafe = + relativePath && + !relativePath.startsWith('..') && + !isAbsolute(relativePath) + + if (!isSafe) { + // TODO: More gracefully handle by returning an error page? + throw new Error( + `Requested path is outside allowed scope: ${requestedPath}`, + ) + } + + return net.fetch(pathToFileURL(requestedPath).toString()) + }) + const mainWindow = initMainWindow({ activeProjectId, appVersion: appConfig.appVersion, @@ -308,6 +353,7 @@ function initMainWindow({ mainWindow.setAutoHideMenuBar(true) if (isDevelopment) { + // TODO: Consider using custom protocol? // TODO: Don't hard code ideally mainWindow.loadURL('http://localhost:5173/') mainWindow.webContents.openDevTools({ @@ -315,9 +361,8 @@ function initMainWindow({ activate: false, }) } else { - mainWindow.loadFile( - fileURLToPath(new URL('../renderer/index.html', import.meta.url)), - ) + // NOTE: host (`renderer`) needs to match whatever is matched against in the protocol handler + mainWindow.loadURL('comapeo://renderer/index.html') } mainWindow.on('close', (event) => { diff --git a/src/main/index.ts b/src/main/index.ts index cf74b96c..6f456a06 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -5,7 +5,7 @@ import { platform } from 'node:os' import * as path from 'node:path' import * as Sentry from '@sentry/electron/main' import debug from 'debug' -import { app } from 'electron/main' +import { app, protocol } from 'electron/main' import { parse } from 'valibot' import { @@ -52,29 +52,29 @@ if (process.platform === 'win32' && appConfig.win32AppUserModelId) { app.setAppUserModelId(appConfig.win32AppUserModelId) } +// NOTE: Update some of the application paths used during development. This helps to avoid conflicts with production installations and helps debugging in some cases. +// - Sets the user data directory to `/data/default/`, which can be overridden if `USER_DATA_PATH` is specified. +// - Sets the logs directory to `/logs/default/` for macOS. if (appConfig.appType === 'development') { // This is typically handled in the `readPackageJson` hook in the Forge configuration but that only runs when packaging an application. // This is still needed in the case of running the app through the development server. app.setName(`${app.name} Dev`) - // Update some of the application paths used during development. This helps to avoid conflicts with production installations and helps debugging in some cases. - // - Sets the user data directory to `/data/default/`, which can be overridden if `USER_DATA_PATH` is specified. - // - Sets the logs directory to `/logs/default/` for macOS. const appPath = app.getAppPath() - let userDataPath: string + let customUserDataPath: string if (appConfig.userDataPath) { - userDataPath = path.isAbsolute(appConfig.userDataPath) + customUserDataPath = path.isAbsolute(appConfig.userDataPath) ? path.resolve(appConfig.userDataPath) : path.resolve(appPath, appConfig.userDataPath) } else { - userDataPath = path.join(appPath, 'data', 'default') + customUserDataPath = path.join(appPath, 'data', 'default') } - log(`Setting user data path to ${userDataPath}`) + log(`Setting user data path to ${customUserDataPath}`) - app.setPath('userData', userDataPath) + app.setPath('userData', customUserDataPath) // Logs are stored within the user data path on Windows and Linux, so no need to adjust it here. if (platform() === 'darwin') { @@ -85,6 +85,18 @@ if (appConfig.appType === 'development') { app.setAppLogsPath(logsPath) } } +// NOTE: Allow overriding of user data path for internal builds, which is most useful for e2e tests. +else if (appConfig.appType === 'internal' && process.env.USER_DATA_PATH) { + if (!path.isAbsolute(process.env.USER_DATA_PATH)) { + throw new Error(`${process.env.USER_DATA_PATH} is not an absolute path.`) + } + + const customUserDataPath = path.resolve(process.env.USER_DATA_PATH) + + log(`Setting user data path to ${customUserDataPath}`) + + app.setPath('userData', customUserDataPath) +} // NOTE: Has to be set up after user data directory is updated const persistedStore = createPersistedStore({ @@ -124,6 +136,20 @@ log('Paths', { logs: app.getPath('logs'), }) +protocol.registerSchemesAsPrivileged([ + { + scheme: 'comapeo', + privileges: { + allowServiceWorkers: true, + corsEnabled: true, + secure: true, + supportFetchAPI: true, + standard: true, + stream: true, + }, + }, +]) + start({ appConfig, persistedStore }).catch((err) => { Sentry.captureException(err) process.exit(1) diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index 940d1b7f..545248aa 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -87,6 +87,8 @@ const router = createRouter({ // NOTE: Populated at render time formatMessage: undefined!, // NOTE: Populated at render time + globalEditingStateStore: undefined!, + // NOTE: Populated at render time localeState: undefined!, }, defaultPreload: 'intent', @@ -193,6 +195,7 @@ export function App() { context={{ activeProjectIdStore, formatMessage, + globalEditingStateStore, localeState, }} /> diff --git a/src/renderer/src/components/error-dialog.tsx b/src/renderer/src/components/error-dialog.tsx index 014b571e..78861aeb 100644 --- a/src/renderer/src/components/error-dialog.tsx +++ b/src/renderer/src/components/error-dialog.tsx @@ -88,7 +88,7 @@ export function ErrorDialog({ errorMessage, onClose, open }: Props) { variant="body2" fontFamily="monospace" whiteSpace="pre-wrap" - sx={{ wordBreak: 'break-word' }} + sx={{ overflowWrap: 'break-word' }} > {errorMessage} diff --git a/src/renderer/src/components/generic-route-error-component.tsx b/src/renderer/src/components/generic-route-error-component.tsx index 7533a61c..da74845e 100644 --- a/src/renderer/src/components/generic-route-error-component.tsx +++ b/src/renderer/src/components/generic-route-error-component.tsx @@ -6,6 +6,7 @@ import { useRouter, type ErrorComponentProps } from '@tanstack/react-router' import { defineMessages, useIntl } from 'react-intl' import { BLUE_GREY, LIGHT_GREY, WHITE } from '../colors' +import { buildDocumentReloadURL } from '../lib/navigation.ts' export function GenericRouteErrorComponent({ error }: ErrorComponentProps) { const router = useRouter() @@ -47,7 +48,7 @@ export function GenericRouteErrorComponent({ error }: ErrorComponentProps) { variant="body2" fontFamily="monospace" whiteSpace="pre-wrap" - sx={{ wordBreak: 'break-word' }} + sx={{ overflowWrap: 'break-word' }} > {error.toString()} @@ -69,7 +70,7 @@ export function GenericRouteErrorComponent({ error }: ErrorComponentProps) { variant="body2" fontFamily="monospace" whiteSpace="pre-wrap" - sx={{ wordBreak: 'break-word' }} + sx={{ overflowWrap: 'break-word' }} > {error.stack} @@ -83,17 +84,13 @@ export function GenericRouteErrorComponent({ error }: ErrorComponentProps) { display="flex" flexDirection="column" alignItems="center" + gap={4} > + + ) @@ -127,4 +138,9 @@ const m = defineMessages({ defaultMessage: 'Reload', description: 'Text for button to reload page.', }, + restart: { + id: 'components.generic-route-error-component.restart', + defaultMessage: 'Restart', + description: 'Text for button to restart app.', + }, }) diff --git a/src/renderer/src/components/generic-route-not-found-component.tsx b/src/renderer/src/components/generic-route-not-found-component.tsx index 21a2f7d1..bee9b9ab 100644 --- a/src/renderer/src/components/generic-route-not-found-component.tsx +++ b/src/renderer/src/components/generic-route-not-found-component.tsx @@ -7,7 +7,10 @@ import { useRouter, type NotFoundRouteProps } from '@tanstack/react-router' import { defineMessages, useIntl } from 'react-intl' import * as v from 'valibot' -import { CustomNotFoundDataSchema } from '../lib/navigation' +import { + CustomNotFoundDataSchema, + buildDocumentReloadURL, +} from '../lib/navigation' const CustomNotFoundDataPropSchema = v.looseObject({ data: CustomNotFoundDataSchema, @@ -38,7 +41,7 @@ export function GenericRouteNotFoundComponent({ fontWeight={500} textAlign="center" whiteSpace="pre-wrap" - sx={{ wordBreak: 'break-word' }} + sx={{ overflowWrap: 'break-word' }} > {t(m.title)} @@ -47,7 +50,7 @@ export function GenericRouteNotFoundComponent({ {data.data.message} @@ -82,12 +85,8 @@ export function GenericRouteNotFoundComponent({ fullWidth variant="outlined" onClick={() => { - // NOTE: Accounts for bug where `router.navigate()` doesn't account for hash router usage when trying to reload document - // (https://discord.com/channels/719702312431386674/1431138480096022680) router.navigate({ - href: router.history.createHref( - router.buildLocation({ to: '/' }).href, - ), + href: buildDocumentReloadURL(router, '/'), reloadDocument: true, }) }} diff --git a/src/renderer/src/contexts/intl.tsx b/src/renderer/src/contexts/intl.tsx index 817c1091..b1774816 100644 --- a/src/renderer/src/contexts/intl.tsx +++ b/src/renderer/src/contexts/intl.tsx @@ -15,44 +15,16 @@ const RICH_TEXT_MAPPINGS: ComponentProps< typeof ReactIntlProvider >['defaultRichTextElements'] = { b: (parts) => { - return ( - - {parts} - - ) + return {parts} }, orange: (parts) => { - return ( - - {parts} - - ) + return {parts} }, blue: (parts) => { - return ( - - {parts} - - ) + return {parts} }, br: () => { - return ( -
- ) + return
}, } diff --git a/src/renderer/src/generated/routeTree.gen.ts b/src/renderer/src/generated/routeTree.gen.ts index 4e1ed374..5c4426ad 100644 --- a/src/renderer/src/generated/routeTree.gen.ts +++ b/src/renderer/src/generated/routeTree.gen.ts @@ -42,9 +42,9 @@ import { Route as OnboardingProjectCreateProjectIdSuccessRouteImport } from './. import { Route as AppProjectsProjectIdTeamDeviceIdRouteImport } from './../routes/app/projects/$projectId_/team/$deviceId' import { Route as AppProjectsProjectIdSettingsInfoRouteImport } from './../routes/app/projects/$projectId_/settings/info' import { Route as AppProjectsProjectIdSettingsCategoriesRouteImport } from './../routes/app/projects/$projectId_/settings/categories' +import { Route as AppProjectsProjectIdInviteDevicesIndexRouteImport } from './../routes/app/projects/$projectId_/invite/devices/index' import { Route as AppProjectsProjectIdTracksTrackDocIdIndexRouteImport } from './../routes/app/projects/$projectId/tracks/$trackDocId/index' import { Route as AppProjectsProjectIdObservationsObservationDocIdIndexRouteImport } from './../routes/app/projects/$projectId/observations/$observationDocId/index' -import { Route as AppProjectsProjectIdInviteDevicesIndexRouteImport } from './../routes/app/projects/$projectId_/invite/devices/index' import { Route as AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteImport } from './../routes/app/projects/$projectId_/invite/devices/$deviceId/route' import { Route as AppProjectsProjectIdInviteDevicesDeviceIdSendRouteImport } from './../routes/app/projects/$projectId_/invite/devices/$deviceId/send' import { Route as AppProjectsProjectIdInviteDevicesDeviceIdRoleRouteImport } from './../routes/app/projects/$projectId_/invite/devices/$deviceId/role' @@ -97,7 +97,7 @@ const AppSettingsRouteRoute = AppSettingsRouteRouteImport.update({ getParentRoute: () => AppRouteRoute, } as any) const OnboardingProjectIndexRoute = OnboardingProjectIndexRouteImport.update({ - id: '/project/', + id: '/project_/', path: '/project/', getParentRoute: () => OnboardingRouteRoute, } as any) @@ -107,7 +107,7 @@ const AppSettingsIndexRoute = AppSettingsIndexRouteImport.update({ getParentRoute: () => AppSettingsRouteRoute, } as any) const AppSettingsTestDataRoute = AppSettingsTestDataRouteImport.update({ - id: '/settings/test-data', + id: '/settings_/test-data', path: '/settings/test-data', getParentRoute: () => AppRouteRoute, } as any) @@ -165,19 +165,19 @@ const AppProjectsProjectIdDownloadRoute = } as any) const AppProjectsProjectIdTeamRouteRoute = AppProjectsProjectIdTeamRouteRouteImport.update({ - id: '/projects/$projectId/team', + id: '/projects/$projectId_/team', path: '/projects/$projectId/team', getParentRoute: () => AppRouteRoute, } as any) const AppProjectsProjectIdSettingsRouteRoute = AppProjectsProjectIdSettingsRouteRouteImport.update({ - id: '/projects/$projectId/settings', + id: '/projects/$projectId_/settings', path: '/projects/$projectId/settings', getParentRoute: () => AppRouteRoute, } as any) const AppProjectsProjectIdInviteRouteRoute = AppProjectsProjectIdInviteRouteRouteImport.update({ - id: '/projects/$projectId/invite', + id: '/projects/$projectId_/invite', path: '/projects/$projectId/invite', getParentRoute: () => AppRouteRoute, } as any) @@ -201,7 +201,7 @@ const AppProjectsProjectIdInviteIndexRoute = } as any) const AppProjectsProjectIdExchangeIndexRoute = AppProjectsProjectIdExchangeIndexRouteImport.update({ - id: '/projects/$projectId/exchange/', + id: '/projects/$projectId_/exchange/', path: '/projects/$projectId/exchange/', getParentRoute: () => AppRouteRoute, } as any) @@ -235,6 +235,12 @@ const AppProjectsProjectIdSettingsCategoriesRoute = path: '/categories', getParentRoute: () => AppProjectsProjectIdSettingsRouteRoute, } as any) +const AppProjectsProjectIdInviteDevicesIndexRoute = + AppProjectsProjectIdInviteDevicesIndexRouteImport.update({ + id: '/devices/', + path: '/devices/', + getParentRoute: () => AppProjectsProjectIdInviteRouteRoute, + } as any) const AppProjectsProjectIdTracksTrackDocIdIndexRoute = AppProjectsProjectIdTracksTrackDocIdIndexRouteImport.update({ id: '/tracks/$trackDocId/', @@ -247,12 +253,6 @@ const AppProjectsProjectIdObservationsObservationDocIdIndexRoute = path: '/observations/$observationDocId/', getParentRoute: () => AppProjectsProjectIdRouteRoute, } as any) -const AppProjectsProjectIdInviteDevicesIndexRoute = - AppProjectsProjectIdInviteDevicesIndexRouteImport.update({ - id: '/devices/', - path: '/devices/', - getParentRoute: () => AppProjectsProjectIdInviteRouteRoute, - } as any) const AppProjectsProjectIdInviteDevicesDeviceIdRouteRoute = AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteImport.update({ id: '/devices/$deviceId', @@ -286,7 +286,7 @@ export interface FileRoutesByFullPath { '/onboarding': typeof OnboardingRouteRouteWithChildren '/welcome': typeof WelcomeRoute '/app/settings': typeof AppSettingsRouteRouteWithChildren - '/onboarding/project': typeof OnboardingProjectIndexRoute + '/onboarding/project': typeof OnboardingProjectRouteRouteWithChildren '/onboarding/data-and-privacy': typeof OnboardingDataAndPrivacyRoute '/onboarding/device-name': typeof OnboardingDeviceNameRoute '/onboarding/privacy-policy': typeof OnboardingPrivacyPolicyRoute @@ -297,26 +297,27 @@ export interface FileRoutesByFullPath { '/app/settings/language': typeof AppSettingsLanguageRoute '/app/settings/test-data': typeof AppSettingsTestDataRoute '/app/settings/': typeof AppSettingsIndexRoute + '/onboarding/project/': typeof OnboardingProjectIndexRoute '/app/projects/$projectId/invite': typeof AppProjectsProjectIdInviteRouteRouteWithChildren '/app/projects/$projectId/settings': typeof AppProjectsProjectIdSettingsRouteRouteWithChildren '/app/projects/$projectId/team': typeof AppProjectsProjectIdTeamRouteRouteWithChildren '/app/projects/$projectId/download': typeof AppProjectsProjectIdDownloadRoute '/app/projects/$projectId/': typeof AppProjectsProjectIdIndexRoute - '/onboarding/project/create': typeof OnboardingProjectCreateIndexRoute - '/onboarding/project/join': typeof OnboardingProjectJoinIndexRoute + '/onboarding/project/create/': typeof OnboardingProjectCreateIndexRoute + '/onboarding/project/join/': typeof OnboardingProjectJoinIndexRoute '/app/projects/$projectId/settings/categories': typeof AppProjectsProjectIdSettingsCategoriesRoute '/app/projects/$projectId/settings/info': typeof AppProjectsProjectIdSettingsInfoRoute '/app/projects/$projectId/team/$deviceId': typeof AppProjectsProjectIdTeamDeviceIdRoute '/onboarding/project/create/$projectId/success': typeof OnboardingProjectCreateProjectIdSuccessRoute '/onboarding/project/join/$inviteId/success': typeof OnboardingProjectJoinInviteIdSuccessRoute - '/app/projects/$projectId/exchange': typeof AppProjectsProjectIdExchangeIndexRoute + '/app/projects/$projectId/exchange/': typeof AppProjectsProjectIdExchangeIndexRoute '/app/projects/$projectId/invite/': typeof AppProjectsProjectIdInviteIndexRoute '/app/projects/$projectId/settings/': typeof AppProjectsProjectIdSettingsIndexRoute '/app/projects/$projectId/team/': typeof AppProjectsProjectIdTeamIndexRoute '/app/projects/$projectId/invite/devices/$deviceId': typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteWithChildren - '/app/projects/$projectId/invite/devices': typeof AppProjectsProjectIdInviteDevicesIndexRoute - '/app/projects/$projectId/observations/$observationDocId': typeof AppProjectsProjectIdObservationsObservationDocIdIndexRoute - '/app/projects/$projectId/tracks/$trackDocId': typeof AppProjectsProjectIdTracksTrackDocIdIndexRoute + '/app/projects/$projectId/observations/$observationDocId/': typeof AppProjectsProjectIdObservationsObservationDocIdIndexRoute + '/app/projects/$projectId/tracks/$trackDocId/': typeof AppProjectsProjectIdTracksTrackDocIdIndexRoute + '/app/projects/$projectId/invite/devices/': typeof AppProjectsProjectIdInviteDevicesIndexRoute '/app/projects/$projectId/invite/devices/$deviceId/role': typeof AppProjectsProjectIdInviteDevicesDeviceIdRoleRoute '/app/projects/$projectId/invite/devices/$deviceId/send': typeof AppProjectsProjectIdInviteDevicesDeviceIdSendRoute '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name': typeof AppProjectsProjectIdObservationsObservationDocIdAttachmentsDriveIdTypeVariantNameRoute @@ -350,9 +351,9 @@ export interface FileRoutesByTo { '/app/projects/$projectId/settings': typeof AppProjectsProjectIdSettingsIndexRoute '/app/projects/$projectId/team': typeof AppProjectsProjectIdTeamIndexRoute '/app/projects/$projectId/invite/devices/$deviceId': typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteWithChildren - '/app/projects/$projectId/invite/devices': typeof AppProjectsProjectIdInviteDevicesIndexRoute '/app/projects/$projectId/observations/$observationDocId': typeof AppProjectsProjectIdObservationsObservationDocIdIndexRoute '/app/projects/$projectId/tracks/$trackDocId': typeof AppProjectsProjectIdTracksTrackDocIdIndexRoute + '/app/projects/$projectId/invite/devices': typeof AppProjectsProjectIdInviteDevicesIndexRoute '/app/projects/$projectId/invite/devices/$deviceId/role': typeof AppProjectsProjectIdInviteDevicesDeviceIdRoleRoute '/app/projects/$projectId/invite/devices/$deviceId/send': typeof AppProjectsProjectIdInviteDevicesDeviceIdSendRoute '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name': typeof AppProjectsProjectIdObservationsObservationDocIdAttachmentsDriveIdTypeVariantNameRoute @@ -373,31 +374,31 @@ export interface FileRoutesById { '/app/settings/coordinate-system': typeof AppSettingsCoordinateSystemRoute '/app/settings/device-name': typeof AppSettingsDeviceNameRoute '/app/settings/language': typeof AppSettingsLanguageRoute - '/app/settings/test-data': typeof AppSettingsTestDataRoute + '/app/settings_/test-data': typeof AppSettingsTestDataRoute '/app/settings/': typeof AppSettingsIndexRoute - '/onboarding/project/': typeof OnboardingProjectIndexRoute - '/app/projects/$projectId/invite': typeof AppProjectsProjectIdInviteRouteRouteWithChildren - '/app/projects/$projectId/settings': typeof AppProjectsProjectIdSettingsRouteRouteWithChildren - '/app/projects/$projectId/team': typeof AppProjectsProjectIdTeamRouteRouteWithChildren + '/onboarding/project_/': typeof OnboardingProjectIndexRoute + '/app/projects/$projectId_/invite': typeof AppProjectsProjectIdInviteRouteRouteWithChildren + '/app/projects/$projectId_/settings': typeof AppProjectsProjectIdSettingsRouteRouteWithChildren + '/app/projects/$projectId_/team': typeof AppProjectsProjectIdTeamRouteRouteWithChildren '/app/projects/$projectId/download': typeof AppProjectsProjectIdDownloadRoute '/app/projects/$projectId/': typeof AppProjectsProjectIdIndexRoute '/onboarding/project/create/': typeof OnboardingProjectCreateIndexRoute '/onboarding/project/join/': typeof OnboardingProjectJoinIndexRoute - '/app/projects/$projectId/settings/categories': typeof AppProjectsProjectIdSettingsCategoriesRoute - '/app/projects/$projectId/settings/info': typeof AppProjectsProjectIdSettingsInfoRoute - '/app/projects/$projectId/team/$deviceId': typeof AppProjectsProjectIdTeamDeviceIdRoute + '/app/projects/$projectId_/settings/categories': typeof AppProjectsProjectIdSettingsCategoriesRoute + '/app/projects/$projectId_/settings/info': typeof AppProjectsProjectIdSettingsInfoRoute + '/app/projects/$projectId_/team/$deviceId': typeof AppProjectsProjectIdTeamDeviceIdRoute '/onboarding/project/create/$projectId/success': typeof OnboardingProjectCreateProjectIdSuccessRoute '/onboarding/project/join/$inviteId/success': typeof OnboardingProjectJoinInviteIdSuccessRoute - '/app/projects/$projectId/exchange/': typeof AppProjectsProjectIdExchangeIndexRoute - '/app/projects/$projectId/invite/': typeof AppProjectsProjectIdInviteIndexRoute - '/app/projects/$projectId/settings/': typeof AppProjectsProjectIdSettingsIndexRoute - '/app/projects/$projectId/team/': typeof AppProjectsProjectIdTeamIndexRoute - '/app/projects/$projectId/invite/devices/$deviceId': typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteWithChildren - '/app/projects/$projectId/invite/devices/': typeof AppProjectsProjectIdInviteDevicesIndexRoute + '/app/projects/$projectId_/exchange/': typeof AppProjectsProjectIdExchangeIndexRoute + '/app/projects/$projectId_/invite/': typeof AppProjectsProjectIdInviteIndexRoute + '/app/projects/$projectId_/settings/': typeof AppProjectsProjectIdSettingsIndexRoute + '/app/projects/$projectId_/team/': typeof AppProjectsProjectIdTeamIndexRoute + '/app/projects/$projectId_/invite/devices/$deviceId': typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteWithChildren '/app/projects/$projectId/observations/$observationDocId/': typeof AppProjectsProjectIdObservationsObservationDocIdIndexRoute '/app/projects/$projectId/tracks/$trackDocId/': typeof AppProjectsProjectIdTracksTrackDocIdIndexRoute - '/app/projects/$projectId/invite/devices/$deviceId/role': typeof AppProjectsProjectIdInviteDevicesDeviceIdRoleRoute - '/app/projects/$projectId/invite/devices/$deviceId/send': typeof AppProjectsProjectIdInviteDevicesDeviceIdSendRoute + '/app/projects/$projectId_/invite/devices/': typeof AppProjectsProjectIdInviteDevicesIndexRoute + '/app/projects/$projectId_/invite/devices/$deviceId/role': typeof AppProjectsProjectIdInviteDevicesDeviceIdRoleRoute + '/app/projects/$projectId_/invite/devices/$deviceId/send': typeof AppProjectsProjectIdInviteDevicesDeviceIdSendRoute '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name': typeof AppProjectsProjectIdObservationsObservationDocIdAttachmentsDriveIdTypeVariantNameRoute } export interface FileRouteTypes { @@ -419,26 +420,27 @@ export interface FileRouteTypes { | '/app/settings/language' | '/app/settings/test-data' | '/app/settings/' + | '/onboarding/project/' | '/app/projects/$projectId/invite' | '/app/projects/$projectId/settings' | '/app/projects/$projectId/team' | '/app/projects/$projectId/download' | '/app/projects/$projectId/' - | '/onboarding/project/create' - | '/onboarding/project/join' + | '/onboarding/project/create/' + | '/onboarding/project/join/' | '/app/projects/$projectId/settings/categories' | '/app/projects/$projectId/settings/info' | '/app/projects/$projectId/team/$deviceId' | '/onboarding/project/create/$projectId/success' | '/onboarding/project/join/$inviteId/success' - | '/app/projects/$projectId/exchange' + | '/app/projects/$projectId/exchange/' | '/app/projects/$projectId/invite/' | '/app/projects/$projectId/settings/' | '/app/projects/$projectId/team/' | '/app/projects/$projectId/invite/devices/$deviceId' - | '/app/projects/$projectId/invite/devices' - | '/app/projects/$projectId/observations/$observationDocId' - | '/app/projects/$projectId/tracks/$trackDocId' + | '/app/projects/$projectId/observations/$observationDocId/' + | '/app/projects/$projectId/tracks/$trackDocId/' + | '/app/projects/$projectId/invite/devices/' | '/app/projects/$projectId/invite/devices/$deviceId/role' | '/app/projects/$projectId/invite/devices/$deviceId/send' | '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name' @@ -472,9 +474,9 @@ export interface FileRouteTypes { | '/app/projects/$projectId/settings' | '/app/projects/$projectId/team' | '/app/projects/$projectId/invite/devices/$deviceId' - | '/app/projects/$projectId/invite/devices' | '/app/projects/$projectId/observations/$observationDocId' | '/app/projects/$projectId/tracks/$trackDocId' + | '/app/projects/$projectId/invite/devices' | '/app/projects/$projectId/invite/devices/$deviceId/role' | '/app/projects/$projectId/invite/devices/$deviceId/send' | '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name' @@ -494,31 +496,31 @@ export interface FileRouteTypes { | '/app/settings/coordinate-system' | '/app/settings/device-name' | '/app/settings/language' - | '/app/settings/test-data' + | '/app/settings_/test-data' | '/app/settings/' - | '/onboarding/project/' - | '/app/projects/$projectId/invite' - | '/app/projects/$projectId/settings' - | '/app/projects/$projectId/team' + | '/onboarding/project_/' + | '/app/projects/$projectId_/invite' + | '/app/projects/$projectId_/settings' + | '/app/projects/$projectId_/team' | '/app/projects/$projectId/download' | '/app/projects/$projectId/' | '/onboarding/project/create/' | '/onboarding/project/join/' - | '/app/projects/$projectId/settings/categories' - | '/app/projects/$projectId/settings/info' - | '/app/projects/$projectId/team/$deviceId' + | '/app/projects/$projectId_/settings/categories' + | '/app/projects/$projectId_/settings/info' + | '/app/projects/$projectId_/team/$deviceId' | '/onboarding/project/create/$projectId/success' | '/onboarding/project/join/$inviteId/success' - | '/app/projects/$projectId/exchange/' - | '/app/projects/$projectId/invite/' - | '/app/projects/$projectId/settings/' - | '/app/projects/$projectId/team/' - | '/app/projects/$projectId/invite/devices/$deviceId' - | '/app/projects/$projectId/invite/devices/' + | '/app/projects/$projectId_/exchange/' + | '/app/projects/$projectId_/invite/' + | '/app/projects/$projectId_/settings/' + | '/app/projects/$projectId_/team/' + | '/app/projects/$projectId_/invite/devices/$deviceId' | '/app/projects/$projectId/observations/$observationDocId/' | '/app/projects/$projectId/tracks/$trackDocId/' - | '/app/projects/$projectId/invite/devices/$deviceId/role' - | '/app/projects/$projectId/invite/devices/$deviceId/send' + | '/app/projects/$projectId_/invite/devices/' + | '/app/projects/$projectId_/invite/devices/$deviceId/role' + | '/app/projects/$projectId_/invite/devices/$deviceId/send' | '/app/projects/$projectId/observations/$observationDocId/attachments/$driveId/$type/$variant/$name' fileRoutesById: FileRoutesById } @@ -594,10 +596,10 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AppSettingsRouteRouteImport parentRoute: typeof AppRouteRoute } - '/onboarding/project/': { - id: '/onboarding/project/' + '/onboarding/project_/': { + id: '/onboarding/project_/' path: '/project' - fullPath: '/onboarding/project' + fullPath: '/onboarding/project/' preLoaderRoute: typeof OnboardingProjectIndexRouteImport parentRoute: typeof OnboardingRouteRoute } @@ -608,8 +610,8 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AppSettingsIndexRouteImport parentRoute: typeof AppSettingsRouteRoute } - '/app/settings/test-data': { - id: '/app/settings/test-data' + '/app/settings_/test-data': { + id: '/app/settings_/test-data' path: '/settings/test-data' fullPath: '/app/settings/test-data' preLoaderRoute: typeof AppSettingsTestDataRouteImport @@ -653,14 +655,14 @@ declare module '@tanstack/react-router' { '/onboarding/project/join/': { id: '/onboarding/project/join/' path: '/join' - fullPath: '/onboarding/project/join' + fullPath: '/onboarding/project/join/' preLoaderRoute: typeof OnboardingProjectJoinIndexRouteImport parentRoute: typeof OnboardingProjectRouteRoute } '/onboarding/project/create/': { id: '/onboarding/project/create/' path: '/create' - fullPath: '/onboarding/project/create' + fullPath: '/onboarding/project/create/' preLoaderRoute: typeof OnboardingProjectCreateIndexRouteImport parentRoute: typeof OnboardingProjectRouteRoute } @@ -678,52 +680,52 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AppProjectsProjectIdDownloadRouteImport parentRoute: typeof AppProjectsProjectIdRouteRoute } - '/app/projects/$projectId/team': { - id: '/app/projects/$projectId/team' + '/app/projects/$projectId_/team': { + id: '/app/projects/$projectId_/team' path: '/projects/$projectId/team' fullPath: '/app/projects/$projectId/team' preLoaderRoute: typeof AppProjectsProjectIdTeamRouteRouteImport parentRoute: typeof AppRouteRoute } - '/app/projects/$projectId/settings': { - id: '/app/projects/$projectId/settings' + '/app/projects/$projectId_/settings': { + id: '/app/projects/$projectId_/settings' path: '/projects/$projectId/settings' fullPath: '/app/projects/$projectId/settings' preLoaderRoute: typeof AppProjectsProjectIdSettingsRouteRouteImport parentRoute: typeof AppRouteRoute } - '/app/projects/$projectId/invite': { - id: '/app/projects/$projectId/invite' + '/app/projects/$projectId_/invite': { + id: '/app/projects/$projectId_/invite' path: '/projects/$projectId/invite' fullPath: '/app/projects/$projectId/invite' preLoaderRoute: typeof AppProjectsProjectIdInviteRouteRouteImport parentRoute: typeof AppRouteRoute } - '/app/projects/$projectId/team/': { - id: '/app/projects/$projectId/team/' + '/app/projects/$projectId_/team/': { + id: '/app/projects/$projectId_/team/' path: '/' fullPath: '/app/projects/$projectId/team/' preLoaderRoute: typeof AppProjectsProjectIdTeamIndexRouteImport parentRoute: typeof AppProjectsProjectIdTeamRouteRoute } - '/app/projects/$projectId/settings/': { - id: '/app/projects/$projectId/settings/' + '/app/projects/$projectId_/settings/': { + id: '/app/projects/$projectId_/settings/' path: '/' fullPath: '/app/projects/$projectId/settings/' preLoaderRoute: typeof AppProjectsProjectIdSettingsIndexRouteImport parentRoute: typeof AppProjectsProjectIdSettingsRouteRoute } - '/app/projects/$projectId/invite/': { - id: '/app/projects/$projectId/invite/' + '/app/projects/$projectId_/invite/': { + id: '/app/projects/$projectId_/invite/' path: '/' fullPath: '/app/projects/$projectId/invite/' preLoaderRoute: typeof AppProjectsProjectIdInviteIndexRouteImport parentRoute: typeof AppProjectsProjectIdInviteRouteRoute } - '/app/projects/$projectId/exchange/': { - id: '/app/projects/$projectId/exchange/' + '/app/projects/$projectId_/exchange/': { + id: '/app/projects/$projectId_/exchange/' path: '/projects/$projectId/exchange' - fullPath: '/app/projects/$projectId/exchange' + fullPath: '/app/projects/$projectId/exchange/' preLoaderRoute: typeof AppProjectsProjectIdExchangeIndexRouteImport parentRoute: typeof AppRouteRoute } @@ -741,64 +743,64 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof OnboardingProjectCreateProjectIdSuccessRouteImport parentRoute: typeof OnboardingProjectRouteRoute } - '/app/projects/$projectId/team/$deviceId': { - id: '/app/projects/$projectId/team/$deviceId' + '/app/projects/$projectId_/team/$deviceId': { + id: '/app/projects/$projectId_/team/$deviceId' path: '/$deviceId' fullPath: '/app/projects/$projectId/team/$deviceId' preLoaderRoute: typeof AppProjectsProjectIdTeamDeviceIdRouteImport parentRoute: typeof AppProjectsProjectIdTeamRouteRoute } - '/app/projects/$projectId/settings/info': { - id: '/app/projects/$projectId/settings/info' + '/app/projects/$projectId_/settings/info': { + id: '/app/projects/$projectId_/settings/info' path: '/info' fullPath: '/app/projects/$projectId/settings/info' preLoaderRoute: typeof AppProjectsProjectIdSettingsInfoRouteImport parentRoute: typeof AppProjectsProjectIdSettingsRouteRoute } - '/app/projects/$projectId/settings/categories': { - id: '/app/projects/$projectId/settings/categories' + '/app/projects/$projectId_/settings/categories': { + id: '/app/projects/$projectId_/settings/categories' path: '/categories' fullPath: '/app/projects/$projectId/settings/categories' preLoaderRoute: typeof AppProjectsProjectIdSettingsCategoriesRouteImport parentRoute: typeof AppProjectsProjectIdSettingsRouteRoute } + '/app/projects/$projectId_/invite/devices/': { + id: '/app/projects/$projectId_/invite/devices/' + path: '/devices' + fullPath: '/app/projects/$projectId/invite/devices/' + preLoaderRoute: typeof AppProjectsProjectIdInviteDevicesIndexRouteImport + parentRoute: typeof AppProjectsProjectIdInviteRouteRoute + } '/app/projects/$projectId/tracks/$trackDocId/': { id: '/app/projects/$projectId/tracks/$trackDocId/' path: '/tracks/$trackDocId' - fullPath: '/app/projects/$projectId/tracks/$trackDocId' + fullPath: '/app/projects/$projectId/tracks/$trackDocId/' preLoaderRoute: typeof AppProjectsProjectIdTracksTrackDocIdIndexRouteImport parentRoute: typeof AppProjectsProjectIdRouteRoute } '/app/projects/$projectId/observations/$observationDocId/': { id: '/app/projects/$projectId/observations/$observationDocId/' path: '/observations/$observationDocId' - fullPath: '/app/projects/$projectId/observations/$observationDocId' + fullPath: '/app/projects/$projectId/observations/$observationDocId/' preLoaderRoute: typeof AppProjectsProjectIdObservationsObservationDocIdIndexRouteImport parentRoute: typeof AppProjectsProjectIdRouteRoute } - '/app/projects/$projectId/invite/devices/': { - id: '/app/projects/$projectId/invite/devices/' - path: '/devices' - fullPath: '/app/projects/$projectId/invite/devices' - preLoaderRoute: typeof AppProjectsProjectIdInviteDevicesIndexRouteImport - parentRoute: typeof AppProjectsProjectIdInviteRouteRoute - } - '/app/projects/$projectId/invite/devices/$deviceId': { - id: '/app/projects/$projectId/invite/devices/$deviceId' + '/app/projects/$projectId_/invite/devices/$deviceId': { + id: '/app/projects/$projectId_/invite/devices/$deviceId' path: '/devices/$deviceId' fullPath: '/app/projects/$projectId/invite/devices/$deviceId' preLoaderRoute: typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRouteImport parentRoute: typeof AppProjectsProjectIdInviteRouteRoute } - '/app/projects/$projectId/invite/devices/$deviceId/send': { - id: '/app/projects/$projectId/invite/devices/$deviceId/send' + '/app/projects/$projectId_/invite/devices/$deviceId/send': { + id: '/app/projects/$projectId_/invite/devices/$deviceId/send' path: '/send' fullPath: '/app/projects/$projectId/invite/devices/$deviceId/send' preLoaderRoute: typeof AppProjectsProjectIdInviteDevicesDeviceIdSendRouteImport parentRoute: typeof AppProjectsProjectIdInviteDevicesDeviceIdRouteRoute } - '/app/projects/$projectId/invite/devices/$deviceId/role': { - id: '/app/projects/$projectId/invite/devices/$deviceId/role' + '/app/projects/$projectId_/invite/devices/$deviceId/role': { + id: '/app/projects/$projectId_/invite/devices/$deviceId/role' path: '/role' fullPath: '/app/projects/$projectId/invite/devices/$deviceId/role' preLoaderRoute: typeof AppProjectsProjectIdInviteDevicesDeviceIdRoleRouteImport diff --git a/src/renderer/src/hooks/network.ts b/src/renderer/src/hooks/network.ts index 5a6f26a2..fe861022 100644 --- a/src/renderer/src/hooks/network.ts +++ b/src/renderer/src/hooks/network.ts @@ -54,7 +54,7 @@ export type BrowserNetInfo = NetworkInformationReadableFields & { } export function useBrowserNetInfo(): BrowserNetInfo { - const cache = useRef({ + const cacheRef = useRef({ ...getConnectionFields(), online: navigator.onLine, }) @@ -65,10 +65,10 @@ export function useBrowserNetInfo(): BrowserNetInfo { online: navigator.onLine, } - if (isEqual(cache.current, nextState)) { - return cache.current + if (isEqual(cacheRef.current, nextState)) { + return cacheRef.current } else { - cache.current = nextState + cacheRef.current = nextState return nextState } }) diff --git a/src/renderer/src/hooks/peers.ts b/src/renderer/src/hooks/peers.ts index 11e8c2f4..0a6b2822 100644 --- a/src/renderer/src/hooks/peers.ts +++ b/src/renderer/src/hooks/peers.ts @@ -13,7 +13,6 @@ export function useInitiallyConnectedPeers() { const peers = useLocalPeersState() // Keeps track of peers who were initially seen as connected - // eslint-disable-next-line @eslint-react/naming-convention/use-state const [relevantDeviceIds] = useState(() => { return new Set( peers.filter((p) => p.status === 'connected').map((p) => p.deviceId), diff --git a/src/renderer/src/lib/navigation.ts b/src/renderer/src/lib/navigation.ts index 2614c963..d28d0576 100644 --- a/src/renderer/src/lib/navigation.ts +++ b/src/renderer/src/lib/navigation.ts @@ -1,4 +1,9 @@ -import { notFound, type NotFoundError } from '@tanstack/react-router' +import { + notFound, + type AnyRouter, + type NotFoundError, + type ToOptions, +} from '@tanstack/react-router' import * as v from 'valibot' export const CustomNotFoundDataSchema = v.object({ @@ -12,3 +17,19 @@ export function customNotFound( ): NotFoundError { return notFound(options) } + +// NOTE: Accounts for bugs where `router.navigate()` doesn't account for hash history and file URIs +// when navigating with document reloading enabled. +// (https://discord.com/channels/719702312431386674/1431138480096022680) +export function buildDocumentReloadURL( + router: Pick, + to: NonNullable, +) { + // Accounts for hash history usage + const hrefUsingHash = router.history.createHref( + router.buildLocation({ to }).href, + ) + + // Accounts for file URI scenario by creating an "external" href that tanstack router will handle more correctly internally + return new URL(hrefUsingHash, router.origin || '').href +} diff --git a/src/renderer/src/routes/__root.tsx b/src/renderer/src/routes/__root.tsx index f9c66749..51982395 100644 --- a/src/renderer/src/routes/__root.tsx +++ b/src/renderer/src/routes/__root.tsx @@ -9,11 +9,13 @@ import type { IntlShape } from 'react-intl' import type { LocaleState } from '../../../shared/intl' import type { ActiveProjectIdStore } from '../contexts/active-project-id-store-context' +import type { GlobalEditingStateStore } from '../contexts/global-editing-state-store-context.ts' export interface RootRouterContext { activeProjectIdStore: ActiveProjectIdStore clientApi: MapeoClientApi formatMessage: IntlShape['formatMessage'] + globalEditingStateStore: GlobalEditingStateStore history: RouterHistory localeState: LocaleState queryClient: QueryClient diff --git a/src/renderer/src/routes/app/projects/$projectId/-map-panel.tsx b/src/renderer/src/routes/app/projects/$projectId/-map-panel.tsx index fc367a9a..8508c1b7 100644 --- a/src/renderer/src/routes/app/projects/$projectId/-map-panel.tsx +++ b/src/renderer/src/routes/app/projects/$projectId/-map-panel.tsx @@ -113,7 +113,7 @@ const TRACKS_HOVER_SHADOW_LAYER_PAINT_PROPERTY: LineLayerSpecification['paint'] const INTERACTIVE_LAYER_IDS = [OBSERVATIONS_LAYER_ID, TRACKS_LAYER_ID] const DEFAULT_BOUNDING_BOX: [number, number, number, number] = [ - -180, -90, 180, 90, + -180, -85.0511, 180, 85.0511, ] const BASE_FIT_BOUNDS_OPTIONS: FitBoundsOptions = { diff --git a/src/renderer/src/routes/app/projects/$projectId/index.tsx b/src/renderer/src/routes/app/projects/$projectId/index.tsx index 74d6a11c..b0476a07 100644 --- a/src/renderer/src/routes/app/projects/$projectId/index.tsx +++ b/src/renderer/src/routes/app/projects/$projectId/index.tsx @@ -176,7 +176,7 @@ function ProjectInfoSection({ projectId }: { projectId: string }) { }, }} > - + {displayedName} @@ -210,13 +210,13 @@ function ProjectInfoSection({ projectId }: { projectId: string }) { {displayedName} {projectSettings.projectDescription ? ( - + {projectSettings.projectDescription} ) : null} @@ -263,8 +263,8 @@ function ProjectInfoSection({ projectId }: { projectId: string }) { {projectSettings.configMetadata ? ( - - + + {' '} {projectSettings.configMetadata.fileVersion} - - -
+
- + {t(m.projectInfoCategoriesCreated, { date: ( -
+
+ ) : ( {t(m.fallbackCategoriesSetName)} diff --git a/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/attachments/$driveId.$type.$variant.$name.tsx b/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/attachments/$driveId.$type.$variant.$name.tsx index 6952e82e..003d3d09 100644 --- a/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/attachments/$driveId.$type.$variant.$name.tsx +++ b/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/attachments/$driveId.$type.$variant.$name.tsx @@ -18,7 +18,7 @@ import Stack from '@mui/material/Stack' import Typography from '@mui/material/Typography' import { captureMessage } from '@sentry/react' import { useMutation, useSuspenseQuery } from '@tanstack/react-query' -import { createFileRoute, redirect, useRouter } from '@tanstack/react-router' +import { createFileRoute, useRouter } from '@tanstack/react-router' import { defineMessages, useIntl } from 'react-intl' import * as v from 'valibot' @@ -104,7 +104,7 @@ export const Route = createFileRoute( ) }) ) { - throw redirect({ + throw Route.redirect({ to: '/app/projects/$projectId/observations/$observationDocId', params: { projectId, observationDocId }, }) diff --git a/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/index.tsx b/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/index.tsx index 0ad20fac..dd12a515 100644 --- a/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/index.tsx +++ b/src/renderer/src/routes/app/projects/$projectId/observations/$observationDocId/index.tsx @@ -171,6 +171,23 @@ export const Route = createFileRoute( }), ]) }, + remountDeps: ({ params }) => { + return params + }, + onLeave: ({ context, params }) => { + const { globalEditingStateStore } = context + const { observationDocId } = params + + const globalEditIdPrefix = getGlobalEditIdPrefix(observationDocId) + + const relevantEditIds = globalEditingStateStore.instance + .getState() + .activeEdits.filter((e) => e.startsWith(globalEditIdPrefix)) + + for (const id of relevantEditIds) { + globalEditingStateStore.actions.remove(id) + } + }, notFoundComponent: GenericRouteNotFoundComponent, component: RouteComponent, }) @@ -411,14 +428,17 @@ function ObservationDetailsPanel({ const globalEditingStateActions = useGlobalEditingStateActions() const globalEditingEntries = useGlobalEditingState() - const isEditing = globalEditingEntries.length > 0 + const globalEditIdPrefix = getGlobalEditIdPrefix(observationDocId) - const globalEditIdPrefix = `observations_${observationDocId}_edit` - const activeObservationDetailsGlobalEditId = globalEditingEntries.find((e) => + const notesGlobalEditId = `${globalEditIdPrefix}_notes` + + const observationEditIds = globalEditingEntries.filter((e) => e.startsWith(globalEditIdPrefix), ) - const notesGlobalEditId = `${globalEditIdPrefix}_notes` + const isEditingObservation = observationEditIds.length > 0 + + const activeObservationEditId = observationEditIds[0] return ( <> @@ -432,7 +452,7 @@ function ObservationDetailsPanel({ borderBottom={`1px solid ${BLUE_GREY}`} > { if (deleteObservation.status === 'pending') { return @@ -548,7 +568,7 @@ function ObservationDetailsPanel({ {canEdit ? (